Ultrasonic Module

From Wiki
Jump to: navigation, search

An upgraded ultrasonic module – improved properties and performance in various aspects
Ultrasonic .jpg
Ultrasonic ranging module HC - SR04 provides 2cm - 700cm non-contact measurement function, the ranging accuracy can reach to 3mm.Ensured stable signal within 5m, gradually faded signal outside 5m till disappearing at 7m position.
The modules includes ultrasonic transmitters, receiver and control circuit. The basic principle of work:
(1) Using IO trigger for at least 10us high level signal;
(2) The Module automatically sends eight 40 kHz and detect whether there is a pulse signal back.
(3) IF the signal back, through high level , time of high output IO duration is the time from sending ultrasonic to returning. Test distance = (high level time×velocity of sound (340M/S) / 2.

Pin Function

TRIG: Trigger Pulse Input
ECHO: Echo Pulse Output
GND: Ground
VCC: 5V Supply


Working Voltage DC5V
Working Current 16mA
Working Frequency 40Hz
Max Range 700cm, Ensured stable signal within 5m, gradually faded signal outside 5m till disappearing at 7m position.
Min Range 2cm
Trigger Input Signal 10uS TTL pulse
Echo Output Signal Input TTL lever signal and the range in proportion
Dimension 46x20.5x15 mm


The Timing diagram is shown below. You only need to supply a short 10uS pulse to the trigger input to start the ranging, and then the module will send out an 8 cycle burst of ultrasound at 40 kHz and raise its echo. The Echo is a distance object that is pulse width and the range in proportion .You can calculate the range through the time interval between sending trigger signal and receiving echo signal. Formula: uS / 58 = centimeters or uS / 148 =inch; or: the range = high level time * velocity (340M/S) / 2; we suggest to use over 60ms measurement cycle, in order to prevent trigger signal to the echo signal.

Test Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define Echo 11 //Echo connnect to pin11
#define Trig 12 //Trig connect to pin12
unsigned long rxTime; //define a variable
float distance; 
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() 
  // put your setup code here, to run once:
  Serial.begin(115200); //set the baud rate of serial monitor
  lcd.init();                      // initialize the lcd

  // Print a message to the LCD.
  lcd.backlight(); //turn o the backlight
  lcd.setCursor(0, 0); //set the cursor on 0 row,0 col
  lcd.print("Ping:"); //print the "Ping: "on the LCD

void loop()
  // Generates a pulse
  digitalWrite(Trig, HIGH);
  digitalWrite(Trig, LOW);
  rxTime = pulseIn(Echo, HIGH); //read the Receive time
  //  Serial.print("rxTime:");
  //  Serial.println(rxTime);
  distance = (float)rxTime * 34 / 2000.0; //Converted into a distance ,cm
  if(distance < 800 ) //filter interference signal
    Serial.print(distance); //print it the distance in serial monitor
    lcd.setCursor(6, 0);
    lcd.print(distance);//print it in LCD1602


Test CodeZIP.jpg
SGM324YS14 datasheetPDF.jpg