RECEPTOR DE 2 CANAIS PROGRAMÁVEL P/ CONTROLE REMOTO USANDO HT6P20B – C/ PIC 12F675 (REF182)

1

Com a versatilidade da programação de modo de uso…

Existe a venda os chamados ‘módulos receptores’ que podem ser programados para receber controles remotos comerciais usados em alarmes ou portões elétricos.
Esta montagem experimental é uma sugestão para se construir um destes receptores, com capacidade de ser programado por meio de jumpers em sua placa, para operar de vários modos diferentes. Isto facilita seu uso em aplicações variadas onde se necessita a operação de um controle remoto RF. Veja o esquema abaixo:

O sistema comporta 2 canais, cujas saídas são feitas por 2 reles de 12 volts. Seus contatos podem ser utilizados tanto no modo normalmente ligado como normalmente desligado.
A recepção do sinal oriundo do ‘chaveirinho’ transmissor (tx) é feito por um módulo receptor miniatura. Podem ser usado quaisquer modelos disponível, na frequência de 433Mhz ( ou seja, a mesma frequência do TX).
Conforme mostra o esquema, temos 2 interruptores usados na programação, além de 3 jumpers.
O interruptor nomeado de ‘controle’ serve para aprender um botão de um controle e também para realizar o apagamento geral de todos os controles aprendidos, se apertado por mais de 5 segundos. Já o interruptor ‘tempo’ serve para eliminar a temporização, se apertado por mais de 5 segundos. Se em seguida for apertado novamente, irá incrementar o contador de tempo, para uso na função ‘retenção temporizada’.
Para usar este receptor, temos primeiro que aprender os controles, fazendo isto com cada botão que deseja usar.
O circuito permite escolher na hora do aprendizado, qual canal ativará.
Com a memória EEprom do pic 12f675, podemos gravar até 31 botões diferentes.
Importante lembrar que este receptor somente aceitará TX da mesma frequência e do sistema “code learning” usando o integrado Ht6p20b.

PASSO A PASSO PARA APRENDER CONTROLES:

Ativar somente o canal 1:
Retire todos os jumpers e coloque somente no canal 1 (jcn1).
Acione o botão desejado do controle remoto e em seguida aperte momentâneamente o interruptor ‘controle’. O led irá dar uma breve piscada indicando o aprendizado. Este botão aprendido somente poderá acionar o canal 1.

Ativar somente o canal 2:
Retire todos os jumpers e coloque somente no canal 2 (jcn2).
Acione o botão desejado do controle remoto e em seguida aperte momentaneamente o interruptor ‘controle’. O led irá dar uma breve piscada indicando o aprendizado.Este botão aprendido somente poderá acionar o canal 2.

Ativar canal 1 e 2 simultaneamente:
Retire todos os jumpers e coloque somente no canal 1 (jcn1) e canal 2 (jcn2).
Acione o botão desejado do controle remoto e em seguida aperte momentaneamente o interruptor ‘controle’. O led irá dar uma breve piscada indicando o aprendizado. Este botão aprendido acionará ambas saídas simultaneamente.

Obs. Este modo tem que ser usado quando trabalhar em modo ‘beep’ para o canal 2.

Não aprenda algum botão sem estar colocado o jumper jcn1 ou jcn2, ou ainda ambos. Se for aprendido sem nenhum jumper, não terá efeito algum na operação do receptor.

CONSIDERAÇÃO SOBRE O MODO DE USO:

Após o aprendizado, o modo de operação dos canais será determinado por quais jumpers estiverem colocados.
Temos 13 modos de operação possíveis:
1 ) Canal 1 = pulso e canal 2 = pulso
2 ) Canal 1 = retenção e canal 2 = pulso
3 ) Canal 1 = pulso e canal 2 = retenção
4 ) Canal 1 = retenção e canal 2 = retenção
5 ) Canal 1 = retenção temporizada e canal 2 = retenção
6 ) Canal 1 = retenção e canal 2 = retenção temporizada
7 ) Canal 1 = retenção temporizada e canal 2 = retenção temporizada
8 ) Canal 1 = pulso e canal 2 = retenção temporizada
9 ) Canal 1 = retenção temporizada e canal 2 = pulso
10 ) Canal 1 = pulso e canal 2 = beep (um beep ao ligar e um beep ao desligar)
11 ) Canal 1 = retenção e canal 2 = beep (um beep ao ligar e um beep ao desligar)
12 ) Canal 1 = pulso e canal 2 = beep (um beep ao ligar e dois beeps ao desligar)
13 ) Canal 1 = retenção e canal 2 = beep (um beep ao ligar e dois beeps ao desligar)

Lembrando que no modo ‘pulso’ a saída fica ligada enquanto o botão estiver pressionado.
No modo ‘retenção’ a saída irá alternar de estado a cada aperto do botão.
E no modo ‘retenção temporizada’, se a saída estiver ligada, será desligada por um novo acionamento do controle ou por tempo programado previamente. Este tempo pode ser alterado de 20 em 20 segundo, totalizando o máximo de 84 minutos. Estes tempos podem ser diferentes dependendo da precisão do oscilador interno do pic e da temperatura de operação. Outros tempos podem ser obtidos alterando as constantes do programa em ‘c’ e recompilando para gerar novo hex.

PASSO A PASSO PARA ESCOLHER O MODO DE OPERAÇÃO:

1) Canal 1:Pulso/ Canal 2:pulso
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers.

2) Canal 1:retenção / Canal 2:pulso
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar a temporização.

3) Canal 1:pulso / Canal 2:retenção
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar a temporização.

4) Canal 1:retenção / Canal 2:retenção
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1) e canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar as temporizações.

5) Canal 1:retenção temporizada / Canal 2:retenção
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1) e canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar as temporizações.
Retire o jumper do canal 2 (jcn2). Aperte o botão ‘tempo’ até acender o led e solte.
Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.
Recoloque o jumper do canal 2 (jcn2).

6) Canal 1:retenção / Canal 2:retenção temporizada
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1) e canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar as temporizações.
Retire o jumper do canal 1 (jcn1).Aperte o botão ‘tempo’ até acender o led e solte.
Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.
Recoloque o jumper do canal 1 (jcn1).

7) Canal 1:retenção temporizada / Canal 2:retenção temporizada
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1) e canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Isto irá desligar as temporizações.
Retire o jumper do canal 1 (jcn1).Aperte o botão ‘tempo’ até acender o led e solte.
Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.
Recoloque o jumper do canal 1 (jcn1) e retire o do canal 2 (jcn2).Aperte o botão ‘tempo’ até acender o led e solte.
Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.
recoloque o jumper do canal 2 (jcn2) e mantenha colocado o do canal 1 (jcn1).

8 ) Canal 1:pulso / Canal 2:retenção temporizada
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 2 (jcn2).
Aperte o botão ‘tempo’ até acender o led e solte. Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.

9)canal 1:retenção temporizada / canal 2:pulso
Grave os controles (veja passo a passo para aprender controles)
Retire todos os jumpers. Coloque o jumper no canal 1 (jcn1).
Aperte o botão ‘tempo’ até acender o led e solte. Rapidamente, aperte o botão ‘tempo’ quantas vezes forem necessária para incrementar o tempo (20 em 20 segundos).
A cada aperto piscará o led. Ao chegar o valor desejado, aperte imediatamente o botão ‘controle’ para gravar a opção de tempo. Se não for apertado o botão ‘controle’ após 4 segundos, será cancelado esta operação.

10) Canal 1:pulso / canal 2:beep ( 1 toque ao ligar e 1 toque ao desligar)
Grave os controles (veja passo a passo para aprender controles)
Obs. O controle tem que ativar ambos os canais para funcionar neste modo.
Retire todos os jumpers. Coloque o jumper ‘beep’ (jbeep).
A cada aperto do botão no tx irá acionar o canal 1 e um breve acionamento (beep) no canal 2

11)canal 1:pulso / canal 2:beep (1 toque ao ligar e 2 toques ao desligar)
Grave os controles (veja passo a passo para aprender controles)
Obs. O controle tem que ativar ambos os canais para funcionar neste modo.
Retire todos os jumpers. Coloque o jumper ‘beep’ (jbeep) e também no canal 2 (jcn2).
A cada aperto do botão no tx irá acionar o canal 1 e um breve acionamento (beep) no canal 2

12) Canal 1:retenção / canal 2:beep ( 1 toque ao ligar e 1 toque ao desligar)
Grave os controles (veja passo a passo para aprender controles)
Obs. O controle tem que ativar ambos os canais para funcionar neste modo.
Retire todos os jumpers. Coloque o jumper ‘beep’ (jbeep) e também do canal 1 (jcn1).
A cada aperto do botão no tx irá inverter o canal 1 e um breve acionamento (beep) no canal 2

13) Canal 1:retenção / canal 2:beep (1 toque ao ligar e 2 toques ao desligar)
Grave os controles (veja passo a passo para aprender controles)
Obs. O controle tem que ativar ambos os canais para funcionar neste modo.
Coloque o jumper ‘beep’ (jbeep) e também no canal 1 (jcn1) e canal 2 (jcn2).
A cada aperto do botão no tx irá inverter o canal 1 e um breve acionamento (beep) no canal 2

PASSO A PASSO PARA APAGAMENTOS DOS CONTROLES:

Aperte o botão ‘controle’ por mais de 5 segundos, até que o led comece a piscar, soltando então o botão.
Todos os controles serão apagados, sendo então necessário reaprende-los. Siga o passo a passo para aprender o controle.

Segue abaixo algumas sugestões de como pode ser usado este receptor de controle remoto:

A primeira mostra o uso em um portão automático, com auxílio de micro-chaves de fim de curso. Pode ser usado em portões deslizantes e basculantes.

A segunda sugestão mostra o acionamento de um ventilador de teto, ligando e revertendo a rotação.

Nesta terceira sugestão, o ventilador será ligado de modo fixo como ventilador ou exautor e o segundo botão aciona uma velocidade adicional.

Já nesta quarta sugestão, usamos o controle remoto para ligar conjuntos de lampadas em um palco.

Esta quinta sugestão, mostra um alarme simples para carro feito com base em um rele de 12 volts e diodos. O controle liga e desliga o alarme, dando também os tradicionais ‘beep’ na sirene.

Nesta sexta sugestão, mostra um alarme simples para casa, fazendo uso de alguns reed switch para servirem de sensores em portas e janelas. Opera de forma parecida ao anterior.

E nesta ultima sugestão, podemos acionar duas folhas de portão, também com auxílio de fins de cursos devidamente instalados.

Lógicamente, cada um poderá achar um aplicação conforme sua necessidade. A versatilidade na forma de programação ajuda em muito nas aplicações que desejamos usar.

Atenção: Esta montagem foi realizada apenas em placa de protoboard, sujeita a bugs ainda não detectados. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobista. Antes de fazer uma placa de pcb, monte e teste em placa de protoboard para confirmar se atende a suas necessidades.

Segue pasta com os arquivos desta montagem:

recpt_rf_prog1

Manuais:

PIC 12F675
HT6P20B
REED SWITCH

Curiosidades:

As células — bibliotecas vivas
A engrenagem do Issus coleoptratus
O peixe-papagaio — um peixe que fabrica areia
Como ter uma saúde melhor
Galileu – a ciência e a religião
Al-Khwarizmi – o herói da matemática
Micro-organismos que comem petróleo

Outros assuntos:

Como ensinar seus filhos a ter autocontrole
O que a Bíblia diz sobre a tolerância
O que a Bíblia diz sobre a pobreza?
O que a Bíblia diz sobre a violência?
O que a Bíblia diz sobre o adultério?
Como pedir desculpas
Coleção de Perguntas Bíblicas Respondidas
Vídeos Cristãos que Aumentam a Fé
Coleção de vídeos educativos para seus filhos pequenos assistirem
Peça um estudo bíblico gratuíto

Até o próximo artigo!

1

17 comentários sobre “RECEPTOR DE 2 CANAIS PROGRAMÁVEL P/ CONTROLE REMOTO USANDO HT6P20B – C/ PIC 12F675 (REF182)

  1. 0

    Boa noite Cláudio. Montei no protoboard e funcionou muito bem e ira atender a minha necessidade de controle e temporização de luzes. Fiz o layout da PCB e se for de seu interesse posso enviar em PDF ou Proteus.
    Tenho boa experiencia em Arduino mas o que voce faz com PIC é digno de elogios, queria eu aprender uns 5% do que voce conhece rs rs rs. Super abraço!

    1. 0

      Olá J.Martins!
      Poderá enviar um link do seu material que queira disponibilizar através de um comentário. Alguns preferem PDF outros Proteus. Então envia dos dois.

      Cláudio

      1. 0

        Cláudio, grato pela atenção. Não tenho link, pode ser por email? Em tempo: seria possível alteração o código para que enquanto estiver contando tempo o programa ignorar pulso de comando? Abs

        1. 0

          Olá J. Martins!
          Por favor, qual seria o objetivo desta alteração? Pode compartilhar?
          Cláudio

          1. 0

            Boa noite Cláudio. Eu cadastrei o TX do meu portão automático neste RX e o propósito seria quando comandasse o portão para abrir as luzes da garagem e sala ligarem e permanecerem acesas pelo tempo ajustado. Porém quando faço o comando para fechar, as luzes se apagam pois o RX reseta a contagem.
            Acredito que seria interessante essa opção no programa. Abraço!

          2. 0

            Olá J.Martins!
            Entendi. Modificar o programa não é muito fácil pois tudo está bem amarrado. Você pensou em cadastrar apenas um botão do seu controle para acionar as luzes? Aí você usaria o outro botão do controle, não cadastrado para fechar a garagem. Neste caso, não apagaria de imediato, mas pelo tempo.
            Cláudio

  2. 0

    Olá Claudio, montei o projeto porem está acontecendo o seguinte: Depois de apreender o controle retiro a energia e ao voltar a alimentação do circuito as saídas são acionadas com um pulso e retornam a zero. Gostaria de usar esse projeto para acionar a fechadura eletrônica do meu portão porem se acabar a energia ao voltar ele abriria o portão social sozinho, seria possível uma solução?

    1. 0

      Olá Silva45!
      Devido ao fato que no reset o pic fica com suas portas em alta impedância, e existe um resistor de polarização para detectar se o jumper está ou não colocado, haverá este breve pulso inicial.
      Poderá solucionar por alimentar o circuito de uma bateria que seja constantemente carregada pela rede.
      Também poderá tentar aumentar o valor do capacitor de 100 nf na base do transistor para valores entre 10 e 100 uf.
      Outra possibilidade é usar outro receptor dos que já foram publicados, sem este arranjo de jumpers, para fazer o que deseja.
      Cláudio

    1. 0

      Olá Silva45!
      Sim, poderá usar o 12f629 mudando o cabeçalho para este , e comentando referencias ao registrador ANSEL do conversor analogico/digital, que não existe neste modelo.


      //#include // includes
      #include // includes

      void main(){

      // setup_adc_ports(no_analogs); //somente pic12f675
      // SETUP_ADC(ADC_OFF); //DESLIGA ADC
      setup_comparator(nc_nc_nc_nc); // desliga comparadores

      Depois é só recompilar.
      Cláudio

  3. 0

    olá Claudio boa noite, no caso da saída retenção temporizada seria possível colocar tempos mais baixos como por exemplo de 1 em 1 segundo.

    1. 0

      Olá Marcos!
      Os tempos atuais de 20 em 20 segundos são aproximados, e podem ser alterados pelo valor da carga inicial de 3 registradores : dig1,dig2, dig2, conforme os defines no começo do programa visto na porção de código abaixo:

      //tempo por unidade 20seg 40seg
      int8 const vdig1=0x40; //0x40; //0x80
      int8 const vdig2=0x0d; //0x0d; //0x1a
      int8 const vdig3=0x03; //0x03; //0x06

      Eu nunca tentei alterar para ver o que acontece. Mas você poderá tentar isto, alterando estes valores de forma proporcional ao desejado. Mas não espere tempos precisos de 1 segundo, mas aproximações. Se for necessário precisão, sugiro usar algum outro projeto baseado em RTC ou similar. Também deve ser lembrado que alterando este valores afetará o tempo máximo de temporização que passará a ser apenas 255 segundos como máximo.

      Cláudio

      1. 0

        ok Claudio até vi la no programa fonte mas ,não sei por onde começar a mexer ,se puder deixar um pouco mais detalhado de como mexo nessa parte para deixar em 1 em 1seg;
        int8 const vdig1=0×40; //0×40; //0×80
        int8 const vdig2=0x0d; //0x0d; //0x1a
        int8 const vdig3=0×03; //0×03; //0×06

        1. 0

          Olá Marcos!

          Como eu disse, não sei qual será o resultado final, mas poderá substituir os valores destas constantes para próximo de 1 segundo, por tentativa e erro ou usar algum programa calculador de delay (não me pergunta qual).
          No caso:
          int8 const vdig1=0×40;
          int8 const vdig2=0x0d;
          int8 const vdig3=0×03;

          Temos um hex de valor = 30d40h => 20 segundos

          com regra de 3 para se aproximar apenas (pois tem alguma diferença nos loops externos na hora do decremento):
          30d40h ————–20
          x————————-1

          30d40h/20=002710h

          Então, tente mudar para:

          int8 const vdig1=0×10;
          int8 const vdig2=0x27;
          int8 const vdig3=0×01; //tem somar mais um para sair com um único pulso final

          Recompile e veja o resultado montando na placa experimental de teste. Se ficou próximo, poderá ajustar vdig2 e vdig1 para outros valores e tentar de novo.
          Se não conseguir o resultado, então este software não será adequado a sua aplicação e deverá partir para outro que atenda a sua necessidade.

          Cláudio

  4. 0

    bom dia, estou trabalhando em um projeto e gostaria de utilizar esta ideia do seu receptor por ser bem simples e confiável. primeiramente parabens pela ideia.preciso saber se o pic 12f675 já esta pronto para utilizar desta forma ou tenho que programar ele para utilizar conforme seu projeto.

    1. 0

      Olá Grizotti!
      Você deve carregar (programar) o pic com o arquivo hex. Depois, coloque ele no circuito e alimente com os 5 volts. Faça a escolha dos ‘jumpers’ que resultará no modo de funcionamento desejado (vide texto do artigo).
      Experimente bem em protoboard antes de fazer qualquer placa.
      Claudio

Os comentários estão fechados.