Neste projeto iremos aprender a captar os sinais do cooler e convertermos estes sinais de forma a visualizarmos a quantidade de rotações por minuto que o mesmo esta trabalhando no momento. Vale lembrar que devemos alimentar o cooler com um fonte externa, visto que o Arduino não foi projetado para alimentar motores. Então vamos lá?
COMPONENTES NECESSÁRIOS
1 Arduino Uno R3
1 Protoboard
1 Resistor de 10KΩ
1 Cooler com captura de sinal rpm
Fios jumpers
CONECTANDO OS COMPONENTES
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue a protoboard, o resistor, o cooler e os fios jumpers e conecte-os como mostra a figura.
Não importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard, desde que os componentes e os fios estejam conectados na mesma ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja nova, a superfície dos furos ainda estará rígida. A não inserção cuidadosa dos componentes pode resultar em danos. Certifique-se de que todos os componentes estejam conectados corretamente. Quando você estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino conectando-o ao cabo USB.
AGORA VAMOS AO CÓDIGO
// Projeto 46 – Visualizando rpm do cooler com arduino
// Variáveis usadas para os cálculos
int NbTopsFan;
int Calc;
// Pino utilizado para a leitura no sensor de rotação do cooler
int hallSensor = 2;
typedef struct{
// Define a estrutura para vários fãs e os divisores
char fanType;
unsigned int fanDiv;
}
fanspec;
// As definições dos fãs
// Esta é a variável usada para selecionar o cooler e seu divisor,
// 1 para o sensor de efeito Hall unipolar
// E 2 para o sensor de efeito Hall bipolar
fanspec fanspace[3]={{0,1},{1,2},{2,8}};
char fan = 1;
void rpm ()
// Esta é a função das chamadas de interrupção
{ NbTopsFan++; }
// Esta é a função de configuração quando a porta serial é inicializada,
// E a interrupção é ligada
void setup(){
pinMode(hallSensor, INPUT);
Serial.begin(9600);
attachInterrupt(0, rpm, RISING);
}
void loop (){
// Configura a variável NbTops para o cálculo onde as leituras forem 0
NbTopsFan = 0;
// Habilita as interrupções
sei();
// Espera por um segundo
delay (1000);
// Desabilita as interrupções
cli();
// Número de NbTopsFan (que é aproximadamente a freqüência que o
//cooler está girando) por 60 segundos antes de dividir pelo divisor de fãs
Calc = ((NbTopsFan * 60)/fanspace[fan].fanDiv);
// Imprime o número calculado acima
Serial.print (Calc, DEC);
// Imprimi no Serial Monitor "RPM" e uma nova linha
Serial.print (" RPM\r\n");
}
// Obs.: Para desativar as interrupções: cli (); desativar interrupções globais e
//para habilitá-los: sei (); habilitar as interrupções;
Para certificar se o código está correto pressione o botão Verify/Compile. Se tudo estiver correto pressione o botão Upload para fazer o upload do código para seu Arduino. Pronto, agora pressione simultaneamente as teclas "Ctrl+Shift+M" para abrirmos o Serial Monitor e vermos os rpms atuais.
Fonte: facacomarduino.info