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:
Segue abaixo o arquivo HEX a ser gravado no chip PIC 12F629:
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:
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:
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
Segue versão para 3 leds com aprimoramentos:
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’:
Segue arquivo HEX (versão 6):
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:
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.
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):
Segue o arquivo HEX para a versão 9:
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:
Segue o arquivo Hex para versão 10:
Segue o esquema para versão 10:
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):
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:
Segue abaixo uma versão de 1 canal, modo retenção, feito em “C” no compilador MPLAB-IDE XC8:
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!!!
não funciona o comando learn, so funciona para apagar a epron, não reconhece os controles, eu gostaria da deixa para solicitar umas informações sobre o chama atendente, eu não consegui fazer reconhercer mais controles, e nem entendi como o asm faz a decodificação dos controles e acendimento dos leds, ou seja, que parte do asm ele procura na epron o controle gravado e acende o led especifico.
grato pela atenção.
Olá Adriano! Qual foi a versão que você carregou para que eu possa testar?
Claudio
Olá Adriano! (complemento da resposta de 27/01/13 , 22:54 h) A decodificação é meio complicada de entender. A entrada de sinal vindo do receptor (sin) será constantemente vigiada a cada 50 microsegundos. Se for ‘0’ incrementa contador “LC” e se for ‘1’ Incrementa “HC”. Quando ocorre o primeiro ‘1’ será setado o ‘flag’ e testado se o contador “LC” passou do valor ‘tmax’. Se passou, indica que houve um grande intervalo antes ( intervalo entre transmissões). Então reseta contadores e repete a aquisição de valores. Agora, se o intervalo for menor que ‘tmax’, indica que um bit está sendo recebido e ira copia-lo no registradores de resultados e decrementar o contador de número de bit recebidos (28 bits). Em outra palavras, o sistema testa se entrada é ‘1’ ou ‘0’ constantemente e analiza todos os pulsos ‘1’ quanto se houve ou não um grande intervalo antes. Se houve reseta, se não, copia o bit recebido como valido. Detalhe: O bit recebido é obtido pela diferença entre o registrador ‘HC’ e ‘LC’.
Espero que você tenha ‘pegado’ um pouco esta ‘confusão de bits’. Quanto ao chama atendente, especifique melhor o que está acontecendo.
Claudio
🙂 Olá Claudio eu aqui de novo naquela situação dos controles de cortar os arames 9 no total, e como funciona este modelo então para ler e comfirmar o codigo recebido…Valeu
Olá Agnaldo! Este modelo de controle trabalha com 3 estados: aterrado, ligado ao vcc e aberto. Cada bit é transmitido com formato duplo. Na época , cada fabricante usava também um jogo de rx e cx ,gerando frequências de clock diferentes de transmissão ( um tipo de baud rate). Isto torna mais dificil fazer um leitor de código para ele.
Claudio
Ok Claudio, obrigado ai pelo esclarecimento, vou continuar a perquisar como fazer esta leitura destes codigos, Valeu….
Olá Agnaldo! Quando tiver um tempinho, vou ver como seria possivel fazer este leitor.
Cláudio
boa tarde, todos esses arquivos não consigo acender o led de aprendizagem, so o de apagamento.
Olá Adriano! Poderia ser mais especifico: Está funcionando , apagando, etc mas não acende o led na hora de gravar o controle, é isto?
Claudio
ola Claudio, esta fazendo um trabalho maravilhoso passando seus conhecimentos para os mais. também tenho um duvida? quantos CHAVERINHO da para grava na memoria do 629. montei o v7 pulso só esta gravando um CHAVERINHO, quando gravo. apaga o anterior.
e obrigado…
Olá George! É para gravar muitos (42 botões, 24 controles , conforme versão). Vou verificar assim que tiver um tempinho para montar no protoboard.
Claudio
ola Claudio, lembrei de um detalhe o pic onde gravei o v7. eu já tinha gravado varias vezes por cima. sera por isso?
meu gravador e o picbanne
para todos pic´s aparece a opção apagar, menos para 629.
desde já agradeço…
Olá George! Para testar seu pic, carregue um programa simples qualquer, do tipo ‘pisca um led’. Se funcionar, descarte a falha do pic.
Cláudio
amigo estou tentando copilar no mplab, mao esta dando erro. apesar que nao sei mexer no mplab, tem alguma configuraçao que tem que fazer nele para copilar. so seu usar o microc mesmo.
Olá Luciano! Vocêe precisa ver na mensagem pós compilação, qual erro está dando e corrigir. No Mplab, inicialmente, você deve criar um projeto novo e dar um nome qualquer. Em seguida deve abrir um novo arquivo e salvar com terminação .asm. Deve colar o arquivo terminação asm deste site , dentro deste novo arquivo que você criou. Em seguida deve ‘somar’ (add) este arquivo ao projeto. Ai você poderá compilar (buiding). Leia os tutoriais do Mplab na Internet e alguns videos do YouTube.
Cláudio
amigo teria com vc fazer essa programaçao com mikroc. que estou estudando a um tempo nele. e gostaria de enteder essa comuniçao.
Olá Luciano! Eu normalmente, prefiro programar em assembler usando o Mplab. Já fiz alguns projetos em ‘c’, mas não sou ‘expert’ (aliás, lembrando que sou ‘um mero hobista’ e não programador profissional!!!). Em uma oportunidade futura, verei se posso monta-lo em ‘c’. Mas caso, outro colega, que esteja lendo este blog, que já o tenha feito e quizer compartilhar, poderá se manifestar.
Claudio