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. boa noite a todos.primeira mente quiria parabeniza o larios pelo seu belisimo projeto.alguem poderia desponibilizr o layout.agradeço desdeja.obrigado.

  2. ola sr claudio gostaria de saber se como manter o fucionamento do pino 3 do pic e no pino 5 varia uma tensão pwm para o brilho de um led. de 0 a 5 voltes de acordo com os botões 1 e 2 do controle chaveirinho e no pino 6 um temporizador de 2minutos para acender um led.tenho o circuito.
    jose aparecido

    obrigado aguardo

    1. Olá José!
      Você necessitará alterar completamente o código. A geração de PWM em pic’s sem o módulo ‘CCP’ fica um pouco mais complicada, especialmente quando tem de trabalhar junto com recepção do tx +temporização de uma saída. Também as frequências de PWM geradas por software, geralmente não passa de dezenas de hertz, no máximo, algumas centenas de hertz. Poderá ver os artigos ‘RECEPTOR PARA CONTROLE REMOTO COMERCIAL (HT6P20B) COM SAÍDA PWM – COM PIC 12F675‘ , ‘FAÇA UM ‘VERSÁTIL’ CONTROLE REMOTO REMOTO – COM PIC12F675′, ‘PWM – GERANDO DE 0 A 5 VOLTS EM 2 CANAIS PARA CONTROLE DE APLICAÇÕES (COM PIC 12F675)‘ , COMO GERAR TENSÕES DE 0 A 5 VOLTS USANDO MODULO PWM INTERNO DO PIC’ , para obter alguma sugestão de como fazer.

      Cláudio

      1. ola sr Claudio obrigado por responder.
        entendi a resposta. a questão e que não tenho conhecimento como programar um pic.
        percebi que o projeto RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO serve para outro projeto que quero montar se modificado os dois pinos
        vc pode modifica e quanto custa .obrigado
        jose scantec@globomail.com

        1. Olá José!
          Seria interessante você começar a aprender a programar, visto que gosta de circuitos desta natureza. Quanto a modificar o circuito, na realidade teria que fazer um novo projeto começando do zero, pois acho que daria menos problema do que adaptar. Eu não realizo trabalhos como programador ( não sou programador profissional), apenas faço isto por ‘hobby’ em tempo livre. As vezes realizo algum artigo baseado na sugestão de alguém que foi anotada no ‘caderninho’. Mesmo assim, não dá para publicar todas as sugestões e pedidos, pelo parco tempo que disponho. Se necessitar disto urgente, poderá procurar na internet por pessoas que fazem programas por encomenda. Sucesso no seu projeto!
          Cláudio

  3. Bom dia Cláudio, tudo bem? Mais uma vez estou aqui para tirar algumas dúvidas contigo sobre jumpers 😀 .

    Tendo como modelo seu projeto e pretendendo fazê-lo em CCS, de uma olhadinha nesse exemplo:

    #include
    #include

    #define jumper_01 PIN_A0
    #define jumper_02 PIN_A1
    #define jumper_03 PIN_A2

    #define saida_01 PIN_A0
    #define saida_02 PIN_A1
    #define saida_03 PIN_A2

    int main(){

    while(true){

    if (!input(jumper_01) && input(jumper_02) && input(jumper_03)){
    output_high(saida_01);
    }

    if (input(jumper_01) && input(!jumper_02) && input(jumper_03)){
    output_high(saida_02);
    }

    if (input(jumper_01) && input(jumper_02) && input(!jumper_03)){
    output_high(saida_03);
    }
    }
    }
    }

    PERGUNTA: Como faria para ACIONAR cada saída de acordo com a posição do jumper?
    Já procurei informações sobre como ligar jumpers na mesma porta de saída e
    não encontrei nada. Essa rotina que não ficou bem clara. li alguns artigos que falam sobre
    o uso de pull-up

    Há como você me dar alguma dica para acionar a saída?

    Desde já agradeço.

    1. Olá Xuguinho! Usar a própria saída como entrada com jumper com resistores pullup é meio complicado e depende do uso da saída. A idéia é usar um resistor ao Vcc que pode ser retirado do circuito usando um ‘jumper’. Mas é preciso que a carga nesta saída seja suficiente para derrubar a tensão para menos que 0,6 volts (nivel 0). Também, no momento que está saída está sendo lida, ela fornecerá alimentação (se com o jumper) para a saída e precisa certificar que isto não atrapalhará . Em alguns casos, poderá usar um filtro para não passar este breve pulso de alta velocidade, usando um resistor e um capacitor de alguns nanofarads. Em outros casos, uma rede de resistores bem calculados, poderão tanto alimentar a carga como fornecer os níveis desejados na entrada para o teste dos jumpers. Existe alguns artigos de controles remotos deste blog que usaram esta técnica.
      Cláudio

  4. Bom dia Cláudio… Fiz esta montagem em um protoboard. Tem um erro não sei onde!!! Se no firmware ou no hardware.Quando ligo o circuito, mas sem nenhuma carga, os 3 canais funcionam normalmente ora sim, ora não.Os pull-ulp são todos de 2k2 nos pinos 3,5,6. Quando ponho leds com resistores de 1k, o pino 5 (canal 2) fica no modo pulso!!! Quando ponho transistores para acionar relés, o pino 2 fica em pulso.Tô tendo problema só no canal 2. pino 5.Defeito igual ao do José Carlos, comentado mais acima.Poderia dar uma olhadinha, quando você tiver tempo??? Compilei no MPLab 8.86 e gravei em vários 12F675.

    1. Olá Batmonstro!
      Os resistores de 470, 4k7 e 2k2 não podem ser alterados , nem se pode colocar led no lugar do transistor. Caso queira usar led , terá que coloca-lo no coletor do transistor com resistor limitador de 470 ohms em série. Do contrário, não irá funcionar! Isto se deve ao fato de se ter calculado os valores desse resistores para se obter o nivel ‘1’ ou ‘0’ retirando e pondo o jumper. Alterando os valores de tais resistores, irá desiquilibrar esta polazarização delicada (0,8 a 1,2 para nivel ‘0’ e 1,8 a 2,2 volts para nivel ‘1’). Caso queira alterar para funcionar direto o led sem transistor, terá que alterar estes 3 valores de forma a dar os niveis ‘1’ e ‘0’ citados. Poderá fazer de forma experimental, com um voltimetro ligado direto no pino 5 (ponta vermelha) e como referencia o gnd (ponta preta). Com jumper tem que dar abaixo de 0,8 volts e sem jumper acima de 2,2 volts. Divirta-se!
      Cláudio

Comments are closed.

Back To Top