Gostaria de montar um receptor para controle remoto, cuja aplicação necessite que se aprenda centenas deles? Apresento-lhes o BIG_GEN_PIC628_MIX_E…
Veja o esquema abaixo:
Este projeto foi baseado no BIG_GEN_6P20B51E, adaptando de AT89c2051 para o PIC16F628A, muito usado pelos hobistas.
O visor LCD foi essencial para podermos acessar posições de memória, visando apagar os controles (chaveirinhos) de forma individual. Esta aplicação permite usar chaveirinhos com circuito integrado do tipo Hcs200…301 ou Ht6p20b, independente do fabricante (usa apenas a parte fixa do código, portanto, não é Roller code).
Este projeto, BIG_GEN_PIC628_MIX_E é uma placa generica com 2 saidas para uso nos pinos 6 e 7 do PIC16F628A. Voce poderá ligar sua aplicação nestes pinos para usa-lo como controlador remoto, acionamento de portão automático, iluminação, etc. Permite o uso de 254 controles (máximo). Estes ficam com seus endereços armazenados na EEprom externa 24c08. Em caso de pane, a EEprom poderá ser usada em outra placa igual, sem perder a programação dos controles cadastrados. Quando o numero de controles chegar a 254, não haverá mais aprendizado, e uma mensagem aparecerá no lcd : ‘limite max mem’ . Se algum controle for apagado , este espaço na memória será usado para alocar um novo controle somente quando tiver atingido o limite maximo de controles na memória. Para controlar a placa, temos 4 botões, sendo: ‘learn’ para aprendizado do controle e para apagamento, botão ‘1’ para incremento rapido do contador de numero de controle, botão ‘2’ para incremento lento e ‘reset’ para cancelar operações e reiniciar.
Ao ligar o BIG_GEN, aparecerá no visor do lcd o nome da placa e em seguida aparecerá:
‘AGUARDANDO TX..!’.
Ficará com esta mensagem até que um controle seja acionado, ou um ‘reset’. Se um controle for acionado e este não estiver programado (aprendido), aparecerá a mensagem:
‘RECEBENDO TX N.: TX DESCONHECIDO’.
Para programar(aprender) este controle (chaveirinho), basta apertar qualquer um dos seus botões e manter apertado. Em seguida, aperte o botão ‘LEARN’ por apenas 1 segundo, que irá aparecer a mensagem:
‘OK! TX APRENDIDO’
Acione novamente o controle (chaveirinho) e irá aparecer a mensagem:
‘RECEBENDO TX N.: XXX’ (Sendo XXX o numero do controle recebido)
Este número tem que ser marcado no controle e registrado em uma lista de usuarios/controles.
Esta mensagem ficará no lcd até que uma nova transmissão ocorra, ou se for feita operação de apagamento ou ainda, um ‘reset’.
Como funciona a operação de apagamento?
De duas formas: a forma geral (apagar toda a memória) e a forma individual (apagar um único controle).
Para entrar em ‘modo de apagamento’ faça o seguinte:
1) APAGAMENTO INDIVIDUAL:
Aperte o botão ‘learn’ por mais de 10 segundos, ou até que apareça a mensagem:
‘REMOVER CONTROLE’
Logo em seguida, o lcd irá mostrar na linha superior:
‘APAGAR UNICO TX?’
E na linha inferior:
‘DIG: 1=SIM 2=NÃO’
Se o botão ‘1’ for apertado, aparecerá a mensagem na linha superior:
‘ESCOLHA O N. DO TX’
Depois de um tempo pequeno, será limpo o visor e aparecerá a mensagem na linha superior:
‘1=^R 2= L=E R=C’
Isto significa:
Aperte botão ‘1’ para incremento rapido do contador com numero do controle
Aperte botão ‘2’ para incremento lento do contador com numero do controle
Aperte botão ‘L’ (LEARN) para efetivar o apagamento do número escolhido (mostrado na linha 2 do lcd).
Aperte botão ‘R’ (RESET) para cancelar operação ou espere 30 segundos sem acionar botões.
Na linha 2 aparecerá os valores de 1 a 254, que pode ser alterado com botão ‘1’ ou ‘2’(modo lento/rapido).
Após escolher o numero do controle a apagar, aperte o botão ‘LEARN’. Após isto, aparecerá a mensagem:
‘APAGAMENTO OK!’
Isto confirma que o número do controle escolhido foi devidamente apagado. Após esta etapa, o programa vai para o inicio, apresentando o nome da placa e a mensagem de ‘aguardando tx!’.
2) APAGAMENTO GERAL:
Aperte o botão ‘learn’ por mais de 10 segundos, ou até que apareça a mensagem:
‘REMOVER CONTROLE’
Logo em seguida, o lcd irá mostrar na linha superior:
‘APAGAR UNICO TX?’
E na linha inferior:
‘DIG: 1=SIM 2=NÃO’
Se o botão ‘2’ for apertado, aparecerá a mensagem na linha superior:
‘APAGAR TODOS TX?’
E na linha 2 aparecerá as opções:
‘DIG: 1=SIM 2=NÃO ‘
Aperte botão ‘1’(sim) para apagar geral. Se apertar botão ‘2’(não) irá cancelar a operação com a mensagem:
‘APAG. CANCELADO!’
Após apertar botão ‘1’(sim), aparecerá mensagem de confirmação:
‘CONFIRME: TODOS!’
Aperte botão ‘1’(sim) para confirmar e iniciar o apagamento total da memória. Caso aperte o botão ‘2’(não) irá cancelar a operação com a mensagem:
‘APAG. CANCELADO!’
Depois de confirmado , ainda apagando a memória, aparecerá a mensagem:
‘AGUARDE……..’
e então, com a memória já apagada, aparecerá a mensagem:
‘APAGAMENTO OK!’
Após o que, o programa irá ao início, apresentando o nome da placa e a mensagem de ‘aguardando tx!’.
Com respeito ao programa ASM, foi usada rotinas de verificação da entrada de RF , no pino 3 do PIC16F628A, testando a cada 50 microsegundos, e incrementando contadores para nivel 1 e 0. A diferença entre eles determina se o bit a ser deslocado no resultado será ‘1’ ou ‘0’. Após 2 transmissões serem recebidas, estas são comparadas para garantir fidelidade na recepção.
Após isto, o programa vai verificar se tem registrado na memória o número do controle recebido. Senão, mostará a mensagem de ‘tx desconhecido’. Verifica também se o botão ‘learn’ está pressionado, e se tiver, grava o número na proxima posição livre da memória, até um total de 254 controles. Quando em ‘modo de apagamento’, se não for concluida ou se ficar sem acionar nenhum botão por 25 segundos, automaticamente irá a ‘reset’. No ‘modo de apagamento’, não é possivel receber nenhuma transmissão de controles. Por isso, deve ser uma operação rápida. Se for acidentalmente acionada, sairá para ‘modo de uso’ por tempo. A variavel que controla este tempo é ‘TAMG’ ,podendo ser alterada para mais ou menos. O aprendizado dos controles ocorre de forma sequencial, ou seja, a cada controle aprendido receberá o próximo número. Se a memória atingir o limite máximo, haverá uma procura por números apagados e somente nesta situação é que serão usados estes espaços da memória. Por exemplo: Voce programou um controle, cujo número foi 254. Na sequencia, voce programou mais um que recebeu o número 47. Este último, foi programado em uma posição anteriormente apagada.
Foi feita esta montagem apenas em protoboard, usando o esquema acima. Espero que este projeto possa ser de base para sua aplicação.
Segue abaixo o arquivo ASM:
Segue abaixo o arquivo HEX:
Datasheet Pic16f628a
datasheet 24c08
Assuntos relacionados:
Big_gen_mix com at89c2051
Big_gen somente para Ht6p20b com at89c2051
Como ler sinal transmitido por controle remoto rf
Curiosidades:
Zepelim
Ouvindo sons do espaço
Porque as estrelas são cintilantes?
Outros assuntos:
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Até o próximo artigo!!!
Boa tarde, help-me nesses codigos.
SDT1:
CALL HEX_DEC
MOVFW BR1 ;centena
CALL conv_asc2
CALL ED ;ULTIMO ZERO
MOVFW R1
CALL ED
mOVFW BR0 ;dezena
CALL conv_asc2
CALL ED
MOVFW R1 ;ultimo digito unidade
CALL ED
gostaria de copiar esses dados (r1, BR0) para aquivos (dados, e dados1). GRATO PELA ATENÇÃO
Olá Adriano! ‘ Me dá uma luz’ no que você deseja fazer! Você quer copiar o registrador r1 em um registrador rotulado como ‘dados’ e o registrador ‘BR0’ em ‘dados1’ ?
Por favor, faça uma descrição e não economize letras na sua explicação. Note que o registrador “BR0” é colocado em ‘w’ e convertido em ‘ascii’, retornando a dezena em ‘w’ e unidade em ‘r1’. Este valores são validos somente logo após a conversão, pois são registradores (w e r1) temporários.
Cláudio
Boa tarde, olha o chato novamente, vc saber me dizer em que parte do asm que posso alterar o nr do controle (001, 002)apresentado.
Grato.
Olá Adriano! Não entendi bem a sua pergunta , muito menos, os objetivos. Seja mais especifico e detalhista, pois, você sabe que uma boa comunicação evita ‘confusões’.
Claudio
Olá Claudio, uma pergunta , aqui em caracas na venezuela quase só se consegue no mercado controles remotos que utilizam o pic 12F629 , voce saberia me dizer se com seu receptor genérico seria possivel que seja compativel com controles com esse pic?
Olá Claudinei! Infelizmente, não conheço os controles que se refere e não tenho como responder. Tente montar em protoboard e testar. Quem sabe são ‘clones ‘ do ht6p20b!!!!
Claudio
Vamos la, mais uma pcb a ser feita a fim de testes para apredizado, valeu mesmo ai claudio, assim que estiver pronto o pcb ti envio, para compartilhar com todos, FELIZ 2013 a todos…..
Olá Agnaldo! Recebido e postado. Obrigado por sua colaboração.
Claudio
Olá Cláudio, mais um projeto incrivel ,valeu mesmo , que tenha um otimo 2013…