Modellfliegen macht Spass und gute Laune
 Sie sind hier : Homepage →  PalmZ Steuerung
printbutton

Normaler Fernsteuer Sender für den PalmZ

Um in unserem engen Wohnzimmer (3,8 x 5 m) mit Möbeln noch den PalmZ fliegen zu können, wollte ich meinen normalen Fernsteuer Sender Graupner MC12 verwenden. Außerden sollte die Motor-Steuerung feiner auflösen.

 

Der orignal Antrieb hat 8 Geschwindigkeitsstufen und das Seitenruder geht nur ruckartig Links-Neutral-Rechts. Dazu musste jetzt ein Interface her, das aus den PPM-Signalen eines normalen Fernsteuer Senders Infrarotimpulse macht. Zum Glück musste ich nicht bei Null anfangen. Bei Bernhard Konze http://home.versanet.de/~b-konze/xtwin/xufo_mod/xufo_mod.htm kann man sehen, wie PPM-Signale in ein anderes Format kodiert werden. Das hat mir sehr geholfen. Eine andere Vorlage kam von Robert Brücklmeier (FMT Extra Slow- & Parkflyer 02/2005 Seite 18), www.mfcr.de mit seinem 8g Modell, beziehungsweise dem Infrarot Sender dazu. Durch die stärkere Sendeleistung der 10 Stück IR-LED's (80-100 mA je Diode) sollte der Steuerbereich auch zunehmen.

Es gibt jetzt auch einen Video Film (PalmZ_Steuerung.wmv mit 480x360 pixel, 4,8 MB, 1:52 min), das die Flugeigenschaften im Freien zeigt. Durch diesen neuen Freiheitsgrad hat es sich gelohnt, die Steuerung aufzubauen.

Aufbau der Elektronik

Damit das ganze nachbaufreundlich ist, habe ich eine Platine (8 x 5 cm) dazu mit Eagle entworfen. Voraussetzung ist, dass der Fernsteuer-Sender eine Lehrer Buchse hat, so daß man die PPM-Impulse und die Akkuspannung (9,6 V) bequem anzapfen kann. Bei meinem Graupner MC12 Sender war die Lehrer Buchse vorhanden, aber die geschaltete Versorgungsspannung musste über eine extra Niederspannungsbuchse herausgeholt werden.

 

Bei einem anderen Sender T2M Pilot-4FM Pro (baugleich mit Hitec Laser4) ist eine 6-polige DIN-Buchse (Hitec/Futaba Belegung) vorhanden, die alle Anschlüsse hat. An einem 4-poligen DIL-Schalter und 2 Steckbrücken kann man dann alle wichtigen Konfigurationen einstellen, ohne das Programm ändern zu müssen.

 

Zur Fehlersuche gibt es einen 5V RS232 Anschluss. Mit einem Pegelwandler an einem PC angeschlossen kann man mit Hilfe eines Terminal-Programmes (z.B. Hyperterminal) alle Steuerwerte sichtbar machen. Als Mikroprozessor wurde ein Atmel ATTiny2313 verwendet. Die rote LED zeigt das Sende-Signal an, da man ja Infrarot nicht sehen kann. Auch sollte man nicht direkt längere Zeit in die IR-LED's sehen, da die Strahlungstärke recht hoch ist.

Alle Teile wurden in Bezug auf einen günstigen Preis ausgesucht und sollten sich für insgesamt 15 EUR beschaffen lassen.

 

So eine mobile Elektronik braucht natürlich auch ein passendes Gehäuse. Bei dem Gehäuse SP6000SW (Conrad.de, Reichelt.de, siehe Stückliste) ist ein Zugang (Deckel) für eine 9 V Batterie vorgesehen. Diese Öffnung kann man benutzen, um die DIP-Schalter einzustellen, oder das RS232 Kabel anzuschließen. Allerdings muss man zum Einbau der Platine die Stege neben der Verschraubung vorsichtig mit dem Seitenschneider wegschneiden. Zur Befestigung der Leiterplatte braucht man eine M2,5 x 10 mm Schraube mit 2 Muttern, die neben den Leuchtdioden eingeschraubt wird (siehe Bild rechts). Die Stirnseite des Gehäuses muss freigeschnitten werden, circa 18 mm Spalt über die ganze Breite, damit die Leuchtdioden freie Sicht haben. Praktischer Weise führt man durch diese Öffnung auch das Kabel zum Anschluss an den Sender.

Am Anfang ist die Analyse

Zuerst galt es, das Sende-Telegramm zu entschlüsseln. Durch die bereits geleisteten Vorarbeiten zu dem X-Twin war es nicht mehr so schwer das Sende-Telegramm des PalmZ zu dekodieren. Zuerst die Modulation und die Zeiten. Moduliert werden die IR-LED's mit 38 KHz. Folgende Bit-Zeiten sind vorhanden (siehe Bild rechts):

Startbit 1: 2 ms HIGH, 2 ms LOW

Startbit 2: 2 ms HIGH, 1 ms LOW

Datenbit "1": 1,4 ms HIGH, 1,4 ms LOW

Datenbit "0": 0,7 ms HIGH, 0,7 ms LOW

Stopbit: 0,4 ms HIGH

Pause zwischen den Telegrammen:

Kanal A: 215 ms (Modell-Farbe gelb)

Kanal B: 175 ms (Modell-Farbe grün)

Kanal C: 135 ms (Modell-Farbe blau)

ein blaues Modell sollte also am schnellsten reagieren.

Zum Datentelegramm:

2 Bit Kanalnummer: A = 00, B = 01, C = 10

3 Bit Motordrehzahl: 000-111

5 Bit Seitenruder: Links 00100, Mitte 00000, Rechts 10000, wie die Trimmung funktioniert weiss ich nicht, man trimmt am Besten mechanisch mit dem Seitenruder durch biegen.

4 Bit Prüfsumme (checksum): durch Addition der 3 Werte

Kanalnummer 2 Bit nach links geschoben + Motordrehzahl + Seitenruder 2 Bit nach rechts geschoben, und auf 4 Bit Länge maskiert.

 

Steuerstufen feiner machen

Um die Steuerstufen feiner zu machen, habe ich bei der Motordrehzahl jeweils eine Zwischenstufe eingefügt, die im Mittel alle 2 Telegramme wirkt.

Bei dem Seitenruder habe ich 3 Zwischenstufen eingefügt, die im Mittel alle 4 Telegramme wirken. Das macht sich aber dann nur bei weiträumigerem fliegen bemerkbar.

Schaltbild und Details

Das Schaltbild wurde mit dem Freeware Programm Eagle (siehe Link Seite) gezeichnet, ebenso die Leiterplatte. Wenn man auf das Schaltbild klickt erscheint es in einem eigenen Fenster in einer Auflösung von 75 dpi. Eine druckfähige Version  mit 150 dpi kann man herunterladen. Eine Teileliste mit Bestellreferenz bei Reichelt ist auch da.

Das Interface kommt wegen der Taktung mit nur 25 mA Stromaufnahme aus. Die Schaltung ist für den Betrieb an 8 Akkuzellen (9,6 V, NiCd/NiMH) ausgelegt (5 Stück IR-LED's in Reihe). Wenn der Sender nur 6 Akkuzellen hat (7,2 V), muss man die Anzahl der IR-LED's in Reihe auf je 3 Stück reduzieren.

Eine ausführlich Beschreibung der Senderankopplung gibt es bei www.rc-network.de mit dem Titel "TX2TX Lehrer/Schüler-Betrieb unter Berücksichtigung von Unverträglichkeiten zwischen Sendern unterschiedlicher Hersteller". http://www.rc-network.de/magazin/artikel_03/art_03-0069/art_03-0069-00.html 

Zu den Anschlüssen und Schaltern:

JP1: Anschluss für den PPM Sender.

JP2: Anschluss für einen RS232 Pegelwandler zum debuggen.

JP3/4: Löt-Brücke für Programmierstecker 0 V.

JP5: 38 KHz Takt Ausgang zur leichteren Messung der Frequenz.

JP6: Hüllkurve des Telegramms, zur leichteren Messung.

JP7: Brücke zum Umlegen des Seitenruders auf Kanal 2/4 (ON = 4).

JP9/10: Brücke zum Umlegen des Motors auf Kanal 1/3 (ON = 3).

S2.1: ON = Channel B für den PalmZ.

S2.2: ON = Channel C für den PalmZ.

S2.1/2: beide OFF = Channel A für den PalmZ.

S2.1/2: beide ON beim Einschalten kalibriert die Nullstellung der Kreuzknüppel (5 s warten), danach wieder umstellen auf den PalmZ channel. Dazu vorher den Motorkanal auf Null stellen, das Seitenruder auf Neutral.

S2.3: PPM Modulation invertieren

S2.4: 100 ms Pause zum dynamischeren fliegen.

SV2: Programmieranschluss 6 polig für den Atmel ATTiny2313.

 

Leiterplatte (Platine)

Die Leiterplatte wurde so gestaltet (80 x 50 mm), dass sie in ein preiswertes Gehäuse passt, und leicht aufzubauen ist. Das Layout (PPM_PalmZ_BoardI_600.bmp) kann man herunterladen und mit einem Tintenstrahldrucker drucken. Ich benutze dazu Klarsichtfolie für Tintenstrahldrucker von Staples SL5257, mit einem Canon Drucker i550. Zum drucken stelle ich als Medium "Folie" ein und "High Qualtity". Damit wird die Deckung zum belichten der beschichteten Leiterplatten genügend schwarz (dicht).

Die Bestückung kann man auf dem Bild rechts sehen. Der 1000 uF Elko ist ein Radial-Typ wird aber flach liegend montiert. Die einzige Brücke ist JP3-JP4, die auch als 0V Punkt zum Messen verwendet werden kann, wenn man sie lang genug lässt. Die große Bohrung links hat 5,5 mm Durchmesser, und ist für die Gehäuseverschraubung vorgesehen. Die kleine Bohrung rechts hat 2,5 mm und dient zum befestigen der Leiterplatte am Gehäuse.

Software

Bei dem Programmieren des ATTiny2313 muss man beachten, dass ab Werk der interne RC-Oszillator (8 MHz) durch 8 geteilt wird. Diese Sicherung (fuse) muss man zurücksetzen (AVR Studio 4, ISP), sonst läuft alles 8 mal langsamer ab.

Den Assemblercode PPM_PalmZ.asm kann man herunterladen, ebenso das übersetzte Programm PPM_PalmZ.hex zum programmieren.

Das kritischste bei der Softwareentwicklung war die Taktgenerierung für den 38 KHz Takt der Infrarot Modulation. Der Timer/Counter0 wird im Mode 7 (Fast PWM, toggle at TOP) betrieben, damit alle 13,1 us (halbe Taktbreite) ein Interrupt erzeugt wird. Alle 105 CPU-Zyklen kommt damit die Interrupt-Routine dran. Die Laufzeit beträgt zwischen 20 und 35 Zyklen. Damit verbraucht sie zwischen 20 und 30% der CPU Kapazität. Am Testpunkt JP5 sind die 38 KHz herausgeführt, um sie leicht messen zu können. Die statistische Analyse mit einem HP1631 zeigte nach je 500 runs einen Mittelwert von 26,1 us und eine Standardabweichung von 0,5 us. Der Minimalwert betrug 19,7 us, der Maximalwert 26,3 us. Damit sollte der Interrupt erzeugte Takt in der Praxis störungsfrei sein.

Das Daten-Telegramm ist circa 30 ms lang, je nach Daten. Damit man die Länge leichter messen kann, speziell mit einem Digital-Oszillograf, ist die Hüllkurve auf Testpunkt JP6 gelegt. Die Pause zwischen den Telegrammen wird über den Timer/Counter1 (1 ms Takt, 1 us Auflösung) abgewickelt. In dieser Pause werden auch die "Debug Strings" per Interrupt gesendet, damit sie nicht beim kritischen Timing des Datentelegramms zum PalmZ stören.

Wenn man an JP2 eine RS-232 Pegelwandler anschließt, kann man mit den Tasten "#,1,2" (Hyperterminal oder ähnliches benutzen, 9600 Baud 8N1) drei verschiedene Datensätze ("Debug String") im ASCII Format abrufen, um die Funktion zu prüfen. Der erste Datensatz (Taste #) zeigt die PPM-Zeiten der ersten 4 Kanäle des Fernsteuersenders in ms (hexadezimal) an. Der zweite  Datensatz (Taste 1) zeigt die im EEPROM gespeicherten gelernten (DIP Schalter S2.1 und S2.2 beim Einschalten auf ON) Referenzwerte der 4 PPM-Kanäle an, in hexadezimal. Der dritte Datensatz (Taste 2) zeigt die Telegrammdaten für den PalmZ im Binärformat an. Die genaue Belegung ist im Sourcelisting dokumentiert.

Historie

2007-08-26 Erstellt

2007-08-31 Update: Video

Nach oben

Homepage © 2005 - 2012 - Kein Copyright by Rudolf Reuter - 65191 Wiesbaden / Germany - Tel. 0611 844522 ------ auf dem neuen WWW12