Ahhh o Controle Remoto, uma das salvações da humanidade, graças a ele podemos trocar de canal, aumentar/abaixar o volume, desligar/ligar o aparelho, tudo sem sair do conforto do sofá, mas como será que o controle funciona?
Começando pelo controle, temos um circuito simples, um chip, um ressonador (circuito de clock de baixo custo) e um diodo emissor de infravermelho, o que faz toda a magica XP.
A rotina também é simples:
1 - Ativa a linha m
2 - Capta os valores das colunas
Faz isso até acabar a quantidade de linhas por coluna que suprir a quantidade de teclas
3 - Verifica qual tecla foi apertada
4 - A partir de uma tabela , retorna um código.
5 - Inicia a transmissão de dados via Infravermelho, e em seguida transmite o endereço e após a tecla que foi digitada.
A transmissão via infravermelho não é igual ao sistema que conhecemos, mas por largura de pulsos.
Por exemplo, pulso tamanho xµs é igual a 1, yµs é igual a 0, tudo isso numa frequência entre 36Khz a 40Khz.
Já o entendimento do tamanho do pulso e sua decodificação fica por conta dos fabricantes.
O recebimento é que complica, porque se fosse somente pelo fato de receber o sinal e trabalhar via software não era tanto, mas como se está tratando de uma luz infravermelha, que como igual as outras, é gerada por várias fontes (até mesmo o nosso corpo, imagina a luz do sol ou da lampada da sua casa), adiciona ruídos a transmissão.Para isso o sensor receptor de infravermelho é feito adequadamente para cada tipo de frequência, pois eles eliminam os ruídos ( separa por Low Pass Band) e amplificam o sinal.
Aqui neste site temos os protocolos de cada fabricante:
http://www.sbprojects.com/knowledge/ir/index.php
O mais comuns são os da Phillips RC5 e RC6, e o SIRC da Sony.
Vamos analisar o RC6
Características:
* Diferente modos de operações, dependendo somente da aplicação
* Tamanho dos comandos variáveis
* Frequência de Transporte de 36Khz
* Duty Cycle entre 25% a 50%
Modulação
Os dados são modulados usando a Codificação Manchester (http://en.wikipedia.org/wiki/Manchester_code)
onde a posição do nível define o bit.
*Imagem do Wikipedia
Como pode-se ver , o bit 1 é definido pela borda esquerda, na primeira metade, já o bit 0 é definido pela segunda metade.
A unidade principal é 1t (T = período), que consiste em 16 vezes o período da transportadora (1/36KHz*16 = 444µs)
O RC-6 tem 5 diferentes símbolos definidos:
* O Leader, que contem uma marca de 6t (2.666ms) mais um espaço de 2t (0,888ms).Este pulso é normalmente usado para definir o ganho do receptor.
*Bits normais, contem uma marca de 1t (0,444ms) e um espaço de 1t(0,444ms).O "0" e o "1" são codificados pela posição do espaço no tempo.
*Bits Trailer, contem uma marca de 2t (0,888ms) e um espaço também de 1t(0,888ms).Como o acima, os bits são definidos pelo lado que são posicionados.
O Leader e o Trailer são usados somente no cabeçalho de uma mensagem, que será explicado adiante.
RC-6 Modo 0
O modo 0 é um modo dedicado a Phillips Consumer Electronics.Ele permite até 256 dispositivos independentes, com um total de 256 comandos por dispositivos.
O comando é concateado de informações diferentes.Falarei deles da esquerda para a direita:
Campo Header
O Campo Header consiste em 3 diferentes componentes:
* Primeiro o simbolo Leader (LS) é enviado. O seu propósito é ajustar o ganho do receptor.
* Em seguida, um bit de iniciação SB que sempre tem o valor 1.Seu propósito é de sincronizar o receptor.
* Os bits de modo MB2,MB1,MB0 determina o modo, que será 0 nesta caso, todos os 3.
* Finalmente o cabeçalho é encerrado com o bit Trailer TR.Note que o tempo deste simbolo é o dobro do comum, pois este bit também serve como um tradicional bit de alternância , que será invertido caso nenhuma tecla for pressionada.Ele permite que o receptor distingua entre uma nova tecla ou uma repetida.
Campo de Controle
Este campo manter os 8 bits que serão usados para o endereçamento.Este pode endereçar até 256 dispositivos diferentes que podem ser controlados usando o modo-o do RC-6.O MSB é transferido primeiro.
Campo de Informação
Este campo mantem os 8 bits que serão usados para o comando.Este pode ter 256 comandos diferentes.
O MSB é transmitido primeiro.
Signal free Time
Esta parte do sinal é um período que não tem data para ser transmitido.Ele é importante para o receptor identificar o sinal como um fim da mensagem para evitar uma recepção incorreta.
O sinal é definido como 6t, um período de 2.666 ms.
*Pagina do autor do texto e das imagens: http://www.sbprojects.com/knowledge/ir/rc6.php
Bem, a parte da transmissão esta entendida, mas a parte da recepção?
Não muito difícil também, pois se for usar um MCU, por exemplo o PIC, pasta trabalhar com o Timer0.
Por exemplo:
O transmissor começou o LS (Leader Symbol), o PIC recebe pela porta e roda o Timer0 (claro que o prescaler esteja configurado) para que estoure quando o der 2.666ms.
Ao sinal do estouro, reconhece que aquilo é um LS e coloca o timer0 para estourar nos 889µs.
Quando estourar, vai indicar que daqui em diante o transmissor vai mandar os dados, dai é só fazer uma rotina que meça o tempo através do timer0 e verifique a porta após determinado tempo.
Dai em diante só vem a parte de deslocamento de bits nos registradores que é mais chatinho.
O tipo de receptor de infravermelho tem aos montes, basta encontra o que quer!
Bem, por hoje é só!