Saturday 15 November 2014

Arduino based distance sensor

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.
Specifications: power supply :5V DC
quiescent current : <2mA
effectual angle: <15°
ranging distance : 2cm – 500 cm


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

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 Ground
* “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: 

Software: Here is a simple version of the software:

       #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:
#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.










No comments:

Post a Comment