

The HC-SR04 is an ultrasonic distance sensor that uses sonar to measure the distance to an object. It emits ultrasonic waves and calculates the time it takes for the echo to return, providing accurate distance measurements typically ranging from 2 cm to 4 meters. This sensor is widely used in robotics, obstacle detection, and distance measurement applications due to its simplicity, affordability, and reliability.








The HC-SR04 sensor operates by emitting ultrasonic waves at a frequency of 40 kHz and measuring the time it takes for the echo to return. Below are the key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 5V DC |
| Operating Current | 15 mA |
| Measuring Range | 2 cm to 400 cm |
| Measuring Angle | 15° |
| Ultrasonic Frequency | 40 kHz |
| Resolution | 0.3 cm |
| Trigger Input Signal | 10 µs TTL pulse |
| Echo Output Signal | Pulse width proportional to distance |
| Dimensions | 45 mm x 20 mm x 15 mm |
The HC-SR04 sensor has four pins, as described in the table below:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply pin. Connect to 5V DC. |
| 2 | Trig | Trigger pin. Send a 10 µs HIGH pulse to initiate distance measurement. |
| 3 | Echo | Echo pin. Outputs a pulse whose width corresponds to the measured distance. |
| 4 | GND | Ground pin. Connect to the ground of the power supply. |
Below is an example of how to use the HC-SR04 sensor with an Arduino UNO:
// Define pins for the HC-SR04 sensor
const int trigPin = 9; // Trig pin connected to digital pin 9
const int echoPin = 10; // Echo pin connected to digital pin 10
void setup() {
pinMode(trigPin, OUTPUT); // Set Trig pin as output
pinMode(echoPin, INPUT); // Set Echo pin as input
Serial.begin(9600); // Initialize serial communication at 9600 baud
}
void loop() {
// Send a 10 µs HIGH pulse to the Trig pin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Measure the duration of the HIGH pulse on the Echo pin
long duration = pulseIn(echoPin, HIGH);
// Calculate the distance in centimeters
float distance = duration * 0.034 / 2; // Speed of sound is ~0.034 cm/µs
// Print the distance to the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500); // Wait for 500 ms before the next measurement
}
pulseIn() function measures the duration of the HIGH pulse on the Echo pin.No Output or Incorrect Readings
Constant Maximum Distance (400 cm)
Fluctuating Readings
Echo Pin Voltage Too High
Q: Can the HC-SR04 detect transparent objects?
A: The sensor may struggle to detect transparent objects like glass due to poor ultrasonic wave reflection.
Q: Can I use the HC-SR04 with a 3.3V microcontroller?
A: Yes, but you must use a level shifter or resistor divider for the Echo pin to avoid damaging the microcontroller.
Q: What is the maximum sampling rate of the HC-SR04?
A: The sensor requires a minimum delay of 60 ms between measurements, allowing for a maximum sampling rate of approximately 16 Hz.
Q: How do I improve accuracy?
A: Use a stable power supply, avoid environmental noise, and ensure proper alignment of the sensor.