FAÇA UM RECEPTOR DE 4 CANAIS POR CONTROLE REMOTO INFRAVERMELHO – C/ PIC 12F675 – PROTOCOLO NEC (REF103)

Gostaria de controlar equipamentos a distâncias pequenas, usando um controle remoto infravermelho, destes de TV? Com capacidade de acionar até 4 aparelhos diferentes? então, veja este artigo…

Existem muitos circuitos interessantes na Internet, usando controles remotos. Um deles, oferece o recurso de controlar até 3 canais com um pic pequeno. Pensei também em montar algo desta natureza, mas usando uma maior capacidade que um pequeno pic 12f675 pode oferecer: 4 canais!

Veja o esquema abaixo:

Muitos hoje tem em suas salas, controles remotos para satélite, de protocolo geralmente ‘NEC’. Poderá usa-lo para controlar cargas no ambiente, como ventiladores, abajures, luminarias ou qualquer outro equipamento que deseje controlar.
Foi feito de maneira que possamos aprender até 4 teclas do controle remoto, de preferência, teclas não usadas, para que não ocorra o acionamento de mais de um equipamento.
Também, é igualmente possível escolher por programação, se o rele do canal escolhido atuará de forma ‘pulso’ ou ‘retenção’.

Vamos ver, então, como se procede a programação:

1) Aperte o botão ‘Prog’ por 2 segundos. Começará a piscar o led ‘Prog’ de forma normal. O led do canal 1 se acende.
2) Aperte uma tecla do controle, da sua escolha, que deseje gravar na Eeprom, para comandar o canal 1. Ao ser aceito, apagará o led do canal 1 e acenderá o led do canal 2.
3) Aperte um outra tecla do controle, para comandar o canal 2.
Ao ser aceito, apagará o led do canal 2 e acenderá o led do canal 3.
4) Novamente, aperte uma outra tecla do controle, para comandar o canal 3. Ao ser aceito, apagará o led do canal 3 e acenderá o led do canal 4.
5) E finalmente, aperte uma última tecla do controle, para comandar o canal 4. Ao ser aceito, apagará o led do canal 4 e o led ‘Prog’ começará a piscar de forma mais rápida. Isto indica que entrou na programação do ‘modo de operação’.

Siga os seguintes passos para escolher entre atuação por ‘Pulso’ ou ‘Retenção’:
1) Aperte uma das teclas do controle que foi gravada. A cada aperto, o led do canal correspondente acenderá ou apagará. Deixando aceso será modo ‘pulso’ e deixando apagado será modo ‘retenção’ para este canal.
2) Repita com as outras 3 teclas que foram gravadas.
3) Feito a gravação, aperte momentaneamente o botão ‘Prog’ para sair do modo de programação.
Caso programe uma tecla que não desejava, aperte qualquer tecla varias vezes, até começar a piscar rápido o led ‘Prog’.
Então, aperte brevemente o botão ‘Prog’ para sair de programação. Refaça os passos com as teclas corretas.
Atenção: Aprenda teclas diferentes. Se for aprendido 2 ou mais teclas iguais, somente a primeira que for aprendida é que funcionará.

Usando o receptor de 4 canais:
Ao apertar no controle remoto uma tecla previamente gravada, ela acionará uma das saídas, em modo pulso ou retenção, dependendo de como foi programado. Os reles devem ter condições de suportar as cargas de correntes em seus contatos. Poderá controlar 4 cargas diferentes, como ventiladores, abajures, luminárias em geral, bem como outros aparelhos eletrodomésticos.
Nada impede de controlar cargas DC também, visto que os contatos dos reles, nos canais, são isolados entre si.
Use controle remoto com protocolo ‘NEC’ apenas. Outros protocolos não irão funcionar.

Para a recepção do protocolo ‘NEC’ foi usado o timer 1 para medir os tempos e determinar se o bit recebido é 1 ou 0. Este protocolo tem como característica um cabeçalho de 9 milisegundos, seguido por um período de 4,5 milisegundos de pausa, antes do envio do primeiro bit. Temos 8 bits de endereços , seguidos de 8 bits de endereço invertidos, mais 8 bits de comandos e 8 bit de comandos invertidos. É a distancia entre pulsos que determina um ‘0’ ou ‘1’. Se a tecla for mantida apertada, será enviada a primeira transmissão completa, seguida de transmissões com apenas o cabeçalho e um bit ‘1’, repetindo a cada 110 milisegundos.
Já o timer 0, foi usado em modo de interrupção, para testar o botão ‘Prog’ a cada 65 mseg, acionar o led ‘Prog’ em piscadas, normais e rápidas, e atuar contadores de tempo.
A rotina foi mantida bem simples, com muitas repetições, mas facilmente compreensíveis. Apesar disto, ainda sobram muitas linhas de flash.
Com respeito alimentação de tensão para o circuito, providencie uma fonte com transformador de 12 volts, bem como diodos retificadores, capacitores de filtro e regulador 7805 para os 5 volts do PIC.

Obs. Este dispositivo é apenas didático, sendo montado apenas em protoboard e sendo sujeito a bugs não identificados. O hex gerado poderá ser usado para gravar também no Pic 12f629.

Segue o arquivo ASM (atualizado em 12/08/13):

rx_4c_infra_nec_v1_asm

Segue o arquivo HEX:

rx_4c_infra_nec_v1_hex

Veja também, esta versão que utiliza triacs na saída, mas com o mesmo Hex -> Esquema com triacs

Agora está também disponível em arquivo “C” para os que não são muito fãs do Assembly. Segue pasta zipada com os arquivos em “C”:

INFRA_NEC_4C_C

Segue o desenho da placa de circuito impresso, uma gentileza realizada pelo colaborador ‘FOXCONN’, a quem agradecemos:

CONTROLE 675 IR NEC disponivel

Segue abaixo, o esquema para acionamento de 2 motores de 12 volts (note que a tensão poderá ser alterada visto que estamos usando reles), com o objetivo didático de acionar uma persiana de janela. Após a carga do Hex no chip, deverá ser gravado 4 teclas de um controle remoto (padrão NEC), todas em modo ‘pulso’. Usa-se reed switch ou microchaves para fins de curso (proteção), os quais, ao acionar, cortam a polarização do transistor que aciona o respectivo rele:

CR_PERSIANA_ELET

Manuais:

Pic 12f675
Protocolo NEC

Curiosidades:
Petróleo — métodos de extração
Controle remoto e o gás de efeito estufa
Cirurgia robótica
Imitação das asas da gaivota
O passado e o presente dos brinquedos
Tortura à venda
“Ouro vermelho” do Mediterrâneo
Assista videos educativos

Outros assuntos:
Como criar filhos bondosos num mundo egoísta?
Como acabar com a tática do silêncio
Os milagres são possíveis – 3 objeções
Como enfrentar o bullying sem ter de partir para a briga (animação)
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!!!

83 comments on “FAÇA UM RECEPTOR DE 4 CANAIS POR CONTROLE REMOTO INFRAVERMELHO – C/ PIC 12F675 – PROTOCOLO NEC (REF103)

  1. Olá Cláudio, mais uma vez!
    Gostaria de usar esse circuito com um protocolo desenvolvido pela Toshiba que é bem parecido com o Nec, porem tem os tempos inicias diferentes. Não entendo se posso alterar somente isso, ou se tem que refazer tudo.
    Não tem como usar Nec ou Sony, pois os outros botões do controle acionam um receptor feito com um Micro desenvolvido pela Toshiba.

    Esse é o protocolo usado:
    http://www.celadon.com/SC-33B-programmable-remote-control/SC-33B-TOSHIBA-IR-Protocol.pdf

    1. Olá Renato!
      Olhando por cima, parece bem parecido. Mas não é somente o tempo inicial do cabeçalho que difere, mas também a parte do código do sistema que transmite 2 vezes iguais, sendo no NEC que a segunda é invertida, e o bit de terminação que não tem no NEC. Eu tenho recebido pedidos para alterar o código para N padrões diferentes, pois sempre alguém quer aproveitar um determinado controle remoto da tv ou do som para ligar algo mais. Infelizmente, não disponho de bibliotecas que possam de alguma forma ser conjugada com algum código padrão para receptor de controle, como ocorre com algumas plataformas populares como o ARDUINO, etc. Refazer o código toma muito tempo e em especial com testes na placa experimental. Não disponho de tal tempo. Mas poderá tentar criar a partir da rotina do NEC o seu próprio código para Toshiba.
      Boa diversão para você!
      Cláudio

        1. Consegui fazer, foi bem simples.
          aterei o tempo do cabeçalho de 7000 para 3800, visto que para o Nec era 9ms + 4,5ms. A toshiba usa 4,5 + 4,5ms

          No código C a linha que era assim:
          int16 const LIMITE_BYTE_LOW=1200, PULSO_9MS=7000,PULSO_4MS=3800;

          Ficou assim:
          int16 const LIMITE_BYTE_LOW=1200, PULSO_9MS=3800,PULSO_4MS=3800;

          Para inverter o pulso do endereço foi só retirar o “!” da seguinte linha, a adicionei o código “buffer4” para gravar o bit “end”, usado no seguinte protocolo:
          if (!(buffer[0]+buffer[1]+buffer[2]+buffer[3]+0x2)){ flag_rok=1;}

          Ficou assim:
          if ((buffer[0]+buffer[1]+buffer[2]+buffer[3]+buffer[4]+0x2)){ flag_rok=1;}

          Feito isso funcionou corretamente os modos pulso e retenção.

          1. Olá Renato! Parabéns pelo sucesso e por compartilhar o resultado com o blog. A persistência sempre conduz a bons resultados!
            Cláudio

        1. Olá Marcos!
          Você diz trocar o led ultravioleta do controle remoto ( e continuar usando o controle remoto) e ligar um tx 433mhz e trocar o receptor infrared e colocar um rx433mhz? Se for isto, eu nunca tentei, mas pode funcionar visto que os tempos estão dentro do que pode ser transmitido.
          Cláudio

Comments are closed.

Back To Top