Encontrei um controle remoto sem uso de um antigo aparelho de som automotivo então decidi criar um receptor de infrared e usá-lo para ajustar alguns parâmetros no meu robô de labirinto (ou ao menos do projeto dele). É bem mais prático que ficar apertando botões diretamente, ainda mais no caso de robôs pequenos.
controle usado
Existem várias opções prontas no mercado, mas o divertido é partir de um projeto do zero, usando um foto diodo um filtro RC passivo e um comparador tipo schmitt trigger.
Meu primeiro desafio foi encontrar qual protocolo o controle usava, já que não tem nada escrito nele, tip uma etiqueta informando. Depois de uma boa pesquisa na internet achei a fonte ideal para estudar e entender como a coisa funciona.
Este site dá uma pequena introdução de como a coisa funciona e ainda descreve os muitos protocolos existentes e ainda muito ativos no mercado.
JVC, NEC, Nokia, IR5, IR6, etc...
Bem a grande maioria usa freqüência de portadora entre 36kHz e 40kHz. Sendo assim, parti para um pequeno ensaio para descobrir qual protocolo meu controle usa.
Usando duas pilhas AAA sem série +-3V, coloquei o foto diodo polarizado reversamente com um resistor de 220ohms em série. Liguei meu osciloscópio USB e medi a tensão sobre o diodo, eis o resultado:
O sinal mostra tudo o que queremos saber. A frequência da portadora de ~38kHz (na figura não é mostrada, fiz um zoom no préambulo para descobrir). O préambulo de ~9ms seguido de um espaço de ~4ms. Dá para ver que tem zeros e uns representados usando o protocolo da NEC. Marcas de 560us e espaços iguais para os zeros e marca de 560us seguido de um espaço longo de mais de 2ms para representar o um.
Resolvido qual protocolo o controle usa, agora é remover o sinal da portadora usando um pequeno filtro RC. Para um teste do circuito fiz uma simulação do Tina TI.
Gerei um sinal de frequência baixa 800Hz com uma portadora na frequência de 38kHz. O cáculo do filtro é simples segue uma referência para consulta:
Ajustando para componentes que já tenho em minha casa, coloquei a frequência de corte para ~1,6kHz suficiente para remover a portadora e preservar o dado que transita em uma frequência abaixo de 1kHz.
C=100nF e R=1k ohms.
O ideal nesse tipo de circuito é construir um amplificador do tipo AGC (automatic gain control) para que a distância do controle ao receptor não influencie a leitura, no meu caso como quero um projeto simples e que funcione de perto vou apenas digitalizar o sinal usando um schmitt trigger assim tenho níveis bem definidos para jogar na porta de um microcontrolador. O circuito simulado já esta com comparador e o nível ajustado para o nível médio da tensão de alimentação (feito pelo divisor na entrada negativa do AO).
Em meu circuito real vou usar um
LM311, já estava na mão e serve bem para meu propósito. Segue minha montagem:
Apenas ajustei os componentes para estudar a melhor montagem.
Soldei todos as pernas para deixar os componentes firmes, agora é desenhar como vão ser as conexões.
Como meu plano de montagem em mãos agora é só ter paciência e soldar alguns fios.
Eis a montagem final e o resultado na tela no osciloscópio
Montagem final.
Sinal condicionado e pronto para ser enviado a uma porta do microcontrolador.
Um bom projeto para final de semana, legal para relembrar a época em que tudo era feito "from scratch". Além de bem útil e muito barato.
Em breve publicarei a decodificação do sinal no microcontrolador.
Ate breve e continuem remando...