FAÇA UM RECEPTOR PARA CONTROLE REMOTO INFRAVERMELHO DE 5 CANAIS – COM PIC 12F675 (REF131)

Muitos profissionais necessitam ligar e desligar vários dispositivos elétricos na execução de seu trabalho. Que tal usar um controle remoto de tv ou mesmo similar, para controlar até 5 equipamentos diferentes? Ainda com função de retenção ou pulso individual por canal? Veja mais…

Veja o esquema abaixo:

Esta aplicação é uma variante do receptor de 4 canais para controle remoto infravermelho, sendo que foi eliminado o led ‘prog’ para se obter um ‘quinto’ canal. O interruptor momentâneo (dactilar) para entrar em modo de programação (Prog) ficou junto com a entrada do sinal do controle remoto, no pino 4 (gp3). Quando este botão é apertado por mais de 65 ms, indicará que não se trata de uma pausa na transmissão do controle remoto, mas sim, de uma sinalização para entrar em modo de programação. Afinal, no protocolo NEC empregado aqui, temos pausa máxima de 9 ms (na condição de aterramento ao gnd, ou seja , nivel ‘0’).
Na versão anterior de 4 canais, o led ‘Prog’, não mais usado, piscava de forma lenta para gravar as 4 teclas do controle e depoís, piscava rápido para indicar a programação para retenção ou pulso em cada tecla gravada. Com a alteração para 5 canais, e a inexistência do led ‘Prog’, ao entrar em modo de programação, o próprio led da saída é que passará a piscar, isto somente em modo de gravação das teclas desejadas. Para o ajuste do modo para retenção ou pulso, reapertamos as teclas gravadas, sendo que, se deixamos com o led aceso indicará modo ‘pulso’ para aquela saída e se reapertamos a tecla,apagando, passará a ser modo ‘retenção’. Poderá ser usado reles miniaturas de 12 volts na bobina, com capacidade de 10 amperes nos contatos, sendo suficiente para a maioria das aplicações. Em caso de necessidade de controlar correntes maiores, altere o tipo de rele para maior corrente nos contatos. Quanto a fonte, poderá ser interna com transformador de 12 volts,mais retificadores, capacitores de filtros e regulador 7805 para os 5 volts para o pic. Poderá ser usado também uma fonte externa de parede, com saídas continua de 12 a 13 volts. Nesta versão, estava disponivel um módulo receptor infravermelho usado em aparelhos de tv, um TSOP 1550, logicamente reaproveitado da minha ‘chatarra’ eletrónica.
Quanto ao protocolo ‘NEC’, compreende um periodo inicial de 9 ms em nivel ‘0’, seguido por 4,5 ms em nivel ‘1’, dai em diante, sendo seguido por 32 bits de informação, sendo enviados primeiro o LSB e por ultimo, o MSB. O primeiro byte dos 4 enviados, é o chamado ‘ADDRESS’, seguido pelo ‘ADDRESS INVERTIDO’, ou seja, com os bits invertidos, usado na confêrencia da integridade da transmissão. O Terceiro byte é do chamado ‘COMMAND’ e o quarto, o ‘COMMAND INVERTIDO’, também com o mesmo propósito do segundo byte.
A diferença do bit ‘0’ em relação ao ‘1’ é a seguinte:
Após manter a saída em nível ‘0’ por 560 uS, em seguida, 560 uS em nivel ‘1’ sera entendido como um único bit ‘0’ de informação. Já o bit ‘1’ de informação será uma sequência mantendo a saída em nivel ‘0’ por 560 uS e em seguida, em nivel um por 1950 uS. Após uma transmissão completa, não maís é enviado outra, mas um trem de pulsos chamado de ‘repeat’ a cada 110 ms, sendo composto dos 9 ms(‘0’) + 2,25 ms(‘1’) + 560 us(‘0’). Este ‘repeat’será enviado continuamente, até soltar a tecla apertada do controle remoto.
Os periodos de 9 ms e 4,5 ms devem ser usados para sincronizar a recepção do sinal. Foi usado um buffer de 4 bytes para receber a transmissão, sendo depois confirmado a qualidade da recepção somando os bytes inversos e obtendo 0xff, se corretos. (Obs. Caso esteja tentando usar um controle remoto com padrão ‘NEC’ extendido, não irá funcionar. Neste modelo, para que possa funcionar, NÃO DEVERÁ ser comparado o ADDRESS com ADDRESS INVERTIDO, pois estes não serão complementares, mas uma extensão do endereço. Se for o seu caso, altere a linha de código:
if (!(buffer[0]+buffer[1]+buffer[2]+buffer[3]+0x2)){ flag_rok=1;} por if(!(buffer[2]+buffer[3]+1)){ flag_rok=1;}. )
Os 10 primeiros bytes da EEprom são usados para gravar os ADDRESS+COMMAND para cada tecla (5×2=10). Os próximos 5 bytes da EEprom guardam o modo de operação para cada canal, sendo 0x00 para retenção e 0xff ou 0x01 para pulso.
Caso necessite de usar controle remoto de protocolo Sony de 12 bits ao invés de NEC, poderá ver a pasta zipada citada abaixo.
Atenção: Este dispositivo foi montado e testado apenas em placa de protoboard, sujeito a bugs ainda não observados,sendo fornecido os arquivos que poderão ser alterados segundo a necessidade do hobista.

Segue pasta zipada com os arquivos hex e “C”:

INFRA_NEC_5C_C

Segue arquivo hex (zipado) para recepção da versão estendida:

infra_nec_5c_estendido_c

Segue pasta zipada com opção de protocolo ‘Sony 12 bits’, testado com controle universal _RCA_ _SYSTEMLINK4_ programado com código ‘002’:

infra_sony12b_5c

Manuais:
PIC12F675
Protocolos para controle remoto

Curiosidades:
A verdadeira história da criação
Por que choramos?
A lanterna do vaga-lume
Como aproveitar bem seu tempo
A enigmática cola da aranha
Admire o projeto; conheça o Projetista
O segredo da borboleta bela-dama
A capacidade de armazenamento do DNA
O resistente cérebro do esquilo-do-ártico
Os cosméticos nos tempos bíblicos
“A História não mente”
Sua vida é influenciada pelos astros?

Orientações que promovem a felicidade de casais:
Como controlar as birras
Quando seu casamento não é o que você esperava
A violência doméstica tem solução!
Como tratar o conjuge com respeito
Aprenda a perdoar
Sobreviver ao primeiro ano de casamento
Quando um dos cônjuges tem necessidades especiais
Como evitar ferir com palavras?
Como resolver problemas no casamento
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos

Orientações para adolescentes:
O que fazer se estão falando mal de mim?
Por que eu me corto?
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Adolescentes- O que fazer se estou sofrendo bullying?
Como posso dar conta de tanta lição de casa?
Por que devo ajudar os outros?
Videos Bíblicos

Até o próximo artigo!!!

61 comments on “FAÇA UM RECEPTOR PARA CONTROLE REMOTO INFRAVERMELHO DE 5 CANAIS – COM PIC 12F675 (REF131)

  1. Olá Claudio montei este receptor e usei o fonte para TX Sony e o mesmo funcionou muito bem só uma obs o controle remoto que usei é o do som do meu carro o modelo do tx é RM-X211 agora vou usar para acender e apagar a luz de cortesia rsrsrssr que de tanto ligar e desligar o botão original dela ja esta meio que falhando.

    Obrigado Edmilson

  2. Caro Cláudio, Parabéns! seu projeto é muito legal e tem me ajudado bastante, contudo, estou precisando da sua ajuda para compreende-lo melhor, estou precisando ler o código do controle e imprimir esse código na porta RS232, gostaria de saber onde e como o código é armazenado?
    Obrigado!

    1. Olá José! Obrigado por suas expressões de apreço pelo trabalho deste blog! Quando ocorre uma recepção de um controle, ele é recebido no buffer[0] e buffer[2], sendo que buffer[1] e [3] tem a cópia invertida para conferencia (exceto versão ‘estendida’). Poderá pegar seu conteúdo e direcionar para uma rotina de serial por software, a qual enviará por meio de um dos pinos para um ci 232 e deste para um PC pela porta serial DB9. Como todos os pinos já foram utilizados, terá que usar um pic com mais pinos, ou mesmo, eliminar a rotina de saída para um dos canais, usando este para a serial. Os controles que são gravados ficam armazenados na EEprom interna , e quando ocorre uma recepção, ela é comparada com os controles gravados na EEprom, e se for igual, aciona a saída correspondente . Para entender o protocolo NEC , poderá fazer algumas pesquisas na internet e estudar como o programa fez a captação deste sinal.
      Cláudio

      1. Cláudio, muito obrigado pela a atenção em esclarecer minha dúvida!
        Ainda não consegui pegar o dado correto, apenas 00, acho que estou imprimindo o valor antes da variável receber um valor e depois de ser resetada. Você sabe dizer em que parte do programa eu posso pegar o valor após o recebimento do sinal? A “flag_rok” é a flag responsável pela leitura do sinal?
        Mais uma vez, muito obrigado!

        1. Olá José! Quando o flag_rok for = 1 então teremos uma recepção. Poderá tentar tirar na parte da rotina que faz a comparação com a eeprom. Logo após a porção de código:

          //=============================================================================
          // ACIONAR SAÍDAS CONFORME PROGRAMAÇÃO
          //==============================================================================

          if((!flag_prog)&&(flag_rok)){

          //coloque aqui a rotina para pegar o valor do buffer e enviar pela serial

          if(mem(0)){

          Cláudio

          1. Cláudio, mais uma vez muito obrigado pela sua ajuda, consegui resolver o problema, havia testado coletar o código exatamente nesse ponto e não tive sucesso, acabei descobrindo que o fototransistor estava com problema 😡 !
            Mais uma vez, obrigado!
            jose emilio

  3. Amigo seria possivel usando o site que vc postou dos protocolos SB eu acho mudar o protocolo NEC para RC5 fiquei nesta duvida , seria até bom se for possivel pois assim a pessoa pode escolher o protocolo que vai trabalhar e compliar o micro ja com o devido protocolo , assim como vc fez no RF colocou vairas opções tipo ht6p20B , o hopcode e outros seria possivel nessa mudar o protocolo ?
    Desde ja agradeço

    1. Olá Liliano!
      Como disse anteriormente, existem muitos protocolos. Para piorar a situação, são de formatos e tamanhos totalmente diferentes entre si. Fazer uma biblioteca com todos estes protocolos está fora de cogitação para mim, pois exigiria muito tempo. Quanto ao RC5 , não tenho nada pronto que pudesse ser útil. Quem sabe, em um futuro artigo, tendo tempo, possa analisar este protocolo.
      Cláudio

      1. Amigo te intendo so te pergunto como eu faço pois andei mechendo em uns projetos seus e são bem claros e detalhados por isso acredito que posso fazer mais não tenho muito experiencia , então eu na minha inesperiencia achei que fosse apenas mudar os bits de forma que identifique o protocolo memso assim tenho estudado esse codigo então conto com sua ajuda se possivel me indicar como eu faço , onde tenho que alterar

        1. Olá Liliano!
          Em relação aos protocolos já postados, como o Nec e o Sony, não saberia ainda dizer o que tem que mudar. Precisaria estudar o protocolo e ver qual a melhor maneira de decodifica-lo.
          Talvez envolva reescrever inteiramente as linhas de código.
          Claudio

          1. Ta certo amigo eu te agradeço muito , vou dar umas mexidas e qualqeur acerto te comunico , tem um projeto que encontei na internet um clap swicth mas foi programado para 12f683 então resolvi mudar sera que posso postar ele aqui pois é uma versão modificada do projeto , eu fiz a modificação mas não o projeto em si

    2. Amigo segue umas fotos da placa que eu fiz se quiser postar no blog , utilizei a ideia do seu projeto e fiz so umas mudanças em relação ao esquema e acrescentei uma fonte chaveda direto na mesma placa se quiser eu te envio o layout ok

      https://www.dropbox.com/s/3vmencv4wxbhzlp/20qmbye.jpg?dl=0

      https://www.dropbox.com/s/rcdlprc7pz5wjjv/23lgrxz.jpg?dl=0

      não sei como postar imagem por aqui dai segue o link

      [img]http://i62.tinypic.com/2uikd1t.jpg[/img]

      [img]http://i57.tinypic.com/27xo2so.jpg[/img]

      [img]http://i60.tinypic.com/23lgrxz.jpg[/img]

      [img]http://i62.tinypic.com/20qmbye.jpg[/img]

      [img]http://i59.tinypic.com/2iitnyw.jpg[/img]

  4. Peço mais uma vez sua ajuda neste projeto amigo a um tempo atras coloquei a duvida sobre controlar um motor com IR sendo que usaria sensor fim de curso dai vc me veio com a ideia de usar em modo pulso bem funcional so tem um porem a chance do usuario se irritar com o manter do botão pressioando , dai te pergunto não ha possibilidade de mudar este sistema e deixa-lo para modo retenção 2 canais e 2 canais para o fim de curso assim com um simples pressionar giraria em um sentido e ao chegar no fim ele desligaria ao apertar o outro botão ele inverteria todo o sistema . ate pensei na possibilidade do RESET mas neste projeto ele ja utilizado pois se pudesse colocar um fim de curso e resetar o micro ele desligaria a saida assim ficaria funcional tb tipo um sistema IR de 2 canais com o reset opcional ja resolveria todo o caso obrigado amigo

    1. Olá Liliano!
      Sua necessidade então seria 2 canais em modo de retenção, com o reset funcionando para ligar o fim de curso, certo? Note que o ‘reset’ teria que ser momentâneo, talvez com o uso de um capacitor em série, ou outro sistema (monoestável). Com 2 canais para receber os fins de curso não haveria esta necessidade, e reduziria as peças, mas aumentaria o número de fios.
      Cláudio

      1. amigo preciso que acione o motor e quando chegar nas extremidades o motor se desligue , tipo um fim de curso para cada lado eu pensei no reset por ser bem pratico e permitindo usar as 4 portas com opção de 2 motores ou ate mesmo usar o pino analogico do 12f675 e usar variação de resistencia acho que daria certo tb so não sei na parte de programar , a principio preciso de 2 saidas em retenção com 2 fim de curso sendo que ao chegar em um deles desliga o motor e fica parado

      2. Seria muito dificil separar o reset ou ate mesmo direcionar 2 portas para o fim decurso ou indo mais alem da imaginação na mesma porta de entrada do receptor IR colocar os fins de curso ?

        1. Olá Liliano! Sobre usar o reset, se você tem 1 motor já operando para abrir uma persiana, por ex., e então você acionar o outro botão para fechar uma segunda persiana ( o outro motor), quando o primeiro abrir completamente irá resetar e parar o movimento do segundo motor que estava fechando, deixando o comando incompleto.
          Usar entrada de sinal do infrared é inviável, pois os fins de curso seriam ligados ao gnd assim que chegasse ao seu limite máximo, curto circuitando o sinal.
          Talvez se possa pensar é usar as saídas para os motores (‘frente/tras’) também como entradas para os fins de curso (aciona ‘frente’ como saída e ‘tras’ como entrada do fim de curso, idem quando aciona ‘tras’ , usando ‘frente’ como entrada).
          Cláudio

          1. Olá Liliano! Na realidade, não é ‘um motor desligando outro’ mas o lado passivo (ex. ‘frente pino 3’ – em nivel ‘0’ – ligado ao acionamento do rele para movimento a frente) desligando o lado ativo(ex. ‘tras pino 2’ – nivel ‘1’ – já acionando o rele para tras) de um mesmo motor. Quando tiver um tempo para montar em protoboard, irei fazer uns testes e postarei no futuro.
            Cláudio

          2. Mas amigo tem como me dizer como fazer pois preciso mudar isso , pensei em mesclar o codigo do sistema que vc fez do controle de portão mas em RF so precisava que vc em IR dai pensei em pegar a parte da saida e analisar .

          3. Olá Liliano! Não sei ainda como faremos esta mudança. Temos que analisar melhor para ver qual processo pode ser utilizado para fazer isto. Mas fique a vontade para fazer suas tentativas! Irá ajuda-lo a se desenvolver na ‘arte de programação’!
            Cláudio

          4. Olá Liliano!
            Certamente. Apenas a maneira de aprendizado deverá ser diferente. Você falou de 2 botões com retenção. Apertando uma vez, abre e outra vez fecha (se estiver abrindo/fechando , irá parar)? Ou seria um botão para fechar e outro para abrir?
            Cláudio

          5. Amigo então justamente seria assim um botão para abrir e outro para fechar mas se ficar mais facil apenas um botão para fazer todo o trabalho mas teria a necessidade de pressionar ele mais vezes , tipo abrir , para fechar , de preferencia 2 botões ja daria muito certo agora gostei da ideia de usar a mesma saida como entrada do sensor assim poderia ser feito o controle de 2 motores idependentes . so não quero te dar trabalho amigo se puder fazer desta maneira de 2 botões ta de otima ajuda

  5. Hi

    Thank you for project remote control learning control by remote format NEC I’m interested in circuit if you can made project vontrol by sony remote 8 ch. use pic16f628a I really like diy

    thank you so much

Comments are closed.

Back To Top