RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO (CI HT6P20B) E PULSO/RETENÇÃO INDIVIDUAL- COM PIC 12F675

Seria possível fazer com um único PIC 12F675, um receptor de 3 canais para controle remoto comercial (chaveirinho) com opção de pulso e retenção individual? Veja mais…

Já foram publicados varias versões de receptor para controle remoto usando o PIC 12F675/629, como no artigo ‘RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629‘, de forma didática. Agora, veremos um circuito prático, já incluído 3 reles com tensão de trabalho de 12 volts na bobina, e contatos para 10 amperes. Seus contatos poderão controlar cargas elétricas de aplicações das mais variadas possíveis.
Veja o esquema abaixo:

Trata-se, portanto, de um receptor de 3 canais, sendo que cada canal é controlado por um botão do controle remoto (chaveirinho).
A escolha deverá ser por controle remotos com 3 botões, que usem internamente o ci HT6P20B, pois o código ASM está preparado somente para este tipo de protocolo.
A novidade deste receptor está na flexibilidade que ele dá na questão de escolha do tipo de saída desejada. Ele permite que determinemos por meio de ‘Jumpers’ se a saída escolhida será no modo ‘Pulso’ ou no modo ‘Retenção’. Note que a escolha é individual, ou seja, podemos programar , por exemplo, a saída 1 para modo ‘Pulso’, a saída 2 para ‘Retenção’ e a saída 3 para ‘Pulso’ ou outras opções.
Com ‘Jumper’ colocado definimos ‘modo Pulso’ e sem colocar o ‘Jumper’ teremos o ‘modo Retenção’.
Toda vez que for redefinido a posição dos ‘Jumpers’ deverá ser dado um ‘Reset’ para que passe a funcionar corretamente o novo ajuste. Isto acontece por que, logo no início do programa, as ‘saídas’ são convertidas em ‘entradas’, com o objetivo de testar a condição dos ‘Jumpers’, sendo que os seus estados ficarão gravados nos flags nomeados de ‘Flagj1 a Flagj3’. Estes por sua vez, serão usados para definir o modo de operação de cada saída. Foram usados 3 resistores de pull up externos, para melhorar a polarização positiva, uma vez que os internos não foram suficientes.
Após montar o circuito, deverá ser carregado o arquivo hex no microcontrolador. Poderá usar um programa gravador (software) rodando em seu PC como por exemplo, o WINPIC800, e um gravador (hardware) como o ‘simples programador de Pic’ , deste blog.
Depois de gravado o chip com o firmware fornecido, deverá estar operacional, ao inseri-lo no circuito e ligar a fonte de alimentação.
O próximo passo é aprender o controle remoto. Para isto, basta apertar qualquer um dos botões e dar um toque no botão ‘Learn’. Em seguida, solte o botão do controle remoto, sendo que o led ‘Learn’ deverá piscar uma vez para indicar sucesso no aprendizado. Permite aprender até 42 controles diferentes antes de começar a subsescrever os primeiros controles gravados.
Para apagar todos os controles e limpar a memória, basta apertar o botão ‘Learn’ por mais de 10 segundos, após o que o led ‘Learn’ piscará algumas vezes para indicar o sucesso do apagamento.
É possível optar pelo uso do PIC12F629 ao invés do PIC12F675. Para isto, comente a linha apropriada em ‘Definições do usuário’ e recompile o arquivo ASM usando o MPLAB-IDE da MICROCHIP. Veja também o artigo ‘COMO COMPILAR OS ARQUIVOS ASM FORNECIDOS NESTE BLOG, JUNTO COM O MPLAB_IDE’.
Obs. Esta montagem foi testada apenas em protoboard (placa experimental), sujeito a bugs ainda não observados em uso prático. Esta sendo fornecido o arquivo asm que poderá ser alterado segundo as necessidades dos hobistas.

Segue o arquivo ASM (atualizado em 03/07/13):

rX_3C_HT6P_PR1_ASM

Segue o arquivo HEX ( para PIC12F675, atualizado em 03/07/13):

rX_3C_HT6P_PR1_HEX

Para os usuários de compilador “C” (CCS C), segue pasta zipada com 2 receptores alternativos de 3 canais, escrito em “C”, para Ht6p20b, com possibilidade de mudar para retenção ou pulso, modo normal ou invertido, alterando nas ‘configurações de usuário’ no arquivo ‘c’ e recompilando. A rotina de recepção é diferente, usando interrupção de mudança de estado do pino 4 (gp3) para iniciar a captação do tx para um programa e o outro, mais simples, apenas vigia o pino 4, procurando por alteração do seu estado. Cada parte do bit recebido é testada para melhorar imunidade a recepção de interferências (atualizado em 14/07/2015):

Recptores_Mudança_gp3

Caso deseje usar transmissores da família de circuito integrados Hcs 200…301 (chaveirinhos c/ HCS) poderá usar a versão abaixo, em modo Hopping Code. Lembrando, que para esta família, temos que recompilar o arquivo asm, com a chave (Key) igual a usada no Tx. Ela se encontra na rotina ‘Decrypt’ . Para gravar esta Key no ci HCS200 …301 do chaveirinho, você deverá usar um programador comercial, ou montar o programador segundo a Note Application AN217, ou um dos aqui publicado, como os artigos : ‘HCS_PROG_V628 – MAIS UMA OPÇÃO PARA PROGRAMAR HCS200…301 COM PIC 16F628A’ , ‘HCS_PROG_TINY – PROGRAMADOR DE HCS200..301 COM APENAS UM PEQUENO PIC 12F629 !!!’ e ‘HCS_PROG – PROGRAMADOR DE HCS 200/201/300/301 COM AT89S521’ .
A chave (Key) usada no arquivo hex é : ‘0123456789ABCDEF’.

Segue o arquivo ASM, Hopping Code (12f675):

rX_3C_HCS_PR_ASM

Segue o arquivo HEX, Hopping Code (12f675):

rX_3C_HCS_PR_HEX

Segue a versão ASM com opção de escolher as saidas em modo normal ou invertidas (somente HT6P20B, atualizada em 03/07/13 ):

rX_3C_HT6P_PR1_INV_ASM

Segue o arquivo HEX desta versão, compilada para modo de retenção e saída normal no pino 6 e os pinos 5 e 3 em ‘modo pulso’ e ‘invertidos’ (somente HT6P20B, atualizada 03/07/13 ):

rX_3C_HT6P_PR1_INV_HEX

Manuais:
Pic 12F675
Datasheet HT6P20B

Curiosidades:

Quem projetou primeiro?
O preço de levar uma vida muito corrida
A fábrica da morte
De onde vem a ameaça de guerra nuclear?
Comunicação — essencial nos ecossistemas da Terra
Uma das nozes mais úteis do planeta
Robert Boyle – lições do passado
Balolo – o caviar do Pacífico
A língua da selva — segredos da comunicação entre os animais
Ultimato “em nome de Deus”
Carros – no presente e no passado
O sistema de ‘spray’ do besouro
Ouvindo sons do espaço
Porque as estrelas são cintilantes?
Uma voz silenciosa que pode se ouvida
A ciência e a Bíblia são compatíveis?
Yellowstone: encontro de águas, rochas e fogo

Outros assuntos:

Como fazer seu segundo casamento dar certo
Como lidar com sogros?
Quando seu filho tem uma deficiência
O que fazer se tenho um problema de saude – Parte 1
O que fazer se tenho um problema de saúde – Parte 2
Como parar de discutir
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como acabar com a tática do silêncio
Como resolver problemas em seu casamento?
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!!!

Clique aqui para comentários/sugestões fora deste tópico

91 comments on “RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO (CI HT6P20B) E PULSO/RETENÇÃO INDIVIDUAL- COM PIC 12F675

  1. Hola Claudio:

    Excelene proyecto Claudio!!!, ya lo estoy implementando en un proyecto personal. Pero quiero hacerte un par de preguntitas: 1° Por que intercalas un resistor de 470 ohms entre el receptor y la entrada al microcontrolador, que efecto produce dicha resistencia, ya que sin la resistencia funciona de igual manera. 2° Por que el resistor del led learn es de elevado valor 1K5 no se puede poner uno de menor valor para que “brille” más?. Con respecto al proyecto, ya lo probé en el protoboard y funciona perfectamente. Te agradesco mucho claudio este aporte saludos

    1. Olá Ricardo!
      Respondendo a suas perguntas: 1) Por ocasião do ‘reset’ , logo que inicia o programa, as saídas se comportam como entradas. Os resistores de 470 ohms polarizam positivamente (nível ‘1’) ou não (nível ‘0’), dependendo se o ‘jumper’ (ligação) estiver colocado ou não. Esta situação irá definir se a saída em questão se comportará como modo ‘pulso’ ou modo ‘retenção’. Após passar por esta etapa, colocar ou não o ‘jumper’ não altera o funcionamento. Somente afeta por ocasião do ‘reset’. 2) o valor do resistor limitador de corrente para o led ‘learn’ poderá ser escolhido conforme você desejar o brilho. Apenas que não deverá passar de 20 mA. Use a formula 5/corrente desejada = valor do resistor, em ohms. Ex. led com 10 mA -> 5/0,01= 500 ohms.
      Use ou 510 ohms ou 470 ohms.
      Cláudio

  2. Amigo sera que nãio seria possivel no pino 2 onde esta o led learn acrescentar um piezo para ter uma indicação auditiva do funcionamento , tipo um beep para indicar acionado e 2 beeps para indicar desligado o canal , seria um piezo apenas para os mesmo canais ,não sei se ainda teria o espaço no programa para este micro mas se for possivel isso em um pic 16f628 ,seria de muita ajuda para quem quer operar o sistema e for no caso um deficiente auditivo , o mundo é para todos né .

  3. Claudio
    Boa tarde.Ótimo projeto!Parabéns!
    Montei e funcionou muito bem. Agora uma pergunta, é muito difícil gravar na memoria o ultimo estado? Ou seja quando desligar a alimentação permanecer na ultima condição, ligado ou desligado?
    Obrigado

    1. Olá Danilo!
      Quero agradecer seu comentário motivador. Para realizar o que você deseja, precisaria gravar cada mudança das saídas também na EEprom. Quando houvesse um ‘reset’, o programa leria estas posições da Eeprom e atualizaria as saídas de acordo.
      Cláudio

  4. Claudio. Tudo bem? Montei o circuito ficou muito bom! Parabéns e obrigado. Mas tenho um pergunta, como eu altero o estado inicial da saída com retenção? Ou seja quero que quando alimente o circuito a saída que escolhi com retenção fique em nível alto. Você pode me auxiliar? Obrigado

    1. Olá José Carlos!
      Experimente , logo após a seção ‘start’ , quando você encontrar a instrução ‘clrf gpio’ , escrever em seguida, ‘bsf saida_1’ para iniciar com ‘1’ na saida 1 e o mesmo se for com outra(s) que desejar trabalhar com retenção inicialmente setado. Depois , recompile no Mplab_ide.
      Cláudio

Comments are closed.

Back To Top