No post de hoje, vamos fazer um tacômetro, um instrumento que serve para fazer a medição de rpm (rotações por minuto) de algum motor ou de outro dispositivo.

O código é o seguinte:
//Aqui incluimos as bibliotecas
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//aqui configuramos o tamanho do display
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//declaramos variaveis de controle.
//a variavel pulsos tem que ser uma variavel volatile porque ela é alterada por outras partes do codigo
int rotacoes;
volatile byte pulsos;
unsigned long tempo;
unsigned int pulsos_por_volta = 1;
void contador()
{
//soma 1 pulso a cada vez que a "marca" passa
pulsos++;
}
void setup()
{
Serial.begin(115200);
//indica onde o sensor esta conectado
pinMode(2, INPUT);
//essa funcao soma o contador a cada vez que tem um pulso
attachInterrupt(0, contador, RISING);
pulsos = 0;
rotacoes = 0;
tempo = 0;
//inicia o display
if(!display.begin(SSD1306_SWITCHCAPVCC)) {
for(;;);
}
display.display();
delay(2000);
}
//repete essa funçao todo o tempo
void loop()
{
//verifica o contador de 1 em 1 segundo (1000)ms
if (millis() - tempo >= 1000)
{
//desliga a funçao enquanto faz a soma
detachInterrupt(0);
rotacoes = (60 * 1000 / pulsos_por_volta ) / (millis() - tempo) * pulsos;
tempo = millis();
pulsos = 0;
//volta ao normal apos o calculo
attachInterrupt(0, contador, RISING);
}
// mostra o RPM no display
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(1);
display.setCursor(4, 8);
display.print("RPM=");
display.setCursor(60, 8);
display.print(rotacoes,DEC);
display.display();
}Em unsigned int pulsos_por_volta = 1;, é necessário mudar o “1” pela quantidade de “marcas” que o que você quer medir tem.
No meu caso, a “marca” que vai passar pelo sensor é a fita.
Quando a roda estiver girando, o contador irá mostrar as RPM medidas.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!