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. Ola Sr. Claudio, novo por aqui. Por Favor sou novato em Hex e Asm. Como faço para usar seu arquivo .Hex direto no gravador de PIC ?
    Obs: Muito bom seu site , instrutivo e construtivo.
    Grato

    1. Olá Elimu! Obrigado por seu comentário apreciativo. Ao baixar o arquivo do site, salve-o com terminação ‘.hex’ (somente se estiver com terminação’_asm.txt’) para ser aceito pelos gravadores de pic. Quando for fazer alguma alteração no arquivo ‘asm’, baixe o arquivo de extensão ‘_asm.txt’ e salve com extensão ‘.asm’ e abra ele no MPLab_ide (veja no artigo ‘como compilar…‘). Depóis de agrega-lo a um projeto (add file), poderá recompila-lo. Caso deseje, poderá fazer seu próprio ‘hardware’ programador’ conforme instruções do artigo ‘FAÇA UM SIMPLES PROGRAMADOR DE PIC (MICROCHIP) ‘.
      Cláudio

  2. Parabéns pelo projeto. Aliás, seus prjetos são os melhores em assembly que já vi. Montei este e funcionou perfeitamente. Sou iniciante em assembly e por isso estou tendo dificuldade em entender o programa. Você poderia se informar o que significa algumas de suas variáveis e label tais como: RES1, R0,QB,SEGKW1,SEGK92… E como você calculou os valores dos equates?

    1. Olá Raquel! Obrigado por seu comentário. Suas expressões de apreço são muito motivadoras. Realmente, não costumo perder muito tempo especificando as variavéis, e isto pode ser um problema para quem é iniciante. Vamos lá: As variavéis RES3 a RES0, são buffers de recepção dos bits transmitidos , usados para deslocar bit a bit, a medida que chegam. O registrador FLAGS usa seus bits como flags (como um semáforo) para os varios controles de trafego das rotinas. Os registradores AUX,AUX1,AUX2,TEMP são de uso geral, temporários. Os registradores R0,R1,R2,LcdDelayCounter,LcdDelayCounter1 são usados em rotinas de tempo (delays).
      Já STATUSTEMP,WTEMP são especificos para salvar ‘status’ e ‘w’ nas interrupções.
      O registrador ADDRESS,TMP são usados nas rotinas envolvendo leitura e escrita na Eeprom. O registrador QB é usado na recepção de bit transmitidos com a quantidade de bits a receber, decrementando a cada bit que chega até zerar e finalizar a recepção. Os registradores CONT_INT,CONT_INT1 são contadores de tempo que usa a propria interrupção para cadenciar os incrementos de tempo e é usado para determinar as piscadas dos leds em modo de programação e T1_INT ajuda para obter tempos maiores de 2 segundos . O registrador PASSO guarda a informação de qual saída está sendo programada . O registrador ADDR_SALVO é um auxiliar para busca de de controles na Eeprom. Com respeito aos Label como SEGKW1…PROXT3 não tem um significado especifico, mas são apenas endereços que o programa é desviado por instruções ‘goto’ ou ‘call’. Quanto aos ‘Equates’, a maioria são estebelecidos na prática. Por ex. coloco um valor entre 1 e 255. Rodo apenas o pedaço da rotina do equate. Meço os tempos desejados com o ‘Stop Watch’ do Debugador do MPLAB-IDE. Se falta tempo, aumento o valor e repito o processo, até obter o que desejo. Alguns valores podem ser obtidos por se saber o tempo de cada instrução e multiplicar pelo numero de operações e vice-versa. Não tem uma regra ‘mágica’. Cada caso é um caso. Sei que esta explicação não vai ajudar muito. Mas você poderia rodar o programa no MPLAB e acompanhar as variáveis e o caminho da rotina. Com o “Stimulus” você pode alterar o estado dos pinos . Estude como é o protocolo NEC. Pense no que precisa para capturar os dados enviados. Veja como o programa faz isto. Dá para passar um tempo interessante (se você REALMENTE gosta, senão você DETESTARÁ)!
      Cláudio

  3. Ola Amigo, você tem algum controle que faça a mesma coisa mas executa o infravermelho tambem? copiar um controle de infravermelho.

    1. Olá Fkkelso! Não entendi bem a sua pergunta. O que você quer dizer com ‘ faça a mesma coisa mas executa o infravermelho’?
      Cláudio

    2. Desculpa mas não expliquei direito :lol:, estou precisando um clone de controle, copia o controle e depois o proprio clone fica sendo o controle original.

          1. Olá Fkkelso!
            Não sou programador profissional. Somente como ‘hobby’, quando disponho de algum tempo, e ainda … naquilo que consigo fazer ( sou muito limitado). Se alguém trabalha com programação e se interessar em pegar seu serviço, poderá se manifestar…
            Cláudio

  4. obrigado lario montei este artigo e a precisao e nota 10 testei com varios controles e todos deu ok,obs nao tem com mudar de pic para almentar as saidas?diz que no passado muitos foram ajudados por poucos,e temos notado a sua atençao,em contribuir com estes artigos,obrigado.

  5. boa tarde lario:tem como identificar quais sao os controles remoto padrao nec? ou o mais comercial de tv. agradeço pela ajuda.

    1. Olá Luiz!
      Existe muitos padrões diferentes no comércio. Eu sei que o controle remoto do receptor de satelite Elsys trabalha neste protocolo. Alguns controles antigos para video-cassete da marca Semp também operavam neste protocolo. Consulte os fabricantes de controle remoto para obter informação.
      Claudio

    2. se o Claudio me permite a resposta .
      ja usei muitos controles phipils e CCE , sharp alguns e lg , century tb funciona que usa o mesmo ci da elsys , o vision tambem e de alguns dvds , agora o unico que não funciona é o da SONY este nenhum funcionou .

Comments are closed.

Back To Top