Leitura da velocidade de ventoinha em RPM
O que vamos aprender?
Aprenderemos a ler as rotações por minuto (RPM) de uma ventoinha (Fan) com 3 fios. Usaremos o Arduino, mas pode ser feito com qualquer MCU.
Leitura de RPM
As ventoinhas com 3 ou 4 fios, tem embutido, um sensor Hall que detecta a variação do campo magnético gerado pela rotação da ventoinha. A maioria das ventoinhas tem dois pólos magnéticos, que quando rotacionado, aciona o Hall e conseguimos efetuar a leitura das rotações.
Como pode ser visto na Figura 1, após uma volta, o Hall ativou a saída duas vezes. Logo, precisamos dividir a contagem das rotações por 2 para se chegar em uma volta completa.
A leitura de RPM pode ser extremamente útil em casos em que é preciso controle da velocidade ou fluxo de vento em um determinado local, ou até mesmo determinar se a ventoinha esta funcionando corretamente, caso não, o sistema irá detectar e ativar um alarme, já que pode gerar super aquecimentos e até pegar fogo em componentes!
Mãos à obra
Componentes necessários
Montando o projeto
Faça as ligações simples e coloque o terceiro fio (normalmente amarelo ou branco) ao pino 2 do Arduino! Lembre-se da tensão e corrente de sua ventoinha, a usada no o tutorial é suficiente para o Arduino suprir, caso a sua seja "mais forte", será necessário uma fonte externa e divisores de tensão no 3 pino. Ficará parecido com o nosso:
Código do projeto
volatile uint32_t rpm;//Váriavel que armazena as rotações. void setup() { Serial.begin(115200);//Inicia a Serial. attachInterrupt(0, ctt, RISING);//Habilita a interrupção 0 no pino 2. } void loop() { delay(1000);//Aguarda um segundo. Serial.println(rpm * 30);//Mostra o RPM. rpm = 0;//Reseta a váriavel para proxima leitura. //Como estamos lendo a cada UM segundo, usariamos RPM*60 para determinar as rotações por minuto, //porém, como foi dito na explicação, é preciso dividir o valor por 2, por isto 30! } void ctt() { rpm++;//Incrementa a váriavel. }
Colocando para funcionar
De acordo com o datasheet da ventoinha aqui testada, era de se esperar cerca de 13000 RPM (Fig 3). Após analisar com o Arduino, o valor variou entre 12000-15000 RPM (Fig 4), mostrando que esta correto!
Figura 3 - Datasheet
Entendendo a fundo
Software
-Função attachInterrupt()
attachInterrupt(0, ctt, RISING);
É configurado uma rotina de interrupção para a leitura dos pulsos altos gerados pela ventoinha. Foi usado a interrupção 0, que está ligada ao pino 2 do Arduino Uno.
-Mostrando os valores
Serial.println(rpm * 30);
Aqui esta a grande jogada da leitura. É feito a cada 1 segundo, a leitura da variável RPM, que foi modificada pela interrupção da ventoinha. Para converter as rotações por segundo, para rotações por minuto, é necessário multiplicar por 60, já que 1 minuto tem 60 segundos.
Entretanto, no inicio do tutorial, foi mostrado que deve-se dividir por 2 para chegar a uma rotação completa, por isso usamos 30!
-Resetando a variável
rpm = 0;
Após a leitura dos pulsos, é necessário resetar a variável, se não, irá interferir nas contas futuras.
Fechamento
Em vários cenários é necessário conhecer sobre o funcionamento de uma ventoinha, que caso venha a falhar, pode gerar terríveis danos ao sistema. Então, aprender a ler a RPM da ventoinha pode ser uma ótima maneira de descobrir se esta tudo correto. Dúvidas? Sugestões? Críticas? Comente abaixo!