lunedì 10 febbraio 2014

Meteo - Pluviometro

Pluviometro

- Stazione meteo con Arduino - 

- Weather Station with Arduino -

- 09/02/2014 -

  Con questo post continua la costruzione della "nostra"  stazione meteorologica.

This post continue the project for the weather station.

 Oggi vediamo come utilizzare un pluviometro con Arduino 

Today we see how to use a rain gauge with Arduino

 

 

 

 Esistono pluviometri manuali, pluviometri a vaschetta basculante, (vedi su wikipedia altre informazioni).
Pluviometro manuale
Occorrente:
Un contenitore  sufficiente a contenere la massima quantità di acqua che può cadere in zona nelle 24h.
Dovremo calcolare la superficie di raccolta con precisione.
Occorre un cilindro graduato per misurare la quantità di pioggia caduta nelle 24h.
Si utilizza così:
- alle ore 24 di ogni (notte), un coraggioso (anche in caso di neve, pioggia, grandine ecc..) vuota il contenitore nel cilindro graduato e misura i ml di acqua raccolti.
- adesso si potrà calcolare i mm/m²  con questa ==>  ml raccolti / superficie in cm²   
Es. raccolti 50ml,  superfice di raccolta 200 cm² avremo ( 50/200) = cm 0.25 cioè 2,5 mm/m²
Questo pluviometro è semplice, economico, preciso, ma molto scomodo!

Usiamo Arduino è più comodo!! E divertente.

Con arduino possiamo utilizzare un pluviometro a bascula, o a doppia vaschetta basculante.
Ho trovato su ebay un pluviometro a doppia vaschetta basculante.


Questo è l'esterno foto 1

Questo l'interno foto 2

Come potete vedere dallo foto ( 1) sopra c'è una superficie di raccolta a forma d'imbuto rettangolare con un foro sul fondo, l'acqua raccolta cade sulla vascchetta sottostante (vedi foto 2) quando il peso dell'acqua fa ruotare sul perno al centro in basso foto 2, l'altra vaschetta si pone sotto il foro e comincia a riempirsi mentre la prima si è svuotata. Questo movimento fa muovere un magnete che chiude un contatto reed, la cosa si ripete.
Avremo così una serie di chiusure ed aperture del contatto reed che ci segnaleranno lo svuotamento della vaschetta a bascula.
Conoscendo la quantità di acqua che fa ruotare la vaschetta, e contando il numero delle vuotature ( o basculate), potremo ricavare i mm/m².
Il venditore dichiara questi dati:

The output switch closes once per 0.3mm of Rainfall. e.g

    10   pulses = 3mm of rainfall
    50   pulses = 15mm of rainfall
    100 pulses = 30mm of rainfall
Quindi ogni impulso 0.3mm di pioggia!
In ogni caso quanto ho scritto prima sul pluviometro manuale potrebbe tornarci utile per verificare quanto detto dal costruttore, oppure per eseguire una taratura nel caso che ci manchino i dati del pluviometro in nostro possesso.

Non ci resta che contare gli impulsi!!
Questo lo sappiamo fare, basta vedere il post anemometro.
Purtroppo per la pioggia ci sono delle considerazioni da fare:
La pioggia è un evento che accade con tempi molto diversi, possono occorrere giorni o mesi prima che si verifichi, può durare minuti oppure molte ore. Questi fatti rendono problematico l'uso di Arduino in quanto dovremmo aspettare l'impulso dal reed senza poter fare altro.

Fortunatamente possiamo risolvere anche questi problemi con l' INTERRUPT.
L'IDE di arduino ci rende disponibile l'utilizzo degli interrupt in modo semplificato con la chiamata ad una funzione specifica (vedi reference di arduino).

attachInterrupt() vedremo nello sketch come utilizzare questa funzione per approfondimenti sul tema degli interrupt vi consiglio di leggere sul sito di Michele Maffucci, e sul sito di Mauro Alfieri, logicamente anche il reference sul sito arduino.

In breve questa funzione abilita uno o più d'uno (su Arduino UNO i pin 2 e 3),  ad ascoltare il verificarsi di un'evento, quando questo si verifica il microcontollore sospende quello che stà facendo ed esegue la routin che abbiamo preparato, eseguita questa torna al programma.

Così abiliteremo un pin (2 o 3) in attesa che la vaschetta riempita dalla pioggia ruoti, azionando il reed, e quindi il microcontrollore sospende quello che stà facendo conteggia l'avvenuto svuotamento della bascula e torna a fare quelle che deve .... fino al verificarsi di altro evento.

Tutto qui. Si dobbiamo anche tener conto del passare del tempo perchè trascorso il tempo che vogliamo, dovremo resettare il conteggio, magari alle 24 di ogni giorno.
Ma potremmo farlo anche ogni ora.

 Ho realizzato questi collegamenti:




 Nelle foto qui sotto la realizzazione pratica del collegamento del pluviometro.



L'insieme.


Il pluviometro




 I collegamenti sulla BB.

Sulla destra ho posizionato due led il LED verde lampeggia (loop principale) facendo lavorare il microcontrollore, al momento dell'Interrupt, esegue il conteggio della basculata accende il LED giallo e poi riprende il lampeggio del LED verde.
Nella versione successiva lo sketch, anzichè far lampeggiare un LED eseguirà le altre misure utili alla stazione meteo.

Lo sketch.
//------------------------------------------------------------------------------------------------------------//
/*
 *** Sergio & Adriano Prenleloup ****
  
 ***** Stazione Meteo *********
 *** Prova per pluviometro ****
 *** Versione 0.01 ************
 ******   02/02/2014 **********
 ******************************
  
Questa è una prova con led per provare e tarare il pluviometro
si utilizza un led lampenggiante che viene "INTERROTTO" dalla
chiamata del pluviometro, si conteggia l'avvenuta basculata
del pluviometro, si sommano i millimitri caduti si accende il led
giallo quidi si torna al programma principale.
*/

// -----------------------------------------------------------------------
// costanti
const unsigned int durataMisura = 60 * 1000;   //durata osservazione
// questa durata osservazione è di 60 secondi e serve  solo per il
// filmato dimostrativo - sarà invece di 24 ore o frazioni da cumulare
// fino alle 24 ore.
// -------------------------------------------------------------------
// led dimostrativi
const int pinLed_blink = 5; // led verde che lampeggia
const int pinLed_inter = 6; // led gallo per interrupt
//--------------------------------------------------------------------
// costante contenuto in mm di ogni bascula ( venditore e nostra)
//const float mmGoccia = 0.3; // costante bascula indicata dal venditore
const float mmGoccia = 0.43; // costante bascula ricavata ( vedi blog)
                             // corrisponde ai mm di pioggia per ogni bascula
const int pinInterrupt = 2; // pin interrupt "0"
//-------------------------------------------------------------------------
// variabili usate nella funzione interrupt
//-------------------------------------------------------------------------
volatile unsigned int gocce = 0; // variabile conteggio numero basculate
volatile float mmPioggia = 0.0; // conteggio millimetri di pioggia
volatile boolean statoLed = false; // cambia stato nell'interrupt
//-------------------------------------------------------------------------
unsigned long oraLetturaPioggia = 0; //orario lettura misura
unsigned long oraCorrente = 0;

// ---------------------------------------------------
// setup
//----------------------------------------------------
void setup()
{
  Serial.begin(9600);
  pinMode(pinLed_blink, OUTPUT);
  pinMode(pinLed_inter, OUTPUT);
  //-------------------------------------------------------------------------
  // Interrupt pluviometro
  //-------------------------------------------------------------------------
  attachInterrupt(0, ContaGocce, RISING); // modo da LOW ad HIGH
  //-------------------------------------------------------------------------
  
  oraLetturaPioggia = millis() + durataMisura; // imposta ora prima lettura
}
//--------------------------------------------------------------------------
// programma principale
//--------------------------------------------------------------------------
void loop()
{
  // operazioni perdita di tempo
  digitalWrite(pinLed_blink, HIGH); 
  delay(100);
  digitalWrite(pinLed_blink, LOW);
  delay(100);
  //--------------------------------
  
  // stampa letture
  oraCorrente = millis();
  if (oraCorrente > oraLetturaPioggia) // si controlla se ora di chiusura
                                       // del conteggio
  {
    Serial.print("Pioggia caduta in ");
    Serial.print(durataMisura /1000);
    Serial.print("s = ");
    Serial.print(gocce);
    Serial.print(" = ");    
    Serial.print(mmPioggia);
    Serial.println(" mm");    
    //azzera millimetri misurati (=> vuota contenitore)
    gocce = 0;
    mmPioggia = 0;
    //imposta ora della prossima lettura
    oraLetturaPioggia = oraCorrente + durataMisura;
  }
}
//--------------------------------------------------
// funzione interrupt
//--------------------------------------------------
void ContaGocce()
{
  gocce++; // incrementa numero basculate
  mmPioggia = mmPioggia + mmGoccia; // sommatoria millimetri pioggia
  statoLed = !statoLed;
  digitalWrite(pinLed_inter, statoLed ? HIGH : LOW);
}


Per provare il funzionamento ho eseguito la taratura del pluviometro, in questo modo:

1) ho misurato 50ml di acqua con un misurino graduato
1b) misurata la superficie del pluviometro.
2) avviato lo sketch con interrupt.
3) cominciato ad introdurre acqua nel pluviometro ( vedi filmato).
4) contato le "basculate" cioè gli impulsi dati dal reed.
5) confrontato se i mm/m² corrispondono a quelli teorici.
6) aggiustata la costante fornita dal venditore e ricominciato dal passo 2.

Ma quali sono i mm/m² teorici?

Rileggendo il primo pezzo di questo post abbiamo la risposta  - ml raccolti / superficie in cm²   

Nel mio caso ho versato 50ml,  in volume = 50 cm³.
La superficie è 5*11 = 55 cm²  quindi (cm³/cm²) = cm.  quindi ( 50cm³/ 55cm²) = cm 0,909 cioè    mm= 9,09  
 Come potete vedere qui sotto lo screenshot  del monitor seriale non siamo lontani da quanto previsto in teoria.
In ogni caso prima della messa in funzione definitiva farò  ulteriori controlli, in ogni caso è importante aver stabilito un metodo per eseguire la taratura.

Qui sotto un filmato dimostrativo


 

Attendo commenti e suggerimenti

Nel prossimo post vedremo come misurare la pressione atmosferica.
Grazie per avermi seguito....




39 commenti:

  1. Ciao Sergio ... prima che mi dimentico...


    http://leggiamounlibro.blogspot.it/2014/02/breve-antologia-di-libri-belli.html


    Conosci questo Laboratorio su Arduino ...


    cosa è Arduino ...
    http://www.mastrohora.it/arduinomio/8_cosaearduino.php

    http://www.mastrohora.it/arduinomio/index.php

    SALUTI & BACI

    RispondiElimina
  2. Mitico!! Perfetto per chi deve cominciare, ma interessante per tutti, da visitare e approfondire.
    Grazie della segnalazione.
    Sergio

    RispondiElimina
  3. Ciao, interessante il progetto. Sono nuovo di questo mondo ed essendo in possesso di una stazione meteo DeAgostini volevo convertire i sensori ad Arduino. Per quanto riguarda il pluviometro ho anche io il contatto reed e posso farlo tranquillamente. Per la temperatura, vento ed umidità utilizzerò altro. Mi piace veramente quello che hai fatto ma non riesco a trovare il valore del componente blu (ipotizzo sia un condensatore)
    Nel post hai spiegato tutto molto bene ma mancano i dati di progetto con i rispettivi componenti da utilizzare.

    Saluti

    RispondiElimina
    Risposte
    1. Grazie per il commento.
      Il componente blu è un condensatore ceramico da 100nF 6,3V.
      I valori delle resistenze corrispondono al codice colori, in ogni caso sono:

      R1 = 10 Kohm
      R2 = 100 ohm

      le resistenze ai led 330 ohm ( ma in realtà si può omettere tutta la parte relativa ai led )

      Vedrò di inserire l'elenco componenti.
      Se vuoi altre informazioni lascia un commento, se posso rispondo nel giro di pochi giorni.
      Saluti
      Sergio

      Elimina
    2. Potresti spiegare perché usi quelle due resistenze e condensatore in parallelo alla resistenza? Grazie

      Elimina
    3. Ciao! Sandrone. Lo schema adottato è derivato da esempi tratti da ABC_Card connessioni suggerite nel sito ufficiale di Arduino. La resistenza da 100 omm, il condensatore da 100nF e la resistenza da 10k, realizzano un semplice (debounce) anti-rimbalzo, volendo è possibile utilizzare un anti-rimbalzo software come quello implementato per i pulsanti la trovi anche in questo blog.
      La soluzione adottata è semplice e sembra funzionare.
      Io ho controllato i conteggi delle basculate e non ho riscontrato errori significativi.
      Esistono metodi hardware più sofisticati e forse più efficaci per il debounce.
      Ma quello adottato svolge bene la sua funzione.
      Ti ringrazio per il commento.
      Cordiali saluti
      Sergio

      Elimina
    4. Ciao, io riscontro occasionalmente falsi input quando accendo le luci di casa. Ho provato un filtro EMI ma non ho risolto. Pensavo fosse il lungo cavo del pluviometro ma nemmeno quello. Cosa potrebbe essere?

      Elimina
    5. Penso che il problema sia qualche influenza sul micro di Arduino, potresti provare con filtri, e cavi schermati, mettendo la calza a potenziale di terra.
      Potresti provare anche a inserire il circuito all'interno di un contenitore metallico anche questo con la parte di metallo a massa, se è già in un contenitore di plastica prova a fasciarlo con foglio di alluminio.
      Non so cosa altro dire, se chi ci legge ha suggerimenti sono graditi.
      Prova a postare il problema sul forum di Arduino ( dopo aver fatto le prove che ti ho indicato)
      Ciao!
      Sergio

      Elimina
  4. Il pluviometro di che marca è? lo vorrei integrare a questo mio progetto:

    https://github.com/icnmfabro/Ardu_Xively_Weather_Station

    RispondiElimina
    Risposte
    1. Ciao!
      Come ho scritto nel post:
      "Ho trovato su ebay un pluviometro a doppia vaschetta basculante."
      Oggi ho guardato su ebay ed ho visto che ne vendono ancora sono indicati come parti di ricambio
      Al prezzo compralo subilo di 16,67 euro ...
      Saluti
      Sergio

      Elimina
  5. Ciao!
    Senti volevo farti due domande: ma se uso questo di pluviometro http://www.elledishop.it/dettagli.asp?sid=30244689820151110200918&idp=70&categoria=26
    E' uguale a quello che hai usato tu più o meno? Penso di si perché è sempre con vaschetta basculante...
    Poi secondo, dove colleghi il pluviometro sullo schema, che vuol dire reed pluviometro? Quali fili sono del pluviometro e dal filo quanti cavi escono, è un rj11? Se si quali di quei fili devo collegare a massa o al più?

    RispondiElimina
    Risposte
    1. Questo commento è stato eliminato dall'autore.

      Elimina
    2. Ciao!
      Cercherò per quanto mi è possibile di rispondere alle tue domande.
      -- "E' uguale a quello che hai usato tu più o meno? " -
      Non sono riuscito a trovare lo schema o delle precise indicazioni sull'uscita del tuo pluviometro, quindi non so dirti ma ho visto un filmato su youtube dove spiega come sostituire il reed del pluviometro. Concludendo direi di si o puoi provare ad utilizzarlo o apportare le modifiche necessarie.

      -- "Poi secondo, dove colleghi il pluviometro sullo schema, che vuol dire reed pluviometro? "

      Io ho scritto semplicemente reed ( il reed è un commutatore che si chiude al passaggio di un magnete, e si riapre appena il magnete si allontana) le vaschette basculanti fanno si che il piccolissimo magnete passi vicino al reed che si chiude e quindi si riapre generando così un impulso,
      devi collegare i due fili che provengono dal reed del tuo pluviometro uno al +5V e l'altro alla resistenza da 100 ohm.
      Nel schema friz ho indicato il reed (che in realtà si trova all'interno del pluviometro).
      Spero di averti chiarito tutto.
      Non importa registrarsi ma almeno lascia un nome o nickname.

      Grazie per il commento.
      Saluti
      Sergio.

      Elimina
  6. Si mi presento subito! Mi chiamo Eugenio, piacere Sergio ;)
    Comunque grazie delle risposte. ;)
    Anche io mi sono informato e il reed è così suddiviso:
    Pin 1 Data e Pin4 GND
    Quindi in poche parole ho messo il data tra la 5 v e l'ingresso digitale con una resistenza di pull up e il gnd alla massa di arduino. Ancora non ho testato il tutto e mi sto informando se va bene un collegamento simile! Le opportune modifiche penso dovrò farle sul discorso di taratura dello sketch...
    In ogni caso qua lo schema che ho fatto, visto che voglio fare una stazione meteo completa e ho già visualizzato tutto, però voglio aggiungere il pluviometro e magari anche un rtc e poi anche mettere i dati online!
    Ti metto l'immagine dello schema che ho fatto e di quello che ho visualizzato per ora sul display:
    http://i.imgur.com/i8tQwz7.jpg
    http://i.imgur.com/61cmYmc.png

    In ogni caso mi chiedevo da un po', ma a cosa serve quell'anello condensatore e resistenza??

    RispondiElimina
  7. Ah ecco ti eri sbagliato sullo schema con frizting, sulla bread board ovviamente lo hai fatto giusto!
    E' così
    http://i.imgur.com/GqQ4Xet.png

    Io ho messo una resistenza da 4.7k perché di solito si usa questo valore per il pull up tra data e 5V

    RispondiElimina
  8. Sono sempre Eugenio!
    Allora alla fine ho collegato il tutto così e ho inserito pure un rtc nello schema elettrico:
    http://i.imgur.com/ikZ1kFd.png

    RispondiElimina
    Risposte
    1. Si mi sembra che hai fatto un bel lavoro!
      Ora non ti rimane che fare una prova di funzionamento, ma ho visto che sei già molto avanti.
      Congratulazioni e grazie per il commento.
      Sergio

      Elimina
  9. Grazie a te ! ;)
    Ho ordinato per ora l'rtc, voglio vedere se funziona insieme al bmp 180, visto che sono collegati in parallelo sui pin A4 e A5, mi hanno detto che non ci sono problemi! Invece siccome poi voglio mettere pure un ethernet shield e come sai usa i piedini da D10 a D13, devo vedere anche lì, perché il display occupa i piedini 11 e 13 e magari devo fare qualche modifica software in quel caso, perché se no si sovrappongono. Perché si possono collegarli più dispositivi perché c'è il BUS SPI però forse gli devo specificare che sono due indirizzi diversi. Magari scrivo qui poi gli aggiornamenti almeno ti tengo aggiornato!
    Eugenio

    RispondiElimina
    Risposte
    1. Bene ottimo.
      I pin A4 e A5 sono:
      In Arduino Uno A4 (SDA), A5 (SCL) relativi alla I2C utilizzata dal rtc e anche dal bmp 180.
      Puoi vedere i due post che ho pubblicato relativi al bus I2C.
      Se poi ti mancano pin puoi utilizzare un lcd seriale risparmiando pin, ( ma costano di più sic!).
      Saluti
      Sergio

      Elimina
    2. Allora Sergio ho provato sia l rtc sia il bmp 180 insieme sul bus I2C e funzionano senza problemi! Adesso mi rimane da fare il programma quando prenderò il pluviometro e l'ethernet shield, sperando che quest'ultimo funzioni insieme al tft... a come ho capito non dovrei avere problemi perché solo se erano collegate due cose sul pin 10 digitale era un problema! Comunque guarda siccome farò il circuito stampato ti pubblico il pcb e l sch che ho appena fatto! Un duro lavoro per il pcb! Vicino alla porta usb e alimentazione di arduino, siccome metterò l'ethernet shield sopra arduino e poi il circuito stampato sopra l'ethernet shield, ho messo i mors a vite del tx20 e diodi un po' più sopra verso il connettore di alimentazione di arduino, se no magari sbattono i piedini di questi componenti sul connettore rj 45 dell'ethernet!

      http://i.imgur.com/RKl7t0a.png
      http://i.imgur.com/zyu5osu.png

      Poi ti volevo chiedere, siccome momentaneamente volevo salvare dei dati nella eeprom, visto che dopo penso che utilizzerò l sd card dello shield ethernet, ho avuto questo problema e ho chiesto su arduino forum, ma nessuno ancora mi ha risposto... ci puoi dare un'occhiata ?

      http://forum.arduino.cc/index.php?topic=362222.0

      Alla prossima e grazie! ;)
      Eugenio

      Elimina
    3. Ciao!
      Complimenti per il lavoro!
      Nel tuo ultimo messaggio la parte finale è troncata e non capisco la domanda (riporto qui la parte finale che è arrivata)
      Poi ti volevo chiedere, siccome momentaneamente volevo salvare dei dati nella eeprom, visto che dopo su Meteo ...??
      Non sono sicuro ma per utilizzare la ram per le variabili occorre dichiararle volatili ma non sono molto sicuro che la cosa ti serva.
      Sergio

      Elimina
  10. Grazie!
    Comunque la domanda era che siccome volevo per ora salvare i dati nella eeprom dato che poi utilizzerò la sd card, ho avuto problemi del tipo che su certi indirizzi che impostavo non me li leggeva e ti volevo linkare il topic su arduino forum http://forum.arduino.cc/index.php?topic=362222.0
    Comunque adesso ho risolto più o meno, ho messo degli indirizzi diversi all'inizio delle variabili eeaddress e fa, ma intanto poi userò l'sd quindi per ora anche se ho quel problema mi arrangio ;)
    Ti lascerò i prossimi aggiornamenti! ;) Se vuoi segui questo topic su questo forum http://www.lineameteo.it/stazione-meteo-fai-da-te-vf2-vp377169.html#p377169
    E' lì che li pubblico di solito, poi farò una specie di guida a lavoro finito! E quando potrò mettere tutto online farò parte della rete di linea meteo che comprende oltre 1000 stazioni in italia!

    RispondiElimina
  11. Ciao Sergio!
    Allora ho fatto pure il pluviometro ;) Però ti volevo chiedere una cosa... hai qualche idea per calcolare il rain rate? Cioè io teoricamente sì, però non so metterla in pratica con arduino. Cioè bisogna praticamente fare che se passano per esempio 3 minuti tra una basculata e la successiva allora il rain rate è 10mm/h ad esempio, poi se passano 6 minuti 5 mm/h e così via... hai qualche aiuto da darmi?
    Qua l'immagine aggiornata di tutto quello che visualizzo sul display, mi manca solo il rain rate.
    http://www.lineameteo.it/files/images/1789/img_0538.jpg

    RispondiElimina
    Risposte
    1. Ciao!
      Partiamo da questo il Rain rate viene espresso solitamente in mm/h e rappresenta l'intensità di pioggia in quel momento. E' espresso in mm/h per indicare che se la pioggia continua con una intensità costante in un'ora avremmo X mm/h.
      Ad esempio un rain rate di 10 mm/h indica una bassa intensità di pioggia con 100 mm/h abbiamo una pioggia forte.
      Credo che sia sufficiente contare le basculate nell'intervallo di un minuto e quindi moltiplicare per 60.
      E' un dato che può variare anche molto in caso di piogge con raffiche.
      Non so molto di più.
      Saluti cordiali Sergio

      Elimina
  12. infatti è il fatto che può variare molto che è un problema, massimo in quel modo come hai detto mi posso accontentare e fare un rain rate medio in tot tempo... perché il problema che per fare una basculata in un minuto ci vuole un intensità di pioggia di circa 30mm/h! E significa che piove molto forte... in realtà anche 10mm/h è una pioggia abbastanza forte, sul moderato forte... 100mm/h è un diluvio che capita raramente se non in estate con qualche temporale! Considera che facendo due conti, siccome il mio pluvio ogni basculata corrisponde a circa 0.51mm, il che significa che con un intensità di 10mm/h una basculata avviene dopo 3 minuti e 15 secondi circa! Per questo anche se volessi partire dal almeno 2.5mm/h, dovrei fare una misurazione di 13 minuti, che sarebbe una basculata ogni 13 minuti 2.5mm/h e siccome l'intensità di pioggia varia tantissimo, di solito, in 13 minuti, nel metodo che mi hai detto calcolerei il rain rate medio ad esempio in 13 minuti. E' già qualcosa ;) Se volessi farlo preciso in tempo reale avrei bisogno tipo di trasformare il rumore del pluviometro in volt, tipo sfruttando le uscite pwm...

    RispondiElimina
  13. Ciao Sergio.
    Qual'è la funzione del condensatore da 100 nF? Proteggere Arduino?

    RispondiElimina
    Risposte
    1. Ciao! La resistenza da 100 omm, il condensatore da 100nF e la resistenza da 10k, realizzano un semplice (debounce) anti-rimbalzo, volendo è possibile utilizzare un anti-rimbalzo software come quello implementato per i pulsanti la trovi anche in questo blog.
      La soluzione adottata è semplice e sembra funzionare.
      Io ho controllato i conteggi delle basculate e non ho riscontrato errori significativi.
      Esistono metodi hardware più sofisticati e forse più efficaci per il debounce.
      Ti ringrazio per il commento.
      Cordiali saluti
      Sergio

      Elimina
  14. Buonasera, vorrei sapere cos'ha in uscita il pluviometro, solo due cavi? Perché su qualcuno che si trova in internet ha una presa "simil ethernet", vorrei capire meglio.
    Gentilmente sarebbe possibile postare qui anche il link del pluviometro esatto per arduino?
    Grazie!

    RispondiElimina
    Risposte

    1. Ciao!
      Il pluviometro che ho usato si basa su una bascula che si vuota ed un sensore reed che "sente" il movimento ( con l'aiuto di un magnete).
      Il reed funziona come un interruttore che si chiude e si apre, lo sketch non fa altro che conteggiare queste interruzioni (utilizzando gli interrupt disponibili su arduino).
      Quindi sono solo due i fili, anche se come hai notato ci sono alcuni che hanno piccole prese simili ethernet, in realtà vengono utilizzati solo due fili.
      Non è possibile dare indicazioni per un pluviometro esatto (ho indicato nel post come eseguire una taratura di prova).
      E' importante che sia con bascula e con reed per poter utilizzare lo sketch del post.
      A titolo di esempio ti allego un link su amazon (ma non posso sapere quanto rimarrà valido)

      https://www.amazon.it/MISOL-Ricambio-stazione-misurare-pluviometro/dp/B00QDMBXUA/ref=sr_1_13?ie=UTF8&qid=1496651869&sr=8-13&keywords=pluviometro

      Elimina
  15. Gracias Sergio por el proyecto, solo comentar que a mi me daba lecturas falsas del numero de golpes (goccie), me daba el doble, cambiando el condensador de 100 nF por un diodo led a la salida de la R2 de 10k el problema se arreglaba y no es necesario los otros 2 leds para el conteo. Esto facilita las cosas ya que un led es mas facil de encontrar que un condensador de 100nF

    RispondiElimina
  16. Hola de nuevo, rectifico es necesario el condensador de 100 nF , con lecturas de muchos golpes se producian algun rebote, solución final r1 100 omm,r2 10k c1 100nF y diodo led.
    saludos

    RispondiElimina
    Risposte
    1. Grazie per il commento e per il contributo.
      Pubblico volentieri il tuo messaggio.
      Saluti
      Sergio

      Elimina
  17. Daniele
    Ho visto che hai inserito "// operazioni perdita di tempo"
    Cosa vuol dire?

    RispondiElimina
    Risposte
    1. Ciao! Grazie per la lettura.
      Ti riporto un passaggio molto importante che ho scritto nel post:"Purtroppo per la pioggia ci sono delle considerazioni da fare:
      La pioggia è un evento che accade con tempi molto diversi, possono occorrere giorni o mesi prima che si verifichi, può durare minuti oppure molte ore. Questi fatti rendono problematico l'uso di Arduino in quanto dovremmo aspettare l'impulso dal reed senza poter fare altro.

      Fortunatamente possiamo risolvere anche questi problemi con l' INTERRUPT.
      L'IDE di arduino ci rende disponibile l'utilizzo degli interrupt in modo semplificato con la chiamata ad una funzione specifica (vedi reference di arduino).

      attachInterrupt() vedremo nello sketch come utilizzare questa funzione per approfondimenti sul tema degli interrupt vi consiglio di leggere sul sito di Michele Maffucci, e sul sito di Mauro Alfieri, logicamente anche il reference sul sito arduino."

      Quindi "la perdita di tempo" serve solo a simulare il fatto che Arduino sta facendo altre cose come misura della temperatura pressione ecc...
      Ed ecco che la funzione di interrupt interviene per misurare la pioggia.
      Tieni conto che questo post è solo una parte del progetto di una stazione meteo che comunque trovi nel blog.
      Logicamente quando la parte pluviometro sarà inserita inseme ad altre funzioni non ci sarà bisogno della perdita di tempo e la potrai eliminare.
      Spero di aver chiarito, se hai altri dubbi scrivi.
      Recentemente sono molto impegnato e preparare articoli per il blog richiede tempo, ma controllo sempre i messaggi e rispondo sempre.
      Saluti
      Sergio

      Elimina
  18. Grazie per aver condiviso questo tuo progetto.
    Per cortesia potresti condividere uno sketch con il solo pluviometro? senza i led.
    Grazie

    RispondiElimina
    Risposte
    1. Scusa ma solo ora ho letto il tuo post
      I led ci sono solo per segnalare che sta lavorando ( solo scena) non hanno alcuna funzione puoi semplicemente toglierli dal circuito
      Fammi sapere e cercherò di rispondere prima possibile.
      Saluti

      Elimina
  19. Buonasera, bel lavoro; mi sto approcciando da poco al mondo di Arduino per altri progetti, ma il tuo mi ha fatto accendere un'altra lampadina.
    Ti spiego tutto: vorrei solo contare le chiusure del contatto Reed incrementando il dato..per cui Arduino dovrà fare solo da contatore e magari con un pulsante azzerare il conteggio.
    Questo numero dovrà però essere inviato tramite seriale, meglio se 485,a un PC ( oppure richiesto dal PC con un comando ad Arduino).
    Grazie, e spero di essere stato chiaro!

    RispondiElimina
  20. Buongiorno,
    mi sto approcciando ad Arduino da poco per un progetto con luci RGB, ma il tuo mi ha fatto accendere un' altra lampadina...ahahah.
    Mi spiego meglio, voglio contare solo le chiusure del contatto Reed di un pluviometro, e leggere questo numero su un terminale come hyper terminal...il contattore deve essere a cifre fisse (per esempio 1 chiusura dovrà essere visualizzata 0000001); inoltre dovrà esserci un tasto che resetta il contatore.
    Può essere possibile il tutto?
    Grazie.

    RispondiElimina
    Risposte
    1. Scusami se rispondo solo ora forse hai già risolto quello che vuoi fare è sicuramente interessante e fattibile ma io in questo periodo non ho tempo da dedicare.
      Fammi sapere se sei riuscito a fare qualcosa.
      Saluti

      Elimina

Vi ringrazio per la lettura e vi invito al prossimo post.
Se il post vi è stato utile, vi è piaciuto oppure no, scrivete un commento.

Un saluto a tutti.
Sergio

Copyright - Condizioni d’uso - Disclaimer
http://avventurarduino.blogspot.it/2012/10/inizia-lavventura-arduino-12-settembre.html