Arduino Nano - Sensor de Água

Este tutorial ensina você a usar o sensor de água com o Arduino Nano. Vamos aprender:

Isso pode ser aplicado em aplicações que detectam vazamento de água, chuva, transbordamento de tanque...

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×Water level sensor
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Sensor de Nível de Água

Pinagem do Sensor de Nível de Água

O sensor de nível de água tem 3 pinos:

  • O pino S (Signal) é uma saída analógica que será conectada a uma das entradas analógicas do seu Arduino Nano.
  • O pino + (VCC) fornece energia ao sensor e é sugerido usar uma tensão entre 3,3V e 5V.
  • O pino - (GND) é a conexão de terra.
Pinagem do sensor de água

Como o Sensor de Nível de Água Funciona

Resumindo, quanto maior a quantidade de água em que o sensor está submerso, maior será a tensão do pino de sinal.

Vamos ver isso mais de perto.

Esta seção traz um conhecimento mais aprofundado. NÃO se preocupe se você não entender. Pule esta seção se ela parecer difícil demais e volte outro dia. Continue lendo as próximas seções.

O sensor tem um conjunto de dez trilhas de cobre expostas:

  • Cinco delas são trilhas de alimentação
  • As outras cinco são trilhas de detecção.

As trilhas são dispostas em paralelo, com uma trilha de detecção entre cada duas trilhas de alimentação. A menos que sejam ligadas pela água quando submersas, as trilhas não estão conectadas.

As trilhas atuam como um resistor variável, semelhante a um potenciômetro, cuja resistência varia com o nível de água:

  • A resistência é determinada pela distância entre o topo do sensor e a superfície da água.
  • A resistência é inversamente proporcional à quantidade de água presente:
  • Quando há mais água, a condutividade melhora e a resistência diminui.
  • Quando há menos água, a condutividade diminui e a resistência aumenta.
  • O sensor produz uma tensão de saída com base na resistência.

Determinar o nível de água pode ser feito medindo a tensão.

Diagrama de Ligação

Em teoria, os pinos VCC e GND do sensor podem ser conectados aos pinos 5v e GND do Arduino Nano para alimentar o sensor.

No entanto, não é aconselhável adotar essa abordagem na prática. Em um ambiente úmido, se o sensor for alimentado continuamente, ele sofrerá corrosão eletroquímica mais rápido, reduzindo sua vida útil.

Para evitar isso, sugerimos não manter o sensor alimentado o tempo todo, mas apenas quando for ler seu valor. Isso pode ser feito conectando o pino VCC do sensor a um pino digital do Arduino Nano e colocando o pino do Arduino em HIGH antes da leitura e em LOW depois.

Diagrama de ligação do sensor de água com Arduino Nano

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano - Lendo o Valor do Sensor de Água

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor int value = 0; // variable to store the water sensor value void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the water sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF Serial.print("Water sensor value: "); Serial.println(value); delay(1000); }

Passos Rápidos

  • Copie o código acima e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para enviar o código ao Arduino Nano.
  • Abaixe o sensor com cuidado em um copo de água.
  • Confira o resultado no Serial Monitor; ele deve ser 0 quando o sensor não estiver tocando em nada.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano' on 'COM15')
New Line
9600 baud
Water sensor value: 0 Water sensor value: 0 Water sensor value: 0 Water sensor value: 25 Water sensor value: 97 Water sensor value: 284 Water sensor value: 428 Water sensor value: 435 Water sensor value: 441 Water sensor value: 455 Water sensor value: 467 Water sensor value: 521 Water sensor value: 528 Water sensor value: 553
Ln 11, Col 1
Arduino Nano on COM15
2

※ Nota:

O sensor não deve ser totalmente imerso na água; somente as trilhas expostas da PCB devem entrar em contato com ela. Tenha cuidado ao instalá-lo.

Como Detectar Vazamento de Água

Para identificar vazamento de água, chuva e transbordamento de tanque, basta comparar o valor lido com um valor limite, que é determinado na seção de calibração deste tutorial.

Vamos ver um exemplo específico. Se água for detectada, o Arduino Nano acenderá um LED.

Diagrama de Ligação

Diagrama de ligação do sensor de água com LED e Arduino Nano

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Código Arduino Nano - Detectando Vazamento de Água

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define LED_PIN 9 // The Arduino Nano pin connected to the led #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define THRESHOLD 300 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Como Medir o Nível de Água

Se você quiser dividir a altura máxima da água em vários níveis e medir o nível atual, pode usar a técnica do código abaixo. Observe que a altura máxima da água é equivalente à altura do sensor. O código abaixo divide a altura máxima em 4 níveis.

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable to store the sensor value int level = 0; // variable to store the water level void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 levels Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Nota:

  • SENSOR_MIN e SENSOR_MAX são determinados por meio de calibração.
  • O método de mapeamento mencionado não é preciso, mas é adequado para muitas aplicações.
  • Se você quiser torná-lo mais preciso, pode medir os valores limite de cada nível. Consulte a seção de calibração do manual para mais informações.

Calibração do Sensor de Nível de Água

A saída do sensor é influenciada tanto pelo nível de água quanto pela condutividade da água. A água pura não tem condutividade, enquanto a água com minerais e impurezas é condutora. Quanto maior a condutividade da água, mais sensível será o sensor. Além disso, o valor de saída também é afetado pela tensão fornecida ao pino VCC do sensor.

Para garantir a precisão ao ler o sensor de água, sugerimos calibrar o sensor para o tipo específico de água a ser monitorada.

Antes de estabelecer o limite para ativar uma resposta, é necessário avaliar o valor real obtido do sensor realizando um experimento.

Instruções para o teste:

  • Consulte o sketch fornecido acima para ler os valores do sensor.
  • Coloque o sensor na água, no nível limite desejado.
  • Anote o valor que o sensor mostra no Serial Monitor.
  • Utilize esse valor como o limite para ativar uma ação.

Esse teste pode exigir experimentação. Esteja preparado para tentar diferentes abordagens. Esteja pronto para experimentar várias estratégias. Tenha paciência e não desista. Tenha perseverança e não se renda.

O teste pode ser utilizado para descobrir:

  • O valor SENSOR_MIN, quando o sensor não está submerso no líquido
  • O valor SENSOR_MAX, quando o sensor está totalmente submerso na água
  • Um valor limite para reconhecer o derramamento de água
  • Os valores limite de cada nível da sua escala de graus.

Vídeo

Desafie-se

  • Quando um vazamento de água for detectado:
  • Enviar um e-mail
  • Enviar uma mensagem SMS
  • Fazer um alarme sonoro

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!