Ultraschallsensor (HC-SR04)
Ultraschallmodule kennen wir vor allem von der Einparkhilfe am Auto. Ein 40kHz für den Menschen unhörbarer Ultraschallimpuls wird ausgesendet. Trifft dieser auf ein Hindernis wird er dort reflektiert und kommt zurück zur Sensoreinheit und wird dort wieder detektiert. In dem Sensor ist die gesamte Auswerteelektronik bereits integriert. Sobald der Schall auf Reisen geht wird die Zeit gemessen bis der Schall wieder zum Sensor zurückkommt. Die vom Ultraschall benötigte Zeit wird auf dem ECHO Pin als HIGH Pegel 1:1 ausgegeben.
Im Arduino-Sketch muss der vom Sensor auf dem Echo-Pin gesendete HIGH-Pegel gemessen werden. Die gemessenen Zeit ist dann die vom Schall benötigte Zeit für den Hin- und Rückweg. Um die Entfernung zu bestimmen muss also die halbe Strecke mit der Schallgeschwindigkeit (343,2 m/s) multipliziert werden.
Schaltung und Programmcode
#define TRIGGER 7
#define ECHO 6
long dauer = 0;
long entfernung = 0;
void setup() {
Serial.begin (9600);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
// Trigger Signal für 10 ms senden
digitalWrite(TRIGGER, HIGH);
delay(10);
digitalWrite(TRIGGER, LOW);
// messen der zeit auf dem ECHOpin in der HIGH anliegt
dauer = pulseIn(ECHO, HIGH);
// umrechnen halben Strecke mit der Schallgeschwindigkeit
entfernung = (dauer / 2) * 0.03432;
// Entfernungen > 5m und Messfehler ignorieren
if (entfernung >= 500 || entfernung <= 0)
{
Serial.println("Kein Messwert");
}
// Messwerte ausgeben
else
{
Serial.print("Pulsdauer: ");
Serial.print(dauer);
Serial.print(" µs Entfernung: ");
Serial.print(entfernung);
Serial.println(" cm");
}
delay(1000);
}