Wasserrakete · Elektronik · Fehlersuche
Als das Funkgerät die Uhr kaputtmachte
Der Flugrechner stürzte zuverlässig nach ein bis zwei Sekunden ab. Die Ursache war kein Programmierfehler, sondern ein einzelnes Kabel — und der Weg dorthin führte über eine Uhr, die behauptete, es seien neun Tage vergangen.
Was auf dem Brett sitzt
| Bauteil | Aufgabe | Anschluss |
|---|---|---|
| ESP32-S3 | der Rechner selbst: zwei Prozessorkerne, 4 MB Speicher | — |
| BMP280 | Luftdruck → Höhe | I²C |
| LSM6DSOX | Beschleunigung und Drehrate | I²C |
| GPS-Modul | Position und Geschwindigkeit | serielle Leitung |
| LoRa-Funkmodul | Telemetrie zum Boden | serielle Leitung |
Warum zwei Prozessorkerne?
Der eine Kern liest die Sensoren und trifft Entscheidungen — hundertmal pro Sekunde, gleichmäßig, ohne Unterbrechung. Der andere kümmert sich um GPS und Funk.
Der Grund ist Verlässlichkeit: Ein Funkpaket zu senden dauert unvorhersehbar lange. Läge beides auf einem Kern, würde die Sensorschleife gelegentlich stocken — und ausgerechnet in dem Moment, in dem der Funk besonders beschäftigt ist, wäre die Rakete am blindesten.
Der Absturz, der immer kam
Mit dem Funkmodul auf voller Sendeleistung (22 dBm) stürzte der Flugrechner ab. Nicht manchmal — jedes Mal, innerhalb von null bis zwei Sekunden, in sechs unabhängigen Aufzeichnungen.
Die Messung, die alles eingrenzte
Funkmodul angeschlossen, mit Strom versorgt und initialisiert — aber senden ausgeschaltet: 208 Sekunden ohne einen einzigen Absturz und ohne einen einzigen Datenfehler.
Damit war es keine Vermutung mehr. Nicht das Modul war das Problem, nicht der Programmcode, der es ansteuert — sondern das Senden selbst. Ein einziges umgelegtes Häkchen trennte „stürzt immer ab“ von „läuft problemlos“.
Zwei Symptome, die zusammen die Antwort gaben
Warum das zweite Symptom den Fall löste
Ein Leitungsfehler ist mehrdeutig — Kabel, Stecker, Software, alles denkbar. Aber eine Uhr, die sich verzählt? Uhren sind einfach. Sie zählen. Wenn eine Uhr im Prozessor falsche Werte liefert, ist etwas sehr Grundlegendes gestört.
Entscheidend war, dass es zwei unabhängige Uhren gab. Eine falsche Zahl allein hätte man für plausibel halten können. Zwei Uhren, die sich um neun Tage widersprechen, können nicht beide recht haben — und genau dieser Widerspruch machte aus einer merkwürdigen Zahl einen Beweis.
Die Ursache: ein Kabel, das zu viel leisten musste
Sensoren und Funkmodul hängen an einem eigenen Netzteil. Mit dem Rechner teilen sie sich nur eine einzige Leitung: die Masse, den gemeinsamen Nullpunkt, auf den sich alle Spannungen beziehen.
Die Vorstellung dahinter
Stell dir vor, alle Höhenangaben in einer Stadt beziehen sich auf einen Messpunkt am Hafen — und dieser Punkt wackelt im Sekundentakt um einen Meter auf und ab. Nichts an den Gebäuden ändert sich, aber jede gemessene Höhe wird falsch, und zwar alle gleichzeitig.
Genau das macht der Sendestoß. Er zieht kurz viel Strom, der Strom fließt durch das Massekabel zurück, und weil jedes Kabel einen Widerstand hat, entsteht dort kurzzeitig eine Spannung. Der gemeinsame Nullpunkt verschiebt sich — und mit ihm jedes Signal im gesamten Aufbau.
Deshalb versagten Sensorleitung und Prozessoruhr gleichzeitig. Es war nie ein Fehler in einem der beiden. Es war der Boden unter ihren Füßen.
Warum daraus ein kompletter Stillstand wurde
Der letzte Schritt ist besonders unangenehm. Beim Lesen der Uhr wartet der Prozessor in einer Schleife darauf, dass der Wert als „gültig“ gemeldet wird. Kommt diese Meldung durch die Störung nie, dreht sich diese Schleife endlos.
Und sie hält dabei eine Sperre, die beide Prozessorkerne brauchen. Der eine Kern dreht also ewig im Kreis, der andere wartet auf die Sperre, die nie freigegeben wird. Beide stehen. Ein Überwachungszähler bemerkt schließlich, dass nichts mehr passiert, und startet den Rechner neu.
Aus einem Spannungswackler von vielleicht einer Millisekunde wird so ein vollständiger Neustart des Flugrechners — im Flug wäre das der Verlust aller Zustandsinformation mitten in der Aufstiegsphase.
Die Notlösung — und warum sie eine bleibt
Sendeleistung von 22 auf 10 dBm gesenkt
Weniger Sendeleistung bedeutet weniger Stromstoß, bedeutet weniger Verschiebung des Nullpunkts. Der Absturz verschwand sofort und ist seither nicht wieder aufgetreten — unter anderem in einem 2,5-Stunden-Dauerlauf mit über 20 000 Funkpaketen ohne einen einzigen Neustart.
Das ist trotzdem keine Lösung. Das Verdrahtungsproblem existiert unverändert; es wird nur nicht mehr stark genug angeregt, um sichtbar zu werden.
Und es kostet: 12 dB weniger Sendeleistung sind grob drei Viertel der Reichweite. Bei einer Rakete, die man wiederfinden möchte, ist Reichweite keine Nebensache.
Was tatsächlich zu tun ist
Wenn das Bauteil selbst kaputt ist
Nicht jeder Fehler ist einer im eigenen Aufbau. Der erste Beschleunigungssensor des Projekts — ein LSM9DS1 — lieferte durchgehend Unsinn. Nach längerer Suche stellte sich heraus: Der Chip war schlicht defekt.
Der als Ersatz bestellte LSM6DSO32 kam dann als falsches Bauteil an. Verbaut ist heute ein LSM6DSOX — verwandt, aber nicht dasselbe.
Was das für die Fehlersuche bedeutet
Bei Software ist die Annahme meist richtig, dass der Fehler beim einem selbst liegt. Bei Hardware stimmt das nicht zuverlässig: Bauteile kommen defekt an, Bauteile kommen falsch geliefert, Kabel haben Bruchstellen, die man nicht sieht.
Deshalb gilt hier eine andere Reihenfolge: Bevor man tagelang Code durchsucht, tauscht man das Bauteil oder das Kabel einmal aus. Das kostet fünf Minuten und beantwortet eine Frage, die man sonst nur erraten kann.
Genau so wurde auch der Absturz gefunden — nicht durch Nachdenken über den Code, sondern durch das Abschalten einer Sache (des Sendens) bei sonst unverändertem Aufbau.
Was noch fehlt
| Teil | Zustand | Folge |
|---|---|---|
| Masseführung | nicht gelötet | Sendeleistung bleibt auf 10 dBm gedrosselt, Reichweite entsprechend gering |
| Arm-Schalter | nicht verbaut | Der Rechner schaltet sich 15 s nach dem Einschalten selbst scharf — ein Behelf, der vor einem echten Flug weg muss |
| Zündelektronik | existiert nicht | Die gesamte Fallschirmlogik ist bisher reine Rechnung, es wird kein Ausgang geschaltet |
| Durchgangsprüfung | Anschluss unbestätigt | vor dem Anschließen von Zündhardware nachzumessen |
| Magnetometer | vorbereitet, nicht verbaut | Ohne ihn bleibt die Gierrichtung im Stillstand unbestimmbar |
| Batteriespannung | wird nicht gemessen | Man erfährt nicht, ob der Akku im Flug einbricht |
Die erste Zeile ist die wichtigste, weil sie alle anderen blockiert: Solange die Masse nicht ordentlich verlötet ist, kann die Sendeleistung nicht wieder hochgesetzt werden — und ohne Reichweite ist ein Flug über freiem Feld ein Risiko, das man nicht eingehen sollte.
Begriffe
- Masse (GND)
- Der gemeinsame Nullpunkt, auf den sich alle Spannungen beziehen. Kein absoluter Wert, sondern schlicht das, was am Ende der Masseleitung anliegt — und genau deshalb verschiebbar.
- Sternmasse
- Jede Masseleitung einzeln zu einem gemeinsamen Punkt, statt Verbraucher hintereinander aufzureihen. Verhindert, dass der Strom des einen durch die Masse des anderen fließt.
- Kondensator zur Entkopplung
- Ein kleiner örtlicher Energiespeicher direkt am Verbraucher. Er deckt kurze Stromstöße ab, sodass sie nicht durch die lange Zuleitung gezogen werden.
- dBm
- Maß für Sendeleistung, logarithmisch. Ein Unterschied von 12 dB entspricht etwa dem Sechzehnfachen an Leistung — und grob dem Vierfachen an Reichweite.
- I²C
- Eine Datenleitung mit nur zwei Drähten, an der mehrere Sensoren gleichzeitig hängen können. Bequem, aber empfindlich gegenüber Störungen und schlechten Kontakten.
- Sperre (Spinlock)
- Ein Mechanismus, mit dem zwei Prozessorkerne sich abwechseln. Bleibt ein Kern hängen, während er die Sperre hält, steht auch der andere — genau das passierte hier.