So nach langer Pause geht es nun endlich weiter
Hab in den letzten Tagen mein GUI fast fertig gestellt
(Bis auf die Einbindung des Gamepad zur Steuerung und der Synchronisation mit dem mC):
Bild hier
So nach langer Pause geht es nun endlich weiter
Hab in den letzten Tagen mein GUI fast fertig gestellt
(Bis auf die Einbindung des Gamepad zur Steuerung und der Synchronisation mit dem mC):
Bild hier
Hab mich in letzter Zeit einmal ein wenig um das Echolot gekümmert.
Habe mir dazu ein "Smartcast Ei" besorgt und es ein wenig umgebaut, so dass ich es über einen mC auslesen kann.
Das Bascomprogramm habe ich noch nicht fertig aber es wird mir einen String ausgeben der die Zeiten enthält in denen ich eine Positive Flanke hatte.
Diese Zeiten werden dann in Entfernung umgerechnet und anschließend wieder in einem String zusammengefasst, durch ":" getrennt.
Habe ich zb ein Echo bei 4,3m/ 4,4m/ 5,1m und bei 8,0m sieht mein String folgender maßen aus : "43:44:51:80:"
Das ganze landet dann in meiner Ausgabe:
Bild hier
Dort wird für jedes Echo ein Pixel gemalt, und bei der nächsten Periode einen nach links weitergeschoben.
(Bei dem Bild handelt es sich um eine Testprogramm dem ich die Werte noch manuell übergeben muss. Dies erfolgt über das untere Textfeld. in Dem rechten Textfeld habe ich mir zur Kontrolle noch mal die Zerlegung des Strings ausgegeben.)
Im mom hat das Display eine Auflösung von 100x100.
Eine veränderbare Auflösung wird auch noch folgen.
Welches Gewicht haben Deine "Kolbentanks". Wie willst Du das Trimmwasser zur Lageregelung zwischen den Tanks hin- und herbefördern. 100mm Hub ist nicht wenig
Gruß
Planung ersetzt Zufall durch Irrtum
Gruß aus dem Ruhrgebiet Hartmut
Ich hab inzwischen schon andere Tanks gebaut.
Benutze jetzt nur noch 2 die ich je nach Trimmung und Auftrieb unterschiedlich fülle.
Die Tanks haben im inneren einen Kolben den ich über eine Gewindestange verschiebe.
Das ganze funktioniert wie eine große Spritze.
Werde heute Abend mal Bilder machen.
Moin moin.
Währe anstatt Kolben + Gewindestange nicht einfacher die
Tnks mittel z.B. Scheibebwischer Pupe "umzufüllen? Wenn
die Tanks mittels Druckausgleich Leitung verbunden sind
dürfte da weniger Energie Verbrauchen?
Außerdem dürften die Tanks einfacher weden und die Form
wahre auch egal. Damit kann man die Tanks letztendlich
besser dort anbringen wo sie den besten Wirkunhsgrad haben.
Swioriger stelle ich mir das "Anblasen" (?) vor. Das schafft so
ne kleine Pumpe kaum. Ich habe als Kind eimal versucht mittels
Gartenschlauch zu Tauchen.....war aber nix nach ca 1m kam
keine Luft mehr und damals habe ich noch nicht gerauch.
Gruß Richard
Das Problem bei Tauchtanks ist das das Wasser in ihnen "schwappen" kann wenn sie nicht ganz gefüllt sind.
Desweiteren müssten sie ins innere des Bootes entlüftet werden damit in ihnen kein Überdruck entsteht, was die Gefahr mit sich bringt das Wasser oder zumindest Feuchte ins Innere gelangen kann.
Bei einem Kolbentank hat man all diese Probleme nicht.
ABer der größte Vorteil ist das ich ganz genau weiß wie viel Wasser im inneren ist und kann somit wesentlich genauer trimmen.
Stimmt schon das sie vom Aufwand wesentlich anspruchsvoller sind und auch nicht gerade platzsparend sind, aber das nehm ich gerne in Kauf.
Und des weiteren benutze ich die Tanks nicht nur um die Neigung zu trimmen sondern auch um zu Tauchen.
ich hab jetzt mal den ganzen Thread durchgearbeitet, ist echt ein schönes Projekt, dass du da hast
mir gefällt v.a. das GUI richtig gut, hast alles schön übersichtlich und logisch angeordnet
Freue mich schon auf weitere Fortschritte
Das GUI ist mittlerweile schon wieder veraltet, bin im mom dabei das Echolot noch zu integrieren.
Werde bei Gelegenheit mal das neue posten.
Ich mitlerweile meine Motorsteuerung implementiert.
Da mein ROV keinerlei Ruder hat wird es sowohl in der horizontalen wie auch in der vertikalen Ebene nur über je 2 Motoren gesteuert.
Die Richtung wir je Ebene über einen Stick auf meinem Gamepad vorgegeben :
Bild hier
Die Steuerknüppelposition wird als Integerwert von -100 bis 100 ausgelesen wobei 0 die Ruhelage ist.
Anhand dieser sollen dann die jeweiligen Motordrehzahlen errechnet werden ( -100 für rechtsrum Vollgas / 0 für Stop /100 für linksrum Vollgas).
Dabei kamen dann folgende Grafik und Funktionen heraus:
Bild hier
Hier noch mal in Groß: Klick
L und R stehen jeweils für die Leistung in % des jeweils Rechten oder Linken Motors.
Da das Gamepad nie genau 0 in der Ruhelage sendet hab ich noch einen Offset von +- 10 einprogrammiert.
Desweiteren läuft der Stick auch nicht genau auf einer Kreisbahn, was zur Folge hatte das die Werte für die Motordrehzahl schon einmal auf über 100% kommen (Zeichnung unten rechts).
Das habe ich umgangen indem ich zusätzlich in der Implementierung noch eine If-Abfrage eingebaut habe.
Und so schaut das ganze dann in Code aus :
Es gibt sicher noch ein paar andere Mischerprofile aber ich denke mit dem "schwimme" ich ganz gutCode:'------------------------------------ '---------V-Mischer Vorschub--------- '------------------------------------ If (state.X > -10) And (state.X < 10) And (-10 < state.Y) And (state.Y < 10) Then '<----- Uhrsprung MotorschubHR = 0 MotorschubHL = 0 ElseIf (state.X > -10) And (state.X < 10) And ((state.Y < -10) Or (state.Y > 10)) Then '<----- X Achse 0 MotorschubHR = -state.Y MotorschubHL = -state.Y ElseIf (state.Y > -10) And (state.Y < 10) And ((state.X < -10) Or (state.X > 10)) Then '<----- Y Achse 0 MotorschubHR = -state.X MotorschubHL = state.X ElseIf (state.X > 10) And (state.Y < -10) Then '<----- I Bereich MotorschubHR = Math.Atan(-state.Y / state.X) * (180 / Math.PI) * (20 / 9) - 100 MotorschubHL = Math.Sqrt((state.X) ^ 2 + (state.Y) ^ 2) If MotorschubHL > 100 Then MotorschubHL = 100 ElseIf (state.X > 10) And (state.Y > 10) Then '<----- II Bereich MotorschubHR = -(Math.Atan(state.Y / state.X) * (180 / Math.PI) * (20 / 9) - 100) MotorschubHL = -Math.Sqrt((state.X) ^ 2 + (state.Y) ^ 2) If MotorschubHL < -100 Then MotorschubHL = -100 ElseIf (state.X < -10) And (state.Y > 10) Then '<----- III Bereich MotorschubHR = -Math.Sqrt((state.X) ^ 2 + (state.Y) ^ 2) MotorschubHL = -(Math.Atan(state.Y / -state.X) * (180 / Math.PI) * (20 / 9) - 100) If MotorschubHR < -100 Then MotorschubHR = -100 ElseIf (state.X < -10) And (state.Y < -10) Then '<----- IV Bereich MotorschubHR = Math.Sqrt((state.X) ^ 2 + (state.Y) ^ 2) MotorschubHL = -(Math.Atan(-state.Y / state.X) * (180 / Math.PI) * (20 / 9) + 100) If MotorschubHR > 100 Then MotorschubHR = 100 End If
Aber das wird sich wohl erst zeigen wenn ich das Ding im Wasser habe.
Hab es Gestern endlich mal geschafft die beiden Kolbentanks fertig zu stellen:
Bild hier
Bild hier
Bild hier
Die Schwartzen Teile sind vom Original "Engel" Tank die den ich aus meinem Alten RC UBoot aisgebaut und etwas zurechtgesägt habe. Die Weißen Teile sind mein Nachbau (Der Kolben und das Getriebe sind Original Ersatzteile).
Lesezeichen