HOME PROJETOS PROGRAMAÇÃO |
Todos nós temos em casa aparelhos de TV, DVD, ar condicionado, ventiladores, som e outros que, em sua maioria são dispositivos operados por controle remoto infravermelho. Os controles remotos desses dispositivos podem variar de aparência e possuirem funções diferentes, sendo que muitos deles possuem teclado númerico, como os de TV, para permitir a digitação dos números dos canais.
Uma vez criei um projeto de relógio digital onde o acerto das horas era feito através de alguns botões conectados as portas do microcontrolador. O tempo passou e, um dia, enquanto manuseava um controle remoto de TV com teclado numérico, tive a idéia de usá-lo como teclado para entrada de dados no projeto do relógio.
Antes de continuar, vamos dar uma olhada no funcionamento de um controle remoto infravermelho.
Dois circuitos são necessários para atingir o objetivo de um controle remoto: um para emitir os pulsos codificados de luz infravermelha e outro para detetar e decodificar esses pulsos a fim de entragá-los a quem possa interessar.
Os circuitos emissores, que se encontram alojados nos aparelhos que manuseamos diariamente, codificam os pulsos dentro de uma frequência portadora que fica entre 36KHZ e 38KHZ. Isso é necessário para evitar interferências de outras fontes luminosas que se encontram no ambiente, como lâmpadas incandescentes, lâmpadas florescentes, raios solares e outras fontes que possam emitir raios infravermelhos. Os sinais, emitidos pelo controle remoto, chegam ao circuito detetor cuja função é eliminar a onda portadora de alta frequência, amplificar o sinal e deixar passar somente os sinais digitais que contêm as informações. Na figura 1 temos o formato do pacote emitido pelo controle remoto.
O HEADER é um nível alto de 9,4ms (milisegundos) que indica o início da transmissão dos pulsos.
BREAK é um nível baixo de 2,0ms que indica que o que vem a seguir são bits de dados.
MARK é um nível alto de 0,8ms que indica que o próximo nível baixo é um bit de de dado.
DATA é o bit de dado propriamente dito, representado sempre por um nível baixo. A diferença entre um bit de valor 0 (zero) e um bit de valor 1, é a duração do tempo que o sinal permanece baixo. Se o sinal permanecer baixo durante 0,8ms, o valor do bit será 0 (zero) e, se o sinal permanecer baixo durante 1,6ms, o valor do bit será 1.
Apos enviar 32 bits de DADOS, será enviado um STOP, nível baixo de duração muito grande (maior do que 10ms), significando fim da transmissão.
Se a tecla do controle permanecer pressionada, o processo se repetirá desde o envio do HEADER.
O esquema elétrico do circuito detetor pode ser visto na figura 2. O elemento sensor desse detetor é um fototransistor TIL78 e, para amplificação, são usados dois estágios de um integrado LM324 que possui 4 amplificadores operacionais.
Esse circuito deteta os sinais infravermelhos do controle remoto da TV, filtra a portadora de 36KHz e entrega, na saída, um pacote de sinais digitais que serão injetados numa porta do microcontrolador.
Esse circuito não tem grande amplificação e serve somente como dispositivo de entrada de dados num projeto, substituindo um teclado local, assim, o controle remoto deverá ser usado em distâncias curtas como a uns 20cm desse detetor. Sua vantagem é a de usar apenas uma porta do microcontrolador para simular um teclado numérico de modo serial.
Convem observar que alguns controles remotos, pricipalmente os que possuem funções múltiplas como os de TV a cabo, podem não funcionar porque possuem codificação diferente da prevista para os controles remotos deste projeto, como é o caso do controle da TV a Cabo da Sky que usa codificação de 48 bits ao invés de 32 bits.
Alguns desses controles possuem uma chave para mudar de TVC (cabo) para TV. Tente posicionar a chave em TV para ver se funciona. Se não funcionar, tente usar um controle remoto específico para TV.
Além do circuito detetor mostrado no esquema acima, pode-se usar um receptor de infra vermelho HX1838, mostrado na foto à esquerda, ou qualquer outro equivalente, que já pussuem internamente todos os circuitos necessários para a amplificação do sinal, tornando o projeto mais fácil de realizar.
O processamento lógico do sinal será feito por uma rotina escrita em linguagem assembler, que extrai os valores enviados no pacote e os armazena num buffer na RAM do microcontrolador, de onde podem ser usados para qualquer finalidade.
Antes de continuar, faça o download do arquivo Controle_Remoto.zip que contem o projeto completo desenvolvido no MPLAB.
A chave do projeto é a subrotina rmtctgenerico_services.inc que faz a decodificação dos pulsos transformando-os em dados para serem usados pelo programa. Para poder usar essa subrotina, deve-se, primeiramente, definir no programa os símbols e registradores abaixo:
rmtgcount res 1 ; contador de 1/2 periodos #define rmtgtris TRISB ; I/O #define rmtgport PORTB ; PORTA rmtgbit equ 0 ; BIT rmtgbuf res .4 ; buffer de leitura
Para ler o controle remoto fazemos a chamada da subrotina:
call rmct_generico ; leitura do controle remoto
Após a chamada devemos verificar se a leitura foi correta confrontando o valor retornado na localização rmtgbuf+0, que contem o valor da tecla complementado, com o valor da localização rmtgbuf+1 que contem o valor real da tecla. Para fazer isso usamos as instruções abaixo:
comf rmtgbuf+0, w ; descomplementa o valor complementado subwf rmtgbuf+1, w ; compara com o valor real da tecla btfss STATUS, Z ; os valores sao semelhantes??? goto erro ; NAO --> erro
O hardware necessário para o programa pode ser visto na figura 3.
Figura 3 - Hardware para o programa de teste |
|
O arquivo ctrmt.hex pode ser gravado diretamente num microcontrolador e testado para verificar o funcionamento.
O projeto foi realizado num microcontrolador porque ele já estava sobre a bancada mas pode-se usar outro qualquer, inclusive da família 16F, embora o programa não tenha sido testado em microcontroladores dessa família.
Este projeto usa um LCD HD44780 com interface serial descrita em /lcdsr44780/"> Interface para LCD HD44780 com 2 fios .
Índice dos circuitos |
H P S P I N Desde 04 de Março de 2010 Atualização: 13 de Sep de 2024 |