LamaPLC: HC-SR04 Ultrasonic Sensor Module

HC SR04 Ultra-Sonic Ranger sensors
This solution has two components: a speaker that sends out sound pulses and a microphone that detects their reflections. The distance is computed from the time delay between emission and detection, assuming the speed of sound.

HC-SR04
The HC-SR04 ultrasonic sensor module is a widely used, affordable sensor popular among hobbyists for electronics projects with Arduino and Raspberry Pi, enabling non-contact distance measurement and obstacle detection. It uses sonar to measure distance by timing how long sound waves take to reflect back.

Key Specifications

  • Operating Voltage: 5V DC
  • Operating Current: 15mA
  • Ranging Distance: 2cm to 400cm (4m)
  • Accuracy: Up to 0.3cm, though some real-world tests suggest around 1cm
  • Measuring Angle: Less than 15 degrees in a cone
  • Ultrasonic Frequency: 40kHz
  • Dimensions: Approximately 45mm x 20mm x 15mm

If you'd like to support the development of the site with the price of a coffee — or a few — please do so here.

Here's a handy tip: you can quickly save this page as a PDF by clicking “export to PDF” in the menu on the right side of the screen.

2026/02/14 22:38

Arduino & HC-SR04

  • VCC: Power supply (5V DC)
  • Trig (Trigger): Input pin to trigger the ultrasonic burst
  • Echo: Output pin that produces a pulse proportional to the time taken for the echo to return
  • GND: Ground

To operate the sensor, a microcontroller (like an Arduino) must provide a 10-microsecond (µS) high-level pulse to the Trig pin. The module then automatically sends out an 8-cycle burst of ultrasound at 40 kHz and raises the Echo pin to a high state. The duration of this high-level signal on the Echo pin is the time the sound waves took to travel to the object and back.

The distance can be calculated using the formula:
Distance in cm = (Duration of Echo pulse in µS / 58)

const int trigPin = 9;
const int echoPin = 10;
 
float duration, distance;
 
void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}
 
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
 
  duration = pulseIn(echoPin, HIGH);
  distance = (duration*.0343)/2;
  Serial.print("Distance: ");
  Serial.println(distance);
  delay(100);
}

This page has been accessed for: Today: 1, Until now: 17