Easy Peasy Tachometer

Easy peasy reliable tachometer, that you can use to measure the rpm of tools, bicycle wheels, and robots using inexpensive parts.

Jan 18, 2020

74375 views

13 respects

Components and supplies

1

Graphic OLED, 128 x 64

1

Arduino UNO

1

3144 Hall Sensor

Project description

Code

Easy Peasy Tachometer

arduino

It is a home made reliable tachometer, that can be used with an Arduino UNO or NANO that you can use to measure the speed of rotating objects on tools, bicycles, and robotics. For a complete tutorial follow this link https://youtu.be/2-J4f8-RX90

Easy Peasy Tachometer

arduino

It is a home made reliable tachometer, that can be used with an Arduino Uno or Nano that you can make to measure the speed of rotating objects on tools, bicycles, and robotics.

Easy Peasy Tachometer

arduino

It is a home made reliable tachometer, that can be used with an Arduino UNO or NANO that you can use to measure the speed of rotating objects on tools, bicycles, and robotics. For a complete tutorial follow this link https://youtu.be/2-J4f8-RX90

Documentation

Hall Sensor wiring diagram

Hall Sensor wiring diagram

Hall Sensor wiring diagram

Hall Sensor wiring diagram

Comments

Only logged in users can leave comments

Anonymous user

2 years ago

Nice solution, but I think you don't need to use de millis() function because you're already using a 2 second delay, and during this time the interrupt will count revolutions, then after detachInterrupt(0) just rpm = rev*30 would give the same result.

Anonymous user

2 years ago

hello sir, thanks to you and your assistant (the dog), I assume that the formula in your code is made to measure the rpm by detecting only one piece of metal around the on spinning circle, I'd like to place more then on target on the circle I'd like to mesure the RPM, is it enough to divide your result by 2 if I place 2 targets, or by four if I put on 4 targets and so on ? My reason for asking is that I would like to mesure rmp from 20 to 700 and i thing that at low rpm it won't work with only one "target" excuse me in advance for my bad english cheers jean michel

Anonymous user

2 years ago

Hi there, thank you very much for this project I needed a reliable rpm meter. I just have one question my 3144 hall sensor is reading about 100rpm to slow is there a way to edit the code to get it closer to the real rpm? Many thanks J

Anonymous user

2 years ago

Easy Peasy Tachometer 2.0 (with updated library for SSD1306(128x64 #include <Adafruit_GFX.h> #include <Adafruit_SPITFT.h> #include <Adafruit_SPITFT_Macros.h> #include <gfxfont.h> #include <Adafruit_SSD1306.h> #include <splash.h> #include <Wire.h> #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C Adafruit_SSD1306 display(128, 64); float value=0; float rev=0; int rpm; int oldtime=0; int time; void isr() { rev++; } void setup() { display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); digitalWrite(HIGH, 2); attachInterrupt(0,isr,RISING); } void loop() { delay(3000); detachInterrupt(0); time=millis()-oldtime; rpm=(rev/time)*60000; oldtime=millis(); rev=0; display.clearDisplay(); display.setTextSize(5); display.setTextColor(WHITE); display.setCursor(5,20);// Vertical, Horizontal. display.println(rpm); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(15,0); display.println("RPM"); display.display(); attachInterrupt(0,isr,RISING); }

Anonymous user

2 years ago

Can anyone tell me the code for this but with 16*2 lcd screen instead of OLED screen. I am totally amature at coding.

Anonymous user

2 years ago

hello sir, thanks to you and your assistant (the dog), I assume that the formula in your code is made to measure the rpm by detecting only one piece of metal around the on spinning circle, I'd like to place more then on target on the circle I'd like to mesure the RPM, is it enough to divide your result by 2 if I place 2 targets, or by four if I put on 4 targets and so on ? My reason for asking is that I would like to mesure rmp from 20 to 700 and i thing that at low rpm it won't work with only one "target" excuse me in advance for my bad english cheers jean michel

Anonymous user

2 years ago

Can anyone tell me the code for this but with 16*2 lcd screen instead of OLED screen. I am totally amature at coding.

Anonymous user

3 years ago

Hi there, thank you very much for this project I needed a reliable rpm meter. I just have one question my 3144 hall sensor is reading about 100rpm to slow is there a way to edit the code to get it closer to the real rpm? Many thanks J

Anonymous user

4 years ago

You link an Arduino UNO Rev 3, which only features one 5V pin location on the analog side, yet in the above schematic you show two 5V pin locations. Can you explain this?

Anonymous user

4 years ago

Nice solution, but I think you don't need to use de millis() function because you're already using a 2 second delay, and during this time the interrupt will count revolutions, then after detachInterrupt(0) just rpm = rev*30 would give the same result.

brewmorris01

5 years ago

Easy Peasy Tachometer 2.0 (with updated library for SSD1306(128x64 #include <Adafruit_GFX.h> #include <Adafruit_SPITFT.h> #include <Adafruit_SPITFT_Macros.h> #include <gfxfont.h> #include <Adafruit_SSD1306.h> #include <splash.h> #include <Wire.h> #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C Adafruit_SSD1306 display(128, 64); float value=0; float rev=0; int rpm; int oldtime=0; int time; void isr() { rev++; } void setup() { display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); digitalWrite(HIGH, 2); attachInterrupt(0,isr,RISING); } void loop() { delay(3000); detachInterrupt(0); time=millis()-oldtime; rpm=(rev/time)*60000; oldtime=millis(); rev=0; display.clearDisplay(); display.setTextSize(5); display.setTextColor(WHITE); display.setCursor(5,20);// Vertical, Horizontal. display.println(rpm); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(15,0); display.println("RPM"); display.display(); attachInterrupt(0,isr,RISING); }

PracticeMakesBetter

2 Followers

4 Projects

13

11