SENSOR DE NÍVEL D'ÁGUA COM CD4069

Recentemente fui convidado pela equipe da Revista Mecatrônica Jovem a participar de uma "live" na loja Mamute Eletrônica. Durante a live foi lançado o desafio para que os presentes projetassem e construíssem um sensor de nível d'água. Dois circuitos foram propostos: um utilizando transistores e outro utilizando um CI (essa foi minha proposta). Como o circuito com transistores parecia ser o mais simples para ser montado e também foi considero o mais "raiz" quando falamos de eletrônica, esse foi o escolhido pela equipe para trabalharmos. Porém me foi dada a tarefa de montar o circuito, documentá-lo e posteriormente apresentá-lo ao grupo da Revista. Pois bem, estou aqui pagando essa "dívida!" (rsrsrsrsrs).


O CIRCUITO

Na figura acima (retirada diretamente do meu caderno de anotações) é possível ver em detalhes o circuito. Ele é bem simples e usa um único circuito integrado CD4069 que possui 6 portas inversoras (NOT) com tecnologia CMOS. Esse tipo de CI é bastante versátil já que admite uma faixa de alimentação ampla que vai de 3 à 18VDC. Eu optei por usar 6VDC já que isso poderá facilitar e muito o uso do circuito em salas de aula, por exemplo, já que podemos utilizar 4 pilhas em série na alimentação do circuito (se este for seu caso, use um suporte para quatro pilhas pequenas - é mais que suficiente!).

Note que cada uma das entradas do CI está ligada diretamente a um ponto "sensor" (parafusos presos a uma barra de plástico PETG). Também foram ligados a cada uma das entradas resistores de 1M para garantir as mesmas o nível lógico "LOW". Ao lado de cada ponto sensor temos um segundo parafuso ligado ao VCC. Dessa forma quando o nível d'água atinge um determinado ponto uma pequena corrente elétrica pode fluir em direção a entrada da respectiva porta lógica.

Nas saídas de cada porta temos ligado um LED juntamente com seu resistor limitador de corrente, formando nosso "indicador de nível d'água" completo.


COMO FUNCIONA??

Como as portas são do tipo "NOT" (inversora) quando aplicamos "LOW" (GND) a sua entrada, obtemos "HIGH" (VCC) em sua saída e vice-versa. Dessa forma, quando um determinado ponto sensor não tem água em seus contatos, o nível lógico "LOW" é garantido a essa entrada através do resistor de 1M levando, consequentemente, sua saída ao nível lógico "HIGH" e mantendo o LED  apagado (note que o cátodo do LED está conectado a saída da porta!). Já quando o nível d'água atinge um ponto sensor, faz com que uma pequena corrente elétrica flua entre entre o VCC e a entrada da porta não inversora alterando o seu estado lógico para "HIGH", colocando agora sua saída em nível lógico "LOW" e fazendo então com que o LED acenda. Tudo bem simples não acha?!?


MONTAGEM

Para essa experiência eu optei usar uma pequena matriz de contatos de 400 pontos (presente da Loja Mamute Eletrônica - obrigado turma!!!!) e a mesma pode ser visto na abertura desse pequeno artigo. Porém você poderá, se assim desejar, preparar uma montagem do tipo "definitiva" com uma placa padrão ou ainda desenhar seu próprio "lay-out" e confeccionar uma placa.


VÍDEO COM FUNCIONAMENTO

Abaixo segue o vídeo feito comprovando o funcionamento do circuito.


CIRCUITO ADICIONAL

Conforme prometido no vídeo, eu preparei um pequeno circuito "adicional" utilizando um Arduino Digispark (ATtiny85) que permite controlar a bomba do reservatório de forma automática! 

Foram necessários apenas 3 pinos do Arduino para esse controle: 2 configurados como entradas (nível baixo e nível alto) e um outro como saída (bomba). Quando o nível do reservatório está completo, a bomba não é ligada. Mas quando o nível cai abaixo do nível mais baixo a bomba é ligada até que o reservatório volte a encher (indicado pelo nível mais alto).

Note que para conectar o Arduino ao circuito alimentado com 6VDC eu utilizei transistores. Não ligue seu Arduino de forma direta, pois o mesmo poderá queimar já que o limite de tensão na entrada dos pinos é de 5VDC +/- 10%.

Os pontos "NÍVEL_ALTO" e "NÍVEL_BAIXO" do circuito adicional devem ser ligados às entradas do circuito do sensor de nível d'água, como segue:

- NÍVEL_ALTO - pino 13 do CD4069;
- NÍVEL_BAIXO - pino 1 do CD4069;

O GND da fonte de alimentação do Arduino deve ser conectado ao GND do circuito do sensor de nível d'água.

Obs.: Eu optei por utilizar 9VDC no Arduino (Vin) para facilitar seu uso, já queo usuário poderá utilizar uma bateria de 9VDC na alimentação do mesmo! Lembre-se apenas de usar o pino Vin do seu Arduino!

O sketch para o circuito está logo abaixo.

//*****************************************************************************
// Projeto - Bomba_sensor_dagua - controle de uma bomba d'agua 6VDC 
//           para complementar o projeto Sensor de nível com CD4069
//
//	     Quando nível do reservatório abaixo do configurado (via conexão por fio)
//	     bomba é ligada e só desliga quando reservatório estiver cheio
//           (indicado pelo nível baixo ok e nível alto ok)
//
// Desenvolvido por: Eng. Márcio José Soares
// Versão: 1.0 de 27/07/2022
//
// Plataforma: Arduino Digispark (ATtiny85)
// Compilador: Arduino-cli + Kate (Linux)
//
//*****************************************************************************
// Pinos utilizados:
//  P0 - Nível mais alto
//  P1 - Bomba
//  P2 - Nível mais baixo
//
//*****************************************************************************

//*****************************************************************************
// Definições importantes do módulo
//*****************************************************************************
#define BAIXO	2	//P2
#define ALTO	0	//P0
#define BOMBA	1	//P1

#define TRUE   	1
#define FALSE   0

//*****************************************************************************
// Constantes globais do módulo
//*****************************************************************************
const int READTIME = 5;              //ms  - 500ms = 5 x 100ms = 500ms

//*****************************************************************************
// Variáveis globais do módulo
//*****************************************************************************
uint16_t val = 0;
uint16_t val2 = 0;
uint16_t readTime = 0;                         
long current = 0;

int BOMBAState = LOW;
long interval = 100;                 //ms  - tempo para intervalo
long previous = 0;

//*****************************************************************************
// Setup
//*****************************************************************************
void setup() {

	pinMode(BAIXO, INPUT_PULLUP);
	pinMode(ALTO, INPUT_PULLUP);
	pinMode(BOMBA, OUTPUT);
	
	digitalWrite(BOMBA, LOW);
	
}

//*****************************************************************************
// Laço principal
//*****************************************************************************
void loop() {

	current = millis();                       	//tempo atual em ms
	if((current - previous) > interval){
	    previous = current; 			//salva tempo atual
	    readTime++;
            if(readTime >= READTIME){
		readTime = 0;  
             			
		val = digitalRead(BAIXO);
		val2 = digitalRead(ALTO);
		
		if(val == HIGH && val2 == HIGH){
			BOMBAState = HIGH;
		}else if(val == LOW && val2 == LOW){
			BOMBAState = LOW;
		}
			
		digitalWrite(BOMBA, BOMBAState);
	    }
       }
}


CONCLUSÃO

Hoje em dia quase não vemos mais circuitos utilizando puramente eletrônica analógica ou ainda digital. Já é perceptível a perda dos conhecimentos básicos em ambas as áreas por parte daqueles que começam agora no mundo da eletrônica e até mesmo por aqueles que já se encontram formados. Hoje o mundo da eletrônica está praticamente dominado pelos microcontroladores. Porém é preciso ter em mente que ter os conhecimentos sobre eletrônica analógica e também sobre eletrônica digital é muito importante para o futuro profissional. Sendo assim, meu conselho para aqueles que estão começando a estudar eletrônica é: dediquem algum tempo ao estudo dessas duas áreas (eletrônica analógica e eletrônica digital). Vocês verão que esse tempo não será em vão! E o circuito presente nesse artigo mostra isso. "Passado" e "presente" juntos! Bons estudos e boas montagens!!!

 


Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.