Arduino Autopilot Update

Unser Projekt Arduino Autopilot (als Backup zu unserem betagten Autopiloten) hat es nun einen Schritt weiter geschafft. Die Software wurde noch ein wenig getunt, es werden nun Kursschwankungen durch mehrere nacheinander durchgeführte Kursbestimmungen und anschließender Mittelwertbildung etwas kompensiert. Weiterhin wurde die Software so umgeschrieben, dass alle wichtigen Parameter in Konstanten am Anfang der Software gespeichert werden und somit ggf. schnell geändert werden können. Weiterhin hat unser Arduino Autopilot nun auch ein Gehäuse bekommen und somit ist jetzt alles fest und kann im Seegang nicht mehr verrutschen.

Arduino Autopilot, jetzt im Gehäuse.

Arduino Autopilot, jetzt im Gehäuse.

Auch unsere Verproviantierung ist weiter voran geschritten. Hinzu kam noch eine Riesen-Lieferung vom örtlichen Supermarkt. Unser Schiff ist nach Verstauen nun merklich schwerer, was man deutlich am Wasserpass sieht und auch an den Schiffsbewegungen im Hafen merkt. Unsere Segeleigenschaften wird das sicherlich nicht verbessern, dafür haben wir aber jetzt genügend Trinkwasser und haltbare Nahrungsmittel für mindestens ein halbes Jahr, wahrscheinlich jedoch für deutlich länger.

Lieferung vom Supermarkt.

Lieferung vom Supermarkt.

Arduino Autopilot v1.0 beta

Das Projekt „Arduino Autopilot“ ist nun nach einigen weiteren programmier-intensiven Abenden heute in die beta-Phase übergegangen. Zusätzliche Kabel wurden von der Hydraulikpumpe ins Schiffsinnere verlegt und die Relais daran angeschlossen. Gespeist werden die Relais dann über eine 12 V Steckdose am Schaltpanel. Die Hydraulikpumpe benötigt je nach Last zwischen 3 und 7 A. Dabei muss die Hydraulikpumpe vom Original Autopiloten getrennt werden, da dessen Relais die Zugangsleitungen im Ruhezustand auf Masse legen. Die Hydraulikpumpe kann also jeweils nur mit einem System verbunden werden.

Nach Starten des Arduino Programms wird der momentan anliegende Kurs gespeichert. Dann wird der Kompaß-Sensor ständig ausgelesen und der Wert mit dem gespeicherten Zielkurs verglichen. Bei einer Kursabweichung oberhalb eines Toleranzbereiches wird nun die Hydraulikpumpe für eine kurze Dauer in die entsprechende Richtung aktiviert, was einen Ruderausschlag entgegen der Kursabweichung zur Folge hat. Danach gehen die Ruder wieder in die Ausgangslage zurück. Das wird so oft wiederholt, bis der Kurs wieder innerhalb des Toleranzbereiches liegt. Über zwei Potis sind dabei Zielkurs und Ruderausschlag justierbar. Optional kann über einen Hall-Sensor auch noch die Null-Position der Ruder abgefragt und im Programm berücksichtigt werden.

Knifflig bei der ganzen Sache ist die Kursberechnung, da ja der Kurs von 0 bis 359 Grad bzw. 1 bis 360 Grad definiert ist. Bei der Berechnung einer Kursabweichung (Differenz zwischen Zielkurs und aktuellem Kurs) muss darauf geachtet werden, ob der Kurs dabei einen Nulldurchgang erfährt, also z.B. von 356 Grad zu 6 Grad gewechselt hat.

Der erste Test im Hafen ist vielversprechend gelaufen, die Hydraulikpumpe läuft bei einer entsprechenden Kursabweichung (die wir ja durch Drehen des Kompaß-Sensors simulieren können) und stellt die Ruder in die entsprechende Richtung. Danach werden die Ruder wieder in die Ausgangslage gefahren und der Prozess wiederholt sich iterativ so lange, bis der Kurs wieder passt. Sehr hilfreich sind hierbei die Potis zur Feinabstimmung des Systems, da ansonsten der Arduino ja immer wieder mit dem Computer verbunden werden müsste, um das Programm entsprechend anzupassen. Wir sind natürlich sehr gespannt, wie sich das System auf offener See verhält, hoffen aber gleichzeitig, dass wir es nie benötigen werden!

Schaltplan für v1.0 beta

Schaltplan Arduino Autopilot v1.0 beta

Hydraulikpumpe

Hydraulikpumpe, wird vom Arduino über Relais angesteuert.

Arduino Autopilot im Beta Test

Arduino Autopilot im Beta Test

Der nächste Schritt ist nun, den experimentellen Breadborad-Aufbau fix zu verkabeln und alles in eine Plastik-Dose einzubauen, damit im Seegang alles an seinem Platz bleibt und sich die Verdrahtung nicht lösen kann.

Wer nicht viel blogt, arbeitet viel…

Zitat von Johannes Erdmann. Recht hat er. Seine interessante Seite findet sich übrigens hier.

Wir haben die vergangenen Tage damit verbracht, unser Schiff weiter auf unsere Abfahrt Mitte April vorzubereiten. Die Fenster wurden final abgedichtet, die Maschinen gewartet, das Gelcoat an manchen Stellen repariert, das Rigg überprüft und vieles mehr. Unglaublich, aber auf einem Schiff gibt es wirklich immer was zu tun. Und wenn mal alles halbwegs up to date ist, sucht man sich sofort eine neue Aufgabe. Und die kommt hier:

Unser Autopilot, der ja nun doch einige Jahre auf dem Buckel hat und bei der Überfahrt im Dauereinsatz (24/7) sein wird, soll ein Backup bekommen. Einen Backup-Autopilot zu kaufen geht dabei in die Tausende, daher basteln wir uns selbst einen – und zwar für unter 60 Euro. Möglich ist das durch das open-source-Projekt Arduino. Dabei handelt es sich um ein sehr günstiges, bereits fertig aufgebautes Microcontroller-Board mit digitalen sowie analogen Ein-/Ausgängen. Programmiert wird das Ganze dann in einer C-ähnlichen Sprache.

Funktionieren soll das dann im Wesentlichen so: Der Arduino bekommt den Kompasskurs von einem digitalen Kompass-Sensor, speichert den Wert dann ab und schaut nun andauernd, ob der aktuelle Wert mit dem abgespeicherten übereinstimmt. Tut er das nicht, schalten Relais die Hydraulikpumpe, die auf die Ruder wirkt, solange in die entsprechende Richtung, bis unser Schiff soweit gedreht hat, dass es wieder innerhalb des Toleranzbereiches des Kurses liegt. Das Ganze geht dann wieder von vorne los und dadurch wird der gewünschte Kurs dann (hoffentlich) gehalten.

autopilot_Steckplatine

Schaltplan Arduino Autopilot, erste Test-Version.

Bisher steht die Programmierung schon so weit, dass aktuelle Peilung und Zielkurs korrekt ausgelesen bzw. berechnet und auf dem Display angezeigt werden. Auch eine Justiermöglichkeit für den Zielkurs über einen Poti ist bereits realisiert. Weiterhin zeigen eine grüne und rote LED Abweichungen des aktuellen Kurses über den Toleranzbereich hinweg an. Die nächsten Tage kommt dann noch die Ansteuerung der Relais für die Hydraulikpumpe hinzu. Und dann heißt es beim ersten Test hoffentlich nicht „klar zur Patenthalse…“.

Autopilot auf Arduino-Basis.

Autopilot auf Arduino-Basis, erste Test-Version.

Das Projekt ist zwar etwas Zeit intensiv, macht aber einen Riesen Spaß (Ballmer-Peak). Außerdem ist die Zeit gut investiert, da bei einem Ausfall unseres Autopiloten wir ja ununterbrochen Ruder gehen müssten, was nur zu zweit auf so einer langen Passage fast nicht zu bewältigen wäre.