Arduino-Based Optical Tachometer
Over ten years ago, I put up a web page with detailed instructions on building a simple electric motor based on one from the Beakman’s World TV show. I called it the “Beakman’s Electric Motor” page and over the years it has had hundreds of thousands, if not millions, of hits. Realizing that just building a motor, no matter how cool, wasn’t a good science fair project, I added suggestions for using the motor as a science fair project, such as experimenting with different magnets, batteries, and coil constructions and seeing how they affect performance. In order to do this, the speed of the motor should be measured, but I left that as an open-ended question.
I’ve had dozens of e-mails over the years asking how to measure the speed and I’ve always suggested using a broken light beam and a counter, but I’ve never built one myself. I even suggested to one person that they use a slot-car lap counter since I’d seen on one sale at Toys ‘R Us for 99 cents and she said that it worked perfectly, but not everyone can find a good deal like that.
It just so happened that I got one of these “how do I measure the motor speed?” e-mails on the same day my new Arduino Diecimila microcontroller board arrived from the Make Store, so I thought that would make a great weekend project.
Here is the result, an optical tachometer for Beakman’s Electric Motor using an IR emitter/detector pair and a Arduino board. With a few modifications to the programming, you can use this tachometer for measuring other things such as fan or propeller speed. Notes are included on what to change for different applications.
How to have fun with Arduino is a good source of basics on how to setup and use the Arduino board.
Step 1: Materials Needed
Arduino Diecimila Board
Available from the Make Store or from several other online resources. Note however that the techniques of this Instructable could be adapted for other microcontrollers and circuits.
Computer with Arduino software and USB cable
IR LED and IR phototransistor
I used a Radio Shack #276-142, but that may be an old part number. Parts selection on this probably isn’t too critical.
Visible light LED
I used a high-brightness red one that I had around. Actual selection not too critical.
10K Ohm resistor
220 Ohm resistor
Breadboard (semi-optional), hookup wires, clips
Opaque tape, such as black electrical tape
Framework for holding LED and detector
Use your imagination, I used KNex pieces to build a frame.
Beakman’s Electric Motor (or something else to measure)
Original instructions for building the motor are here: Beakman’s Motor
Similar plans are available from other places, such as this Instructable:
Simple Electric Motor
Step 2: Building and Preparing the Motor (if necessary)
Follow the instructions to build the Beakman’s Electric motor. The motor should be mounted on a suitable base so that it can run freestanding a bit off the table. I used some Brio construction set pieces (I have a lot of toys laying around).
The most important thing to ensure reliable motor operation is to make sure the coil is balanced and the tails of the coil are very straight. I drew a diagram using my coil form and a ruler, then laid the completed coil on the paper to align the tails perpendicular to the coil and to make sure they were straight. I then used a drop of superglue where the tails were wrapped around the coil to make sure they couldn’t slide.
To enable the coil to break the light-beam, place a piece of opaque tape (I used black electrical tape) across the coil. This might slow it down a tiny bit, but if all of your coils have the same sized piece of tape in the same position, your results between coils should be relatively consistent.
There are three separate circuits to connect to the Arduino. You can refer to my schematic and notes sketch in the images and to the pictures of the breadboard to see how I hooked it all up. Of course, the critical things to note are the anode/cathode orientation of the LEDs and transistors and the connections to power and ground. The whole circuit is powered from the Arduino board and since the program will communicate with the PC, I’m using the USB connector for power.
For more detail: Arduino-Based Optical Tachometer