quarta-feira, 14 de agosto de 2013

Circuitos Infravermelho

Nesta matéria você encontra circuitos para microcontroladores AVR muito úteis para trabalhar com dispositivos Infravermelho. Com as informações descritas abaixo você consegue construir circuitos baseados em microcontrolador AVR para transmitir e receber sinais em Infravermelho.

1 - Circuito sincronizador:
A figura acima ilustra o diagrama básico de um circuito mínimo para trabalhar com sinais infravermelho. Você pode notar que o detector de infravermelho é um componente comum e pode ser encontrado em qualquer aparelho em desuso ou comprado em alguma loja de eletrônicos. Procure pelos códigos TSOP17xx ou SFH506-xx que são mais frequentemente encontrados. 

A próxima listagem de programa deve ser gravada no circuito descrito acima. O programa é necessário para auxiliar a decodificar e sincronizar os sinais de, por exemplo, um controle remoto de TV comum. Os sinais de um controle remoto são entendidos como bit 1(Quando há emissão de luz) e bit 0(Quando não há emissão de luz). Portanto, se observa um sinal de onda quadrada na saída 3 do detector. A modulação deste sinal é bem parecida com a modulação serial. Inicialmente há uma preparação, uma transmissão inicial de sinais, antes da chegada de dados úteis. A preparação é sempre a mesma para o pressionamento de qualquer botão do controle. Além disso, isso pode variar de controle para controle e no caso, para este exemplo, utilizou-se um controle de TV Samsung.
 '--------------------------------------------------------------  
 ' file: IRSync.BAS  
 ' Descr.: Ajuda a sincronizar os sinais do controle remoto.  
 ' Autor.: Claudio F. Dias  
 ' Data.: 10/12/2010  
 '--------------------------------------------------------------  
 '  
 $regfile = "2313def.dat"  
 $crystal = 10000000  
 Config Int0 = Falling  
 Config Portb = Output  
 Config Portd = Input  
                 ' Abilita Interrupção  
 On Int0 Int0_int        ' Inicia o INT0  
 Dim Reg As Bit  
 Dim Irflag As Bit        ' Variável auxiliar de INT0  
 Dim I As Word  
 Dim Rc As Word         ' Variável de código  
 Enable Interrupts  
 Enable Int0  
 Do  
    Reg = 1  
    Portb = 255        ' Coloca toda porta B em 1   
    ' Wait for InfraRed signal  
    Irflag = 1  
    While Irflag = 1  
    Wend  
    Disable Int0  
    ' -> Tempo de preparação <-  
    Waitms 35                         
    Waitus 135                        
    ' Lê bit a bit (Rc é uma WORD de 16 bits)  
    For I = 1 To 16  
      If Pind.2 = 1 Then  
       Rc = Rc Or 1  
       Else  
       Rc = Rc And &HFFFE  
      End If  
      Shift Rc , Left , 1  
      ' Faz transição de porta a cada bit  
      Reg = Not Reg  
      If Reg = 1 Then  
       Portb = 255  
      Else  
       Portb = 0  
      End If  
      Waitus 1110     ' -> Intervalo entre bits <-  
    Next  
    Enable Int0  
    Waitms 15  
 Loop  
 End  
 Int0_int:  
   Irflag = 0 ' Interrupção  
 Return                           
Uma vez que você compilou o programa e gravou o binário no chip você já pode verificar os sinais de saída quando o controle remoto é acionado em direção ao sensor. Para isso ligue a ponteira do canal A do osciloscópio no sensor e a ponteira do canal B do osciloscópio em qualquer pino da porta B do microcontrolador AVR. Provavelmente você vai observar algo parecido com o que está nas figuras abaixo:

O sinal descrito em amarelo é o sinal do controle remoto e o sinal em verde é o da saída da porta B do microcontrolador AVR. Veja na primeira figura os sinais de preparação antes da chegada dos dados úteis. Na segunda figura veja que o sinal verde ocorre exatamente no meio da onda quadrada do sinal amarelo. Veja que são os exatos momentos em que verificamos se há um bit 1 ou 0 naquele instante. No seu caso o sinal verde deve aparecer totalmente fora do sinal amarelo. Você deve corrigir isso ajustando os tempos no programa onde aparece "-> Intervalo entre bits <-"  e também no "-> Tempo de preparação <- ".

Espero que você tenha entendido e gostado da matéria. Se precisar de ajuda não deixe de comentar.