RECEPTOR GENERICO PARA CONTROLES REMOTOS (CHAVEIRINHOS) COM HT6P20B USANDO AT89C2051

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:

rx_gen_ht6p_v2P1_asm

Segue o código HEX:

rx_gen_ht6p_v2P1_hex

Obs. A montagem foi feita em placa de protoboard e não tenho ainda sugestão de placa.

Até o próximo artigo!!!

17 comments on “RECEPTOR GENERICO PARA CONTROLES REMOTOS (CHAVEIRINHOS) COM HT6P20B USANDO AT89C2051

  1. Olá Sandro! Situação interessante! Por favor, preciso saber qual é a EEprom que voce está usando, modelo,fabricante, todas as ‘letrinhas’ escritas nela. Acredito que voce está usando o esquema apontado por esta pagina do blog, com o pino 6 do at89c2051 ao botão ‘learn’ e pino 7 ao led ‘learn’, certo? Algumas EEprom podem ter tempo de gravação diferentes. Dependendo do fabricante,os pinos podem ter funcionalidades adicionais que podem estar atrapalhando o funcionamento. Também, a titulo de teste, coloque um cristal de por.ex 6mhz no lugar do de 12 mhz e veja se ‘apaga’ apertando o botão ‘learn’ por uns 20 segundos. Tente isto, por favor. (A propósito, voce conseguiu fazer funcionar o hcs_prog programador de hcs200..301 com at89s52?) Também, quantos chaveirinhos diferentes voce consegue aprender? Mais de um? Ou somente um e não grava mais? Tente usar uma 24c04 para teste.
    Claudio

  2. Cladio,

    Mudei o ci p/ at89c2051,ficou assim,se colocar a eeprom nova,não grava nenhum chaveiro,mas se colocar
    a eeprom, no HCS_PROG PROGRAMADOR,ligar e desligar e depois devolver ao cicuito correto,ele grava o chaveiros,mas não apaga.Chequei as pinagens,e esta
    de acordo ao que.Voce fez.Já regravei o at89c2051,
    mas não apaga o eeprom.

  3. Olá Claudio.
    Claudio,vc citou.Carreguei a eeprom 24c02 com valores aleatórios,a eeprom 24c02 esta sendo gravada antes de
    montar o circuito,Eu não entendi,estou colocando a eeprom 24c02 sem programar,e estou usando o chip at89s52,a onde estou errando.

    Obrigado pela atenção.

    1. Sandro,

      Basicamente o que foi dito é que colocou se na memória valores quaisquer(aletórios) para teste. Estes dados foram inseridos nesta memória, fora do circuito do projeto em questão.
      Após isto, foi-se adicionada a memória no circuito deste projeto e após o acionamento do botão “learn” o conteúdo que havia sido escrito na memória foi apagado.

      :mrgreen: :mrgreen:

    2. Olá Sandro
      Como Tiago explicou, usei a winprog2000 para colocar valores quaisquer na memória,tirando ela do soquete e fazendo isto externamente. Depois, coloquei ela no circuito e apertei por mais de 10 seg o botão ‘learn’ , gerando o apagamento. Tirei a memória do circuito e usei o winprog2000 para ler ela. Estava realmente com todos os endereços com ‘ff’ ou seja, apagou tudo. Voce disse que está usando o At89s52. O circuito original usa At89c2051. E foi testado com este. Voce acertou corretamente as diferenças de pinagens? Creio que com pinagens corretas, deveria funcionar também.
      Claudio

  4. Olá Cladio,parabéns,muito bom,montei o circuito estou
    testando,ficou legal,mas a EEprom 24C02 não apaga.
    Já troquei a EEprom mesmo assim não apaga,o resto está correto.

    Valeu mesmo…

    1. Prezado Sandro

      Vou pegar o arquivo hex e esquema do site para montar aqui em protoboard e ver se tem ‘gato no telhado’. Depois te dou um retorno.
      Claudio

      1. Caro Sandro
        Testei em protoboard o esquema com o codigo hex postado. Carreguei a eeprom 24c02 com valores aleatórios e depois a inseri no circuito. Apertei ‘learn’ por mais que 10 segundos e apagou toda a memória direitinho. Será que o pino 7 da sua eeprom esta aterrado. Se ficar flutuando (não ligado em nada) pode ocorrer de ler mas, as vezes não grava, portanto ,pode atrapalhar o apagamento.Se tiver, tenta recarregar o arquivo hex de novo, após um apagamento.
        Claudio

  5. Interessante esse circuito Claudio , esta mais perto do que estou buscando seguirei seguindo seu blog para novas idéias….Valeu mesmo..

Comments are closed.

Back To Top