Gostaria de usar seu AT89C2051 , juntamente com controle remotos comerciais que usam o HT6P20B, para controlar suas aplicações remotas? Seu preço é bem ‘nice’ para nós ‘pobres hobistas’. Que tal uma placa genérica, e voce liga o que desejar na saida?
A idéia é usar o mesmo esquema do ‘RECEPTOR GENERICO COM HCS’, já publicada , mas usando um novo código Hex especifico para decodificar os sinais recebidos de um HT6P20B. Como o AT89C2051 não tem EEprom interna, o jeito é usar uma externa. Mas tem o lado bom: em uma aplicação com muitos controles salvos, se der problema na placa, pode-se trocar a EEprom para a placa nova, salvando todos os controles codificados. Isto é bom para quem faz manutenção no sistema (ex. portão de um predio, alarme residencia com ‘n’ sensores remotos,etc’). Optei pela 24C02, suficiente para a maioria das aplicações. Mas, se desejar, poderá alterar o codigo ASM para uma de maior capacidade ou mesmo, com outra comunicação (como as spi 93cxx). Nesta placa , para este codigo Hex, só serão usadas as saidas 12 e 13 do AT89C2051. As saidas dos pinos 14 e 15 não serão usados, não necessitando montar os led’ 3 e 4. A razão é que o HT6P20B somente comanda 2 botões. Nesta placa genérica, poderão ser gravados até 82 controles/sensores remotos. Quando a memória estiver cheia, não será permitida o aprendizado de novos controles/sensores. O sotfware faz com que o led pisque de forma rapida por 10 segundos para avisar que chegou o limite de aprendizado. Somente se for zerada (apagada) a EEprom, é que poderemos novamente começar a gravar. Como novidade, ao invés de programar cada botão, resolvi ‘zerar’ os bits correspondentes aos 2 botões. Assim, ‘aprendendo’ um botão, irá aprender o outro automaticamente (ou seja, um endereço para 2 botões). A rotina de recepção do sinal de RF na entrada ‘sin’ no pino 3 é bem simples e não usa timer: Em um loop, a cada 50 microsegundos é lido esta entrada , se ela é 1 ou 0. Estes são armazenado em LC(0) e HC(1). Subtraindo o valor um do outro, poderemos saber se o bit recebido foi 1 ou 0 ( lembrando que bit ‘0’ igual HC maior que LC e ‘1’ igual a HC menor que LC). Conforme o datasheet do HT6P20B, cada unidade de bit transmitido é composto de 3 partes (ou 3 periodos iguais denominados ‘y’). Sendo o primeiro = 0, o segundo= 0, o terceiro=1 temos um bit ‘1’ recebido. Se o primeiro for = 0, o segundo= 1, o terceiro = 1 temos um ‘0’ recebido. O periodo entre transmissões e composto de 23y (ou 23 periodos de tempo igual a ‘y’) em nivel baixo. Após isto, recebemos um ‘y’ em nivel ‘1’ dando o sinal que podemos iniciar a recepção. Ao termino dos bits utéis, é enviado um ‘anticode’ de ‘1010’ (que geralmente desprezamos). São necessárias 2 recepções para se comparar e confirmar os bytes recebidos, em virtude de possivéis interferencias no meio . Isto dá mais segurança ao sistema. Nunca é demais lembrar que o receptor de RF escolhido no receptor tem que ser da mesma frequencia do controle remoto/sensor sem fio escolhido. É um erro clássico esquecer disto, pois ainda existem muitos controles em 330Mhz (ou proximo disto), sendo que os novos são de 433Mhz.
Quanto ao aprendizado é simples: aperte um botão do controle ou acione os sensor remoto. Imediatamente aperte o botão ‘learn’. Se piscar uma vez, é porque ocorreu o aprendizado. Os leds correspondente na saida irão se acender confirmando o aprendizado. Já para apagar toda a memória, aperte o botão ‘learn’ por mais de 10 seg., o led ‘learn’ irá piscar por 3 vezes, apagando todos os controles. Necessita em seguida , reaprender todos os controles que serão usados. Alguns sensores ligam os 2 led aos serem ativados. As saidas dos led’s poderão ser usadas para acionar transistores que poderão ligar rele, lampadas, fotoacopladores, triac’s,etc. Mas dai é com voce…..!!!
Para obter o esquema click aqui
Segue o código ASM:
Segue o código HEX:
Obs. A montagem foi feita em placa de protoboard e não tenho ainda sugestão de placa.
Até o próximo artigo!!!
Prezado Claudio.sim é isto mesmo? os dois sinais no mesmo
receptor,usando a parte fixa da transmissão.
‘sem ter de programar o Hcs’.
Obrigado pela atenção, Claudio.
Entendi Sandro!!!
Fazer funcionar uma rotina para 2 tipos não é algo fácil. Assim que tiver uma rotina que funcione apropriadamente, irei publica-la.
Grato (pela paciência), Cláudio