RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629/675

Decodificar transmissores de controle remoto que usam o ci HT6P20B não é algo muito dificil de se fazer. Para ajudar os que desejam implementar aplicações com este circuito integrado, segue esta sugestão.

Adquirindo um controle remoto comercial (qualquer um usado em alarmes, portões, etc que use o HT6P20B) , carregando o código hex no microcontrolador PIC 12F629, e colocando na mesma placa do receptor de controle remoto genérico já publicado, você terá a opção de fazer experiências interessantes ou ainda , agregar a uma aplicação que deseje fazer ou usar. O programa permite a captura dos 24 bits enviados pelo transmissor (chaveirinho) e testa se já existe este endereço gravado na EEprom. Se tiver, testará os bit 6 e 7 da ultima palavra transmitida, que contem a chave apertada. Conforme o botão apertado, acenderá o Led1 ou Led2, por um período de 0,5 segundo e apaga de novo. Se manter o botão apertado, irá continuar aceso. Caso o endereço não esteja gravado na EEprom, necessitará ser ‘aprendido’ apertando o botão ‘learn’ na placa e acionando um dos botões do controle remoto. Após piscar uma vez o ‘ led learn’ na placa, terá sido bem sucedido a operação de aprendizado.
O HT6P20B já vem de fabrica programado com o ‘serial number’ que é recebido , com mais 2 bits que correspondem aos 2 botões (S1 e S2) nos pinos 1 e 2 do HT6P20B.
Mais informações, veja o datasheet do HT6P20B.
Para gravar o código hex no chip, poderá usar o SIMPLES PROGRAMADOR DE PIC e um software programador como o ‘WINPIC2000′, que é uma mão na roda para todos os hobistas.

Para obter uma versão em ‘C’, veja o artigo “RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629″> ‘RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629’ deste blog.

Segue abaixo o arquivo ASM:

RX_GEN_HT6P20_V3P1_ASM

Segue abaixo o arquivo HEX a ser gravado no chip PIC 12F629:

RX_GEN_HT6P20_V3P1_HEX

A versão acima está dando um bug ao programar 42 botões de controle, sendo operacional com menos. Segue abaixo pasta com arquivos de uma versão corrigida e melhorada. Foi alterado o modo de programar e ao atingir 42 botões aprendidos, o led ‘learn’ piscará para indicar memória cheia:

RX_GEN_HT6P20_V3P2_ASM

Clique aqui para ver o esquema da placa genérica.

Clique aqui para ver a sugestão da placa de circuito impresso.

clique aqui para ver a montagem dos componentes na placa visto pelo lado cobreado e lista de materiais.

Segue abaixo versão ASM/HEX que quando mantém o botão apertado, o led se mantém aceso, sem piscar:

RX_GEN_HT6P_V4P1_ASM

RX_GEN_HT6P_V4P1_HEX

Segue abaixo versão idêntica ao acima, mas com opção de inverter a saída no código Asm:

RX_GEN_HT6P20B_V41_INVERTIDO_ASM

RX_GEN_HT6P20B_V41_INVERT_HEX

Segue versão para 3 leds com aprimoramentos:

RX_GEN_HT6P_V5P1_ASM

RX_GEN_HT6P_V5P1_HEX

Segue arquivo ASM (versão 6) com opção de usar o pino 3 como entrada para uma chave seletora para modo ‘PULSO/RETENÇÃO’:

RX_GEN_629_V6P1_ASM

Segue arquivo HEX (versão 6):

RX_GEN_629_V6P1_HEX

Segue esquema de ligação (versão 6):

Na versão 7, com opção de usar mais um led (led3) no pino 3, podendo ser alterado o programa para modo ‘PULSO’ ou ‘RETENÇÃO’, por comentar e descomentar na ‘opção de usuário’ do arquivo ASM e recompilar. Para facilitar, segue uma pasta com arquivos compilados para modo PULSO e outra para modo RETENÇÃO, atualizada em 15/10/2017:

RX_GEN_HT6P20_V7_PULSO_

RX_GEN_HT6P20_V7_RET_

Segue vídeo caseiro do funcionamento da versão 7 em modo retenção:

Segue arquivo ASM para versão acima, mas com inversão das saídas no modo Pulso (alterável no linha de código como opção).

RX_GEN_HT6P_V7P1_INVERTIDO_ASM

Segue arquivo HEX para versão acima:

RX_GEN_HT6P_V7P1_INVERTIDO_HEX

Segue esquema para versão 7 abaixo:

Segue arquivo ASM para versão 8 (apenas didática, apresentando como podemos piscar os led’s na saída por um número de vezes, alterar qual saída fará isto, piscar mais de um led junto, alterar tempo aceso dos led’s , alterar tempo apagado, etc.

RX_GEN_629_V8BP1_ASM

Segue o arquivo ASM para versão 9 (idem versão 6, mas com aprendizado individual de controles, para poder usar um controle
com uma ou mais placa):

RX_GEN_629_V9AP1_ASM

Segue o arquivo HEX para a versão 9:

RX_GEN_629_V9AP1_HEX

Os arquivos abaixo permitem operação mista, entre retenção e pulso.
Acionando o botão 1 apenas, obtemos acendimento do led1 e se soltar, apaga. O mesmo com o botão 2 e led2 (modo pulso).
Mas se apertar os dois juntos, acende o led 3. Soltando-os e apertando-os de novo, apaga (retenção no led 3)
Obs. Necessita de pull up no pino 3 para funcionar. Veja esquema abaixo da V10.

Segue o arquivo ASM para a versão 10:

RX_GEN_629_V10P1_ASM

Segue o arquivo Hex para versão 10:

RX_GEN_629_V10P1_HEX

Segue o esquema para versão 10:

Esquema v10

Segue pasta zipada com versão 11 (14/07/2015) com 3 canais, programável no arquivo “C” (Compilador CCS C) por comentar/descomentar as linhas, para funcionar em modo retenção ou pulso, saída normal ou invertida, de forma individual para cada canal. Rotina de recepção alterada para testar cada parte do bit recebido (em teste):

RX_GEN_675_V11

Veja também o artigo:‘RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO (CI HT6P20B) E PULSO/RETENÇÃO INDIVIDUAL- COM PIC 12F675’

Segue abaixo uma versão de 1 canal, modo pulso, feito em “C” no compilador MPLAB-IDE XC8:

RX_HT6P20B_PULSO_XC8

Segue abaixo uma versão de 1 canal, modo retenção, feito em “C” no compilador MPLAB-IDE XC8:

RX_HT6P_XC8_RET

Links:
datasheet 12f629

Curiosidades:
controle remoto e o efeito estufa
ataques cibernéticos
Comportamento anti-colisão dos peixes
Jóqueis-robos para camelos

Outros assuntos:
Como acabar com a tática do silêncio
Os milagres são possíveis – 3 objeções
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
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
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

248 comments on “RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629/675

  1. Olá Cláudio! Primeirmante quero te agradecer pelos belos projetos aqui postados… tb quero compartilhar minha alegria porque consegui fazer funcionar esse projeto do Receptor de controle remoto, com dois leds… te pergunto: tentei utilzar o fio que sai de um dos leds para dar entrada (input) em PIV 16F628A para controlar um motor de portao. Mas não acontece nada… O programa que fiz, em C, ja que não entendo nada de ASM, tem um comando basico: se Input Pin_X, Output Pin_y via um transistor… meu pprograma funciona com um botão simulando no proteus… A entrada no PIC 16f que sai do 12F precisa ser em pullUp??

    1. Olá Waymovie! Obrigado por seu comentário e elogios. As saídas dos leds são em nível 1, não necessitando pull_up. Quanto a seu programa, já não posso dizer nada, mas geralmente é algum erro de esquecimento, como por exemplo, esquecer de programar a ‘palavra de configuração’ do pic, deixar o ‘Watch Dog’ ligado e coisas assim.
      Claudio

      1. Vou testar… então, se eu pegar no positivo do led que é uma saída em nível (1) do “teu” decodificador do HT, e ligar a um pino configurado como entreda no PIC 16F (meu projeto) deveria dar certo?? , devo ligar algum resistor? outra coisa estranha, que não consegui entender: fiz um teste na saíde de um dos leds, ligando a um BC548 e a um relê que acionava um Cooler de PC de 12V. Ao pressionar o controle o rele era acionado e também o cooler, mas o led não acende…por que será?
        Abç e obrigado…

        1. Olá Waymovie! Sim, sempre coloque um resistor de baixo valor 330 a 1k ohms, pois, de repente a entrada do pic está configurada como saída por engano, então teremos um curto que destruirá os pics. Quanto ao led, depende como você ligou, ele não acenderá. Por exemplo: Saí do pic vai para o resistor e depois ao led a massa. Se você ligar a base na junção resistor/led, não acenderá o led, mas funcionará o transistor e que estiver ligado no coletor. A tensão de base para emissor é de 0,7 volts, e o led precisa de 1,5 a 2,5 volts para funcionar. Assim, mantenha a ligação original dos leds e puxe um resistor de 4k7 direto do pino de saida do pic para a base do transistor. Então, voce verá acender o led e funcionar o transistor.

          PINO PIC——–|———-WWWW————–!>——-GND
          | 470 LED
          |——-WWWW——————————————BASE DO TRANSISTOR
          4K7

          Claudio

          1. Caraca… não consigo fazer funcionar… na saída do led tem uma tensão que oscila, quando aperto o botão do controle, de 0 a 1,7 V. Essa tensão é suficiente para alimentar o PIC?? to fazendo um teste simples: programei o 16F628A para piscar um led, recebendo como input a saída do led do teu projeto do receptor… mas testo a tensão do pino que configurei como saída e é Zero. Parece que que o meu input não é aceito…só tu pode me ajudar… Abraço.

          2. Olá waymovie! Faça o seguinte: Teste o seu circuito com pic 16f628a aplicando Vcc (+5v) via resistor de 470 ohms. Se não funcionar, verifique o programa e o seu hardware relacionado ao 16f628a. Se funcionar , ligue este resistor direto no pino de saída do pic. Ao acionar o controle remoto, o pino terá 5volts (vcc) e têm que funcionar.
            Claudio

          3. Opa! Agora funcionou… tu é o cara mesmo. Pena que meu código não funcionou… no proteus funciona perfeito, mas na prática não rolou… vou ter que dar uma analisada… tem como eu postar o código e projeto proteus pra ti dar uma olhada? se não der, obrigado da mesmo forma… ja me ajudou demais… grande abraço.

          4. Olá waymovie! Fico feliz que, em partes, você chegou a uma conclusão! Quanto a usar o proteus, não faço uso dele, por que ele tem algumas limitações que me impedem de trabalhar com ele.
            Mas se algum dos colegas quiser da sugestões…
            Claudio

          5. Larios, nesse modelo de receptor, caso eu tenha um controle com dois botoes, quando cadastro os controles eles ficam em “canais” diferentes. Para o caso de acionameto de um portao, que é meu projeto, teria como eu cadastrar os dois botoes para acionar o motor? tem esse programa pronto? gostaria que, independentemente do botao pressioado, o motor fosse acionado. essa situação atual, somente um botao funciona.

          6. Olá Waymovie! Por favor, identifique qual das versões você está se referindo. Você deseja que qualquer dos botões, se pressionado, atue na saída, é isto?
            Claudio

          7. mais uma: que software tu usa pra montar a placa de circuitos?? to usando o Eagle mas ta casca… não to achando alguns componentes, como o módulo RF e tb o TRAFO…

          8. Olá WayMovie! Use o que você achar mais conveniente. Alguns gostam do Eagle, mas outros tem dificuldade em usa-lo. Quanto a componentes, tente comprar na Internet.
            Claudio

  2. Boa tarde Larios, estou com problema para fazer rodar a versão 3P1_asm, não codifica nenhum botão e quando tento com as versões que apreendem todos os botões funciona normal. Tenho que mudar alguma coisa ou ela roda normal desta maneira.Ou pode ser mu gravador (Beeprog2C), estou compilando o ASM no Mplab. Desde ja meu muito obrigado. fico no aguardo.

    1. Olá Tiago! Voce está usando o microcontrolador 12f629 ou alterou no asm para 12f675?
      Se estiver usando o 12f675, descomente também algumas linhas logo no inicio do programa, para esta versão e depois recompilie.
      São estas:

      ;DESCOMENTAR ABAIXO PARA 12F675
      ; BANK1
      ; MOVLW .0
      ; MOVWF ANSEL ;LIBERA PORTAS DO AD (somente 12f675)
      ; BANK0

      Senão , não irá funcionar.

      Claudio

      1. Bom dia Larios estou usando pic 12f629, mesmo descomentando ou apagando continua não apreendendo o controle. Grato Tiago.

        1. Olá Tiago!
          Gostaria que você conferisse as ligações dos pinos do PIC, conforme abaixo:
          pino 1 = vcc
          pino 2 = led ‘learn’
          pino 3 = desligado
          pino 4= botão ‘learn’
          pino 5= led2
          pino 6= led1
          pino 7= entrada rf proveniente do receptor de 433mhz
          pino 8= vcc

          Outra coisa, gostaria que você conferisse se o controle remoto que está usando, tem o circuito integrado Ht6P20B. Na dúvida, abra-o e veja. Não serve o modelo Hcs… ou outros.
          Certifique que ele esteja funcionando. Para isto, ligue um fone a cristal ( capsula piezoeletrica ou campainha de telefone), com um resistor de 1k em série, na saída de rf do receptor para o gnd. Acione o controle e verifique se escuta um ruido característico de transmissão do sinal.
          Caso não escute nada, poderá estar com defeito (ou bateria fraca!!!) ou ser de uma frequência diferente do receptor. Lembre-se: tx e rx da mesma frequência sempre!!!
          Claudio

  3. 😆 Eu quero parabenizar o amigo Claudio Larios, pelo maravilhoso desenvolvimento que tem feito para o leitor 6p20, seu trabalho ficou muito bom. Eu tive o prazer de colocar em funcionamento seu software e funcionou corretamente…parabens

    1. Olá ‘Agitec’! Obrigado pelo seu comentário e elogios. Fico feliz que conseguiu sucesso na sua montagem.
      Claudio

  4. A minha duvida é de como fazer uma saída com retenção e as outras duas como pulso. Estou tentando mas ainda não entendi muito bem a logica. Estou pensando em deixar em modo pulso e apagar toda referencia ao led1 da rotina pulso e direcionar para a rotina retenção mas somente o led1, me dá uma luz por favor.
    Obrigado

    1. Olá Marcia! Realmente não é fácil entender ‘de primeira’ a lógica envolvida. Mas, basicamente, o modo ‘pulso’ é o mais simples, onde apenas ligamos uma saída e deixamos ligado enquanto o botão estiver pressionado no tx. Usa-se um flag para determinar quando finalmente o botão do transmissor foi solto. Cada vez que recebe uma transmissão correta, o flag é setado e uma nova de carga de tempo é colocada em um contador. Quando não se recebe transmissão, gradativamente este contador vai ser decrementado até chegar a zero, quando vai resetar o flag, indicando que botão foi solto e a saida será desligada. Assim, apertando no tx liga a saída e soltando no tx, apaga o led da saída.
      Quanto ao modo retenção, antes de acionar a saída, precisamos testar se está ligada ou desligada e inverter a situação. Supondo que esteja ligada,irá desliga-la e acionar um flag para travar enquanto o botão do tx estiver acionado. Igualmente ao ao acima, depois de soltar o botão do tx, irá decrementar uma carga do contador e ao chegar a zero, irá resetar o flag, permitindo uma mudança na saída caso o botão seja novamente apertado no tx. Confuso! Juro que para mim também é difícil até para explicar.
      Tente, pois assim que eu tiver um tempinho irei postar uma versão nestas condições.
      Claudio

  5. Claudio Boa Noite.
    Eu tenho a mesma duvida do Mario, entendi mais ou menos a diferença entre pulso e retenção, mas não consegui sucesso nas modificações.O que eu entendi é que em retenção vc usou FLAGLED e em pulso BSF e BCF. BSF liga E BCF desliga? 😳
    Obrigada

    1. Olá Marcia! Quando falamos em ‘pulso’, significa que teremos a saída ligada enquanto o botão do transmissor estiver pressionado. Já o termo ‘retenção’ se refere a mudança de estado da saída a cada aperto do botão do transmissor, ou seja, apertando o botão uma vez e a saída ligará. Apertando de novo a saída desligará , e assim sucessivamente. Exatamente, qual é a dúvida?
      Claudio

Comments are closed.

Back To Top