4. 13/09/2016 Pluviômetro de Báscula

Começamos a pensar em um caminho alternativo e decidimos comprar um pluviômetro de báscula comercial (Em Inglês: tipping bucket rain gauge).

Providenciamos a compra de um modelo fabricado pela empresa http://wrfcomercial.com.br e para os testes iniciais fizemos a montagem de uma estrutura com canos de PVC conforme a figura 6.

Figura 6. Pluviômetro de báscula (Fonte: http://wrfcomercial.com.br)

Pluviômetro de báscula (Fonte: http://wrfcomercial.com.br)

Montamos um reservatório do tipo Mariotte para ter uma vazão constante e controlável e poder fazer os testes com o pluviômetro e o desenvolvimento do programa para aquisição.

Dica

A garrafa de Mariotte também pode ser montada com um sifão. (Ver: Vaso de Mariotte 2 - Versão sifão)

E montamos um circuito na protoboard para monitorar as oscilações da báscula usando o circuito da figura 7:

Figura 7. Montagem na protoboard e diagrama esquemático do circuito para monitoramento das oscilações da báscula do pluviômetro.

Montagem na protoboard e diagrama esquemático do circuito para monitoramento das oscilações da báscula do pluviômetro.

E para fazer as leituras no Arduino implementamos o seguinte Sketch:

  /*
  Pluviometro OO
 
  */
  
int reed_switch_pin = 8;
boolean last_reed_switch_state = LOW;
unsigned long tc = millis();
unsigned long ts = millis();
int clicks;
float volume;

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);

  pinMode(reed_switch_pin, INPUT);
}

void loop() {
  unsigned long int_click = millis() - tc;
  
  if ( int_click > 50 ) {
    readPin();
  } 
  
  unsigned long int_send = millis() - ts;
  
  if ( int_send > 10000 ) {
    sendData();
  }

//Outras futuras atividades

}

void readPin () {
  
  int reed_switch_state = digitalRead(reed_switch_pin);

  if (last_reed_switch_state == LOW && reed_switch_state == HIGH) {
    clicks++;
    Serial.print("Click - ");
    Serial.println(clicks);
  }
  last_reed_switch_state = reed_switch_state;
  tc = millis();
   
    
}

//7.02 é o volume de cada báscula medido com o frasco de Mariotte
void sendData () {
  volume = clicks * 7.02;
  
  Serial.print("Clicks em 10 segundos - ");
  Serial.println(clicks);
  Serial.print("Volume em 10 segundos - ");
  Serial.println(volume);
  clicks = 0;
  ts = millis();
}