Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

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.

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

Hoofdspecificaties:

Werkspanning5V DC
Werkstroom15mA
Frequentie40kHz
Min Bereik2cm / 1 inch
Max Bereik400cm / 13 ft
Nauwkeurigheid3mm
Meethoek<15°
Afmetingen45 x 20 x 15mm

HC-SR04 Pinout

De sensor heeft 4 pinnen:

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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.

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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.

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

Formule: Afstand = Snelheid × Tijd

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

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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.

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

Aansluiting sensor + LCD:

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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.

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

Afmetingen (kunnen per fabrikant iets afwijken):

HC-SR04 Ultrasonische Sensor met Arduino: Complete Handleiding

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

  1. HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
  2. Een HC-SR04 ultrasone sensor verbinden met een Raspberry Pi – Een praktische gids
  3. DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
  4. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  5. Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
  6. Compact Arduino Radarsysteem met HC-SR04 Ultrasonische Sensor & 1.8" Display
  7. Bouw een Ultrasonische Afstandsdetector met Arduino UNO en SR04-sensor
  8. Arduino Ultrasonische Afstands- & Temperatuurmeter met LCD Alarm voor Watertanks
  9. MKR1000 met DHT22: Realtime temperatuur‑ en vochtigheidsmonitoring naar Azure
  10. HC-SR04 Ultrasonische Sensor: Hoe Het Werkt en Belangrijkste Toepassingen
  11. Arduino Sensoren: Typen, Toepassingen en Real-World Projecten