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. This sensor is widely used in robotics, automation, and obstacle detection systems due to its reliability and ease of use.
The HC-SR04 sensor is designed for precise distance measurement and operates within a specific range of environmental conditions. Below are its key technical details:
Parameter | Value |
---|---|
Operating Voltage | 5V DC |
Operating Current | 15 mA |
Measuring Range | 2 cm to 400 cm (4 meters) |
Measuring Angle | 15° |
Accuracy | ±3 mm |
Ultrasonic Frequency | 40 kHz |
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 a 5V DC source. |
2 | Trig | Trigger pin. A 10 µs HIGH pulse initiates the ultrasonic signal. |
3 | Echo | Echo pin. Outputs a pulse proportional to the distance of the detected object. |
4 | GND | Ground pin. Connect to the ground of the power supply. |
The HC-SR04 sensor is simple to use and can be integrated into a variety of circuits. Below are the steps to use the sensor effectively:
Wiring:
VCC
pin to the 5V pin on the Arduino.GND
pin to the GND pin on the Arduino.Trig
pin to a digital I/O pin (e.g., pin 9).Echo
pin to another digital I/O pin (e.g., pin 10).Arduino Code: Use the following code to measure distance with the HC-SR04 sensor:
// Define pins for the HC-SR04 sensor
const int trigPin = 9; // Trigger pin connected to Arduino pin 9
const int echoPin = 10; // Echo pin connected to Arduino pin 10
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Set pin modes
pinMode(trigPin, OUTPUT); // Trig pin as output
pinMode(echoPin, INPUT); // Echo pin as input
}
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 echo pulse
long duration = pulseIn(echoPin, HIGH);
// Calculate the distance in centimeters
long distance = duration * 0.034 / 2;
// Print the distance to the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Wait before the next measurement
delay(500);
}
Echo
pin to a microcontroller operating at 3.3V logic levels.No Output or Incorrect Readings:
Unstable or Fluctuating Measurements:
Sensor Not Detecting Objects:
Echo Pin Voltage Too High for Microcontroller:
Q1: Can the HC-SR04 measure distances less than 2 cm?
A1: No, the sensor's minimum range is 2 cm. Objects closer than this may not be detected accurately.
Q2: Can I use the HC-SR04 with a 3.3V microcontroller?
A2: Yes, but you must use a logic level shifter or resistor divider for the Echo
pin to avoid damaging the microcontroller.
Q3: How can I improve the accuracy of the sensor?
A3: Use the sensor in a stable environment, avoid obstructions in the detection cone, and ensure proper power supply.
Q4: Can the HC-SR04 detect transparent objects?
A4: The sensor may struggle to detect transparent objects like glass, as ultrasonic waves may pass through or reflect unpredictably.