Contactless Tachometer




About: i am an electronic lover who want to make something superb.

Hello Friends

This is my another Instructable Contactless Tachometer using Arduino and IR sensor. I inspired to make this project when i need to measure the RPM of DC motor, then I started to make contactless tachometer. the main advantage of this project is that it can measure the rpm of very low power motors, because it don't need to touch the axis of motor. you can make this using 8051 and PIC microcontroller

Step 1: Working

IR sensor can differ the white and black color, when it is in front of white part it will give output as HIGH and when it is in front of black color output as LOW. The output of IR sensor is connected to counter pin (D3) of Arduino which is INT0.

For the measurement of RPM attach a white line over a black part which will attached to axis of motor. Rotating circle is shown is images.

Step 2: Collect the Material

1. Arduino UNO

2. IR sensor

3. LCD Display

4. Power Supply

5. Motor for Rpm Measurement

6. 9 volt battery

7. Potentiometer

Step 3: Circuit Diagram

We need two circuits 1st is for speed control of DC motor, its very simple circuit but use a good quality motor because magnetic field of dc motor can disturb working of sensor

Second circuit is our Tachometer circuit.

Step 4: Arduino CODE

Step 5: Check It

After the completing of the circuit and uploading the program, its time to check the output.

If you are facing any problem please contact me.

thank you



    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest
    • 1 Hour Challenge

      1 Hour Challenge
    • Fandom Contest

      Fandom Contest

    5 Discussions


    2 years ago

    compliments for the work. i've a question: why you multiply 30*1000/...... and not 60*1000... ? I suppose that your tachometer does not works propetly and measure only for half minute. Enry

    2 replies

    Reply 2 years ago

    Yes you are right, it's my mistake.I will modify this


    Reply 1 year ago

    if rpm=60*1000/(millis()-timeold)*rpmcount; showing error

    second disply RPM #### not stable