Sensor – HC-SR04 – Ultrasone sensor
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
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
Pinout
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
Raspberry Pi
Sluit de HC-SR04 aan zoals aangegeven op onderstaand schema:
Raspberry pi pin: | HC-SR04 pin: |
---|---|
+5v | +5V |
GPIO 23 | 02 (trigger) |
GPIO 24 | - Via R=330ohm naar 03 (echo) - Via R=470ohm naar GND |
GND | GND |
Script
Dit script leest de HC-SR04 sensor uit en geeft de afstand weer in de console:
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#Libraries import RPi.GPIO as GPIO import time #GPIO Mode (BOARD / BCM) GPIO.setmode(GPIO.BCM) #set GPIO Pins GPIO_TRIGGER = 23 GPIO_ECHO = 24 #set GPIO direction (IN / OUT) GPIO.setup(GPIO_TRIGGER, GPIO.OUT) GPIO.setup(GPIO_ECHO, GPIO.IN) def distance(): # set Trigger to HIGH GPIO.output(GPIO_TRIGGER, True) # set Trigger after 0.01ms to LOW time.sleep(0.00001) GPIO.output(GPIO_TRIGGER, False) StartTime = time.time() StopTime = time.time() # save StartTime while GPIO.input(GPIO_ECHO) == 0: StartTime = time.time() # save time of arrival while GPIO.input(GPIO_ECHO) == 1: StopTime = time.time() # time difference between start and arrival TimeElapsed = StopTime - StartTime # multiply with the sonic speed (34300 cm/s) # and divide by 2, because there and back distance = (TimeElapsed * 34300) / 2 return distance try: while True: dist = distance() print ("Measured Distance = %.1f cm" % dist) time.sleep(1) # Reset by pressing CTRL + C except KeyboardInterrupt: print("Measurement stopped by User") GPIO.cleanup() |
Start het script met: sudo python hcsr04.py
Resultaat:
1 2 3 4 5 6 7 |
Measured Distance = 7.4 cm Measured Distance = 8.3 cm Measured Distance = 6.7 cm Measured Distance = 6.3 cm Measured Distance = 7.6 cm Measured Distance = 11.1 cm Measured Distance = 11.9 cm |
Bronnen:
tutorials-raspberrypi.com
raspberrypi-spy.co.uk
modmypi.com
electrosome.com
Schema
Teardown
GEEN GEGEVENS
Datasheet
Fritzing
Fritzing – HC-SR04 Ultrasonic sensor
Bron: https://sites.google.com/site/marcobotprojects/fritzing/hcsr04rangefinder?overridemobile=true
Downloads
GEEN GEGEVENS