Controller fürs XXVIw

In meinem neuen XXVIw habe ich neben ausfahrbaren Tiefenrudern zur besseren Manövrierbarkeit ein Bugstrahlruder eingebaut. Hatte das Original nicht, ich weiss, aber der Platz ist da, und bessere Manövrierbarkeit im engen Hafen kann nicht falsch sein.

Die Tiefenruder sollen nur ein- und ausfahren, ein separates Ansteuern des Winkels ist nicht vorgesehen. Das Bugstrahlruder ist als Flügelzellenpumpe ausgelegt und wird von einem Brushlessmotor angetrieben.

Beide Baugruppen sollten von Anfang an automatisch angesteuert werden, sodass keine der wertvollen Prop Kanäle verloren gingen, und eine Funktion dennoch gegeben ist.

Schnell wurde eine Funktionsliste erstellt, wann welche Funktion geschaltet oder eben nicht geschaltet wird. Die Tiefenruder beispielsweise sollten nur bei kleiner Vorwärtsfahrt ausgefahren werden. Bei schneller Fahrt und Stopp sollen sie eingefahren sein, ebenso bei kompletter Rückwärtsfahrt. Das Bugstrahlruder hingegen ist nur funktionell bei kleiner Fahrt. Bei höheren Fahrstufen ist es durch den Strömungsabriss völlig wirkungslos. Es lag also nahe, beide Baugruppen mit einigen Servofunktionen zu verknüpfen. Für das Tiefenruder wird nur der Fahrregler abgefragt, beim Bugstrahlruder sind es Fahrregler und Seitenruder. Hier wird in Abhängigkeit von der Fahrstufe das Seitenrudersignal des Empfängers einfach auf den Brushlessmotor durchgeschliffen. Naja, nicht ganz, mit zwei Potis kann man für jede Seite die maximale Drehzahl des Motors bei Vollausschlag des Senders einstellen.

Ich habe die erste Testschaltung auf eine kleine Lochrasterplatine aufgebaut um die Programmierung zu erstellen. Das Programm sollte ursprünglich noch einen Wasserfühler mit drei Eingängen haben die im Boot verteilt werden, das passte aber Programmtechnisch irgendwo nicht. Nachdem mir das zuviel Fummelei wurde habe ich letztendlich den Programmteil rausgeworfen während die Komponenten noch auf der Platine blieben.

Das Programm ist simpel aufgebaut und einfach zu verstehen. Für Interessierte habe ich auch noch auf die Schnelle eine Platine entworfen. Hierbei muss beachtet werden, dass die beiden Anschlüsse C.6 und C.7 parallel zu Servo und Fahrregler geschaltet werden. Das ist nicht explizit auf der Schaltung erwähnt.

Das Programm

#picaxe 18m2

Symbol Throt       = B0                               'Gaswert

Symbol Eingef      = B1

Symbol Ausgef      = B2

Symbol Schw1       = B3

Symbol Schw2       = B4

Symbol Wert        = B6

Symbol Mitte       = B7                               'mittelstellung

Symbol Steuer      = B8                               'Steuerungswert

symbol potihi      = b9

symbol potilo      = b10

Symbol Brush       = B.0                              'Ausgang Brushless

Symbol Tiefenruder = B.1                              'Ausgang Tiefenruder

symbol bugpotil     = b.2 'Poti bugstrahlruder lo

symbol bugpotih     = b.3 'Poti bugstrahlruder hi

Symbol Led1        = C.1                              'LED 1

Symbol Led2        = C.0                              'LED 2

Symbol Seite       = C.6                              'Seitenruder

Symbol Gas         = C.7                              'Gasknueppel

 

 

Init:

Eingef = 80 'Eingefahren 0 , 8ms

Ausgef = 180 'Ausgefahren 1 , 8ms

Schw1  = 155 'Schwelle Unten 1 , 55ms

Schw2  = 165 'Schwelle Oben 1 , 65 Ms

Mitte  = 150

Servo Brush , 75

Servo Tiefenruder , Eingef 'Servo Initialisieren

Servopos Brush , Mitte 'Servo Initialisieren

Pause 2000

 

 

Main:

readadc bugpotih,potihi 'bugstrahlruderpoti hi lesen

potihi = potihi / 7

potihi = 145 + potihi

readadc bugpotil,potilo 'bugstrahlruderpoti hi lesen

potilo = potilo / 7

potilo = 145 - potilo

 

 

;ausfahrbare tiefenruder

;gas an pin c.7, ausgang an pin b.1

;tiefenruder sind bei rueckwaerts oder null eingefahren und fahren bei gas langsam aus. ab bestimmten wert fahren sie langsam wieder ein

Pulsin Gas , 1 , Throt

Select Case Throt

Case Schw1 To Schw2                                    'totbereich

Gosub Ausfahren

Case Eingef To Schw1

Gosub Einfahren

Case Schw2 To Ausgef

Gosub Einfahren

End Select

 

;bugstrahlruder

;seite an pin c.6, gas an pin c.7, ausgang an pin b.0

;zuerst wird brushlessregler mit mittelstellung initialisiert. brushlessausgang folgt dem Seitenruder

;mit grossem totbereich zum entstoeren. wenn gas bestimmten wert uebersteigt wird brushlessausgang abgeschaltet

;nur bei vorwaerts

Pulsin Gas , 1 , Throt 'Gas lesen

Pulsin Seite , 1 , Steuer 'Seitenruder lesen

steuer = steuer min potilo max potihi

;debug

Select Case Throt

Case 80 To 140

Servo Brush , Mitte

Case 141 To 160

Servo Brush , Steuer 

Case 161 To 200

Servo Brush , Mitte

End Select

Goto Main                                              'und von vorne

 

Einfahren:

If Wert > 90 Then

Return

End If

For Wert = Eingef To Ausgef

Servo Tiefenruder , Wert

Pause 20

Next Wert

Return

 

Ausfahren:

If Wert < 170 Then

Return

End If

For Wert = Ausgef To Eingef Step -1

Servo Tiefenruder , Wert

Pause 20

Next Wert

Return