[Moderator: Postanschrift gelöscht] Guten Tag, ich baue einen einfachen Autopiloten als Kurshalter für mein Boot. Er soll ohne Tastatur und Display arbeiten. Die Hardware habe ich fertig. Die Programmierung soll über RN-Control und e-Kompass und Bascom erfolgen. Der Kompass ist an I²C angeschlossen, das muss aber nicht so bleiben. Das Hauptprogramm habe ich fertiggestellt. Es fehlt die Übertagung vom Kompass (Slave) auf den Controller (Master) und die Differenzierung von Sollkurs und Istkurs ? Das bisherige Programm lege ich als Datei bei. Über entgeltliche Hilfe würde ich mich freuen. MfG Horst Sammler.
Ich empfehle Dir dringend, Deine persönlichen Daten aus dem Beitrag zu löschen. Du kannst den Beitrag noch nachträglich editieren. Die email könntest Du stehenlassen, aber da Du angemeldet bist, bist Du von anderen Angemeldeten auch per persönlicher Nachricht zu erreichen.
horst26 schrieb: > Warum und wie geht das? Bin ja neu hier. horst26 Es geht nur, wenn du angemeldet bist und keine Antworten auf deinen Beitrag kamen. Und bitte nur mit 1 Usernamen posten (also nicht mal als Gast und mal Angemeldet).
Du bist neu im Internet? :-) Nein, vermutlich meinst Du, dass Du neu hier im mikrocontroller.net bist. Aber das ist hier keine Schonzone. Hier treiben sich die selben Leute herum, wie sonst auch im Internet. Muss ich noch mehr erklären?
Uiuiuiui...dann fangen wir mal an Ich hab die Adresse nicht mehr lesen können aber sofern Google nicht lügt und du Segelkontakte nach WAT hast, dann gäbe es da vielleicht eine Möglichkeit einer Nachbarschaftsaktion Ich kann selbst kein BASCOM flüssig. Aber einfach so programmieren und Code hier rein schieben ist nicht. Konkreter Tipp: Mach doch einfach mal folgendes: Entwerfe mal ein Diagramm wie das Programm ablaufen soll (inklusive Initialisierung) und welche Sensoren und Aktuatoren du besitzt und wie diese angesteuert werden. Und welche Grenzbedingungen es gibt. Und dann entwerfe für jeden fall eine Funktion / Sub in Bascom. Im Zweifel läuft nämlich das Programm in der Theorie aber bei deinem Wissen vermute ich das dann eher zu ungeplanten Fehlschlägen kommt und das wäre etwas schade für dein Boot.
Leider gibt es in dem obigen Programmansatz keine Zeilennummern. In der zweiten Zeile hinter „Do“ habe ich mal „Sollkurs - Istkurs“ nach rechts geschoben, ein Hochkomma dran gemacht und statt dessen den Wert 60 eingegeben. Dann läuft das Hauptprogramm bis zum Schluss und treibt den Antriebsmotor wie gewünscht an. Ich brauche keinen Terminal. Das Kurshalten funktioniert wie beim Fahrrad oder Auto, es muss pausenlos gegengesteuert werden. Diese Arbeit nimmt mir der Autopilot ab, wenn ich die jeweilige Kursabweichung berechnet bekomme ( ab Zeile 25) Dies könnte geschehen über den I²C Bus oder SPI mit Analogkomparator oder vielleicht Interrupt? Meine Kunst reicht bisher nicht. Horst26
Waaaaas? Kein Außenstehender kann verstehen was du willst oder es nur erahnen. Wie willst du später den Sollkurs einstellen?
Du hast einen Sollkurs, den du manuell einstellst und einen Istkurs, der vom Kompass, Gyro oder GPS kommt. Die Stellgrösse geht an die Ruderanlage - ob hydraulisch oder Servo, ist erstaml wurscht. Ein rechnergesteuerter Regler (z.B. als PID) ermittelt die Abweichung von Soll zu Ist und steuert damit das Ruder. Es geht auch simpel als Zweipunktregler, das ist aber im Allgemeinen ein wenig unruhiger als ein sauber eingestellter PID. Für einen solchen Regler musst du lediglich Ist und Soll auf den gleichen Bereich skalieren (wie z.B. Grad oder Radians). Der Regler gibt ein zur Differenz proportinales Stellsignal aus, bei grosser Abweichung also mehr, bei kleiner Abweichung weniger Signal. Auf der Software Seite soltest du erstmal eine saubere Unterroutine für die Ansteuerung des Ruder bauen: Input = 0 bedeutet Ruder still Input < 0 Ruder auf Steuerbord Input > 0 Ruder auf Backbord Am besten natürlich proportional, so das ein grosser Input auch schneller das Ruder bewegt als ein kleiner. Mit dieser Routine hast du schon mal einen Grossteil des Spaghetticodes von oben entwirrt. Dann kannst du mal ganz simpel die Differenz deiner Kursgrössen bilden und damit die Ruderroutine füttern. Du musst natürlich dran denken, das dein Boot ein träges Tierchen ist, also nicht wie verückt am Ruder kurbeln lassen, sondern mit grossen Pausen zwischen den Messungen. Sinnvoll ist eine Rückmeldung der Ruderanlage, evtl. mit einem Wegaufnehmer oder Stellpoti, wie bei einem Fernsteuerservo.
Nicht vergessen, mit zunehmender Geschwindigkeit muessen die Ruderausschlaege kleiner werden.. Naja, vielleicht auch nicht.
>Auf der Software Seite soltest du erstmal eine saubere Unterroutine für >die Ansteuerung des Ruder bauen: >Input = 0 bedeutet Ruder still >Input < 0 Ruder auf Steuerbord >Input > 0 Ruder auf Backbord Das wird wohl ein wenig "Flatterhaft". Das wird wohl auf eine Ruder_Soll_Position_Routine hinauslaufen. Z.B. (C) int Ruder_Position ( int Position ) { } mit einem Rückgabewert für Fehler bzw. Position erreicht und einem Übergabewert von -MaxPosition über 0 (Geradeaus) nach +MaxPosition.
Amateur schrieb: > Das wird wohl ein wenig "Flatterhaft". Man kann ja die Toleranzen etwas grösser machen, z.B. mit einem Fenster von 2-4 Grad. Entscheidend war für mich eher die Idee, den Code mal ein bisschen zu entwirren und Rechnerei und Steuerung voneinander zu trennen. Immerhin gibts in Bascom bestimmt auch ein Gosub.
Ich benötige 2 Kurse, die beide vom Kompass kommen und zur Kursabweichung differenziert werden müssen. Den Sollkurs erhalte ich beim Einschalten des Controllers, alle weiteren Kompassausgaben sind Istkurse. Horst26
Normalerweise interessiert der Kompasskurs eigentlich weniger. Viel wichtiger ist der Kurs über Grund, also die Information vom GNSS
Dazu kommen dann noch so nette Spielereien wie adaptive Seegangserkennung, eine geschwindigkeitsabhängige Steuerung von Ruderausschlag und Gegenruder und wenn das ganze einigermaßen Funktionieren soll braucht's noch einen Gyros um den Drehwinkel des Schiff einigermaßen in die Rudersteuerung zu bekommen. Hat mich ein halbes Jahr und hunderte von Seemeilen gekostet einen fertigen Robertson so einzustellen das der in der Lage war meine Schiffchen unter nahezu allen Seegangsbedingungen brauchbar zu Steuern. Und in dem Ding stecken 30 Jahre Erfahrung und tausend Stunden Entwicklung. mfg Michael
Hallo Wolfgang und Michael, ich kenne Eure Einwände alle, aber ich muss in der Adria immer erst einen Tag motoren, ehe ich zum Wind komme (Quarner Bucht). Für GPS (ich habe eine Maus für mein Navigationssystem)bräuchte ich ein permanentes Eingabesystem und dafür fehlt u.a. der Platz. Im Panel benötige ich nur einen Schalter, aber wir kommen vom Thema ab. Gruß Horst26
das höre ich mir grade an: http://cre.fm/cre187-paparazzi vielleicht kannst du da ja ein paar Gedanken auf dein Boots-Projekt adaptieren
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.