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