Arduino & Ultrasonic Sensor Based Distance Measurement

Arduino

BySaddam 47

Distance Measurement using Arduino & Ultrasonic Sensor

Ultrasonic sensors are great tools to measure distance without actual contact and used at several places like water level measurement, distance measurement etc. This is an efficient way to measure small distances precisely. In this project we have used an Ultrasonic Sensor to determine the distance of an obstacle from the sensor. Basic principal of ultrasonic distance measurement is based on ECHO. When sound waves are transmitted in environment then waves are return back to origin as ECHO after striking on the obstacle. So we only need to calculate the travelling time of both sounds means outgoing time and returning time to origin after striking on the obstacle. As speed of the sound is known to us, after some calculation we can calculate the distance.   

 

Components Used

  1. Arduino Uno or Pro Mini
  2. Ultrasonic sensor Module
  3. 16x2 LCD
  4. Scale
  5. Bread board
  6. 9 volt battery
  7. Connecting wires

 

Ultrasonic Sensor Module

Ultrasonic sensor HC-SR04 is used here to measure distance in range of 2cm-400cm with accuracy of 3mm. The sensor module consists of ultrasonic transmitter, receiver and the control circuit. The working principle of ultrasonic sensor is as follows:

  1. High level signal is sent for 10us using Trigger.
  2. The module sends eight 40 KHz signals automatically, and then detects whether pulse is received or not.
  3. If the signal is received, then it is through high level. The time of high duration is the time gap between sending and receiving the signal.

Distance= (Time x Speed of Sound in Air (340 m/s))/2

Ultrasonic Sensor HC- SR04

Timing Diagram

The module works on the natural phenomenon of ECHO of sound. A pulse is sent for about 10us to trigger the module. After which the module automatically sends 8 cycles of 40 KHz ultrasound signal and checks its echo. The signal after striking with an obstacle returns back and is captured by the receiver. Thus the distance of the obstacle from the sensor is simply calculated by the formula given as

            Distance= (time x speed)/2.

Here we have divided the product of speed and time by 2 because the time is the total time it took to reach the obstacle and return back. Thus the time to reach obstacle is just half the total time taken.

Ultrasonic sensor timing diagram

Circuit Diagram and Explanation

Distance Measurement using Arduino & Ultrasonic Sensor Circuit

The circuit diagram for arduino and ultrasonic sensor is shown above to measure the distance. In circuit connections Ultrasonic sensor module’s “trigger” and “echo” pins are directly connected to pin 18(A4) and 19(A5) of arduino. A 16x2 LCD is connected with arduino in 4-bit mode. Control pin RS, RW and En are directly connected to arduino pin 2, GND and 3. And data pin D4-D7 is connected to 4, 5, 6 and 7 of arduino.

 

First of all we need to trigger the ultrasonic sensor module to transmit signal by using arduino and then wait for receive ECHO. Arduino reads the time between triggering and Received ECHO. We know that speed of sound is around 340m/s. so we can calculate distance by using given formula:

Distance= (travel time/2) * speed of sound

Where speed of sound around 340m per second.

A 16x2 LCD is used for displaying distance.

Find more about the working of distance measurement project in this tutorial: Distance measurement using ultrasonic sensor.

Distance Measurement using Arduino & Ultrasonic Sensor

 

Arduino Ultrasonic Code for Distance Measurement

In code we read time by using pulseIn(pin). And then perform calculations and displayed result on 16x2 LCD by using appropriate functions.

Distance measurement program

Code

#include <LiquidCrystal.h>
 
#define trigger 18
#define echo 19
 
LiquidCrystal lcd(2,3,4,5,6,7);
 
float time=0,distance=0;
 
void setup()
{
 lcd.begin(16,2);
 pinMode(trigger,OUTPUT);
 pinMode(echo,INPUT);
 lcd.print(" Ultra sonic");
 lcd.setCursor(0,1);
 lcd.print("Distance Meter");
 delay(2000);
 lcd.clear();
 lcd.print(" Circuit Digest");
 delay(2000);
}
 
void loop()
{
 lcd.clear();
 digitalWrite(trigger,LOW);
 delayMicroseconds(2);
 digitalWrite(trigger,HIGH);
 delayMicroseconds(10);
 digitalWrite(trigger,LOW);
 delayMicroseconds(2);
 time=pulseIn(echo,HIGH);
 distance=time*340/20000;
 lcd.clear();
 lcd.print("Distance:");
 lcd.print(distance);
 lcd.print("cm");
 lcd.setCursor(0,1);
 lcd.print("Distance:");
 lcd.print(distance/100);
 lcd.print("m");
 delay(1000);
}

 

Video

Get Our Weekly Newsletter!

Subscribe below to receive most popular news, articles and DIY projects from Circuit Digest

Comments

  • Htoo's picture
    Htoo
    Oct 18, 2015

    Can you give me a distance meter flow chart.

  • Dan's picture
    Dan
    Jan 11, 2016

    nice work.. i just have one query
    can you tell me the calculation of (voltage change per distance?)
    reply me at []
    thanks

  • varun's picture
    varun
    Feb 03, 2016

    i need this copy

  • MOHANKUMAR's picture
    MOHANKUMAR
    Feb 20, 2016

    i want to know the arduino model

  • saddam khan's picture
    saddam khan
    Feb 25, 2016

    I think you should read the arduino.cc page for more about arduino.

  • Abhishek's picture
    Abhishek
    Feb 27, 2016

    Its Arduino Pro Mini, as mentioned in Components section.

  • mark's picture
    mark
    Apr 12, 2016

    can anyone put the link to buy arduino pro mini and IR sensor used here??? plzz help

  • umesh's picture
    umesh
    Apr 22, 2016

    i need complete detailed calculation of distance

  • dennis 's picture
    dennis
    May 09, 2016

    can you program the measurement sensor to power a motor at a particular distance for a short period of time

  • Nitin kumar's picture
    Nitin kumar
    May 18, 2016

    Hi,

    i am also implement this type of projects but real time problem is how to mobile no is store through sms.
    and send the sms from gsm your mobile no is registered. second problem tx /rx pin. what pin are using tx and rx . Nobody can entered the this type of sms because sms is tool long .

    command:

    Tv On tv off
    on off
    like another message.
    after send the sms through the mobile then sms memory is full how to delete the sms memory after gsm read the message . pl use eeprom header and use the eeprom memory in ardunio. then store the mobile no and you can easily change mobile no .

  • harish's picture
    harish
    May 18, 2016

    HOW TO CURRENT SUPPLY TO PRO MINI

  • harish's picture
    harish
    May 19, 2016

    i am already programme the arduino pro mini using arduino uno board
    uno rest to pro mini rest button
    uno vcc to pro mini vcc button
    uno gnd to pro mini gnd button
    uno tx and rx to pro mini txo and rxi button
    it is correct or not sir

    another one thing is my pro mini board consists
    A6 and A7 pin
    but in circuit diagram pro mini board consists a A4, A5 pin
    it is correct or not
    pls tell that sir

  • Maddy's picture
    Maddy
    May 21, 2016

    You can connect to A6 and A7 but then define the Trigger and 'echo' pin accordingly.

  • harish's picture
    harish
    May 23, 2016

    project is success sir thank you for your response
    but in this programme [340/20000]. how its possible
    because in explanation is 340/2
    but it is not use in the progromme why sir

  • sanvi's picture
    sanvi
    Nov 11, 2017

    I need one help to u
    am doing final year project please give some ideas harish

  • Len's picture
    Len
    Jun 08, 2018

    - Travel time = PulseIn(), gives results in microseconds. This has to be converted to seconds, therefore divide by 1,000,000 (1s = 1000000us).
    - The distance measure we want to display in cm instead of m. Therefore, multiply by 1000 (1m =1000cm).

    This result in: (340/2)/(1000000)*(1000) = 340/20000

  • harish 's picture
    harish
    Sep 12, 2016

    digitalWrite(trigger,LOW);
    delayMicroseconds(2);
    digitalWrite(trigger,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigger,LOW);
    delayMicroseconds(2);

    pls tell meaning of the lines sir
    i don't know sir

  • Cherish's picture
    Cherish
    Sep 30, 2016

    Why does this project use Arduino Pro Mini and all I was seeing from YouTube and other sites are Arduino Mega or Arduino Uno. Is there a significant difference? Does the code above really works?

  • Abhishek's picture
    Abhishek
    Oct 06, 2016

    You can use any model, Code will work in all of them. Further Arduino Pro Mini is small in size and generally used on PCBs because of its size.

  • akash's picture
    akash
    Oct 17, 2016

    Hey if I use ultrasonic sensor for moving robot then how it will be calculate the distance?????

  • Ko's picture
    Ko
    Nov 06, 2016

    Hi
    i read your article
    im curious about how to measure inclined plane
    with inclined plane distance data has an error
    do u know method to modify this problem?

  • unknown's picture
    unknown
    Dec 10, 2016

    we are making this project and our teacher asked if what is scale?

  • Che's picture
    Che
    Dec 11, 2016

    Hai
    We are planning to make this project and our teacher asked what is the used of Scale because it is in the components thanks.

  • Maddy's picture
    Maddy
    Jan 28, 2017

    Scale is used to verifying the distance, check video.

  • thala mathi(vaalu)'s picture
    thala mathi(vaalu)
    Jan 05, 2017

    its a mind blowing project....therikka vitutinga...

  • hyung's picture
    hyung
    Feb 03, 2017

    What should be the possible program and circuit if centimeter will change to feet?

  • حسن's picture
    حسن
    Jun 19, 2017

    can i trans output of this sensor to 4 -20 mA?

  • sanvi's picture
    sanvi
    Nov 11, 2017

    Please give some ideas about projects any concepts you guys know please share it now for final year project

  • AISHA's picture
    AISHA
    Nov 14, 2017

    Sanvi there are lots of projects here, you can choose anything you like.... Also check the featured projects on the bottom of the page

  • sarath's picture
    sarath
    Jan 08, 2018

    I’d like to measure human heights in clinic. Is this sensor sensitive to hair? I mean it is important to measure exact height in this case which requires measuring height till the end of skull also to prevent error occurs by hair. I mean height shouldn’t be dependent to hairstyle. can this ultrasonic sensor help me?

  • Aswinth Raj's picture
    Aswinth Raj
    Jan 09, 2018

    No sarath, This sensor will be reflected by hair. I cannot think of any sensor that could measure distance past hair.. May be try posting on forum (available on menu on top) and someone might have an answer for you

  • don 's picture
    don
    Jan 13, 2018

    please how can I get the code if I am using a pid as my controller with the Arduino

  • akash's picture
    akash
    Feb 04, 2018

    hi can you tell me whats the model of lcd display used their?

  • pranav kavathekar's picture
    pranav kavathekar
    Mar 12, 2018

    actully its accuracy is very good'and your discreiption and your support made my day thank you ones agian i made some changes for arduino uno

  • ch sai kiran's picture
    ch sai kiran
    Mar 26, 2018

    This site is helping a lot for me to easily understand all the arduino related projects and to do it myself.

  • jim scaria's picture
    jim scaria
    Apr 04, 2018

    im tryn to make a blind stick using arduino nano with buzzer.but there is some error ...can u guyz help me...!
    #include <LiquidCrystal.h>

    #define trigger 12
    #define echo 11
    #define BUZZER 10
    float time=0,distance=0;

    void setup()
    {

    pinMode(trigger,OUTPUT);
    pinMode(echo,INPUT);
    pinMode(BUZZER,OUTPUT);
    }

    void loop()
    {

    digitalWrite(trigger,LOW);
    delayMicroseconds(2);
    digitalWrite(trigger,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigger,LOW);
    delayMicroseconds(2);
    time=pulseIn(echo,HIGH);*
    distance=time*340/20000;
    if(distance<40)
    {
    BUZZER=1;
    }
    else
    {BUZZER=0;}

    delay(1000);
    }

  • michael's picture
    michael
    Apr 05, 2018

    hello, please is it possible to integrate a set of led bulbs to the circuit such that the led bulb comes on with respect to the distance of the obstacle.? if it is possible can someone help me out with the codes?

  • Aswinth Raj's picture
    Aswinth Raj
    Apr 06, 2018

    Yes michael it is possible, just interface the LED's to the GPIO pins of the arduino. And add in the program to read the value of distance and make the pins high 

  • banti kumar's picture
    banti kumar
    Apr 07, 2018

    hay..i am machanical engg....but interest in electrical & electronic..i see in u tube-ultrasonic ,leaser distance project.. i want know that --can i measured in micron or milimeter in dacimal just like 0.1 mm insteed centimeter..secondry i want measured a wheel center out or runout radial not wheel diameter measure. is this possible to check by ardino project..if yes so please share step by step on my email.id

  • S Girish's picture
    S Girish
    Jul 13, 2018

    Can anyone please tell me the cost of project approximately

  • Paree's picture
    Paree
    Jul 15, 2018

    What changes do I need to make for the code if I do not have an LCD and just want the distance recorded on serial monitor

  • Iftekhar's picture
    Iftekhar
    Aug 17, 2018

    Can u explain me what is the use of Potentiometer when we are using a Arduino uno/Why potentiometer is used inthe circuit??

Log in or register to post Comment