Measure RPM – Optical Tachometer using Arduino

Measure RPM Optical Tachometer

This Instructable will show you how to make a Portable Digital Optical Tachometer using an Arduino Uno. This project is inspired from This instructable and is an enhanced version of it with an LCD display and a modified code.

Instead of a slotted sensor , it has a reflection based sensor. So :

1. You don’t have to worry about the thickness of the rotor

2. The number of blades won’t change your readings

3. It can also read the RPM of drum style rotors which slotted sensor can’t

Measure RPM Optical Tachometer

What is a tachometer ?

A tachometer is a device used to measure the RPM or Revolutions Per Minute of any rotating body. Tachometers can be contact based or non-contact ones. The non-contact or contact-less optical tachometers usually use laser or Infrared beam to monitor the rotation of any body. This is done by calculating time taken for one rotation.


  • It can measure RPM over 20k
  • Sensor range extends upto 7~8 cm
  • Displays Maximum RPM when left Idle
  • Automatically toggles modes from “Idle” to “reading”
  • Can be adjusted to match the ambient lighting conditions
  • It is comparatively cheap and easy to build
  • Can work without an LCD
  • Programmable and supports customization
  • Connect an SD card to the Arduino to keep logs

Step 1: Part List :

  • Arduino
  • Resistors – 33k , 270 ohm , 10k potentiometer
  • LED – blue
  • IR LED and Photodiode
  • 16 x 2 LCD
  • 74HC595 shift Register
  • Ribbon cable ( 3 wire )
  • Perfboard and headers
Tools and Hardware
  • Soldering Iron
  • Solder
  • Pins
  • Screws
  • Motors and DC fan

Step 2: Build the sensor

For the sensor you’ll need an IR LED and a Photodiode.

1. Start by sanding the LED and photodiode to make it flat ( do not sand it too much or you’ll destroy it ).

2. Then fold a strip of paper sheet as shown. Make two such Structures so that the LED and Photodiode fit tightly into it. Joint these together by glue and paint them black.

3. Insert your LED and Photodiode in them in such a way that the positive ( longer ) lead of the LED is right above the shorter lead of the photodiode.

4. Glue them into the cover using superglue and solder the positive ( longer ) lead of the LED to the shorter lead of the photodiode.

5. Solder the 3 wire ribbon cable to the remaining leads

In my case :

1. Orange wire –> LED’s positive pin and photodiode’s shorter lead

2. Yellow wire –> photodiode’s longer lead

3. Green Wire –> LED’s ground pin

You’re ready to make the board >>

Measure RPM Optical Tachometer schematic

Step 3: Making the sensor board

Take a small piece of Perfboard and place the components according to the schematics.

The resistor values may vary depending on what kind of photodiode are you using.

The potentiometer helps in reducing or increasing the sensitivity of the sensor.

Finally solder the sensor wires as shown and solder 3 headers.

The headers ( in order ) are shown on the left side of the schematic.

make a cuboidal paper tube whose length is equal to the sensor wires.

Step 4: The 3-pin LCD

This method uses a 8-bit shift register 74HC595 with a 16 x 2 LCD. Normally this LCD uses 6 pins but using a shift register reduces the pin requirement by 3.

The full instruction guide and the library can be downloaded from THIS WEBSITE !

## Recent Update : The library provided on the website has a lot of errors and conflicts. I’ve uploaded my version of enhanced ShiftLCD library. I recommend you to use the one attached below.

The only thing that I’ve changed is :

instead of going for (2, 4, 3) configuration I’ve used (8, 10, 9)

So be sure to change the pin mapping accordingly


Read more: Measure RPM – Optical Tachometer using Arduino

Leave a Comment

Your email address will not be published. Required fields are marked *