Skip to content

MatheusCipolotti/-PIC-Decodificador_NEC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

[PIC] Decodificador NEC

Objetivo

Grande parte dos equipamentos eletrônicos residenciais, utilizam transmissão e recepção de dados infravermelho, nesse repositório, demonstro a construção de um receptor que decodifica e interpreta esses dados utilizando o microcontrolador PIC16F877A.

Protocolo NEC

O protocolo NEC, define um formato padrão para a comunicação entre um transmissor (como um controle remoto) e um receptor (como um dispositivo eletrônico que está sendo controlado, por exemplo, uma TV), quando você pressiona um botão em um controle remoto, ele emite pulsos de luz infravermelha. Cada botão pressionado gera uma sequência específica de pulsos, os pulsos infravermelhos são codificados de acordo com o protocolo NEC. Este protocolo organiza os pulsos em grupos de dados que representam informações como o comando pressionado, o dispositivo alvo e verificações de erro para garantir a precisão da comunicação. O protocolo NEC também inclui sinais de sincronização para garantir que o transmissor e o receptor estejam em sintonia. Além disso, ele permite a repetição de sinais para garantir que o comando seja recebido mesmo em condições adversas, como obstruções entre o controle remoto e o dispositivo, o dispositivo receptor, como a TV, possui um receptor infravermelho que decodifica os pulsos de acordo com o protocolo NEC. Ele então executa a ação correspondente ao comando recebido, como alterar o volume, mudar de canal ou ligar/desligar.

TSOP1838

Este componente se trata de um circuito foto-receptor da série TSOP18XX, capaz de detectar sinais modulados em 38KHz, muito utilizado nos receptores de televisão, DVDs e outros dispositivos residenciais.

Figura 1 - Foto-receptor TSOP1838

Verificando o Datasheet, temos acesso ao pinout e o circuito recomendado:

Figura 2 - Circuito recomendado

Figura 3 - Pinout

O resistor de 100R e o capacitor de 4,7uF são recomendados como um filtro contra espúrios indesejados.

Aquisição do sinal

Utilizando o foto-receptor em uma protoboard, foi possível aquisitar com o circuito recomendado e um osciloscópio o sinal LIGA/DESLIGA de um controle remoto convencional.

Figura 4 - Sinal completo

Figura 5 - Largura do pulso inicial

Figura 6 - Largura do pulso valor

Figura 7 - Largura do pulso valor 1

Com os valores coletados é possível estabelecer a rotina do código para a decodificação desse sinal.

Microcontrolador

Para essa experiência, foi utilizado o microcontrolador 16F877A, o mesmo utilizará um cristal externo de 20MHz e o código foi desenvolvido no MPLABX utilizando o compilador XC8 V2.46. A estratégia utilizada para a captação eficiente desse sinal, foi o uso da interrupção externa do INT0 localizado no pino RB0, isso garante que a captação desse sinal seja tratada com alta prioridade pelo microcontrolador, evitando erros de pulling com o aumento do código. O sinal decodificado é enviado via serial (UART), o sinal é convertido para USB pelo CI CH340C e recebido por qualquer computador que possua algum monitor serial instalado (por exemplo o PUTTY).

Circuito

Resultado

Abaixo é possível ver alguns códigos interpretados no PUTTY, os 3 primeiros se tratam do código LIGA/DESLIGA, os 3 últimos são o botão OK do controle remoto:

Figura 8 - códigos recebidos pela serial

Conclusão

Com essa implementação, o sinal de controles remotos de padrão NEC foi decodificado, consequentemente, com alterações nesse código, é possível obter os valores e acionar os pinos do microcontrolador, o que por sua vez pode acionar Relés, enviar mensagens específicas para um barramento SPI ou o que for necessário para aplicações que necessitem do uso de controles remotos, vale destacar que o exemplo demonstrado não está interpretando o sinal REPEAT.

About

Código para um decodificador NEC utilizando o PIC16F877A

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published