Auswertung von Ultraschallmodulen

Hier ein weiteres Tutorial, diesmal zur Auswertung von von Ultraschallsensoren vom Typ HC-SR04

Diese Module bestechen durch einen kompakten Aufbau, großen Messbereich sowie eine einfache Ansteuerung und geringen Preis.

Technische Daten
Länge: 43mm
Breite: 20mm
Höhe: 15mm
Messbereich: 2 bis 500cm
Maximale Auflösung: 3mm
Öffnungswinkel: ca. 15 Grad
Betriebsspannung: 5V
Stromverbrauch: 2mA

Allgemeine Funktionsweise
Das Modul verfügt über einen Lautsprecher und ein Mikrofon, sowie einen Taktgeber für 40kHz. Soll eine Messung durchgeführt werden, so wird für kurze Zeit der Lautsprecher mit dem 40kHz Signal besteuert (Trigger) und anschließend darauf gewartet, dass dieses Signal vom Mikrofon (Echo) registriert wird. Über die Formel s = (t * v)/2 kann daraus die Entfernung zum Hindernis bestimmt werden, die vom Schall zurückgelegte Strecke s ist die Zeit t multipliziert mit der Schallgeschwindigkeit v von 344m/s. Da die Entfernung doppelt gemessen wurde, wird das Ergebnis abschließend noch durch 2 geteilt.

Programmaufbau
Bevor im Setup-Bereich die Pinmodes gewählt werden, werden die einzelnen Pins zugewiesen:
int trigger = 30 //Connect the Trigger Pin to digital Pin 30
int echo = 40 //Connect the Echo Pin to digital Pin 40

Die Pins des Ultraschallmodules können selbstverständlich auch mit jedem anderen Digitalen Pin des Arduino verbunden werden, dies muss dann natürlich oben auch entsprechend geändert werden.
Danach wird im Setup festgelegt, ob der Pin ein Input oder Output ist
void setup()
{
pinMode(trigger, OUTPUT); //The Trigger becomes a Output
pinMode(echo, INPUT); //The Echo becomes a Input

Serial.begin(9600); //Serial Connection to the Computer with 9600 Baud
}

Jetzt kann mit dem eigentlichen Programm begonnen werden:

void loop() //this block will run through an through until you disconnect the controller
{
digitalWrite(trigger, LOW); //The Trigger is set LOW
delayMicroseconds(2); //Continue after 2μs
digitalWrite(trigger, HIGH); //The Trigger is set HIGH
delayMicroseconds(10); //Send the 40kHz Signal
digitalWrite(trigger, LOW); // The Trigger is set LOW
int time = pulseIn(echo, HIGH); //Count the time in μs until the Echo Pin becomes HIGH
int distance = time / (29/2); //The distance
Serial.print("Die Entfernung ist "); //Prints to the Serial Console
Serial.print(distance); //Prints the distance to the Serial Console
Serial.println(" cm"); //Prints to the Serial Console and also a new line
}

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s