HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding
In deze handleiding leer je hoe de HC-SR04 ultrasonische sensor werkt en hoe je hem gebruikt met Arduino. Dit is de populairste sensor voor afstandmeting en obstakelvermijdende robots.
Ik heb de HC-SR04 al in verschillende projecten gebruikt:
- Arduino Radar (Sonar)
- Afstandsmeter en Digitale Waterpas
- Beveiligings- en Alarmsysteem
- Arduino Mier Hexapod Robot
Bekijk de video of lees de handleiding met specificaties, pinout, schemas, codes en meer.
HC-SR04 Hardware Overzicht
De HC-SR04 is een betaalbare, gebruiksvriendelijke afstandsensor met bereik 2cm–400cm (~1 inch–13 ft).
De sensor heeft twee ultrasonische transducers: een zender (ultrasoon pulsen) en een ontvanger (gereflecteerde golven). Het is eigenlijk een SONAR zoals in onderzeeboten.

Hoofdspecificaties:
| Werkspanning | 5V DC |
| Werkstroom | 15mA |
| Frequentie | 40kHz |
| Min Bereik | 2cm / 1 inch |
| Max Bereik | 400cm / 13 ft |
| Nauwkeurigheid | 3mm |
| Meethoek | <15° |
| Afmetingen | 45 x 20 x 15mm |
HC-SR04 Pinout
De sensor heeft 4 pinnen:

VCC en GND → Arduino 5V en GND. Trig en Echo → willekeurige digitale Arduino-pinnen. Via Trig sturen we de ultrasoongolf; via Echo luisteren we naar reflectie.
Hoe de HC-SR04 Werkt
De sensor zendt ultrasoon uit bij 40.000 Hz. Bij een object reflecteert de golf. Uit de looptijd en geluidssnelheid bereken je de afstand.

Om ultrasoon te genereren: zet Trig 10µs HIGH. Dit stuurt een 8-cyclische ultrasoonburst uit (geluidssnelheid). Echo gaat direct HIGH na de burst en wacht op reflectie.
Geen object? Echo time-out na 38ms → LOW. Object gedetecteerd? Echo gaat eerder LOW. Uit de tijd dat Echo HIGH was, bereken je de afstand.

Formule: Afstand = Snelheid × Tijd
We kennen beide: tijd = Echo HIGH-duur, snelheid = 340 m/s. Deel door 2 (heen-en-terug).

Voorbeeld: Echo HIGH voor 2ms. Snelheid 340 m/s = 34 cm/ms.
Afstand = (34 cm/ms × 2ms) / 2 = 34 cm.
(Let op: in de originele tekst stond 1.5ms in de berekening, maar 2ms geeft 34cm. De code gebruikt duration * 0.034 / 2 wat klopt voor µs.)
HC-SR04 aan Arduino Aansluiten

GND en VCC van module → Arduino GND en 5V. Trig en Echo → digitale I/O pinnen.
Benodigd: HC-SR04, Arduino Board, Breadboard en Jumper Draden.
HC-SR04 Arduino Code
/* Ultrasonic Sensor HC-SR04 en Arduino Tutorial
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// Wis trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Genereer ultrasoon: 10µs HIGH
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lees echoPin: looptijd in µs
duration = pulseIn(echoPin, HIGH);
// Bereken afstand (cm)
distance = duration * 0.034 / 2;
// Print op Serial Monitor
Serial.print("Afstand: ");
Serial.println(distance);
}
Code Uitleg
Definieer Trig/Echo pinnen (9, 10). Variabelen: duration (long) voor looptijd, distance (int) voor afstand.
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
setup(): trigPin = OUTPUT, echoPin = INPUT, seriële communicatie 9600 baud.
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
loop(): eerst trigPin LOW (2µs), dan 10µs HIGH voor ultrasoonburst.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pulseIn(echoPin, HIGH) meet de HIGH-duur (µs) en stopt bij LOW (reflectie ontvangen). Resultaat in duration.
duration = pulseIn(echoPin, HIGH);
Afstand = duration * 0.034 / 2 (0.034 = 340 m/s in cm/µs). Print resultaat.
distance = duration * 0.034 / 2;
Serial.print("Afstand: ");
Serial.println(distance);
Arduino Ultrasonische Sensor en LCD Display
Meetafstand weergeven op LCD in plaats van Serial Monitor.

Aansluiting sensor + LCD:

Code (gebruikt LiquidCrystal bibliotheek):
/* Ultrasonic Sensor HC-SR04 en Arduino met LCD
* by Dejan Nedelkovski, www.HowToMechatronics.com
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch;
void setup() {
lcd.begin(16, 2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.034 / 2;
distanceInch = duration * 0.0133 / 2;
lcd.setCursor(0, 0);
lcd.print("Afstand: ");
lcd.print(distanceCm);
lcd.print(" cm");
delay(10);
lcd.setCursor(0, 1);
lcd.print("Afstand: ");
lcd.print(distanceInch);
lcd.print(" inch");
delay(10);
}
Voorbeeld met NewPing Bibliotheek
Simpeler en beter: NewPing bibliotheek. Eén regel voor afstand.
#include <NewPing.h>
#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400 // Max afstand in cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50); // 50ms tussen pings (~20/sec, min 29ms)
int distance = sonar.ping_cm(); // Afstand in cm (0 = buiten bereik)
Serial.print("Afstand: ");
Serial.print(distance);
Serial.println("cm");
}
ping_cm() geeft cm, ping_in() inches. Nuttig: ping_median(iteraties[, max_cm]) voor mediaan van meerdere metingen (standaard 5), retourneert pulsduur in µs.
Nauwkeurigheid Verbeteren met DHT22 Temperatuursensor
HC-SR04 is redelijk nauwkeurig, maar geluidssnelheid hangt af van temperatuur (en luchtvochtigheid). Bij 20°C ≈ 340 m/s, bij -20°C ≈ 315 m/s.
Temperatuurcompensatie formule:
Snelheid = 331.4 + 0.6 × Temperatuur + 0.0124 × Relatieve_Vochtigheid

Combineer HC-SR04 met DHT11/DHT22 voor temperatuur/vochtigheid meting en compenseer geluidssnelheid.
Arduino Code met Temperatuurcompensatie
/* Voorbeeld met DHT22 compensatie
* by Dejan, How To Mechatronics
*/
#include <NewPing.h>
#include "dht.h" // https://github.com/RobTillaart/DHTlib
#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400
#define dht22 5 // DHT22 pin
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
dht DHT;
int readDHT, temp, hum;
float speedOfSound, distance, duration;
void setup() {
Serial.begin(9600);
}
void loop() {
delay(100);
// Lees temperatuur en vochtigheid
readDHT = DHT.read22(dht22);
temp = DHT.temperature;
hum = DHT.humidity;
// Bereken geluidssnelheid (m/s)
speedOfSound = 331.4 + (0.6 * temp) + (0.0124 * hum);
// Meet duur (mediaan van 10 metingen)
duration = sonar.ping_median(10); // µs
duration = duration / 1000000.0; // µs → seconden
// Bereken afstand
distance = (speedOfSound * duration) / 2;
distance = distance * 100; // m → cm
Serial.print("Afstand: ");
Serial.print(distance);
Serial.println("cm");
}
Eerst temperatuur/vochtigheid lezen, geluidssnelheid berekenen, duur meten (mediaan), omrekenen naar seconden, afstand berekenen in cm.
HC-SR04 Afmetingen en 3D Model
3D-model beschikbaar op Thangs.

Afmetingen (kunnen per fabrikant iets afwijken):

Conclusie
Alles behandeld over HC-SR04 met Arduino. Geweldige sensor voor contactloze afstandmeting, aanwezigheidsdetectie, niveaumeting, positionering.
Andere coole projecten met HC-SR04:
- Contactloze Automatische Sensor Prullenbak
- Handgebaar Slimme Lichtbesturing
- Mini Akoestische Levitatie
- Obstakelvermijdende Robot
Vragen? Reacties hieronder. Bekijk mijn 30+ Arduino Projecten.
Productieproces
- HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
- Een HC-SR04 ultrasone sensor verbinden met een Raspberry Pi – Een praktische gids
- DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Compact Arduino Radarsysteem met HC-SR04 Ultrasonische Sensor & 1.8" Display
- Bouw een Ultrasonische Afstandsdetector met Arduino UNO en SR04-sensor
- Arduino Ultrasonische Afstands- & Temperatuurmeter met LCD Alarm voor Watertanks
- MKR1000 met DHT22: Realtime temperatuur‑ en vochtigheidsmonitoring naar Azure
- HC-SR04 Ultrasonische Sensor: Hoe Het Werkt en Belangrijkste Toepassingen
- Arduino Sensoren: Typen, Toepassingen en Real-World Projecten