Pluviômetro¶
Licença do Software, GPL V3 quando cabível. Diagramas, Imagens e explicações Creative Commons - BY-SA. Amostras de dados coletados dedicados ao domínio público.
Autores do trabalho: Lorenzo Chaves, Jeferson Gerard e Renan Bohrer.
Com a finalidade de integrar a Estação Meteorológica Modular, o pluviômetro, equipamento que realiza a medição da quantidade de chuva, se utiliza eletronicamente do sistema switch conseguindo a fácil utilização com as placas arduino.
Importante lembrar que na documentação do Anemômetro também está a implementação do pluviômetro com o esquemático para conexão elétrica e um algoritmo para testes.
O pluviômetro funciona com 2 basculas, em uma forma de "gangorra", ou seja, quando uma bascula recebe uma certa quantidade de água ela desce, registrando aquela quantidade em milimetros, que é a unidade padrão para a precipitação.
Imagem ilustrando o sistemas das básculas
O funcionamento eletrônico do pluviômetro se da por um sistema chamado switch, que funciona basicamente com dois ferros que quando separados pelo ímã, corta a corrente mandando um sinal para a placa arduino.
Imagem do pluviômetro fechado para captar a precipitação.
Imagem ilustrando o compartimento para o mecanismo
Imagem ilustrando o sistema de switch do pluviômetro
Para realizar a montagem do projeto será necessário: Um arduino, uma protoboard, três fios jumpers, um resistor de 10 kΩ e um pluviômetro SEN-08942
Imagem ilustra a montagem eletrônica do projeto
E aqui fica a codificação baseada no sistema switch do arduino
Código disponibilizado aqui
1 // Constantes:
2 const int buttonPin = 2; // pino ao qual o pluviometro
3 // está conectado
4
5 // Variáveis:
6 int buttonPushCounter = 0; // contador para o numero de mudanças
7 // das básculas
8 int buttonState = 0; // estado atual do switch
9 int lastButtonState = 0; // estado anterior do switch
10
11 // as variaveis a seguir sao do tipo long pois o tempo, medido em milissegundos,
12 // rapidamente se tornara em um numero grande demais para ser armazenado em uma int.
13 long lastDebounceTime = 0; // a ultima vez em que o pino de saida foi alternado
14 long debounceDelay = 50; // o tempo de debounce
15
16 void setup() {
17 // initializa o pino do switch como entrada
18 pinMode(buttonPin, INPUT);
19 // initializa a comunicaçao serial:
20 Serial.begin(9600);
21 }
22
23 void loop() {
24 // ler o estado do switch pelo pino de entrada:
25 buttonState = digitalRead(buttonPin);
26
27 // comparar o estado atual do switch ao seu estado anterior:
28 if (buttonState != lastButtonState) {
29 if (buttonState == HIGH) {
30 // se o estado do switch muda, por ruido ou mudança de bascula,
31 // e o estado atual e high, reseta o timer do debounce
32 lastDebounceTime = millis();
33 }
34 if ((millis() - lastDebounceTime) > debounceDelay) {
35 // o estado atual do switch esta estabelecido a um tempo maior
36 // do que o delay de debounce, entao nao deve ser ruido e pode
37 // ser contado como uma mudança de bascula
38 buttonPushCounter++;
39 Serial.print("Medida de chuva (nominal): ");
40 Serial.print(buttonPushCounter*0.2794);
41 Serial.println(" mm");
42 Serial.print("Medida de chuva (experimental): ");
43 Serial.print(buttonPushCounter*0.44831);
44 Serial.println(" mm");
45 }
46
47 }
48 // save the current state as the last state,
49 //for next time through the loop
50 lastButtonState = buttonState;
51 }
A medida de chuva nominal é a medida oferecida pelo datasheet do site de compras sparkfun e a medida de chuva experimental é a medida obtida através dos experimentos feitos dentro do CTA jr. A explicação de como o teste foi feito se encontra no link abaixo: