english versionenglish

USB-Joystick als RC-Lehrer-Schüler-Adapter

mit PIC18F2455


zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage


Allgemeines
Einleitung
Die Schaltung
Bootloader?
Mögliche Erweiterungen
Download

zurück zu PIC-Projekt



Allgemeines
Firmwareaktualisierung:


            
mit Bootloader möglich
Stromversorgung:


über USB
Taktversorgung:


20-MHz-Quarz
Achsen:

5 Achsen

8 Bit Genauigkeit
gesteuert durch Kanal 1..5
Taster:
max. 14
gesteuert durch Kanal 6..12
RC-Typ:



3 bis 12 Kanal mit
PPM-Lehrer-Schüler-Signal
Lehrer-Schüler-Adapter



Einleitung
Wenn man mit seiner Flugmodell-Fernsteuerung einen Flugsimulator am PC bedienen will, dann benötigt man einen Adapter, der aus der Funkfernsteuerung einen virtuellen Joystick macht. Damit hatte ich mich schon im Jahre 1998 beschäftigt. Doch mit dem Aufkommen der USB-Ports und dem Aussterben der alten analogen Game-Ports am PC, war eine modernere Lösung längst überfällig.

Die hier vorgestellte Schaltung wird mit der Lehrer-Schüler-Buchse der Fernsteuerung verbunden und emuliert einen Joystick mit 5 Achsen und 16 Tasten. Je nach Fernsteuerungstyp sind aber nur maximal 14 Tasten wirklich benutzbar.

Die meisten Fernsteuerungen sind 8-Kanal-Modelle, der Adapter unterstützt aber von 3 Kannälen bis zu 12-Kanäle alle möglichen Varianten.

Voraussetzung für die Nutzung ist natürlich ein vorhandener (oder nachrüstbarer) Ausgang für das PPM-Lehrer-Schüler Signal. Auch PCM-Fernsteuerungen haben so einen Ausgang oftmals.

Weiterführende Informationen findet man zum Beispiel hier:
Die Pinbelegung verschiedener Lehrer-Schüler-Buchsen findet man auf der Seite der Firma MFTech: (Diese Firma verkaufte übrigens auch eigene RC-USB-Adapter, die sich komfortable konfigurieren lassen):






Die Schaltung
Über den USB-Anschluss wird der Joystick gesteuert und mit Strom versorgt. Die Kondensatoren C1 und C5 filtern die Betriebsspannung und C2 siebt die USB-Spannung des internen Spannungsreglers des PIC.

Q1, C3 und C4 versorgen den PIC mit einem stabilen 20-MHz Takt.

R1 legt Pin 1 des PIC  auf High-Pegel.

Als PIC habe ich den PIC18F2455 vorgesehen, es eignen sich aber auch PIC18F2458/2550/2553. (Ohne Änderung an Hardware oder HEX-File.)


Lehrer-Schüler-Signal
Der Mikrocontroller erwartet das PPM-Lehrer-Schüler-Signal mit TTL-ähnlichem Pegel an den verbundenen Pins 12 & 13. Die Eingänge haben Schmitt-Trigger. Der High-Teil des Signales sollte >4V sein und der Low-Teil <1V. Ob das Signal mit normaler Polarität oder invers vorliegt, das ist egal.
Spannungen unter 0V und über 5V dürfen nicht an die Pins 12 & 13 angelegt werden!

Die Ausgangspegel von Lehrer-Schüler-Buchsen variieren stark. Zwischen 0,6V und 9V ist alles möglich. Deshalb muss man das PPM-Signal an den Eingang des Mikrocontrollers anpassen. In der nebenstehenden Schaltung ist eine Eingangsstufe vorgesehen (R3, R2, C6, Q2), die nahezu beliebige Eingangspegel in normgerechte Pegel für die Pins 12 & 13 wandelt. Man verbindet dort also einfach den Lehrer-Schüler-Ausgang der Fernsteuerung mit dem Verbinder JP1.

Am Pin 11 (RC0) kann eine LED (mit Vorwiderstand) angeschlossen werden. Das Pin führt nur dann high High-Pegel wenn ein gültiges PPM-Signal erkannt wird.


DIP-Schalter S1
Der DIP-Schalter S1 ist für Modifikationen des Fernsteuersignals vorgesehen. So kann man Kanäle invertieren oder vertauschen. (siehe unten)
Stromlaufplan

Achsen
Der Adapter emuliert einen Joystick mit 5 analogen Achsen, wie man im obigen Screenshot gut sehen kann. Diese 5 Achsen werden von den ersten 5 Kanälen der Fernsteuerung kontrolliert.

Tasten
Der Adapter emuliert einen Joystick mit insgesamt 16 Tasten. Wird eine typische 8-Kanal-Fernsteuerung verwendet, dann werden nur die Tasten 1 bis 6 benutzt. Jeder weitere Kanal belegt zwei weitere Tasten. Damit sind maximal 14 Tasten in Benutzung. Die anderen zwei Tasten sind für zukünftige Erweiterungen reserviert oder werden in Zukunft entfallen.
Es sind jedem Kanal jeweils zwei Tasten zugeteilt. Die erste Taste wird aktiv, wenn der zugehörige Kanal zu weniger als 25% ausgesteuert ist (Kanal-Pulsbreite < 1,25 ms). Die erste Taste wird aktiv, wenn der zugehörige Kanal zu mehr als 75% ausgesteuert ist (Kanal-Pulsbreite > 1,75 ms).

Die Zuordnung der Kanäle zu den Tasten ist beim Prototyp wie folgt:

DIP-Schalter S1
Der DIP-Schalter S1 hat acht Kontakte SW1..SW8, mit denen sich die Wandlung des PPM-Signals in eine Joystikemulation beeinflussen lasst.

SW8
SW7
SW6  SW5 SW4 SW3 SW2 SW1
Kanäle invertieren frei frei Kanalzuordnung

Mit den Kontakten 1 und 2 des DIP-Schalters lässt sich die Zuordnung der Fernsteuerungskanäle zu den Joystickachsen verändern. Die ersten 4 Achsen eines Joysticks interpretiert eine Flugsimulation standardmäßig so:

Joystik Achse
1. Achse
2. Achse 3. Achse 4. Achse 5. Achse 6. Achse
Bezeichnung
X
Y
Z
X-Rotation
Y-Rotation Z-Rotation
Verwendung PC
Querruder Höhenruder Motordrossel Seitenruder - -

Das entspricht zufällig auch der Kanalzuordnung in Fernsteuerungen von Futaba oder Hitec. Andere Hersteller verwenden andere Zuordnungen. So liegt bei Graupner auf Kanal 1 die Motordrossel. Eine Anpassung in der Flugsimulation wäre zwar möglich, ist aber umständlich. Deshalb biete ich die Möglichkeit, die Kanale im Adapter so umzusortieren, dass man typische Fernsteuerungen verschiedener Hersteller problemlos einsetzen kann. Dazu dienen die beiden Kontakte SW1 und SW2 des DIP-Schalters.
Den fünften Kanal der Fernsteuerung belasse ich auf der 5. Achse des Joysticks. Er dient in der Regel als zweiter rechter Querruderkanal, und wird in Flugsimulationen so nicht benötigt..

SW2
SW1
RC-Type
Kanal 1
Kanal 2
Kanal 3
Kanal4
offen
offen
Futaba / Hitec
Querruder
Höhenruder
Motordrossel
Seitenruder
offen
zu
Graupner / JR
Motordrossel Querruder Höhenruder Seitenruder
zu
offen
MPX / robbe
Querruder Höhenruder Seitenruder Motordrossel
zu
zu
Sanwa
Höhenruder Querruder Motordrossel Seitenruder


Mit den Kontakten 5 bis 8 des DIP-Schalters lässt sich die Invertierung der Kanäle 1..4 aktivieren. Bei geschlosenem Schalter wird der zugehörige Kanal invertiert. Da sich das auch problemlos in der Fernsteuerung programmieren ließe, ist diese Funktion eigentlich nicht dringend nötig.
 
SW8
SW7
SW6 SW5
Kanal 4
Kanal 3 Kanal 2 Kanal 1




Bootloader?
Einen Bootloader braucht man für einen Joystick eigentlich nicht.
Aber zum Testen der Firmware verwendete ich die Hardware meines USB4all, der standardmäßig einen Bootloader besitzt. Aus diesem Grunde ist die Firmware so ausgelegt, dass sie mit dem Bootloader harmonisiert. Es ist aber problemlos möglich, die Firmware einfach mit einem Programmiergerät in den SteuerPIC zu brennen - ganz ohne Bootloader.

Falls man doch einen Bootloader verwenden will, dann brennt man mit einem Programmiergerät nur den Bootloader in den PIC. Um die Joystick-Firmware in den PIC zu flashen, wird nach dem Zusammenbau der Schaltung das Pin 1 des PIC mit Masse verbunden, bevor man den Joystick mit dem PC verbindet. Dann kann man die Software USBoot verwenden, um die Firmware in den PIC zu laden. Bootloader und USBoot sind im Downloadfile des Projektes USBoot enthalten. Es ist Bootloader5 in der 20-MHz-Version (Boot_05_20mhz.hex) zu verwenden. Mit anderen Bootloadern funktioniert die firmware nicht!



Mögliche Erweiterungen
Vielleicht werde ich den Kanal 5 so gestalten, dass er wahlweise die Joystik-Achse 5 oder die Taster 15 & 16 steuert.
Vieles ist möglich, aber ist es auch nötig? Im Moment habe ich keine weiteren Pläne, aber bei Notwendigkeit bin ich gern bereit, noch etwas zu ändern oder zu verbessern.



Download
Hier liegt


Entwicklung

08.06.2012
Bugfix: 2. Eingang lag (wenn kein Bootloader eingesetzt wurde) versehentlich auf Pin 24, korrigiert auf Pin 12

07.06.2012
Update
- Tasternzahl auf 16 reduziert
- Pegel an RC0 zeigt gültiges Eingangssignal an

05.06.2012
Update

04.06.2012
Prototyp


zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 04.06.2012
letzte Änderung: 12.06.2012