quinta-feira, abril 28, 2011

Pequenos Imãs e Micro Controladores - Parte 9

Vejamos agora como adaptar o meu conta-giros para usar um reed switch. Como já vimos, o reed switch é uma chave acionada por um imã.

A alteração do circuito é bastante simples, basta trocar o sensor de efeito Hall pelo reed:

No lado do código, não usaremos mais a interrupção de mudança de sinal, devido ao bounce do contato. Uma medição rápida no osciloscópio mostrou que o bounce ocorre em um tempo inferior a 100uSeg:


Vamos amostrar o sensor a cada interrupção do timer (512 uSeg), detectando por software a mudança do sinal e executando a lógica de detecção do imã quando o sinal mudar de "1" para "0" (indicando que o reed fechou contato):
  1. void RTCC_isr()  
  2. {  
  3.   static unsigned int8 cont_disp = TAXA_DISP;  
  4.   static unsigned int8 anterior = 0;  
  5.   unsigned int8 lido;  
  6.   
  7.   // Tratamento do sensor  
  8.   lido = input(SENSOR);  
  9.   if (lido != anterior)  
  10.   {  
  11.      anterior = lido;  
  12.      if (lido == 0)  
  13.      {  
  14.         output_high (LED);  
  15.         cntLed = TEMPO_LED;  
  16.         if (passo == 0)  
  17.         {  
  18.            cntb = cnta;  
  19.            cnta = 0;  
  20.            passo = 1;  
  21.         }  
  22.         else if (passo == 3)  
  23.         {  
  24.            cnta = 0;  
  25.            passo = 0;  
  26.         }  
  27.      }  
  28.   }  
  29.   
  30.   // Tratamento do LED  
  31.   ...  
  32. }  
Feitas estas mudanças, o comportamento foi equivalente à versão com o sensor de efeito Hall, exceto pela necessidade de um posicionamento mais cuidadoso do sensor.

Nenhum comentário: