HC-SR04 Ultraschall-Abstandssensor
Misst den Abstand zu einem Hindernis per Ultraschall-Laufzeit: ein kurzer
Trigger-Impuls loest einen Schallstoss aus, der Sensor haelt Echo so lange
auf High, wie das Echo unterwegs war.
Stand (12.09.2026): Verkabelung und Code sind fertig, aber noch nicht
auf echter Hardware getestet (folgt). entfernungsanzeige-tm1637 nutzt auf
der Anzeigen-Seite dieselbe Bibliothek wie tm1637-4digit
(dort bereits bestaetigt) - offen ist nur noch die Sensor-Seite hier.
Anschluesse am Modul
| Pin (Beschriftung, bei diesem konkreten Modul von oben nach unten) | Bedeutung |
|---|---|
Gnd |
Masse |
Echo |
Ausgang: High-Puls, Dauer = Laufzeit |
Trig |
Eingang: Trigger-Impuls ausloesen |
Vcc |
Plus |
Laut Datenblatt 5 V. Die Reihenfolge kann bei anderen Modulen abweichen - nach der Beschriftung anschliessen.
Anschluss an den micro:bit - Standard (einfach und sicher, 3 V)
micro:bit HC-SR04
+---------+ +---------+
| P1 |--------| Trig |
| P2 |--------| Echo |
| 3V |--------| Vcc |
| GND |--------| Gnd |
+---------+ +---------+
Der Sensor wird hier mit 3 V statt der spezifizierten 5 V betrieben. Das
reduziert die zuverlaessige Reichweite auf ca. 20-150 cm (fuer die
meisten Uebungen genug), macht die Verkabelung dafuer aber sicher und
einfach: Bei 3 V bleibt auch der Echo-Rueckgabepuls bei ca. 3 V - direkt
vertraeglich mit einem micro:bit-Pin (der max. ca. 3,6 V vertraegt). Kein
Spannungsteiler noetig.
Mehr Reichweite: 5 V + Spannungsteiler (optional)
Voll spezifiziert braucht der HC-SR04 5 V (Reichweite laut Datenblatt bis
400 cm). Bei 5 V liefert Echo aber auch ~5-V-Pulse zurueck - das
ueberschreitet die maximale Eingangsspannung eines micro:bit-Pins und kann
ihn beschaedigen. Abhilfe: ein Spannungsteiler zwischen Echo und dem
micro:bit-Pin.
Sensor Echo ---[ 1 kOhm ]---+---[ 2 kOhm ]--- GND
|
micro:bit Pin (~3,3 V statt 5 V)
Vcc kommt dann von einer externen 5-V-Quelle (GND gemeinsam mit dem
micro:bit), Trig bleibt direkt am micro:bit - der Sensor erkennt den
3,3-V-Trigger auch im 5-V-Betrieb zuverlaessig.
Warum eine Zeitmessung ueberhaupt den Abstand verraet (einfach erklaert): Theorie: HC-SR04.
Messung in MicroPython
import machine
dauer_us = machine.time_pulse_us(ECHO, 1, 30000) # wartet auf den HIGH-Puls
abstand_cm = dauer_us / 58.0 # Schallgeschwindigkeit
machine.time_pulse_us(pin, pegel, timeout_us)misst die Dauer eines Pulses in Mikrosekunden - genau, was hier gebraucht wird (der micro:bit selbst kann persleep()nur auf 1 ms genau warten).- Ein negativer Rueckgabewert heisst Timeout: kein Echo (Hindernis zu nah - unter ~2 cm -, zu weit weg, oder schraeg/weich, sodass nichts reflektiert wird).
- Zwischen zwei Messungen mindestens ~60 ms warten (Datenblatt), sonst kann ein spaetes Echo die naechste Messung stoeren.
- Der Trigger-Impuls muss laut Datenblatt mindestens 10 µs lang sein. Da
sleep()nur Millisekunden kann, wird hier 1 ms (= 1000 µs) benutzt - das ist laenger als noetig, funktioniert aber zuverlaessig.
Samples (Lernreihenfolge)
- abstand-messen/ - Abstand messen, als LED-Balken zeigen
- naeherungsalarm/ - piept schneller, je naeher ein Hindernis ist
- entfernungsanzeige-tm1637/ - Abstand in cm auf der TM1637-Anzeige darstellen
Masse fuers CAD (spaeter): ../../../hardware/input/hc-sr04-abstandssensor/