Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% found this document useful (1 vote)
293 views

Tachometer Using Arduino

This document describes a digital tachometer circuit built using an Arduino that can measure the revolutions per minute (RPM) of a rotating object contactlessly. An infrared sensor detects the rotations and sends interrupts to the Arduino, which counts them over time to calculate RPM. The Arduino also controls the speed of a motor by outputting a PWM signal from a potentiometer input. The circuit diagram, code description, and full code are provided to demonstrate how the tachometer and speed control work.

Uploaded by

JamMnx_
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
293 views

Tachometer Using Arduino

This document describes a digital tachometer circuit built using an Arduino that can measure the revolutions per minute (RPM) of a rotating object contactlessly. An infrared sensor detects the rotations and sends interrupts to the Arduino, which counts them over time to calculate RPM. The Arduino also controls the speed of a motor by outputting a PWM signal from a potentiometer input. The circuit diagram, code description, and full code are provided to demonstrate how the tachometer and speed control work.

Uploaded by

JamMnx_
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Tachometer using arduino

praveen January 13, 2015 82 Comments

Digital tachometer using arduino plus speed control.

Tachometer is a device used for measuring the number of revolutions of an object in a


given interval of time. Usually it is expressed in revolutions per minute or RPM. Earlier
tachometers purely mechanical where the revolution is transferred to the tachometer
through mechanical coupling (cable or shaft) , the rpm is determined using a gear
mechanism and it is displayed on a dial. With the advent of modern electronics, the
tachometers have changed a lot. This article is about a contactless digital tachometer using
arduino. The speed of the motor can be also controlled using the same circuit. The RPM
and all the other informations are displayed on a 16×2 LCD screen. The circuit diagram of
the digital tachometer using arduino is shown below.

Circuit diagram.

RPM Sensor.

 An IR photo transistor and IR LED forms the sensor. IR photo transistor is a type of photo
transistor which responds to infra-red waves only. The use of IR phototransistor avoids
other light interferences from the environment. The photo transistor and IR diode are
aligned side by side. Resistor R2 limits the current through the IR diode. A reflective strip
is glued on the rotating object (shaft, disc or fan) in line with the sensor. I used a
9V/100mA cooling fan. The clearence between the sensor and reflective strip has to be less
than 1cm. When the reflective strip passes in front of the sensor, IR waves are reflected
back to the photo transistor. The photo transistor conducts more at this moment and as a
result the voltage across R3(68K resistor) shoots up at this moment. The result will be a
waveform like what shown below at the emitter of the photo transistor. RPM can be
determined by counting the number of upward shoots in a given interval of time.

Counting the
RPM.

Arduino is used for counting the RPM and displaying it on the LCD screen. Emitter of the
photo transistor is connected to the Interrupt 0 (digital pin 2) of the arduino. The arduino
interrupt is configured to be rising edge triggered. As a result the will be an interrupt for
every upward shoot in the emitter waveform. The number of interrupts occurred in a given
time is counted by incrementing a varible using the interrupt service routine. The time
elapsed during te counting cycle is determined using the millis() function. The millis()
function returns the number of milli seconds passed since the arduino board is switched
ON. Calling the millis() function before and after the counting cycle and the taking their
difference gives the times passed during the counting cycle. The (number of interrupts/time
in milliseconds)*60000 will give the revolutions per minute (RPM).

Controlling the speed of motor.

A provision for controlling the motor speed using a potentiometer is also included in the
circuit. Transistor Q1 is used for driving the motor. Its base is connected to pwm pin 9 of
the arduino through the current limiting resistor R1. Wiper of the speed control POT R4 is
connected to anlog pin A0 of the arduino. The voltage at this pin is converted into a value
between 0 and 1023 using the anlogRead function. Then this value is divided by four to fit
it into the 0 to 255 range. Then this value is written to the PWM pin 9 using the anlogWrite
function. The result will be a square wave at pin 9 whose duty cycle is proportional to the
value written using the analogWrite function. For example if the value is 255, the duty
cycle will be 100% and if the value is 127, the duty cycle will be around 50%. D1 is  a free
wheeling diode and C1 is a noise by-pass capacitor(de coupler).  The rpm and duty cycle
are displayed on the LCD screen using the standard LiquidCrystal library. Read this article:
Interfacing LCD to Arduino. Full program for the digital tachometer using arduino is
shown below.
Program.

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,6,5,4,3);
int pwm=9;
int pot=A0;
float value=0;
int percent;
float rev=0;
int rpm;
int oldtime=0;
int time;

void isr() //interrupt service routine


{
rev++;
}

void setup()
{
lcd.begin(16,2); //initialize LCD
attachInterrupt(0,isr,RISING); //attaching the interrupt
}

void loop()
{
delay(1000);
detachInterrupt(0); //detaches the interrupt
time=millis()-oldtime; //finds the time
rpm=(rev/time)*60000; //calculates rpm
oldtime=millis(); //saves the current time
rev=0;
value=analogRead(pot); //reads the speed control POT
value=value/4;
analogWrite(pwm,value); //sets the desired speed
percent=(value/255)*100; //finds the duty cycle %
lcd.clear();
lcd.setCursor(0,0);
lcd.print("___TACHOMETER___");
lcd.setCursor(0,1);
lcd.print(rpm);
lcd.print(" RPM");
lcd.print("   ");
lcd.print(percent);
lcd.print("%");
attachInterrupt(0,isr,RISING);

Notes.

 The arduino board can be powered using a 9V supply through the external power
jack.
 The 5V needed at some parts of the circuit can be tapped from the 5V source on the
arduino board.
 The fan I used was rated 9V/100mA. The transistor 2N2222 can handle only upto
800mA. Keep this in mind while selecting the load.
 The LCD module used was JHD162A.
 POT R5 can be used to adjust the contrast of the LCD display. When connected
first, the LCD may not show up anything. Adjust the R5 until you get the display.
The optimum voltage at the wiper of R5 is between 0.4 to 1V.
 The IR photo transistor and the IR diode both were taken from an LTH-1550 photo
interrupter module.
 The lateral surface of the photo transistor must be masked using a tape.
 The sensor arrangement is shown in the figure below.

Tags: arduino speed control, arduino tachometer


Categories:

 Arduino

You might also like