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.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!