Progetto Anemometro con Arduino [ in progress ]


Progetto nato per valutare l'installazione di una pala eolica. Prima d'investire una considerevole cifra per un impianto eolico conviene miurarne meticolosamente la conveninenza.

Questo tipo di monitorazione permette anche di decide la miglior pala eolica da montare: tipo di pale e potenza motore.


Materiale

Oggetto

Costo ( incluse le spedizioni )

FonteNote

Arduino 2009

€ 20

Ebay.itNon importa comprare l'Arduino2. Questò è PIU che sufficiente. Ora si trovano ottime soluzioni anche a 9€ come l'Arduino nano non originale }

Ethernet Network Shield for Arduino UNO Mega W5100

€ 9,50

ebay.itPer scaricare dati su SD ed poterli consultare in tempo reale via internet.

Anemometro con staffa

€ 33,99

www.robot-domestici.itSi trovano anche a meno, ( 10€ circa ) non volevo perder tempo a fare il reverse engegneering perchè essendo pezzi di ricambio per marche come Oregon Scientific sono intelligentemente sprovvisti di data-sheet. Update: l'anemometro fornito da robot-domestici.com è penoso, gira solo con venti superiori a 13 km/h.

Staffa x anemometro 2 metri

€ ??

-

Totale

€ 63,49

-

Arduino 2009

Gli spari un pò di corrente quello è contento! In merito: "Solar Shield" ( alimentazione solare ) oppure trasformatore AC 220v -> DC 5v ?
Suddetto trasformatore costa 5€ e consuma 1 watt/ora al massimo. Questo progetto prevede una durata di 365 giorni. Dopo tale periodo il consumo di 1 watt / ora è di ( 1 w/h * 24 * 365 ) = 8760 watt / anno che sono 8,7 kw/h l'anno. Ovvero circa € 6 di corrente e € 5 di trasformatore contro € 27 di "Solar Shield" più € 15 per una batteria ai polimeri di litio da 2 ampere e € 12 per il pannello solare.
Mi conviene alla grande il trasformatore sebbene sia meno figo! In caso non vi sia modo di portare l'alimentazione nel sito dell'esperimento l'alimentazione solare è ovviamente obbligata!


Anemometro

Esistono vari tipi di anemometri. Quello usato in questo progetto grazie a dei magneti permamenti ( non necessita quindi di alimentazione ) invierà un impulso ogni rotazione.
Le specifiche di questo sensore indicano che con un vento di 10 km/h ( 2,78 m/s ) si avranno 4 pulsazioni / secondo.
Conseguentemente con un vento di 5 km/h ( 1,39 m/s ) si avranno 2 pulsazioni / secondo; facendo l'implicazione opposta con una pulsazione al secondo avremo un vento di 2,5 km/h ( 0,70 m/s ).


Staffa e dove posizionare il sensore

Gli oggetti come alberi, comignoli e quant'altro frenano ed alterano la direzione del vento molto di piu di quanto ci si possa immaginare. E' essenziale quindi posizionare il sensore ed in futuro il generatore eolico in un punto minormente influenzato da tali interferenze.
Nel caso specifico di questo esperimento la soluzione migliore è risultata un altezza di circa due metri sopra il comignolo prescelto dell'abitazione in esame.




Progettazione

Approccio TOP-DOWN:

  • Il sensore invia un impulso ogni rotazione.
    Problema: E' facile confondere rotazioni lente con rotazioni parziali ( vento, quiete, vento ). Si deve decidere una velocità minima rilevabile.
    Soluzione: Il 99% dei generatori eolici inizia a produrre corrente sopra i 7,2 km/h ( 2 m/s ) alcuni, pochissimi sopra i 6,48 km/h ( 1,8 m/s ).
    Una rotazione al secondo indica una velocità di 2,5 km/h ( 0,7 m/s ) ed un conseguente margine di sicurezza di 2,6. Mi piacerebbe spingermi un pò oltre.
    Una rotazione ogni 2 secondi indica una velocità di 1,25 km/h ( 0,35 m/s ) ed un conseguente margine di sicurezza di 5,2. Forse rischio troppo.
    Stazioni meteo con gli anemometri hanno velocità minime di 0,2 m/s ( 0,72 km/h ) che in questo caso equivarrebbe a
    0,72 km/h * ( 1/10 h/km * 4 pulsazioni / secondo ) = 0,288 pulsazioni / secondo => 1 pulsazione ogni 3,47 secondi. Bah! Evidentemente prima non rischiavo affatto con una pulsazione ogni 2 secondi! :-)
    Conclusioni: Le stazioni meteo tradizionali lasciano intercorrere al massimo 3,47 secondi fra una pulsazione e l'altra dopo di che considerano il vento fermo. Adottiamo la stessa strategia!
  • Convertire gli impulsi in velocità
    Problemi: registrare l'ora in microsecondi ad ogni impulso è troppo oneroso. Non mi chiedo nemmeno se l'arduino regga tale ammontare di dati/operazioni ma è comunque uno spreco.
    Soluzione: Basterà ricordarmi l'ora ( da ora in poi intenderò per ora la data e l'ora in microsecondi ) dell'ultima rilevazione ( max 3,47 secondi fà ) ed in base al lasso di tempo intercorso fra le due pulsazione calcolarne la velocità.
    Tempo intercorso fra due pulsazioni = ora_ultima_pulsazione - ora_penultima_pulsazione;
    (0,007 [m/100-esimi di sec]) / tempo_intercorso [sec/100] = velocità [m/sec/100]
    In questo modo memorizzerei sempre un valore ogni pulsazione, ma in realtà memorizzerò questo dato per fare una media ogni secondo. Volendo una precisione ogni secondo non posso far di meglio che memorizzare i valori di vento maggiori zero ( non memorizzando nulla quando il vento è fermo ).
    Ipotizamo ( su base annuale ) che una giornata media abbia il 50% di vento => 86400 secondi in un giorno quindi 43200 memorizzazioni. Una memorizzazione sarà composta da l'ora ( in formato timestamp => precisione al secondo ) ed il vento con valori da 0,2 m/s ( 0,7km/h ) a 35 m/s ( 126 km/h ).
    Memorizzando il tutto in file csv una memorizzazione sarà al massimo: "1593993376","126,99" + il carattere d'invio. Se consideriamo di salvare il file in UTF-8 il totale ammonta a 22 byte/memorizzazione.
    Quindi 22 [byte/memorizzazione] * 43200 [memorizzazioni/giorno] = circa 983 KByte/gg => circa 330 MByte / anno. 660 MByte l'anno se non cessasse mai il vento.
    Memorizzando solo l'ora d'impulso avrei eliminato la memorizzazione della velocità aggiungendo due byte per i centesimi di secondo. Esempio con punto per separare i centesimi: "1593993376.28". Avrei quindi risparmiato 9-2=7 Byte a registrazione circa il 32%. => 105 MByte l'anno che con un vento ininterrotto sarebbero 210 MByte.
    La prima soluzione è comunque buona perchè il processore non scala e quindi gira sempre alla stessa velocità: 16 Mhz. Il risparmio energetico non è possibile, tanto vale usare la potenza di calcolo per avere già le medie fatte.
    In merito avrò un massimo di 126 km/h => 126 [km/h] / 10 [km/h] * 4 [Hz] => 50Hz ( 50 pulsazioni / secondo ) ed un processore da 16 MHz. 16 MHz / 50 Hz => 320 KHz. => Ok!
    XX [m/s] = media di tutti gli intervalli ricaduti nel secondo; nel caso un solo intervallo ricada fra 1 o 2 secondi farò una media pesata.
    Conclusione:


Rilevazioni

Lasso di tempo

Velocità

2020-07-05 23:56:16

0 km/h

0 m/s

2020-07-05 23:56:16

0 km/h

0 m/s

Conversioni
Km/h<->m/s
0<->0
1.8<->0.5
3.6<->1
5.4<->1.5
7.2<->2
9<->2.5
10.8<->3
12.6<->3.5
14.4<->4
16.2<->4.5
18<->5
19.8<->5.5
21.6<->6
23.4<->6.5
25.2<->7
27<->7.5
28.8<->8
30.6<->8.5
32.4<->9
34.2<->9.5
36<->10
39.6<->11
50.4<->14
61.2<->17
72<->20
82.8<->23
93.6<->26
104.4<->29
115.2<->32
126<->35
136.8<->38