Mit dem günstigen Ultraschallsensor HC-SR04 kannst du problemlos kleinere Entfernungen messen und Hindernisse erkennen. Die Vorteile dieses Sensors liegen auf der Hand: Er kostet wenig, ist im Handumdrehen installiert und liefert zuverlässige Ergebnisse.
Aufbau & Funktion
Der Sensor HC-SR04 ist schnell aufgebaut und angeschlossen:
Versorge ihn am Pin VCC von deinem Arduino aus mit 5V und lege die Erde an Gnd.
Dann verbindest du einen Digitalausgang mit dem Trigger (Trig am Sensor) und einen weiteren mit dem Pin Echo.
Der Ultraschallsensor funktioniert ganz simpel: Er bekommt ein Signal (oder eben Trigger) und sendet eine Ultraschallwelle aus. Diese wird dann von dem Objekt oder Hindernis vor dem Sensor reflektiert und vom HC-SR04 wieder empfangen.
Dein Arduino misst nur die Zeit, die zwischen Senden und Empfangen vergangen ist. In deinem Code rechnest du diese Zeitspanne dann in die Entfernung um. Fertig!
Übrigens: Mit dem Sensor kannst du Entfernungen zwischen 2cm und circa 4 Metern messen – ein ganz schönes Stück also.
Hier findest du ein Datenblatt zum HC SR04.
Der Code für den HC-SR04
Du musst nicht viel programmieren, um den HC-SR04 in Gang zu setzen.
Definiere erst einmal ein paar Variablen:
int trigger=7;
int echo=6;
long zeit=0;
long entfernung=0;
Hier legst du zunächst fest, dass die Sensorpins Trig und Echo am Arduino mit den Digitalpins 6 und 7 verbunden sind.
Außerdem brauchst du eine Variable für die Zeit, die zwischen Senden und Empfangen verstrichen ist und eine weitere für die Entfernung, die du hieraus berechnest.
In der Setup-Funktion startest du den Seriellen Monitor und legst die pinModes fest: Der Trigger ist ein OUTPUT, das Echo ein INPUT:
void setup(){
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);}
Die Entfernung messen
Jetzt geht es ans Eingemachte. Du startest die Messung mit einer Schallwelle, misst die Zeit bis zu ihrer Rückkehr zum Sensor und berechnest die Entfernung.
void loop(){
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
zeit = pulseIn(echo, HIGH);
entfernung = (zeit/2) * 0.03432;
Serial.print(entfernung);
Serial.println(" cm");
delay(1000);}
Zunächst setzt du den Trigger für 10 Millisekunden auf HIGH und anschließend wieder auf LOW. Damit sendest du die Schallwelle aus.
Mit der Funktion pulseIn() misst du die Zeit, bis die Schallwelle wieder im Sensor eintrifft und speicherst diese in der Variable zeit.
Mit der Variable entfernung machst du folgendes: Du teilst zunächst die vergangene Zeit durch 2 – denn du möchtest ja nur die Wegstrecke vom Sensor bis zum Hindernis messen. Anschließend multiplizierst du diese Zeit mit der Schallgeschwindigkeit in Zentimeter pro Mikrosekunde.
Nun gibst du nur noch die berechnete Entfernung in deinem Seriellen Monitor aus und limitierst die Messungen per delay() auf eine pro Sekunde.
Hier kommt der vollständige Code:
int trigger=7;
int echo=6;
long zeit=0;
long entfernung=0;
void setup(){
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
}
void loop(){
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
zeit = pulseIn(echo, HIGH);
entfernung = (zeit/2) * 0.03432;
Serial.print(entfernung);
Serial.println(" cm");
delay(1000);
}
In welchen Projekten kannst du den Ultraschallsensor HC SR04 verwenden? Zum Beispiel in einem Fahrzeug, das Hindernissen ausweichen kann. Oder doch nur ganz einfach, um den Abstand zu einem Objekt zu messen. 🙂
In diesem Projekt lernst du, wie du dein eigenes Arduino Theremin baust. Oder doch ein anderer Sensor? Hier lernst du auch, wie du mit dem VL52L0X am Arduino Entfernungen misst.