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.