Ausweichroboter ohne Mikrocontroller
Ein Roboter, der Hindernissen ausweicht -- aber ohne Arduino, ohne ESP32, ohne eine einzige Zeile Code. Die komplette Steuerung wird aus diskreten Logik-ICs aufgebaut: 555-Timer, Gatter, Flip-Flops. Das ist die Art, wie Roboter vor der Mikrocontroller-Γra gebaut wurden -- und es zeigt, was digitale Logik wirklich kann.
Dieses Projekt ist das GegenstΓΌck zum Ausweichroboter mit Arduino. Gleiche Mechanik (Karton-Chassis, TT-Motoren, HC-SR04), aber komplett andere Steuerung.
Idee
Der HC-SR04 Ultraschallsensor braucht eigentlich keinen Mikrocontroller. Er will nur:
- Einen Trigger-Puls (10 Β΅s HIGH)
- Er gibt ein Echo-Puls zurΓΌck, dessen Breite proportional zur Entfernung ist
Die Frage ist: Wie erkennen wir ohne Software, ob das Echo "kurz" (Hindernis nah) oder "lang" (alles frei) war?
Schaltungskonzept
Block 1: Trigger-Generator
Ein NE555 im astabilen Modus erzeugt periodisch einen kurzen Puls. Die Wiederholrate muss mindestens 60 ms betragen (HC-SR04 braucht Zeit fΓΌr das Echo). Der Trigger-Puls selbst muss β₯ 10 Β΅s breit sein.
Dimensionierung: - Periode: ~100 ms (10 Hz Messrate) - Puls: ~15 Β΅s (etwas mehr als die minimalen 10 Β΅s) - \(R_1\), \(R_2\), \(C\) nach 555-Formeln
Block 2: Referenz-Puls (Schwelldistanz)
Ein zweiter NE555 im monostabilen Modus, getriggert durch die steigende Flanke des Echo-Signals. Er erzeugt einen Referenz-Puls mit fester Breite \(t_{ref}\), die der gewΓΌnschten Schwelldistanz entspricht.
Umrechnung Entfernung β Pulsbreite:
FΓΌr 25 cm Schwelldistanz:
Der Referenz-555 wird auf ~1.5 ms Pulsbreite dimensioniert.
Block 3: Vergleich (nah oder fern?)
Jetzt der Kern: Ist das Echo vor oder nach dem Ende des Referenz-Pulses zurΓΌckgekommen?
- Echo kΓΌrzer als Referenz: Hindernis innerhalb der Schwelldistanz β ausweichen
- Echo lΓ€nger als Referenz: Freie Bahn β geradeaus fahren
Umsetzung: Die fallende Flanke des Echo-Pulses wird mit dem Zustand des Referenz-Pulses verglichen. Wenn der Referenz-Puls noch HIGH ist, wenn das Echo endet β Hindernis nah. Das kann ein D-Flip-Flop (74HCT74): Referenz-Puls an D, fallende Flanke des (invertierten) Echos als Clock.
| Echo kΓΌrzer als Ref | Ref bei Echo-Ende | D-FF Ausgang Q |
|---|---|---|
| Ja (nah) | HIGH | HIGH = Hindernis |
| Nein (fern) | LOW | LOW = Frei |
Block 4: Motorsteuerung
Der Q-Ausgang des Flip-Flops steuert die Motoren:
- Q = LOW (frei): Beide Motoren vorwΓ€rts
- Q = HIGH (Hindernis): Ein Motor vorwΓ€rts, einer rΓΌckwΓ€rts β Drehung
FΓΌr die Drehrichtung (immer gleich oder alternierend) kann ein zweiter Flip-Flop als Toggle dienen: Bei jedem Hindernis-Event toggelt er, und bestimmt ob links oder rechts gedreht wird.
Die Motoren werden ΓΌber eine H-BrΓΌcke (L298N oder DRV8833) angesteuert. Die Logik-AusgΓ€nge (5V, wenige mA) steuern die Enable- und Richtungspins der H-BrΓΌcke direkt.
Blockdiagramm
ββββββββββββ
βββββββββββ Trigger ββββββββ€ HC-SR04 ββββββββ
β 555 #1 ββββββββββββββββΊβ Trig β β Echo β
β astabil β ββββββββ€ ββββββββ€
βββββββββββ ββββββββββββ β
β
ββββββββββββββββββββββββββ
β
βββββββββββΌβββββββββββ
β 555 #2 mono β
β (Referenz-Puls) β
βββββββββββ¬βββββββββββ
β Ref
β
Echo βββββββββββ€
β
βββββββββββΌβββββββββββ
β 74HCT74 D-FF β
β (nah/fern) β
βββββββββββ¬βββββββββββ
β Q
βββββββββββΌβββββββββββ
β 74HCT74 D-FF #2 β
β (links/rechts) β
βββββββββββ¬βββββββββββ
β
βββββββββββΌβββββββββββ
β H-BrΓΌcke β
β (L298N/DRV8833) β
βββββββββββ¬βββββββββββ
β
ββββββ΄βββββ
β Motoren β
βββββββββββ
StΓΌckliste (zusΓ€tzlich zum Chassis)
| Teil | Funktion | Anzahl |
|---|---|---|
| NE555 | Trigger-Generator + Referenz-Puls | 2 |
| 74HCT74 | D-Flip-Flop (nah/fern + links/rechts) | 1 |
| 74HCT04 | Inverter (Flankenlogik) | 1 |
| HC-SR04 | Ultraschallsensor | 1 |
| L298N oder DRV8833 | H-BrΓΌcke fΓΌr Motoren | 1 |
| TT-Motoren mit RΓ€dern | Antrieb | 2 |
| Kugelrad | Drittes Rad | 1 |
| WiderstΓ€nde, Kondensatoren | Timing-Netzwerke, Pull-Ups | diverse |
| Breadboard oder Lochraster | Aufbau | 1 |
| 4Γ AA Batteriehalter | Stromversorgung | 1 |
Gesamtkosten (ohne Chassis): unter 10 β¬. Alle ICs aus der Digitale-Logik-StΓΌckliste.
Warum?
Klar, ein Arduino macht das in 50 Zeilen Code. Aber:
- Man versteht was passiert. Kein Compiler, kein Framework, keine Abstraktion. Jedes Signal ist auf dem Breadboard messbar, jede Entscheidung ist ein physikalisches Gatter.
- Kein Programmieren nΓΆtig. FΓΌr Leute, die lieber lΓΆten als coden. Oder als Einstieg bevor man zu Mikrocontrollern kommt.
- Historisch. So wurden die ersten autonomen Roboter gebaut -- Braitenberg-Vehikel, Grey Walter's SchildkrΓΆten (1948). Verhalten entsteht aus Verschaltung, nicht aus Software.
WeiterfΓΌhrendes
- Ausweichroboter mit Arduino -- die Mikrocontroller-Version
- Digitale Logik: Grundlagen -- die Chips verstehen
- HC-SR04 Ultraschallsensor -- wie der Sensor funktioniert
- Motortreiber -- H-BrΓΌcken fΓΌr die Motoren