PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Autonome Funktion mit Fernbedienung übersteuern?



bjoerng
06.06.2009, 14:12
Hi,

ich baue an einem teilautonomen R2D2. Weil das Ding ja ziemlich groß wird und auch ab und zu zur Show verwendet werden soll, möchte ich eine Fernsteuermöglichkeit einbauen. meine Idee ist:


Arduino A für Motorsteuerung, Geschwindigkeitsregelung etc.
7-Kanal RC-Empfänger R für Fernsteuerung
PC P für autonome Funktionen (Sensorik, Kartierung, Pfadplanung)
Verbindung R -> A über 7x PWM an die Digital-IO-Ports des Arduino
Verbindung P -> A über I2C


Auf dem Arduino läuft dann ungefähr folgende Logik:

Wenn Auslenkung aus Nullstellung auf Kanal N auf R detektiert:
Lese 6x PWM von R ein
Leite 6x PWM auf Servos, Motorsteuerung etc. weiter
Sonst:
Lese Befehle von P über I2C ein
Steuere Servos, Motorsteuerung etc. entsprechend an

Damit kann ich (z.b. über den Fahrwerks-Umschalter an meiner DX6i) von autonom auf manuell umschalten. Der Arduino muß sich dann natürlich bei der Umschaltung noch darum kümmern, daß evtl. noch anliegende Signale von PC oder Funke "sanft" auf die neuen Werte umgeblendet werden, damit die Kiste nicht "hüpft".

Was meint Ihr? Ist das machbar? Hat das vielleicht schon mal jemand gemacht? Kommentare willkommen!

Gruß
Björn

vohopri
06.06.2009, 16:26
Hallo Björn,

sehr klar ist das von dir nicht ausgerückt, aber es scheint so unmöglich, dass ferngesteuert Nullstellung beibehalten werden kann, ohne dass die auotonome Steuerung die Fernsteuerung übersteuert.

grüsse,
Hannes

bjoerng
06.06.2009, 20:14
Klar, Hannes, Du hast recht. Deshalb die Idee, hier den Fahrwerkschalter der Funke zu verwenden; der hat zwei Stellungen und sendet damit auf einem bestimmten Kanal einen bestimmten Wert je nach Stellung. Wert 1 => autonome Steuerung, Wert 2 => Funke.

vohopri
07.06.2009, 01:36
Hi Björn,

Ok, der Kanal wird dann nur fürs Umschalten verwendet, das konnte ich aus dem ersten Post nicht rauslesen.

Dann sollte das schon gehen.

grüsse,
Hannes

bjoerng
09.06.2009, 23:05
OK, klappt nicht. Mein µC (Arduino) hat zuwenig Pin-Interrupts, ich bräuchte allein sechs, um die sechs PWMs auszulesen, die die Fernbedienung ausgibt. Außerdem ist die Idee, Fernbedienungssignale per Software weiterzuleiten, vielleicht gar nicht mal so gut, das soll ja (auch) eine Sicherheits-Schaltung sein.

Die Alternative wäre, quasi einen sechsfachen Schalter zu verwenden, der entweder die Fernbedienungs-Signale oder die der autonomen Steuerung auf die Servos leitet. Also praktisch sechs separate Schalter, die mit einem einzigen µC-Signal gleichzeitig umgeschaltet werden können. Gibt es sowas als Baustein oder als Schaltung?

vohopri
10.06.2009, 09:03
Hallo Björn,

nicht verzagen, Hannes fragen:

Es verbraucht zu viele Anschlüsse, wenn du 6 PWM Signale einliest. Also must du das PPM Signal im Empfänger anzapfen. Über einen einzigen Anschluss einlesen und weiter verarbeiten. Das heisst, du umgehst den Demultiplexer im Empfänger und machst auf Softwareebene das Demultiplexing.

Auf der RC Funkstrecke gibt es nur einen Kanal, da kommen die Steuerkanäle im Zeitmultiplex schön aufgefädelt nacheinander daher. Die Info ist nicht durch Pulsweiten dargestellt, sondern durch die Abstände von immer gleich breiten Pulsen. Nach einem etwas grösseren Abstand zur Synchronisation fängt das Ganze wieder von vorne an. Im Empfänger liegt nach Demodulation und Verstärkung und vor dem Demultiplex genau dieses Signal an. Das kann man mit einem Oszi aber auch mit einem Softwareoszi raussuchen und über eine einzige Leitung in den MC speisen.

Zum Beispiel sieht das PPM Multiplex Signal für 2 Kanäle so aus (grüne Linie):

...........................http://www.jbergsmann.at/demultiplex-PPM-to-PWM.GIF

Die gelbe Linie ist dann das PWM Signal für den 1. Kanal. Das hat der Demultiplexer da rausgeholt. Das Ganze ist ein Screenshot von einem Standard Fernsteuersignal auf meinem PC Programm. Oszi brauch ich dazu nicht.

grüsse,
Hannes

bjoerng
10.06.2009, 11:58
Hi Hannes,

das ist ja cool -- vielen Dank! Wenn der erste Kanal durch den Abstand von Peak 1 zu Peak 2 codiert wird, wird der zweite Kanal durch den Abstand von Peak 2 zu Peak 3 codiert?

Ich habe inzwischen noch das hier gefunden: http://diydrones.com/profiles/blogs/24ghz-how-to-read-7-channels. Wie es der Zufall so will, habe ich hier (neben verschiedenen PPM-Funken) auch noch eine Spektrum DX6i und ein Daughterboard, das ich in meinem Heli nicht wirklich brauche. Ich probier das einfach erstmal damit, sonst mit der PPM-Dekodierung, die Du beschreibst.

Gruß,
Björn

vohopri
10.06.2009, 12:51
Hallo,

bitte gerne.


... wird der zweite Kanal durch den Abstand von Peak 2 zu Peak 3 codiert?

Genau so ist es, du hast einen Puls mehr als Kanäle.

grüsse,
Hannes