CONTROLE REMOTO COM 15 CANAIS (RF) – COM PIC 16F628A (REF208)

1

Controlando a distância muito mais dispositivos…

Controlar dispositivos a distância pode ser bem prático. Por isto voltamos a este tema, tirando o máximo de canais que pode ser conseguido de forma direta em um PIC 16F628A. Note que esta montagem é um aprimoramento do controle remoto de 8 canais do artigo “CONTROLE REMOTO 8 CANAIS ON/OFF – PIC 16F628A”, sendo portanto, também compilado em ‘ASM’ por motivos óbvios.
Abaixo podemos ver o novo esquema, tanto do transmissor como do receptor, com mais 7 canais adicionais, em relação a montagem anterior citada acima.

Como o PIC 16F628A dispõe de 18 pinos e apenas 15 pinos que podem ser configurados como saídas, obtemos este máximo de 15 canais, conforme pode ser observado no esquema acima.
Os meios de transmissão podem ser diversos:
1) Par tx/rx por rádio frequência, como os comerciais de 27 , 72 , 315, 430 Mhz.
2) Por luz usando diodo emissor infrared no transmissor e apontando para um fototransistor no receptor.
2) Ligando direto por um fio do pino de saída do transmissor (pino 17) para a entrada do receptor (pino 4), sendo que neste caso, visaria apenas economizar cabos. Os comandos seriam enviados por um único fio ao invés de 15 fios.

Porém, o esquema acima trata apenas do envio por RF, com um transmissor de 27 Mhz e um receptor da mesma frequência.
Cada interruptor pode ser programado no código do receptor, para operar em modo retenção ou pulso. Cada hobista escolherá no arquivo ‘asm’, por comentar ou descomentar a opção desejada. Depois, deverá compilar no Mplab para gerar o arquivo ‘.hex’ a ser carregado no pic. O arquivo do transmissor é o mesmo independente da opção ‘retenção’ ou ‘pulso’.
Na pasta dos arquivos desta montagem foi feita 3 compilações que podem ser carregadas no pic: a primeira com todas as saídas em retenção, a segunda com todas as saídas em modo pulso e a terceira com 8 saídas em retenção e 7 em modo pulso. Qualquer outra opção diferente destas terá que mudar no arquivo ‘asm’ e recompilar, conforme já mencionado.

Obs. Esta montagem foi realizada apenas em placa experimental (do tipo Protoboard), sujeita a bugs ainda não observados. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade do hobista.

Segue pasta com os arquivos desta montagem, unicamente em ‘ASM’, atualizada em 20/05/2016:

CR_REMOTO_15C_PR

Manuais:

PIC 16F628A

Curiosidades:
As magníficas araras
Pneus — sua vida pode depender deles!
Preservados numa gota dourada
Quem dividiu a Bíblia em capítulos e versículos?
Dinheiro e pesos nas Escrituras Hebraicas
A vida sem visão

Outros assuntos:

Será que é amor ou paixão?
O que fazer quando seu filho mente
Como conversar com seu filho adolescente — sem discutir
A Bíblia é apenas um bom livro?
Como ensinar seu filho a usar a internet com segurança
Perguntas Bíblicas Respondidas
Coleção de Vídeos Educativos
Histórias Bíblicas Ilustradas

Até o próximo artigo!!!

1

34 comentários sobre “CONTROLE REMOTO COM 15 CANAIS (RF) – COM PIC 16F628A (REF208)

  1. 0

    Hola Claudio
    Mi pregunta es si el control remoto de 15 canales
    Podría ser el mismo sistema como el LX32 con les en TX
    El LX 32 funciona de maravilla el 16f628 es más barato
    Que el 16f877 a veces necesita menos canales
    Gracias por tu atención
    Un saludo Manuel Pereira

    1. 0

      Olá Manuel!
      Talvez possa ser feito. Mas no momento, não irei mexer com este tópico, me dedicando a outros temas diversos. Fica anotado no ‘caderninho’ de possibilidades.
      Cláudio

  2. 0

    Boa noite Claudio, eu montei o projeto e ficou show, só que agora eu queria fazer ele funcionar da seguinte forma, um dos botões ficasse permanentemente acionado no transmissor, digamos o botão SW0 e o transmissor enviasse um sinal cada 60 segundos para PISCAR algum LED no receptor nesse intervalo de tempo, digamos o LED0, já tentei fazer de tudo, mas como sou iniciante gostaria de sua ajuda, como controlar o tempo de envio dos comandos no transmissor para as saídas do receptor ??. Forte abraço

    1. 0

      Olá Edsonsimplicio!
      Poderia compartilhar o objetivo desta alteração que pretende fazer?
      Cláudio

      1. 0

        Olá Claudio, muito obrigado por responder, veja o objetivo é o seguinte, eu preciso para usar em um poço artesiano, pra ligar uma bomba, só que o transmissor enviaria o sinal para o receptor manter a bomba ligada de 1 em 1 minuto, avisando que a caixa ainda não encheu. Pois do jeito que está o transmissor ficaria ligado o tempo todo, e digamos pra encher as caixas do projeto em questão, leva em média 36 horas, e não queria o transmissor ligado o tempo todo, somente ele daria um sinal a cada, de 1 a 5 minutos. Eu tenho um projeto desses, só que usando outros componentes eletrônicos,só que o meu só tem 4 canais, e preciso de pelo menos 8 canais no momento. E achei seu projeto incrível e perfeito para o projeto. Ficaria grato se pudesse dar uma dicas, eu comecei agora estudar PIC, e estou meio perdidão.

        1. 0

          Olá Claudio sou eu de novo, rsrs, por sugestão de um colega aqui do fórum, já estamos tentando no controle de 8 canais, pois ele tem chaves dips de codificação, e seria incrível se este modelo pudesse fazer o que propus nesse modelo de 15 canais.

          1. 0

            Olá Edsonsimplicio!
            Obrigado por compartilhar a aplicação conosco. Terá que modificar o programa do tx para identificar está entrada que será temporizada. Depois terá que fazer um loop de tempo com registradores ou usar um timer para isto. Se a entrada estiver acionada envia uma transmissão e começa a contar tempo. Ao término se ainda estiver acionada, enviara outra transmissão e novamente contará tempo enquanto acionada.
            No rx, terá que mudar para acionar a saida, carregar um valor de tempo dentro do loop principal e ao receber uma transmissão carrega de novo o tempo sem deixar desligar a saida. Se não receber dentro da janela deste tempo, então desligará. Quanto ao led poderá piscar junto no loop, a cada 250 ms, por exemplo.

            Cláudio

  3. 0

    Olá Cláudio, me tire mais uma dúvida por gentileza… Fiz o projeto deste controle e o do robô esteira dentro do joystick de ps3 (mandarei depois link do vídeo para o Sr. ver como ficou), tudo funcionando beleza, mas o problema tá sendo para ter os 5v, pois não há espaço para baterias. Minha dúvida é saber, porque o transmissor não funciona com tensão abaixo dos 5v? Estou usando bateria de celular de 3,7v. No receptor funciona com essa tensão e consome até mais corrente do quê o transmissor. E o Sr. saberia dizer, se existe alguma forma de enviar os dados dos transmissores com apenas um módulo? Tentei utilizar diodos de todas formas, mas parece não ser possível. Estou usando módulo de 315mhz e 433mhz. Mais uma vez agradeço a ajuda.. 😀 😀 😀

    1. 0

      Olá Gerson Moura!
      Você já identificou se é o pic ou o tx que não funciona com 3,7 v?
      Se o pic não estiver produzindo saída para o tx, provavelmente seja porque a palavra de configuração está com o bit 6 (BOREN) setado. Altere a palavra de configuração de:
      __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _MCLRE_OFF & _LVP_OFF

      para:
      __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _MCLRE_OFF & _LVP_OFF

      e recompile para obter o novo hex.
      Quanto a usar o mesmo módulo para as duas aplicações, creio que terá problemas que eu não saberia te responder. Acredito que um sinal irá atrapalhar o outro.
      Cláudio

  4. 0

    boa noite Claudio, gostaria de usar uma bateria de 9v com regulador no transmissor .qual regulador devo usar para poupar a bateria: 7805, 78l05, diodo zener ou outra forma ?? seria somente para o pic, o módulo ligarei direto no 9v. desculpe tantas perguntas .

    1. 0

      Olá Michael!
      Poderá usar o 78L05 por ser pequeno em tamanho e baixo consumo sem carga.
      Cláudio

  5. 0

    olá Claudio,
    montei o circuito e achei um problema em relação ao led ligado no RB0 ,ao desligar e ligar o circuito ele não volta ligado caso tenha sido acionado no modo retenção antes de desligar(testei a versão mista). olhei no programa e achei o seguinte:

    IFDEF CANAL1_RET
    ANDLW .1
    BTFSS STATUS,Z
    BSF PORTB,0
    ENDIF

    IFDEF CANAL2_RET
    MOVFW TMP ;todos os outros canais contém essa instrução
    ANDLW .2
    BTFSS STATUS,Z
    BSF PORTB,1
    ENDIF

    depois adicionei essa instrução no CANAL1_RET e funcionou normal ( salvando seu estado ao desligar e ligar ).o problema era isso mesmo ?? voltei a querer aprender assembly e achei um canal bem legal no youtube que tem video aulas de assembly para pic e muitas outras coisas e estou “tentando” aprender . o canal é WR Kits .

    1. 0

      Olá Michael!
      Muito obrigado por trazer a atenção esta falha no programa e sua correção. Já fiz as correções sugeridas e postei junto ao artigo.
      Obrigado
      Cláudio

      1. 0

        Claudio , tem como deixar o pulso mais rápido ao soltar o botão, assim que solta o botão o led ainda fica aceso um tempinho.tem como tirar esse tempo ??? obrigado .

        1. 0

          claudio , reparei agora que se deixar um botão (modo pulso) apertado, as outras saidas apagam rápido quando soltam seu respectivos botões .

        2. 0

          Olá Michael!
          Este tempinho é necessário pois temos um tempo entre as transmissões sucessivas. Senão ficaria piscando a saida.
          Cláudio

  6. 0

    Olá Cláudio, tudo bem? Mais uma vez venho aqui te pedir ajuda, rs.
    Comprei uma protoboard e fiz todas ligações, porém estou tendo problema pra fazer funcionar. Todos botões em modo retenção, quando alguns leds estão acesos, ao acionar outra porta alguns desligam e há portas que parecem “alternar”, pois outro led acende. E em modo pulso tem uns 4,5 que não acendem. As ligações estão certas, com os resistores de 10K nas respectivas portas, porém, como não tenho resistor de 470ohm ou menor para colocar em série com o led, liguei eles diretamente, pois minha fonte também é de pouca amperagem. A comunicação dos dois pics estão sendo feitas por cabo. O que posso estar fazendo errado? Agradeço a ajuda ! Abraços !!! 😀

    1. 0

      Olá Gerson!
      Sem os resistores limitadores, o port fornecerá 25 mA por pino. O máximo permitido passando pelo pino VSS é 300 mA e 250 mA pelo VCC (pagina 135 do datasheet). Então 15 leds acesos totalizarão 375 mA, o que ultrapassa o limite de dissipação. Se sua fonte não consegue fornecer pelos menos 400 mA, irá derrubar o VCC levando o pic a resetar. Isto ficará continuamente nesta situação. Procure seguir de perto o esquema.
      Os leds são apenas para indicação em testes. Na aplicação serão substituídos por um resistor de 4k7 a base de um transistor que comandará reles, etc. Não ultrapasse o limite de segurança para não torrar seu pic.
      Cláudio

  7. 0

    Claudio,

    Se caso montar estes circuito e os reles acionarem contatores, eu não vou ter problema de resetar o pic quando acionar o mesmo (indução da bobina do contator na alimentação do circuito, visto que a mesma fase vai alimentar o Trafo que alimentara a placa). Estou com uma placa aqui que quando se aciona 2 contatores ela reseta o pic, chegando a apagar a memoria do mesmo. Achei interessante o seu projeto, mas estou com duvidas enquanto utilizado com os reles e contatores o mesmo não sei de que maneira resetar o pic toda a vez que o contator acionar.

    1. 0

      Olá Carlúcio!
      Realmente, este é um grande problema com os pic’s – serem muito sensíveis as interferências. Geralmente o que se faz é atacar o problema do ruído na sua fonte. Como o contator trabalha com corrente alternada não dá para colocar um diodo em paralelo com a bobina. Mas poderá usar um capacitor de 220 nanoFarads/600v em série com um resistor de baixo valor (30 ohms 1watt), colocando na bobina do contator, para suprimir os picos gerados ao ligar e desligar. A alimentação do pic deve ser muito bem feita, com reguladores e capacitores para filtrar os ruídos elétricos. Em alguns casos necessita-se até de blindar o circuito do pic com chapa metálica, pois o ruído pode vir por RF. Talvez encontre mais informação pesquisando na internet sobre este tópico.
      Cláudio

      1. 0

        Claudio,em outro circuito eu já fiz esse snuber que você indicou, mas ele funcionou durante um tempo. Depois não sei como o circuito mesmo com ele deixou a interferência passar e bagunçou a memoria do pic toda.
        O engraçado que aqui na sua pagina eu montei e estou utilizando o controle remoto de 2 canais com controle code learning. Nele eu usei nos reles contator para ligar uma bomba de poço e nunca ate hoje (nos 15 dias que montei ele), não deu um reset por causa da bobina do contator. Sera que o pic12f675 tem diferença na sua estrutura que explicaria isso em relação ao pic16f628a?

        1. 0

          Olá Carlúcio!
          É uma boa pergunta que eu não saberia responder. Já tive problemas com isto também e não cheguei a uma conclusão do porquê. Certa ocasião tentei fazer um contagiros para motor de carros que usava apenas um fio enrolado no cabo da bobina para obter pulsos de contagem. Mesmo colocando um foto-acoplador entre este circuito de entrada, ainda resetava. Mesmo usando pilhas para alimentar, ainda resetava. Acabei desistindo do projeto, até que encontre uma solução para isto.
          Cláudio

  8. 0

    Olá Cláudio, me tire uma dúvida por gentileza.. Estou prestes a fazer este projeto, e queria saber porquê tem os resistores de 10k em RA1 a RA7, é por causa do modo retenção? Eu queria poder ter apenas 3 canais no modo retenção, como posso fazer? Estou projetando um robô explorador.
    Obrigado, abraços !!

    1. 0

      Olá Gerson!
      Os resistores em RA1 a RA7 são ‘pullups’ para manter o nível 1 quando os interruptores não estão pressionados. O portb já tem ‘pullups’ internos ativados no programa, portanto, não necessitou a sua colocação. Para obter apenas 3 canais em retenção, escolha quais pinos você deseja e comente no programa asm , os outros pinos, nos defines do usuário.
      ex:

      Quero que o pino 6,8 e 10 sejam retenção.
      Então, comente no ASM do RECEPTOR ( CR_RX_15C_PROG_V5_ASM), como abaixo, usando ‘;’ na frente dos #defines:
      ;==========================================================
      ;ESCOLHA O MODO DE OPERAÇÃO DAS SAÍDAS DE FORMA INDIVIDUAL
      ;COMENTE PARA ‘PULSO’ E DESCOMENTE PARA ‘RETENÇÃO’

      #DEFINE CANAL1_RET ; SAIDA DO LED 7 (PINO 6 RB0) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL2_RET ; SAIDA DO LED 6 (PINO 7 RB1) EM MODO DE RETENÇÃO
      #DEFINE CANAL3_RET ; SAIDA DO LED 5 (PINO 8 RB2) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL4_RET ; SAIDA DO LED 4 (PINO 9 RB3) EM MODO DE RETENÇÃO
      #DEFINE CANAL5_RET ; SAIDA DO LED 3 (PINO 10 RB4) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL6_RET ; SAIDA DO LED 2 (PINO 11 RB5) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL7_RET ; SAIDA DO LED 1 (PINO 12 RB6) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL8_RET ; SAIDA DO LED 0 (PINO 13 RB7) EM MODO DE RETENÇÃO

      ;#DEFINE CANAL9_RET ; SAIDA DO LED 8 (PINO 17 RA0) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL10_RET ; SAIDA DO LED 9 (PINO 18 RA1) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL11_RET ; SAIDA DO LED 10 (PINO 1 RA2) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL12_RET ; SAIDA DO LED 11 (PINO 2 RA3) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL13_RET ; SAIDA DO LED 12 (PINO 3 RA4) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL14_RET ; SAIDA DO LED 13 (PINO 15 RA6) EM MODO DE RETENÇÃO
      ;#DEFINE CANAL15_RET ; SAIDA DO LED 14 (PINO 16 RA7) EM MODO DE RETENÇÃO

      Onde tiver o ‘;’ na frente, operará em modo ‘PULSO’ e os sem, em modo ‘RETENÇÃO’.
      Depois, deverá compilar novamente este arquivo usando o Mplab-Ide para obter o
      arquivo .hex a ser usado no pic.

      Cláudio

      1. 0

        Olá Cláudio, obrigado pela resposta. Fiz a emulação no Proteus e funcionou certinho. Você é o Cara !! Porém no pino 3 do receptor, liguei um resistor de 220 ao 5V ao invés de 470, e coloquei outro de 220 em série com o Led (tudo no Proteus) porque o led tava com o brilho meio fraco. E só uma mais uma coisa: Eu quero fazer dois desses, corre o risco de dar interferência caso eu use os dois juntos? Obrigado !

        1. 0

          Olá Gerson!
          Muito bom que tenha tido sucesso em seu experimento, mesmo que virtual! Para usar vários conjuntos de tx/rx próximos uns dos outros, terá que usar cada conjunto tx/rx com frequências diferentes, ou mesmo canais dentro da frequência. Por exemplo, na faixa de 27 mhz tem 40 canais, começando com 26,965mhz até 27,405mhz, que podem ser usados, trocando-se os cristais no tx/rx (rx com cristal da mesma frequência do cristal do tx formando um par).
          Cláudio

  9. 0

    Parabéns Claudio por esse projeto!bom mesmo, já montei vários projetos seu com Transmissores 433Mhz, e esse vai ser mais um, valeu mesmo,,,,

  10. 0

    Boa noite Claudio , caso eu tenha esse par de controle remoto rx e tx e um outro hobista acione o controle que ele tenha montado e estiverem na mesma frequencia ira acionar.

    1. 0

      Olá Marcos!
      Quando 2 transmissores da mesma frequência são acionados juntos, um irá interferir no outro, resultando em mau funcionamento em ambos. No caso de haver mais de um na proximidade, deverá trocar as frequências de um dos pares.
      Claudio

Os comentários estão fechados.