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!