Sensores

Tacômetro com Arduino

Eletrogate 15 de dezembro de 2022

Introdução

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.


Montagem


Bibliotecas Necessárias

  • Adafruit SSD1306;
  • Adafruit GFX Library;
  • AceWire.

 

 

 


Código

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();


}

Ajustes Finais

Em unsigned int pulsos_por_volta = 1;, é necessário mudar o “1” pela quantidade de “marcas” que o que você quer medir tem.


Testes

No meu caso, a “marca” que vai passar pelo sensor é a fita.

Quando a roda estiver girando, o contador irá mostrar as RPM medidas.


Sobre o Autor


Arthur Almeida

Estudante do Ensino médio , aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Eletrogate

15 de dezembro de 2022

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.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!