JET Klappensteuerung
Author: Dipl.-Ing. Wilfried Klaas
Board: Arduino Duemilanove, ATTiny85
Software: |Jet.zip
Es ist schon ein fazinierender Antrieb, so ein Jetantrieb. Mein kleines Boot ist eigentlich recht einfach aufgebaut. Kostet auch nicht viel, ca. 50€ bei eBay. Man muss allerdings noch so einiges an Zeit reinstecken, damit es so schön seine Bahnen zieht.
Irgendwann, bei mir nach 1 Jahr, ist es dann soweit, daß man den Antrieb tauschen muss. Na dann kann man ja gleich die Chanche nutzen und einen Jet mit Rückfahrklappe montieren. Denn Rückwärts fahren kann das Boot so nicht. Und selbst mit Rückfahrklappe ist das nicht ganz einfach. Denn die Klappe wird extra gesteuert und man muss den Antrieb weiter vorwärtslaufen lassen. DAzu ist aber eine 3-Kanal Funke notwendig. Nun ist aber, m.M. nach, eine Pistolensteuerung ideal für das Gefährt. Die hat aber nur 2 Kanäle…
So ein Dilemma, man müßte also die Klappe zusammen mit dem Motor steuern können. Das genau macht dieses Programm.
Es wird der ESC Kanal vom Empfänger ausgewertet. Bei Vorwärtsfahrt wird der Servo an den einen Anschlag gefahren, bei Rückwärtsfahrt wird der Servo automatisch an den anderen Anschlag gefahren und das Motorensignal als Vorwärtssignal ausgegeben.
Dazu sind noch folgende Features wichtig:
- Der Servokanal muss reversible sein, und man muss den Weg einstellen können, am besten man kann die beiden Position direkt per Fernbedienung programmieren.
- Auch der Motorkanal sollte einstellbar sein, damit man z.B. auch günstigere Flugregler verwenden kann.
Beschreibung
Der Empfänger wird vom Pin 2 gelesen, die Ausgänge liegen auf Pin 9 (Klappenservo) und 10 (ESC). Am Anschluss 5 wird ein Taster (PRG) gegen Masse angeschlossen.
Im Programm gibt es einen Programmiermodus, wenn der Taster PRG beim Einschalten gedrückt wird. Dann können die beiden Positionen des Klappenservos und die minimale und maximale Ansteuerung des ESC's gespeichert werden. Zunächst muss die obere Position gespeichert werden, dazu die Steuerung auf den gewünschten Wert einstellen und PRG drücken. Zur Quittierung blinkt die Board-LED. Danach wird die untere Position angefahren und genauso gespeichert. Jetzt die maximale Stellung des ESC, und danach die Minimalposition. Der Programmiermodus wird dann automatisch verlassen. Die Werte für die Klappe und den ESC werden im EEPROM abgelegt und beim erneuten Start auch wieder gelesen. Die minimale Position steht im EEPROM in der Adresse 0, die maximale Position an Adresse 1. (Es ist dabei völlig egal, welchen Wert die untere bzw. obere Position tatsächlich haben. Unten definiert nur den Rückwärtsbetrieb. Wie der Servo dabei stehen muss, ist völlig egal. Es wird beim Speichern einfach die programmierte Position angefahren. Das gleiche gilt auch für die andere Position.) Adresse 3 enthält den ESC Max Wert und 2 den ESC Min Wert.
Weiterhin kann im Programm auch der ESC bei Rückwärtsfahrt auf halbe Leistung geschaltet werden. Dazu dient der Compilerschalter HALF_BACK_THROTTLE.
Diskussion
Ich bin mit großer Freude auf dieses Sketch gestossen! Vielen Dank für die tolle Arbeit und vor allem, dass Sie sie zur Verfügung stellen!
Mein Hobby ist natürlich der Modellbau, insbesondere Futterboote sind mein Steckenpferd. Beim aktuellen Projekt baue ich ein Boot zur Drohne auf. Das möchte ich mittels ArduPilot Mega 2.6 realisieren. Doch leider gibt gibt das ArduRover Setup die Steuerung der Schubumkehr nicht her. Nach langem Suchen bin ich nun endlich auf ihre Seite gestoßen und möchte natürlich das JET Sketch verwenden. Ich habe mir dazu überlegt, dieses Sketch auf ein IC zu flashen und dieses dann am Gaskanal zwischenzuschalten. Soweit, so gut.
Leider gibt Arduino 1.0.6 beim PRüfen des Sketchs einen Fehler aus:
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
Jet:61: error: 'RCReceive' does not name a type
Jet.ino: In function 'void setup()':
Jet:84: error: 'escReceive' was not declared in this scope
Jet.ino: In function 'void loop()':
Jet:116: error: 'escReceive' was not declared in this scope
Jet:120: error: 'between' was not declared in this scope
Jet.ino: In function 'void programServo()':
Jet:168: error: 'escReceive' was not declared in this scope
Jet:178: error: 'escReceive' was not declared in this scope
Können Sie sich das bitte ansehen? Liegt es an mir, habe ich etwas übersehen?