PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anschluß und Dekodierung der Signale einer Fernsteuerung



Hellmut
01.10.2004, 21:40
Hallo Freunde

Nachdem ein weiterer Mitstreiter für den Einsatz von Soft- und Hardware nach dem RoboterNetz-Spezifikationen im Schiffsmodellbau gewonnen habe wird folgendes Problem akut:

Ein Empfänger einer Fernsteuerung hat bis 8 Steckplätze für Servos und im Schiffsmodellbau werden auch Module eingesetzt die aus solchen proportionalen Kanälen je bis zu 8 weitere Proportionalkanäle, oder 16 Schaltkanäle oder Mischformen davon bereit stellen. Jetzt brauchen wir im Schiffsmodellbau eine Hardware an welche wir vielfaches von 8 solchen Kanälen anschließen können und per Software die Impulse dekodieren müssen um zu wissen welchen Steuerbefehl der Benutzer an seiner Fernsteuerung ausgelöst hat. Also wir müssen die Impulsbreite ermitteln.

Wenn ich die RN-mega8, sehe so wird dort davon gesprochen bis zu 16 Servos anschliessen zu können. Ich vermute damit ist gemeint das die mega8 sequentiell mit ihrer internen PWM Hardware die erforderlichen Impulse für die Servos bereitstellt.

Ich brauche jedoch eine Hardware mit der ich die Impulsbreite vom Empfänger messen kann um daraus einen der, ich glaube es sind 256 mögliche Werte, ermitteln kann. Das muß mit einer für den Benutzer nicht wahrnehmbaren Verzögerung geschehen. Wieviele Empfänger-Kanäle könnte den die mega8 auswerten? Die Auswertung muß scheinbar gleichzeitig sein, und 16 Kanäle auszuwerten dürfte nicht unüblich sein.

Als Ergebnis der Auswertung muss dann durch die mega8, oder durch eine damit verbundene RN-Control oder eines der Fahrtregler von stupsi, oder die Relai-Karte von RoboterHardware die gewünschte Funktion bewirken.

Geht das mit der mega8 oder müssten wir eine Karte entwickeln auf welcher z.B. 8 Steckplätze wären die mit den Empfänger und einem Multimodul-Servosteckplätze verbunden währen und eine noch zu bestimmende Anzahl von mega8 die Auswertung ausführen? Diese Erweiterungskarte wäre dann wohl über I2C mit dem Rest des Systems verbunden. 8 oder 4 Anschlüsse zur Verbindung mit einer Funkfernsterung sind eine attraktive Anzahl die man durch den Einsatz weiterer gleichartiger Karten ausbauen kann.

martin
01.10.2004, 22:09
Hallo Hellmut,

ich habe mich vor kurzem auch mit diesem Thema beschäftigt, allerdings ging es darum, die PPM-Signale des Senders in Seriell zu wandeln, um damit einen Flugsimulator betreiben zu können.

Ich bin aber bei meiner Recherche im Internet auch auf Seiten gestossen, die dich interessieren könnten.

http://ngrad.bei.t-online.de/Projekte.htm
Hier geht es um die Funktionsweise der Graupner Nautic-Module (uvm.), was zumindest dem Namen nach für dich hilfreich sein könnte. Der Betreiber dieser Homepage hat übrigens ein U-Boot.

http://www.aerodesign.de/peter/2000/PCM/ppm-vor-nachteile.html
Hier geht es um den Aufbau des PPM-Signals (u.A. auch PCM), welches zur Funkübertragung benutzt wird.

Deine Frage, ob du einen oder 8 mega8 brauchst, ist nicht so einfach zu beantworten. Das Problem ist, empfängerseitig an das PPM-Signal ranzukommen. Wenn das möglich ist, könntest du mit einem auskommen.
Da aber die meisten (alle?) Empfänger das Signal zerteilen und nur noch die Servoimpulse ausgeben, könnte es sein, dass du pro Servoausgang einen mega8 brauchst.

Weiterhin habe ich Zweifel, ob du aus einem Servopuls 256 verschiedene Werte ableiten kannst. Das scheint mir doch zu ungenau (Störungen etc.)

Zu deiner Aussage "Für den Benutzer nicht wahrnembar" wenn du dir das PPM-Signal im zweiten Link ansiehst, werden ca. pro Sekunde alle Werte 45x übertragen. Die Definition 'nicht wahrnembar' überlasse ich dir.

Grüsse, Martin

Hellmut
02.10.2004, 00:55
Hallo Martin

Vielen dank für die Informationen. Ich möchte aber nicht die Funksignale dekodieren, sondern die Steuersignale vom Empfänger an die Servos. Jeder Steckplatz für ein Servo am Empfänger liefert über eine Signalleitung Rechteckimpulse verschiedener Länge je nach Ausschlag des Steuerknüppels am Sender. Wenn man nun über ein Port am mega8 jetzt regelmäßig abfragt ob das Signal High oder Low ist, so kann man innerhalb der Genauigkeit die durch den zeitllichen Abstand zweier Abfragen bestimmt, feststellen wie lange das Signal High war. Das ist die Umkehrung von dem was man tut wenn man ein PWM, also Pulsbreitenmodulation, Signal an einen Ausgang stellt. So arbeitet zum Beispiel ein PWM gesteuerter Fahrtregler für E-Motoren.

martin
02.10.2004, 22:06
Hallo nochmal,

ich weiss nicht, wie oft der Empfänger die Signale für die Servos ausgibt, ich gehe jetzt wieder einmal von den ca. 45x pro Sekunde aus. Das sollte eigentlich für "nicht wahrnehmbar" reichen.

Ein anderes Problem ist, wenn du aus einem Servopuls 255 verschiedene An/Aus Werte machen willst, kommst du mit einem mega8 kaum klar, da dieser einfach zu wenig Ausgänge hat. (oder habe ich da was falsch verstanden?)

Im Prinzip ist es nicht schwer, die Impulslänge zu messen und als Digitalwert (1/0) oder wie bei mir seriell auszugeben.

Falls Interesse besteht kann ich dir ein Programm in CodeVision-C schicken, allerdings fürs PPM-Signal.

Grüsse, Martin