Hardware
Met deze sensor kun je afstanden meten van 2 tot 450 centimeter met een hoek van niet meer dan 15 graden.
Specificaties:
- Voltage: 5V(DC)
- Verbruik: Minder dan 2mA.
- Output signal: Eletrisch frequentie signaal (hoog = 5V, LAAG = 0V).
- Sensor hoek: Niet meer dan 15 graden.
- Detectieafstand: 2cm-450cm.
- Precisie: tot 0.3cm
- Ingang trigger signaal: 10us TTL impuls
- Echo signaal : uitgang TTL PWL signaal
Pinout
Pin: | Functie: |
---|---|
01 | +5V |
02 | Trigger |
03 | Echo |
04 | GND |
Informatie
Het werkt als volgt, op de triggerpin moet voor 10 us een hoog signaal staan, daarna gaat het piezzo element een signaal uitzenden van 8×40 kHz.
Nadat het signaal is uitgezonden, gaat het 2e piezzo element “luisteren” naar het uitgezonden signaal (pin echo), met de tijd daartussen kan de afstand bepaald worden.
Een voorbeeld:
De snelheid van geluid door lucht is ca. 340 m/s of 29 microseconden (us) per centimeter, dus de formule is
Aantal CM = TIJD / 29
Maar omdat het signaal “heen” is gezonden en weer terug komt, moeten we de tijd delen door 2, de uiteindelijke formule is dan:
Aantal CM = TIJD / 29 / 2
Aansluiten op de Arduino
Sluit de HC-SR04 aan zoals aangegeven op onderstaand schema:
Arduino pin: | HC-SR04 pin: |
---|---|
+5v | +5V |
D2 | 02 (trigger) |
D4 | 03 (echo) |
GND | GND |
Script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Arduino pinnnen configureren const int trigPin = 2; const int echoPin = 4; void setup() { // Zet IN- en UITgang voor digitale pinnen pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Seriele poort aanzetten Serial.begin(9600); } void loop() { // Variabelen configureren long tijd, cm; // De sensor wordt getriggerd bij 10 us, geef eerst een lage puls om een schone hoge puls te krijgen digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Wacht op een hoge puls en meet de tijd tijd = pulseIn(echoPin, HIGH); // De formule om tijd in afstand om te zetten cm = tijd / 29 / 2; // Print de gegevens naar de seriële monitor Serial.print("afstand in cm: "); Serial.print(cm); Serial.println(); delay(100); } |
Resultaat