This tutorial will guide you through the process of building a tachometer around an Arduino. Tachometers are used to measure rotation rate in Revolutions Per Minute (RPM). You don’t need much in the way of hardware, this version uses an Infrared beam to measure fan speed. As with last year’s PIC-based tutorial, [Chris] is using a character LCD to output the reading. Wiring and driving the LCD ends up being the hardest part.
An IR transmitter/receiver pair are positioned on either side of the fan. When the blade passes in between then, the receiver shuts off a transistor connected to one of the Arduino’s external interrupt pins. He shows how to use this interrupt to measure the amount of time between the passing of each fan blade. If you divide for the number of blades, and average the reading for greater accuracy, you can easily calculate RPM.
Another alternative would have been to use a reflectance sensor which allows to for the transmitter and receiver to both be on the same side of the fan.
10 thoughts on “Arduino Tachometer Tutorial”
at bit more kludgy but i did this with a gutted ball mouse and a kazoo.. http://xeracy.wordpress.com/2009/11/02/augmented-kazoo/
If wiring is a problem with displays I have two abbreviations for you: I2C/SPI
Even better (assuming this is for fan-speed control), use a fan with built-in speed monitoring pin as present in all PCs. It’s a third pin in the cable that gets pulled to ground once per revolution and you can hook it up to a counter in your micro.
It gets harder though if you’re PWMing the fan for speed control with PID because the PWM signal applied to the power lead will be ANDed onto the speed signal. So you need to make sure the speed signal is polled only when the PWM output is high and that gets complicated.
Great build! Only problem I see is the assumption that computer fans rated to run as 3000 RPM actually do run at 3000 RPM. Either way, it seems to be working reasonably well.
I’ve seen a simpler build with an old cut open transistor (which reacts on light) and a multimeter set on frequency measurement. You still needed some math. But it worked great.
Kind of defeats the purpose of using the Arduino, but if it serves the purpose…
Isnt that a contradition?
Maybe it should read:
“average the reading for greater consistency“
All this talk about tachometer got me searching the web for a printable (2-D) strobe tachometer gauge that uses a fluorescent light.
Here is one I found,
and here is one for a phono graph, that site also has one for 50Hz.
If anyone knows of others, or a postscript that could print them to various RPM’s I’d like to know!
Fluorescent lights read 7200rpm on an optical tach. 60Hz AC from the wall (120 half cycles 60 going above the zero volt line on the scope and 60 going below the zero volt line) so 120pps times 60seconds 7200cps/rpm etc. If the circuit recognizes both halves of the waveform the output should be 7200. If it only sees half then 3600. Hydro power is pretty accurate and an easy signal source. Most digital clocks use it for a timebase.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)