Anemometro a coppe portatile – prima parte

La scorsa settimana mi ha scritto Federico Davanteri preentandomi il suo progetto: anemometro a coppe portatile basato su arduino e chiedendomi se poteva condividere con tutti gli appassionati come te il suo progetto.

Anemometro a coppe portatile

Ho chiesto a Federico tutto il materiale in suo possesso per presentare il suo progetto e devo dire che sono rimasto supefacentemente colpito dalla precisione con cui Federico ha redatto un documento di progetto adatto alla pubblicazione per cui mi limiterò solo a proportelo in una serie di articoli nei prossimi giorni così come descritto dall’autore.

Presentazione

Sono della classe 1965. Per lavoro mi occupo di informatica, ma nasco come Perito in Costruzioni Aeronautiche. Passione, quella per gli aerei, che mi porta oggi a praticare l’aeromodellismo.  Anche le barche, sempre radiocomandate, occupano parte del mio tempo. Ultimamente ho scoperto Arduino, e le infinite possibilità che offre. Così, siccome mi piace programmare, costruire e soprattutto imparare, e Arduino offre magnificamente tutto ciò, ho intrapreso anche questa nuova e stimolante via.
Insomma, se dovessi esprimere l’essenza ultima di ciò che mi appassiona, da sempre, direi:  Creare pensieri e trasformare i pensieri in cose attraverso la conoscenza.

Materiali e componenti utilizzati per l’anenmometro a coppe portatile

Di seguito l’elenco del materiale utilizzato per il progetto:

  • Scheda Arduino UNO R3
  • 2 resistori da 10 KOhm
  • 11 resistori da 330 Ohm
  • Sensore di vento FuturaNet 6710-WIND02
  • Display LED 4 digit LuckyLight KW4-56NCLB-P (a catodo comune)
  • 1 interruttore
  • 3 LED verdi
  • 1 pulsante NA (normalmente aperto)
  • 1 portabatterie per alimentazione
  • 1 presa da 5 mm e relativo jack
  • Cavi, connettori e basetta millefori
  • Materiali vari per la realizzazione dell’involucro e dell’impugnatura del sensore

Sensore di vento

Il sensore è l’articolo 6710-WIND02 prodotto da www.futuranet.it al prezzo di circe 27 Euro.

Il funzionamento è basato su un interruttore magnetico “reed” che viene chiuso al passaggio di un piccolo magnete montato sulla parte rotante dello strumento.

Il sensore ha quindi un cavo bipolare, da alimentare a 5V per ottenere un impulso ogni volta che il magnete compie un giro.

La meccanica risulta di buona qualità, mentre ho dovuto correggere un problema legato all’interruttore, che era stato montato in posizione errata.

In pratica veniva generato un doppio impulso ravvicinato, che cambiava anche in funzione del senso di rotazione. Ciò rendeva impossibile qualsiasi tipo di lettura affidabile.

Quindi ho riposizionato il reed ottenendo un unico impulso per giro del tutto privo di ulteriori interferenze.

Le specifiche dichiarate sono: 4 impulsi al secondo = 10 Km/h di vento

NOTA: Gli anemometri a coppe, come quello da me utilizzato, vengono calibrati in galleria del vento. La funzione che permette di calcolare la velocità è: V = A * f + B dove A e B sono due parametri, determinati sperimentalmente, che dipendono dalla geometria dello strumento.

Circuito per il sensore di vento

L’anemometro a coppe portatile è assimilabile, e di fatto lo è, ad un semplice interruttore che si chiude ad ogni giro.

Pertanto collegando un conduttore all’uscita +5V di Arduino, riceveremo un impulso di +5V / giro che leggeremo su un pin digitale settato in modalità INPUT.

L’altro conduttore proveniente dall’anemometro andrà collegato al GND di Arduino.

Bisogna però notare che quando l’interruttore è aperto, il pin digitale è collegato direttamente al GND, e se andiamo a leggere il segnale osserviamo che lo stato varia da HIGH a LOW e viceversa in modo del tutto imprevedibile, rendendo impossibile qualsiasi lettura attendibile.

Per evitare questo inconveniente si interpone una resistenza da 10 KOhm, detta di pull-down, che forza a zero il livello del pin quando non arrivano impulsi dall’anemometro.

Schema di collegamento del sensore

Il sensore è schematizzato con l’interruttore in alto a destra:

Anemometro a coppe portatile schema

Determinazione della velocità del vento

Le specifiche dello strumento dicono che 4 impulsi/s  corrispondono a 10 Km/h di vento. 

Dobbiamo perciò calcolare il numero di impulsi al secondo, da rapportare ai 4 di riferimento, per ottenere la velocità che stiamo cercando.

Il programma deve quindi determinare il tempo che intercorre tra due impulsi successivi, che chiameremo “durata”.

Ottenuta la durata calcoliamo il numero di impulsi al secondo.

Anemometro a coppe portatile formula 1

Da questi calcoliamo facilmente la velocità usando una proporzione:

Anemometro a coppe portatile formula 2

Quindi sostituendo la (1) nella (2) otteniamo:

Anemometro a coppe portatile formula 3

Per scrivere il programma ho dovuto prima comprendere bene il comportamento del sensore facendo alcune prove di lettura preliminari. Essendo dotato di un interruttore reed magnetico, questo rimane chiuso finché si trova sotto l’influenza del magnete. Pertanto l’impulso prodotto rimane in stato HIGH mentre il sensore copre un certo arco di cerchio.

In pratica, visualizzando il valore del pin su tutto il giro si ottiene un output di questo tipo:

000000000000000000011111111111111111110000000000000000000000000000

Quindi per la lettura dell’impulso ho scritto il software in modo da individuare il punto indicato  con “+”, ossia ho stabilito di prendere come punto di riferimento la transizione da LOW a HIGH (fronte di salita dell’onda).

0000000000000000000+1111111111111111111000000000000000000000000000

L’immagine sotto mostra graficamente le pulsazioni provenienti dal sensore visualizzate tramite un oscilloscopio software: Serial Oscilloscope 1.5.

Il programma è scaricabile gratuitamente dal sito http://www.x-io.co.uk/serial-oscilloscope e sfrutta le potenzialità derivanti dall’utilizzo di Processing come ambiente di sviluppo integrabile con Arduino, dal quale riceve un flusso seriale di dati che rappresenta graficamente.

Anemometro a coppe portatile serial oscilloscope 1.5

Si vede bene l’allungamento della durata delle pulsazioni mentre il sensore rallenta la sua rotazione.

Anemometro a coppe portatile serial oscilloscope 1

I punti indicati dalle frecce sono quelli di riferimento per il calcolo della velocità, come spiegato in precedenza.

Anemometro a coppe portatile serial oscilloscope

L’algoritmo per il calcolo è piuttosto semplice. Esso si basa essenzialmente su due variabili:

“stato”         memorizza lo stato corrente in ogni istante

“pinval”        memorizza il valore letto dal sensore in ogni istante

In pratica ad ogni loop del programma “stato” viene posto unguale al valore letto “pinval”, ma solo dopo aver verificato la condizione posta dall’istruzione “if”.

In questo modo è possibile rilevare il punto esatto in cui avviene il cambiamento della lettura (punto di transizione).

Nel punto di transizione (“stato” uguale a zero e “pinval” uguale a uno), inizia il calcolo del tempo trascorso dalla pulsazione precedente e il conseguente calcolo della velocità.

Il codice che segue fa quello che ho appena descritto:

void loop ()  
{ 
    pinval = digitalRead(getpulsepin);   // legge il pin del sensore

    if ((stato == 0) & (pinval == 1)) {	// punto di transizione
    durata = millis() - startime;		// calcola la durata della pulsazione
    startime = millis();			// setta il nuovo tempo di partenza 
    windspeed = 2500.0/durata;	// calcola la velocità in Km/h
    }

    stato = pinval;			// imposta lo stato uguale alla lettura del pin
}

Nel prossimo articolo leggerai come collegare il display e costruire tutto il circuito.

Intanto Grazie Federico.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/anemometro-coppe-portatile-prima-parte.html

7 comments

1 ping

Skip to comment form

    • Alessandro on 9 luglio 2016 at 17:31
    • Reply

    Ciao, tutto fantastico, ma non capisco questo punto:
    “Quindi ho riposizionato il reed ottenendo un unico impulso per giro del tutto privo di ulteriori interferenze.”
    Qual’è la correzione da apportare? Grazie

    1. Ciao Alessandro,
      il reed è usato come interruttore e segna quindi un impulso per ogni giro.
      La posizione del reed deve essere in funzione del fatto che vuoi evitare errori del segnale dovuti a interferenze di movimento.

    • wizy on 17 agosto 2016 at 23:30
    • Reply

    salve ho comprato lo stesso anemometro ma praticamente non gira se non con vento notevole mi chiedevo se c’è una velocità minima o devo lubrificarlo in qualche modo.

    1. Ciao Wizy,
      lascio il commento on-line per consentire a Federico di fornirti una risposta.

    • wizy on 18 agosto 2016 at 15:52
    • Reply

    grazie ! prima di provare a smontarlo vorrei avere qualche parere da chi lo ha usato … mi pare un po fragile e non vorrei fare danni.

    • GILLY on 14 giugno 2018 at 18:38
    • Reply

    mi può dare tutto il programma per favore?
    grazie

    1. Ciao Gilly,
      dovresti trovarlo negli altri articoli dedicati al progetto.
      Se non c’è puoi lasciare il commento per l’autore, Federico, che te lo fornirà appena possibile. Purtroppo non è un mio progetto.

  1. […] Anemometro a coppe portatile – prima parte […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.