PPM2USB - Modellbau-Fernsteuerungs-Adapter

Der hier beschriebene Adapter ermöglicht den Anschluss einer Modellbau-Fernsteuerung an dem USB-Port eines PCs und emuliert einen Standard-USB-Joystick. Damit können z.B. Flugmodelle im Simulator mit der eigenen Fernsteuerung geflogen werden.

# This page in english #

USB-seitig verhält sich der Adapter wie ein Standard-USB-Joystick (HID-Device) und wird ohne Treiber unter Windows und Linux erkannt (getestet mit Windows XP, Windows 7 und Ubuntu 9.10). Unter Mac OS sollte es ebenfalls funktionieren, dies wurde aber noch nicht getestet. Der Adapter ist hervorragend geeignet, um den Modellflug am heimischen PC zu simulieren.

Fernsteuerung-Joystick Adapter

PPM

Die meisten Modellbau-Fernsteuerung liefern ein sogenanntes PPM-Signal (auch RC Summensignal genannt). Es handelt sich dabei um eine Puls-Pausen-Modulation aller Kanäle. Bild 2 zeigt ein solches PPM-Signal mit 5 Kanälen. Es besteht aus einer Impulsfolge mit ca 0,4ms langen Impulsen. Der Zeitabstand tn zwischen den Impulsen entspricht der Stick-Position des jeweiligen Kanals. Eine Zeit von 1,5ms entspricht der Mittelstellung, 1ms der Minimal- und 2ms der Maximalstellung. Eine Impulsfolge besteht aus n+1 Impulsen - für 5 Kanäle also 6 Impulse. Die Impulsfolge wird ca. alle 20ms (50Hz) wiederholt. Das Signal hat bei meinem Sender eine Amplitude von ca. 4,1V.

Das PPM-Signal einer Fernsteuerung mit 5 Kanälen

Bild 2: Das PPM-Signal einer Fernsteuerung mit 5 Kanälen

Das PPM-Signal kann bei dem von mir verwendeten Fernsteuer-Sender (Typ Esky EK2-0406G) an dem davor vorgesehenen Trainer-Anschluss abgegriffen werden. Die Pinbelegung der 4-pol. Mini-DIN ist in Bild 3 ersichtlich. Der Stecker wird übrigens auch bei S-Video verwendet, ein passendes Kabel mit Stecker ist daher leicht zu bekommen.

Steckerbelegung vom Trainer-Anschluss der Esky-Fernsteuerung

Bild 3: Steckerbelegung vom Trainer-Anschluss der Esky-Fernsteuerung

Eine Übersicht der Steckerbelegungen der Trainerbuchsen anderer Hersteller (u.a. Graupner, Robbe, Futaba, Multiplex, Hitec) ist hier zu finden: Externer LinkSteckerbelegungen von Schülerbuchsen verschiedener RC-Sender. Bei analogen Empfängern ist das Signal meist auch auf der Platine zu finden.

Hardware

Der Schaltplan des PPM2USB-Adapters

Bild 4: Der Schaltplan des PPM2USB-Adapters

Der Schaltplan ist recht übersichtlich und kann auf einem Stück Lochrasterplatine oder Mithilfe eines Entwicklungsboards aufgebaut werden. Die Widerstände und die Zenerdioden sorgen für die nötigen USB-Spannungspegel. Das PPM-Signal wird direkt mit dem ICP-Pin des ATMega8 verbunden. Dies funktioniert bei Signalpegeln im Bereich von ca. 1,5-5V. Bei kleineren Amplituden könnte man den internen Komparator benutzen. Für das richtige Timing sorgt ein externer 12Mhz Quarz.

Anmerkung: Die ISP-Beschaltung zum Programmieren des Controllers wurde im Schaltplan weg gelassen. Die etwas ungewöhnlichen Widerstandswerte entsprechen den von V-USB vorgeschlagenen Werten. (Mein Prototyp funktioniert auch problemlos mit 100 Ohm anstatt 68 Ohm, 2,2k-Ohm anstatt 1,5kOhm und ohne die Zenerdioden. Das muss aber nicht überall so sein.)

PPM2USB auf USBASP-Hardware

Mit einer kleinen Anpassung kann auch die Platine eines USBASP-Adapters verwendet werden: USBASP nach PPM2USB-Umbau.

Software

Die Software wurde mit der AVR-GCC-Toolchain entwickelt und besteht aus drei Teilen:

PPM-Dekoder

Der PPM-Dekoder ist vollständig Interrupt gesteuert. Zur Messung der Zeiten wird ein 16Bit Timer verwendet, der direkt mit dem CPU-Takt (12Mhz) verbunden ist. Ausgewertet werden nur die positiven Flanken der Eingangssignals am ICP-Pin. Dabei wird der ICP-Interrupt ausgelöst, der die Zeiten zwischen den Impulsen abspeichert. Je nach Stick-Position ergeben sich hier Timerwerte im Bereich von (1ms*12Mhz)=12000 bis (2ms*12Mhz)=24000. Für die Übertragung an den PC werden die Timerwerte in einen 8-Bit-Wert im Bereich 0-255 umgerechnet. Eine längere Pause - diese tritt zwischen den Impulspaketen auf - löst einen Timer-Overflow-Interrupt auf und setzt den Dekoder wieder zurück.

USB-Stack

Der ATMega8 besitzt eigentlich keine USB-Schnittstelle. Dennoch ist es möglich, eine solche in Software zu realisieren. Dazu wurde der frei verfügbare USB-Stack namens Externer LinkV-USB verwendet. Dem angeschlossenen PC wird ein HID Joystick vorgegaukelt.

Hauptprogramm

Im Hauptprogramm wird V-USB initialisiert. Anschließend begibt sich der Controller in eine Endlosschleife, in der USB-Daten gepollt und die Joystick-Positionen an den PC Übertragen werden. Um die CPU-Last auf dem PC niedrig zu halten, werden nur Daten übertragen, wenn sich eine Stickposition geändert hat.

Download

Flug-Modell-Simulator FMS

Zur Simulation von Modellbauflugzeugen ist der kostenlose Flug-Modell-Simulator (FMS) bestens geeignet. Die Modelle können dann zusammen mit dem hier beschriebenen Adapter mit der eigenen Fernbedienung geflogen werden:

Video 1: Test des PPM2USB-Adapters, Testflug mit Quadropcopter und A380 im FMS

Tags: usb rc simulator interface ppm kabel cable pinout pinbelegung adapter joystick trainer modellbau v-sub pcm RC USB Atmel AVR Mikrocontroller Projekte Projekt uC diy selbstbau tutorial µC selbstgebaut schaltung schaltplan schema bauplan bauanleitung schematic programmierung elektronik controller embedded Atmega8 Atmega32 arduino bascom avr-gcc avr studio atmega microcontroller isp