Startseite

Ultraschall Sensor HC-SR04

Mit diesem Ultraschall Sensor kann man die Distanz zu einem Objekt messen. Der Sensor sendet ein klickendes Geräusch im Ultraschall-Bereich aus, um anschließend die Verzögerung des Echos zu messen. Je größer die Distanz zum nächsten Objekt, umso später kommt das Echo zurück.

Ich bin mit diesem Sensor sehr zufrieden. Er ist mit seinen 2€ pro Stück äußerst preisgünstig und liefert trotzdem zuverlässige stabile Messergebnisse.

Im obigen Aufbau benutze ich ein Arduino Nano Modul, um den Sensor anzusteuern und die Messergebnisse in einem Terminalprogramm auf meinem PC anzuzeigen. Der Sensor ist an Port D2 (Trigger) und D3 (Echo) angeschlossen.

Technische Daten

Der Ausgangs-Impuls beginnt etwa 500µs nach dem Trigger. Seine Länge ist ein Indiz für die Distanz zum nächsten reflektierenden Objekt. Wenn der Sensor kein Echo empfängt, ist der Ausgangsimpuls 38ms lang.

Vor dem nächsten Trigger soll man mindestens 50ms abwarten, um Refexionen des vorherigen Impulses abklingen zu lassen.

Programmierung

Die Programmierung ist ganz simpel: Wenn man so vorgeht, braucht man keine "teure" Division mit Fließkommazahlen.

#define US_TRIGGER { DDRD |= (1<<PD2); PORTD |= (1<<PD2); _delay_us(10); PORTD &= ~(1<<PD2); }
#define US_ECHO    ( PIND & (1<<PD3) )

// Sende einen Trigger-Impuls
US_TRIGGER;

// Warte auf die Antwort
while (!US_ECHO);

// messe die Pulsbreite
int16_t cm=0;
while (cm<500 && US_ECHO)
{
    _delay_us(58);
    cm++;
}

// Zeige das Ergebnis an
printf("%i cm\n",cm);  

Das Beispielprogramm kann mit der AVR Toolchain mit dem Befehl make program compiliert und in den Mikrocontroller übertragen werden. Die Baudrate habe ich auf 2400 eingestellt.