Uma opção para economizar fiação…
Esta montagem propõem um protótipo de uma boia eletrônica para caixa d’água em sistemas que necessitem bombeamento da água por meio de uma motobomba elétrica. O sistema está dividido em 2 partes: um transmissor montado junto a caixa d’água e um receptor montado junto a motobomba. Nos testes usei par de tx/rx na frequência de 433MHZ. Poderá ser usado outras frequências se desejar. Veja primeiro o esquema do transmissor:
Para obter a informação do nível da água na caixa foi usado um sensor feito a partir de fios submersos na caixa d’água, mas com alturas diferentes. O PIC usa o conversor analógico/digital interno (pino 3) para detectar os níveis de tensão gerados pelos eletrodos. Caso queira uma montagem mais durável, recomenda-se o uso de fios ou tirantes de aço inox.
No esquema mostra 3 leds para indicar na própria boia o nível enviado para o receptor. Mas estes podem ser omitidos visando economia de energia, especialmente se for usado bateria para alimentar o circuito.
No programa C do TX podemos optar qual nível queremos que a motobomba comece a operar: no nível mínimo ou pela metade. Basta comentar ou descomentar no programa, a opção de usuário abaixo e recompilar usando o CCS C Compiler:
#define LIGA_MEIA_CX //descomente quando desejar que a bomba ligue com meia caixa
Ao ligar a alimentação, a boia envia um frame com informação do nível da caixa e se deve ligar ou não a motobomba. Depois, a cada minuto ocorrerá uma nova transmissão. Isto visa economizar energia especialmente se for usado bateria para alimentar a boia. Este tempo pode ser alterado no programa, na opção de usuário abaixo e necessita depois recompilar:
#define TEMPO_ENTRE_TX 26 // tempo entre transmissão (2.304ms * 26 ~= 1 minuto)
Este intervalo de tempo é gerado pela contagem dos estouros do timer ‘WatchDog’. Em vez de gerar um ‘reset’ este timer é usado somente para ‘acordar’ o PIC do modo ‘sleep’. Ele foi programado para estourar a cada 2,3 milissegundos. Para um minuto, necessitaremos um valor de 26 estouros.
Usando um pouco de matemática chegamos ao tempo entre transmissões como sendo: 26 * 2,3 ms =~ 60000 milissegundos ou 60 segundos, que é o mesmo que dizer 1 minuto.
Note que este tempo não é muito preciso, pois o oscilador independente do WatchDog é muito sensível a variações de temperatura e de tensão. Mas para esta função atende bem a necessidade.
Para evitar que uma interferência atrapalhe a transmissão, são enviados 4 vezes seguidos os mesmos dados da boia, em redundância. Este número de vezes pode ser alterado no programa, na opção de usuário abaixo e necessita depois recompilar:
#define N_TX 4 //número de vezes que transmite uma informação sucessivamente
É importante que seja dito que o valor do Serial Number do programa do TX seja exatamente igual ao do RX. Do contrário não haverá comunicação entre eles. Este serial pode ser encontrado no programa C como mostra abaixo:
//serial number (use o mesmo no receptor)
#define serial_A 0x23 //de 00 a ff
#define serial_B 0x47 // de 00 a ff
#define serial_C 0x03 //somente de 0 a f
Caso queira alterar, faça tanto no programa do transmissor (TX) como no receptor (RX). Ambos os programas devem ser recompilados para obter os arquivos hex para os PIC’s do TX e do RX.
O protocolo escolhido é similar ao usado pelo Ht6p mas enviando 32 bits. O último byte enviado contém o ‘check sum’ para identificar algum erro gerado por interferências. Ele contém a somatória dos bytes anteriores.
Veja agora o esquema abaixo para o receptor:
Para monitorar o nível d’água temos os 3 leds que indicam: vazia, meia, cheia. Um led ligado na saída que aciona o relé da motobomba indica se a mesma está ligada ou desligada. Temos ainda um outro led e um buzzer de 5 volts, que indicam uma falha na boia. Quando não ocorre uma transmissão correta dentro de um tempo determinado, então ocorrerá este alarme de falha. Opcionalmente, poderá também indicar que a motobomba está ligada por muito tempo, maior do que o programado.
Estas opções podem ser ajustadas no programa do receptor, conforme porção de código abaixo:
//escolha do usuário
#define ALARME_TEMPO_MAX_MOTOR_LIGADO //descomente p/ ligar alarme por tempo máximo do motor ligado
#define LIMITE_MAX_BOMBA_LIGADA 120 * HUM_MINUTO //define o tempo c/ motobomba ligada p/ o alerta sonoro (em minutos)
#define ALARME_FALHA_TX //descomente para ligar alarme por falha de transmissão do tx
#define LIMITE_TIME_OUT 5 * HUM_MINUTO //tempo máximo sem receber qualquer transmissão (falha)
Caso ocorra o alarme, determine a causa e depois de corrigir o problema, desligue a alimentação do receptor através do interruptor junto a fonte para ‘resetar’ o alarme.
Os contatos do relé poderão acionar um ‘contator’ de maior potência ligado a motobomba. Isto é especialmente importante quando se usa motobomba trifásicas.
A alimentação poderá ser feita usando fonte de 12 volts, convencional ou chaveada. Se for usado um relé de 5 volts, no lugar do de 12 volts, então poderá usar uma fonte de carregador de celular de 5 volts.
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Breadboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.
Segue pasta zipada com os arquivos da montagem:
Manuais:
PIC 12F675
Curiosidades:
Mestres medievais da mecânica
O “gênio esquecido” da Grã-Bretanha
O que revela a visão do invisível?
Quando as substâncias químicas causam doenças
Cuidado com o envenenamento por chumbo!
O que é estresse pós-traumático?
Outros assuntos:
Jesus morreu numa cruz?
Como chegar a um acordo
Como controlar a ansiedade?
10 Perguntas Que os Jovens Se Fazem e as Melhores Respostas
A Vida — Teve um Criador?
Peça um estudo bíblico gratuito
Vídeos:
Como enfrentar o bullying sem partir para a briga
Quem é o Autor da Bíblia?
Será que é amor ou paixão?
Tenha mais paciência
Fale a verdade
Eu me cansei das religiões
Até o próximo artigo!
Olá Claudio!
Há alguns anos montei esse circuito:
http://picsource.com.br/archives/4758/
Funcionou muito bem, mas apareceu um problema. Quando gravo o segundo controle, ele apaga o primeiro, resumindo só é possível gravar um único controle. Uso chaveirinhos com o CI PT2262 original, eu vi que você testou apenas com um emulador, por isso achei que haveria diferenças.
Depois testei essa outra montagem:
http://picsource.com.br/archives/4841/
Essa não teve problemas ao adicionar vários controles, mas os canais não funcionam corretamente. Quando aperta um botão, aciona dois leds ao mesmo tempo e dependendo do tempo que o botão fica apertado as coisas mudam, mas não funciona da maneira correta.
Essa montagem com vários CIs diferentes funcionou muito bem com o HT6P20B, mas com o PT2262 não deu muito certo.
Olá Renato.23!
Obrigado por retornar sobre o que você encontrou de problema nas montagens. Assim que tiver um tempinho, irei montar no protoboard e farei testes.
Confirmando os problemas, e tendo sucesso nas correções, então irei postar arquivos atualizados nos respectivos artigos.
Cláudio