Jollie

Jollie8

Jollie und Joe

Kurz und knackig
Wer ist Joe?
Bachelor-Thesis
Das Projekt hinter dem Projekt
Update 06.05.2012 – Platinen
Update 07.05.2012 – Platine mit Beschleunigungssensor im Schiff eingebaut + Funktionstest (Video)
Update 10.05.2012 – Hauptplatine jetzt auch im Schiff + neue Videos
Update 18.05.2012 – Fahrt auf den Datteln Hamm Kanal
Downloads
Todo




Kurz und knackig

Es geht in diesem Projekt um die Automatisierung eines Ausgleichsgewichtes auf einer RC-Modellsegeljolle.

Wer ist Joe?

Jollie ist eine RC-Modellsegeljolle der Firma Robbe. Das besondere an der Jolle ist, dass auf dem Deck ein Mann mit steifen Armen und vielen kleinen Bleikugeln im Kopf sitzt. Nennen wir ihn Joe. Joe ist kein Cowboy obwohl das viele Blei und die Haltung diese Vermutung nahelegt. Joe dient als Gegengewicht, wenn die Jolle durch den Wind der ins Segel bläst in Schräglage gerät. Damit Joe nicht abhaut, sind seine Füße Mafiosomäßig an einem Servo befestigt, dass ihn in die Tiefe ziehen würde, wenn das Schiff unterginge. Damit Joe keinen heißen Hintern bekommt, wenn er von dem Servo hin und her gescheucht wird, hat Joe Räder im Po. Purer Luxus. Trotzdem scheint Joe nicht glücklich.

Als Ergänzung folgen nun noch ein paar Bilder. Auch wenn Joe dagegen war. Ich musste ihn festhalten und mit schweren Steinen an Ort und Stelle halten.

Da nun klar geworden sein sollte wer Joe ist, was seine Aufgabe ist und wo er arbeitet, möchte ich im Folgenden das Projekt hinter meiner Bachelorarbeit und auch das ein und andere aus der Arbeit hier vorstellen.

Bachelor-Thesis

In meiner Bachelorarbeit ging es um die modellgetriebene Softwareentwicklung mit Damos. Damos ist eine Eclipse-basierte Open-Source-Modellierungsumgebung für datenflussorientierte Systeme. Diese Systeme können mit Damos enwickelt und simuliert werden. Darüber hinaus ist es auch möglich direkt aus den Modell C – Code zu erzeugen. Ursprüngliche Idee war es mit Damos einen PID-Regler zu entwickeln, der auf einem Arduino Board die Steuerung von Joe übernimmt. Es mag zwar sicherlich übertrieben sein, das modellgetrieben zu machen, aber als Demonstration für die modellgetriebene Softwareentwicklung ist es gerade wegen der Übersichtlichkeit sehr gut geeignet.

Da Joe ungern seine vertraute Umgebung verlässt und die Fachhochschule auch nach Abschluss der Arbeit etwas zum präsentieren zurückbehalten wollte, musste zusätzlich ein Prototyp gebaut werden, auf dem die Regelung demonstriert werden kann. Dabei heraus gekommen ist ein Holzmodell, welches die folgenden zwei Bilder zeigen.

Wie gewohnt  (siehe z.B. Leave Me Alone Box) ist das Ganze pragmatisch aufgebaut. Der Holzrahmen wurde zusammengezimmert aus einem Wühlkistenbrett aus einem Baumarkt. Die Plastikkisten sind alte Schraubendosen. Der Sand ist alter Aquariumsand (na irgendwas muss ja ein Gefühl von “Schiff” aufkommen lassen und der Geruchsinn ist ja bekannt dafür sofort entsprechende Assoziationen hervorzurufen…… nein, der Sand stinkt natürlich nicht!). Joe wird ersetzt durch die Kapsel von einem Überraschungsei, die ebenfalls mit etwas Sand gefüllt ist. Der Kiel besteht aus zwei aneinander geklebten Metallwinkeln und einer der besagten Kisten mit Sand. Zum Kleben wurde einfach Montageband benutzt, damit wurde ebenfalls das Servo und die andere Plastikkiste angeklebt. Da das Arduinoboard der FH gehört, konnte ich dies natürlich nicht einfach auf das Holzbrett kleben, davon mal abgesehen wäre das auch nicht so praktikabel gewesen. Aus diesem Grund liegt es auf einem KFZ Antirutschpad und kann ohne weiteres abgenommen werden.

Schaltungsmäßig finden sich auf dem Steckbrett ein Beschleunigungssensor-Modul von ELV über den der Winkel berechnet wird und das per I²C angesprochen werden kann. Ein Mirco-SD-zu-SD-Adapter der über SPI benutzt wird und dazu dient später das System für das Damos-Modell über einen Sprung in ein mathematisches Modell zu überführen. Ich hatte vorher aus defekten Lesegeräten die SD-Kartenfassungen ausgebaut und versucht diese zu nutzen, das hat sich aber schnell als sehr unzuverlässig herausgestellt. Problem war, dass diese keinen vernünftigen Kontakt gegeben haben. An den Adapter wurde einfach eine Pinleiste gelötet und das Ganze funktioniert wunderbar.

Das Modell in Damos sieht nun wie folgt aus:

Der Block “Protoypmodell” besteht im Wesentlichen aus der ermittelten Übertragungsfunktion und beschreibt das Verhalten des Prototypen. Der Block “PID” und “MittelwertFilter” sind Blöcke die von mir neu definiert wurden. Das geht in Damos sehr einfach über die Sprache Mscript. Besonders praktisch an Mscript ist, dass man Differenzengleichungen so wie man sie, ich sag mal, aus dem Studium gewohnt ist, programmieren kann. Zum Beispiel wird in Mscript aus x(kT) und x(kT-T) ein x{n} und x{n-1}.

Um den Rest noch zu erklären muss bekannt sein, dass die Winkelwerte vom Beschleunigungssensor im Bereich von -90°…+90° liegen (somit ist die Mitte 0 und damit auch der Sollwert). Das Servo wird aber mit Werten von 0°…180° angesprochen. Da aus dem PID Block später der C-Code generiert werden soll, muss das auch so bleiben. Aus diesem Grund befindet sich an dem Summationspunkt die -90, um die Bereiche einander anzugleichen. Ohne diese Konstante wäre es dem Regler in der Simulation nicht möglich den Winkel zu verringern, da der kleinste Wert eine 0 wäre.

Die durch die Simulation bestimmten Reglerparameter ergeben später bei Aufschalten einer sprungartigen Störung den folgenden Grahpen:

Legende:

blau – Störung
grün – Stellwert fürs Servo (Mittelstellung entspricht 90°)
rot – Regelgröße (Ausgangswert)



Die generierten Dateien für das Mittelwertfilter und den PID-Controller werden einfach in der Arduino IDE hinzugefügt und im Sketch inkludiert. Danach können die generierten Funktionen ohne weiteres benutzt werden. In Aktion ist der Prototyp in den folgenden Videos zu sehen.

Das war jetzt mehr oder weniger die Bachelorarbeit im Schnelldurchlauf. Ich habe jetzt natürlich viele Sachen übersprungen und den Rest auch nur sehr grob beschrieben, aber auf dieser Projektseite möchte ich auch eigentlich das weitere Vorgehen NACH der Bachelorarbeit dokumentieren. Wenn Interesse an der vollständigen Arbeit besteht, benutzt einfach das Kontaktformular.

Das Projekt hinter dem Projekt

So, wie geht es jetzt weiter?
Das ganze muss nun für Jollie und Joe realisiert werden. Dafür soll zuerst das große Arduino UNO gegen ein kleines Arduino Mini getauscht werden. Ich habe mich aus Kostengründen für einen Arduino Mini Klon von Watterott electronic entschieden. Zusätzlich soll es außerdem möglich sein, per Fernsteuerung den Automatikbetrieb auf manuellen Betrieb umzuschalten. Bevor Joe schlecht wird, weil auf einmal etwas verrückt spielt, möchte ich ihn per Knopfdruck retten können. Oder direkt versenken. Aber die U-Boot-Funktion vertage ich erst einmal.

Folgendes ist der Plan: Mit einem Schalter, der drei Stellungen hat, soll zwischen den verschiedenen Modi gewechselt werden können. Dabei existiert der Modus Automatik mit Nullabgleich, bei dem das Schiff gerade gehalten werden muss damit der Mikrocontroller den Offset speichern kann und von nun an den aktuellen Wert als 0 ansieht. Der zweite Modus ist dann der eigentliche Automatikbetrieb bei dem das Stellsignal für das Servo von dem PID-Regler erzeugt wird. Der manuelle Betrieb ist also der dritte Modus. Der PID-Regler arbeitet einfach weiter, aber das Stellsignal wird nun nicht mehr an das Servo weitergeleitet, sondern das Signal von der Fernsteuerung. Das Umschalten des Signals übernimmt ein Multiplexer, der per Mikrocontroller angesteuert wird. Ich verwende dafür den  UTC 4053.

Die Schaltung soll aus zwei Streifenrasterplatinen bestehen. Auf der ersten soll das Arduino Board und der Multiplexer untergebracht werden. Und auf einer zweiten das Beschleunigersensormodul. So bin ich im Schiff hinterher nicht so eingeschränkt mit der Platzierung der Schaltungen.

Das Layout der beiden Platinen stelle ich mir dabei so vor:

Ja, das schaut erst mal komisch aus. Ich benutze zum planen von Streifenrasterplatinen ein Grafikprogramm, in dem ich meine Bauteile auf eine Streifenrasterplatine male. Und das auch nur auf der Unterseite. Beim nachträglichen Bauen muss dann halt nur aufgepasst werden, was oben und was unten hingehört. Aber das hat bisher immer gut geklappt. Leider habe ich noch kein Programm zum planen gefunden das mir gefällt oder meinen bescheidenen Ansprüchen genügt.

Kurze Legende:

  • schwarze dicke Linien sind Brücken und gehören auf die Oberseite
  • die halb transparenten schwarzen Kästchen sind Bauteile wie z.b der Multiplexer
  • die länglicheren schmalen sind 4er Pinleisten die als Sockel für die anderen Bauteile dienen
  • das grüne Dingen sind Anschlusspinnchen die vom Ardunino mini nach oben weggehen
  • hell blaue Linien sind Unterbrechungen
  • die große hell blaue Fläche soll die beiden unterschiedlichen Platinen voneinander trennen
  • lila Linien sind Lötverbindungen die auf die Unterseite gehören
  • lila schwarz gestreift ist, wie im Bild schon steht, eine isolierte Brücke die auf der Unterseite platziert werden soll
  • Die Pinleiste an der 3DBS steht soll später die Spannungsversorgung für das Sensormodul darstellen. Ursprünglich sollte die komplette Pinleiste für das 3DBS-Modul verwendet werden. Ich hatte leider nicht gesehen, dass die I²C Pins bei dem Ardunino Mini woanders liegen.

Auf der Softwareseite wurde ein neuer Hauptsketch geschrieben der eine kleine Statemaschine darstellt und den Multiplexer sagt, welches Signal ans Servo weitergeleitet werden soll.

Ich habe ein kurzes Video erstellt, in dem ich den Testaufbau vorstelle:


Update 06.05.2012

Heute waren die Platinen dran. Auch wenn mein neuer Arduino Klon noch nicht da ist, habe ich die Platinen fertig gelötet. Bis Ende nächster Woche möchte ich alles fertig und eine Probefahrt mit Video gemacht haben. Schließlich brauche ich noch Videomaterial für die Präsentation meiner Bachelorarbeit. Ich will die Zuhörer nicht zu lange mit der Theorie quälen und Videos kamen ja schon früher in der Schule immer gut an. Die Schaltung weiter oben, habe ich aktualisiert,  da mir noch ein paar Fehler aufgefallen sind. Für die Fotos weiter unten musste das defekte Arduino Board herhalten. Die Kabel habe ich alle beschriftet, da ich gemerkt habe, dass bei den vielen Strippen doch schnell etwas schief gehen kann. Da ich mir noch nicht ganz sicher bin, wo im Schiff die Platinen untergebracht werden, habe ich die Kabel alle relativ lang gewählt.


Platine für den 3DBS

Hauptplatine

Hauptplatine mit Arduino

Gesamtverkabelung

Verkabelung der Hauptplatine

Verkabelung des 3DBS

Empfänger

nochmal Verkabelung der Hauptplatine (weils so schön ist)

Update 07.05.2012

Die erste Platine ist schon im Schiff. Das neue Zuhause des Sensormoduls ist im Bug vom Schiff. Die Hauptplatine wird, sobald der neue Arduino Mini Klon eintrifft, ebenfalls dort einquartiert. Ich hoffe, dass dort später kein Fehler auftritt, sonst hätte ich einen Bug im Bug Shocked.

Wie auf den Bildern zu sehen, ist die kleine Platine in einer alten  Plastikverpackung geschützt untergebracht (so lange von oben kein Wasser eindringt). Ursprünglicher Plan war es, die Verpackung nun auf den Boden des Schiffes zu verkleben. Es befindet sich auch ein Klebestreifen am Boden der Verpackung. Ich glaube aber nicht, dass er wirklich gepackt hat. Viel mehr habe ich die Verpackung an der langen Seite einklemmen können, so dass es nicht mehr verrutschen sollte. Das Gute an der Verpackung ist, dass sie die Platine einklemmt und diese sich deswegen nicht bewegen kann.

Die Befestigung der Hauptplatine wird wesentlich einfacher. Diese werde ich in einem Gefrierbeutel unterbringen und mit Gummibändern verschließen. Das wird wahrscheinlich schon reichen, da in der Spitze eh nicht viel Bewegungsfreiheit herrscht.

Funktionstest des eingebauten Moduls:


Update 10.05.2012

Vorgestern habe ich auch die zweite Platine ins Schiff eingebaut. Die Kabel hätte doch noch ein Stück länger sein können, aber erst mal geht es auch so.

Ein erster Test bei dem Joe aber nicht ganz bei der Sache ist, kann im folgendem Video gesehen werden.

Inzwischen habe ich aber auch die noch fehlenden Teile für Joe bekommen so, dass das Ganze nun wie folgt ausschaut.


Die kleine Kamera von Pollin ist ebenfalls eingetroffen. Ich musste sie allerdings ganz nach vorn auf die Spitze setzen, da Joe sonst nur zur Hälfte zu sehen wäre. Die Bildqualität lässt erwartungsgemäß sehr zu wünschen übrig (bei “schlechten” Lichtverhältnissen). Aber für 18 € und so nah am Wasser wird es schon reichen, um ein paar lustige Videos direkt vom Schiff zu erhalten.

Der nächste Schritt ist nun das Servo noch richtig zu verschrauben um dann abschließend ein Video bei einer Fahrt auf dem Datteln-Hamm-Kanal zu drehen.




Update 18.05.2012

Sooo, gestern hat Jollie (und auch Joe Shocked) wieder mal Wasser gesehen. Die meiste Zeit hat es wirklich wunderbar funktioniert. Sogar die kleine Pollinkamera hat bei dem guten Licht richtig gute Aufnahmen gemacht! Joe musste zwischendurch mal Wasser schlucken, weil die Steuerung versagt hat und hing ab und an in der Segelleine. Irgendwo scheint das Schiff noch Wasser reinzulassen, weswegen die Schaltung zwei Mal ihren Dienst verweigert hat und ich auf Manuellesteuereung umschalten musste. Bei wenig Wind, wenn die Segelleine nicht richtig stramm war, hat sich Joe manchmal mit dem Kopf in der Leine verfangen. Dann musste ich ebenfalls umschalten und ihn kurz manuell zur Seite steuern. Das Problem tritt auf, da ursprünglich in Joe noch eine Stange war, die seinen Oberkörper in der Mittelstellung angehoben hat. Diese Mechanik ist aber zu Joe’s Freude nicht mehr auffindbar.

Bei dem ersten Video habe ich versucht die selbe Situation aus zwei unterschiedlichen Perspektiven zusammenzuschneiden.


Jetzt folgen noch zwei Videos in dem ich teilweise ein wenig flotter unterwegs war. Leider war der Wind an diesem Tag nicht so das Wahre.

Downloads

ToDo

  • Hilfsmotor ans Schiff bauen, wenn mal mitten auf dem Kanal der Wind wegbleibt
  • Boot per Funkmodul mit meiner TI Chronos und meinen Laptop verbinden z.B. für…
    • aktuelle Winkeldaten
    • Windgeschwindigkeit
    • Windrichtung
    • Fahrtgeschwindigkeit
    • Spannungsüberwachung der Akkus
veröffentlicht am: 6. Mai 2012

letzte Modifikation am: 6. Juni 2012

Hinterlasse eine Antwort