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):
- void RTCC_isr()
- {
- static unsigned int8 cont_disp = TAXA_DISP;
- static unsigned int8 anterior = 0;
- unsigned int8 lido;
-
-
- lido = input(SENSOR);
- if (lido != anterior)
- {
- anterior = lido;
- if (lido == 0)
- {
- output_high (LED);
- cntLed = TEMPO_LED;
- if (passo == 0)
- {
- cntb = cnta;
- cnta = 0;
- passo = 1;
- }
- else if (passo == 3)
- {
- cnta = 0;
- passo = 0;
- }
- }
- }
-
-
- ...
- }
void RTCC_isr()
{
static unsigned int8 cont_disp = TAXA_DISP;
static unsigned int8 anterior = 0;
unsigned int8 lido;
// Tratamento do sensor
lido = input(SENSOR);
if (lido != anterior)
{
anterior = lido;
if (lido == 0)
{
output_high (LED);
cntLed = TEMPO_LED;
if (passo == 0)
{
cntb = cnta;
cnta = 0;
passo = 1;
}
else if (passo == 3)
{
cnta = 0;
passo = 0;
}
}
}
// Tratamento do LED
...
}
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:
Postar um comentário