Pluviometro

Pluviometro

Il Pluviometro (o Rain Gage) scelto per questa stazione meteo è della Argent Data System e per il suo basso costo va bene per lo scopo. In commercio ce ne sono tantissimi e di tanti tipi. Questo è un pluviometro a bascula autosvuotante e, come per l'anemometro, c'è un magnete e un sensore reed che si interfacciano alla stessa maniera dell'anemometro. Unico difetto riscontrato è la piccola superficie di presa acqua che tende a non raccogliere tutta l'acqua anche per il rimbalzo delle gocce però da comunque un'indicazione di quanto ha piovuto. 

Schermata 2014-05-23 alle 20.46.20

Ogni 0,2794mm di pioggia causa un movimento della bascula che provoca la chiusura momentanea del contatto reed e di conseguenza posso registrare questo con un altro ingresso di interrupt.

Il pluviometro smontato si presenta cosi:

Particolare del sensore reed:

Come per l'anemometro questo è il circuito per acquisire il segnale del reed:

 

Con l'alimentazione di 5V e il reed aperto il condensatore si carica. Nel momento della basculata il reed si chiude e fa scaricare il condensatore. Nello stesso momento il pin 3 dell'arduino dedicato al pwm funziona da interrupt e dallo stato logico alto (5V), passa allo stato basso. Questo fa si che venga letto un impulso dall'ingresso. In questo caso viene letto il fronte di discesa del gradino di scarica che si viene a creare.
La resistenza scelta è da 12kohm ed il condensatore da 0,1microF in modo da ottenere una costante di tempo di un millisecondo all'incirca visto che il contatto si chiude e si apre in un tempo breve.

Ora, dopo aver fatto il circuito possiamo testare il funzionamento creando uno sketch. Io ho scritto questo con aiuti da parte della rete:

 /*PLUVIOMETRO */

int i=0;
float TotPioggia=0;
boolean blnWrite=false;

void setup() {
  Serial.begin(9600);
  attachInterrupt(1, interrupt, FALLING);
}

void loop() {

}

void interrupt() {
  i++;
  noInterrupts();
  TotPioggia=TotPioggia+0.2794; //conta la pioggia
  Serial.println(TotPioggia);
  blnWrite=true; //segnalo che è avvenuta una basculata
}

In questo caso ho un conteggio incrementale della pioggia e ho inserito direttamente il conteggio nel ciclo di lettura interrupt. Questo sketch mi sembra evidente che è possibile elaborarlo all'interno di un programma più complesso come ho fatto io del resto.

Datasheet Argent.