arduino based distance sensor

Here  is a simple tutorial to build a Distance sensor which will show the distance from the distance sensor HC-SR04 ( Or any other compatible devices) to the wall or obstacles in front of the sensor in CentiMeters.

This project uses a HCR-SR04 distance sensor and atmega 328 or any other atmega chip which is programmed using a arduino programming kit, SO the project is based on arduino. But our final Circuit will be a standalone circuit without attached arduino programmer.

Hardware Used:

1> HC-SR04

It is a simple Ultrasonic ranging module. 

hc-sr04

hc-sr04

 With Specifications:

power supply :5V DC
quiescent current : <2mA
effectual angle: <15°
ranging distance : 2cm – 500 cm

And whose Sequence chart is:

sequence chart

sequence chart

We can send a short ultrasonic pulse at t1 , and if any obstacles is there the received ultrasonic signal is converted to an electrical signal as Echo.  If a 10μs width trigger pulse is sent to the signal pin, the Ultrasonic module will  output eight 40kHz ultrasonic signal and detect the echo back. The measured distance is proportional to the echo pulse width and can be calculated by the formula above. If no obstacle is detected, the output pin will give a 38ms high level signal.

 2> Arduino

Either a Arduino Board or a Arduino IC( Atmgea 328 , Atmega 128 , Atmega 8 etc ) with a programmer is used. To know more about Arduino visit the official arduino site http://arduino.cc

3> 16*2 LCD

2X16 LCD

2X16 LCD

Wiring:

SO If you are going to use arduino board then please connect devices as following:

FOR LCD:

* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10Komhs Variable resistor   with two ends to +5v and ground and the middle wipper ti LCD pin VO.

If you also have back light in your LCD and  want to enable it:

* LCD A to +5v , LCD K to Ground.

And LCD VSS to Ground , LCD VDD to +5v.

FOR HC-SR04:

* VCC to +5v , Gnd to Groung

* “Trig” Pin to Digital pin 7

* “Echo” Pin to Digital pin 8

 

And if You are not using Arduino Board instead using a Arduino IC after programming it then use the following schematic: 

distance meter

 

 

Software:

Here is a simple version of the software:

/*
Coded By: http://electronicsproject.org
*/

       #define trigPin 7
       #define echoPin 8

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
int timetaken, dist;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
timetaken = pulseIn(echoPin, HIGH);
dist = (timetaken/2) * 0.034049 ;
if (dist >= 300 || dist <= 0){
Serial.println(“Out Of Range”);
}
else {

Serial.println(“Distance in CM: “);

Serial.print(dist);

}
delay(500);
}

 

Using above software You can only view the Distance in the Serial Monitor of your arduino and not on LCD. For viewing the Data on LCD use following Code:

/*
Coded By: http://electronicsprojct.org
*/

#define trigPin 7
#define echoPin 8
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.begin(16, 2);
lcd.print(“electronics”);
lcd.setCursor(0, 1);
lcd.print(“project.org”);
delay(2000);
lcd.clear();
lcd.print(“Welcome To”);
lcd.setCursor(0, 1);
lcd.print(“Distnance Meter”);
delay(2000);
lcd.clear();
lcd.print(“Designed by:”);
lcd.setCursor(0, 1);
lcd.print(“ElectronicsProject”);

}

void loop() {
int timetaken, dist;
lcd.clear();
lcd.print(“Distance in CM:”);
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
timetaken = pulseIn(echoPin, HIGH);
dist = (timetaken/2) * 0.034049 ;
if (dist >= 300 || dist <= 0){
lcd.setCursor(0, 1);
lcd.print(“Out Of Range”);
}
else
{
lcd.setCursor(0, 1);
lcd.print(dist);
}
delay(500);
}

 

Theory:

Here , we are going to calculate the distance of the sensor and any object in front of it. 

At t1 we send the trigger signal , and at t2 we get the echo.

so dt = t2-t1

And as dt is the time for the sound taken to reach to the object and return back;

The exact time taken by the sound to reach the object is : dt/2

Now , Normal speed of sound is: 340.29 m / s 

And converting it to Centimeters per Micro Seconds gives : 0.034049 CM / microseconds

The actual distance traveled by the sound or the distance between the sensor and the object is:

(dt/2) * 0.034049

Which is the exact formula used in the software.

 

 

 

Have You Say!

Please leave your Suggestions , Feedback , queries and comments through the comment section below. We will do our best to reply to your comment within 12-24 hours.
P.S. Emails regarding project helps will be strictly ignored ; so please use this Comment form instead.

Speak Your Mind