Go Down

Topic: Lettura Anemometro Reed dentro un ciclo orario (Read 555 times) previous topic - next topic

valdarno8

Ciao, mi trovo davanti all'ennesimo gap... stavolta con la lettura di un anemometro!
Devo effettuare una lettura da un anemometro semplice con Reed all'interno di un ciclo che avviene una sola volta all'ora.
Il ciclo parte quando siamo al minuto zero e il secondo zero di ogni ora andando a leggere l'RTC.
Questo ciclo mi legge diversi sensori, poi arriva all'anemometro.
Ho trovato alcuni sketch sulla lettura degli anemometri ma prevedono il loop continuo in cui con l'uso di millis() si conta quanti cambiamenti di stato del pin avvengono in un certo lasso di tempo.

Inserendo questa procedura nel mio ciclo non mi legge niente perché se il programma non fa la lettura preciso nell'istante in cui il reed chiude, non si accorge del cambio di stato e salta l'if.

Qualcuno saprebbe aiutarmi?

Grazie mille in anticipo!!

Etemenanki

Ehm, no, l'anemometro a reed non si usa cosi ... si puo usare in due modi diversi, secondo quanto ti serve ...

Primo modo, velocita' istantanea, si usa un'interrupt e si calcola il tempo fra due chiusure, in questo caso hai sempre una misura continua, questo nel caso ti serva avere sempre la velocita' ...

Secondo modo, campionamento a tempo, se non ti serve sapere sempre la velocita', ma ti bastano indicazioni "di media" prese ogni tot tempo (diciamo, ad esempio, una lettura ogni 5 o 10 minuti), allora ogni tot tempo, attivi una routine che legge un'ingresso digitale per, ad esempio, 10 secondi (o il tempo che vuoi tu), ed in quei 10 secondi conti quante volte il contatto si chiude, quindi ricavi la velocita' in base al valore (sapendo quante volte si chiude al secondo per tot velocita', dato che in genere e' sempre indicato da chi vende quegli oggetti)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

valdarno8

Ciao Etemenanki e grazie per la risposta.
Cosa intendi per routine, un loop tipo un ciclo for all'interno del mio ciclo che gira una volta l'ora?

cyberhs

Un buon sistema prevede l'uso di un ingresso digitale collegato ad un external interrupt.

In pratica, indipendentemente dalla durata del tuo loop, la routine collegata all'interrupt conta quante volte il reed chiude o apre.

Allo scadere del tempo che hai prefissato per il tuo loop (1 ora, ad esempio) leggi in contenuto della variabile contatore, calcoli la velocità del vento ed azzeri la variabile contatore.

Devi imparare l'uso di questa tecnica:
http://www.arduino.cc/en/Reference/AttachInterrupt



Go Up