Controle de Nível com Arduino

Introdução
Este projeto é uma extensão do tutorial de primeiros passos com o sensor de nível sem contato, onde aprendemos a ler o sensor de nível de líquidos sem contato. Entretanto, naquele tutorial não chegamos a aproveitar a leitura do sensor para controlar o acionamento de uma carga ou alertar que o reservatório está vazio.
Neste projeto utilizaremos dois sensores de nível com a bomba peristáltica para controlar o nível de um reservatório, garantindo que ele nunca fique vazio.
Este tutorial foi desenvolvido para o sensor XKC-Y25-NPN, mas o código pode ser facilmente adaptado para o modelo PNP, basta inverter a lógica HIGH/LOW.
Lista de Materiais

Lista completa de produtos
comprar
BlackBoard UNO R3

Bomba Peristáltica 12V


Módulo Relé 5V - Relé Metaltex

Fonte Chaveada 12V 5A

Diodo 1N4007 - Pacote com 10 unidades

Protoboard 400 Pontos

WorkPlate 400 - Preta

Jumpers Macho-Macho x40 Unidades

Jumpers Macho-Fêmea x40 Unidades
Circuito
Para controlar o nível de um reservatório, monte o circuito a seguir.

Para conectar o motor ao relé e à placa, é recomendado soldar o diodo e um par de jumpers macho-macho aos terminais do motor. Entretanto, como a solda pode ser uma opção complicada em alguns casos, é possível apenas conectar o diodo e os conectores do jumper aos terminais do motor, desde que essas conexões sejam garantidas.
Código
Com o circuito montado, carregue o código a seguir para sua placa.
Entendendo o Código
A declaração global do código consiste na declaração das variáveis PINO_SENSOR_SUPERIOR
, PINO_SENSOR_INFERIOR
e PINO_RELE
, que armazenam, respectivamente, os pinos conectados aos sensores de nível de líquido sem contato superior e inferior, e o pino conectado ao módulo relé.
Na rotina de configurações do código, nós configuramos os pinos conectados aos sensores como entradas do sistema e o pino conectado ao relé como uma saída do sistema, com um nível lógico baixo ("LOW") inicial.
Já na repetição do código, iniciamos declarando as variáveis leitura_sensor_superior
e leitura_sensor_inferior
, e já recebendo as leituras digitais dos pinos conectados aos sensores superior e inferior, respectivamente. Feito isso, nós verificamos se a leitura do sensor inferior está em nível lógico alto ("HIGH"), ou seja, se ele está na ausência de líquido. Se essa condição for verdadeira, nós acionamos o relé para encher o reservatório. Em seguida, verificamos se a leitura do sensor superior está em nível lógico baixo ("LOW"), ou seja, se ele está na presença de líquido. Caso essa segunda condição seja verdadeira, nós desligamos o relé e interrompemos o enchimento do reservatório.
O Que Deve Acontecer
Assim que o código estiver carregado, fixe os dois sensores à parte externa do reservatório, um na parte inferior, onde será o nível mínimo aceitável para o seu reservatório, e o outro na parte superior, o mais próximo possível do volume máximo do reservatório. Assim, quando o reservatório estiver abaixo do seu limite, a bomba será acionada para enchê-lo até que o nível alcance o sensor superior, como no GIF a seguir. O GIF abaixo foi acelerado para não ficar muito longo.
Conclusão
Neste projeto aprendemos como aproveitar as leituras de dois sensores de nível de líquido sem contato para controlar o nível de um tanque através de uma bomba peristáltica.