Forum: Mikrocontroller und Digitale Elektronik PPM Signal mit Mikroncontroller einlesen


von Jaepen (Gast)


Lesenswert?

Hallo

Ich möchte gerne ein PPM Signal mit einem µC einlesen und weiter 
verarbeiten, sprich einen Motor steuern.

Bzgl. PPM Signalen habe leider absolut keine Ahnung und habe beim 
googeln sowas gefunden:
http://thomaspfeifer.net/ppm2usb_adapter.htm

Dazu habe ich folgende Fragen:
- Wenn alle Kanäle über ein Signal übertragen werden, warum haben dann 
solche Empfänger so viele Pins?

http://www.conrad.de/ce/de/product/517888/Modelcraft-24-G-01T-VI-Hand-Fernsteuerung-24-GHz-Anzahl-Kanaele-4;jsessionid=BD59C7E543C7E9C93274FD22BC35BA9A.ASTPCEN03?ref=searchDetail

- Welcher µC eignet sich zum einlesen der Signale. Ich dachte an einen 
Arduino Uno. Oder gibt es da welche die speziell dafür geeignet sind?

Vielen Dank!

Beste Grüße

von Wolfgang (Gast)


Lesenswert?

Jaepen schrieb:
> - Wenn alle Kanäle über ein Signal übertragen werden, warum haben dann
> solche Empfänger so viele Pins?

Weil die Kanäle auch irgendwo mal wieder getrennt werden, um sie z.B auf 
die Servos zu verteilen.

> Welcher µC eignet sich zum einlesen der Signale.

Ein Atmel ATmega328 tut's auf jeden Fall.

von Timmo H. (masterfx)


Lesenswert?

PPM ist eigentlich nichts anderes als das Aneinanderreihen von 
Servo-Impulsen (1-2ms).
Die Position des Servo-Motors wird durch eine Impulsdauer zwischen 1-2 
ms bestimmt, wobei 1.5ms die Mittelstellung bedeutet. Dieser Impuls wird 
alle 20ms  wiederholt.
Bei PPM werden einfach N Impulse aneinandergereiht, wobei die Pause 
zwischen den Impulsen einfach verkürzt wird, um in der gleichen Zeit 
(20ms) mehr "Kanäle" übertragen zu können. Diese werden beim Empfänger 
wieder aufgedröselt und pro Pin wird dann alle 20ms ein 1-2ms Signal 
ausgegeben. Viele Servos bzw. BDLC-Treiber kommen aber auch mit 100-200 
Hz Wiederholrate zurecht.

von Karl H. (kbuchegg)


Lesenswert?

Timmo H. schrieb:

> Bei PPM werden einfach N Impulse aneinandergereiht, wobei die Pause
> zwischen den Impulsen einfach verkürzt wird, um in der gleichen Zeit
> (20ms) mehr "Kanäle" übertragen zu können.

Na ja. Sagen wir mal: fast richtig

PPM ist nichts anderes als eine Abfolge von Pulsen, die den Empfänger so 
ansteuert, dass er bei jedem Puls den gerade aktiven Ausgang auf 0 
abschaltet und dafür den nächsten Ausgang aktiviert und dort den 
Servopuls beginnt.
Eine entsprechend lange Pause im PPM Signal (größer als ca. 2.5ms) teilt 
dem Empfänger mit, dass mit dem nächsten Puls wieder der erste Ausgang 
drann ist.

Das PPM Signal und wie es im Empfänger dekodiert wird, mündet letzten 
Endes in den bekannten Servosignalen, die vom Empfänger versetzt an den 
Pins ausgegeben werden. Aber es sind nicht die Servopulse selbst, die 
über den Funk gehen, sondern die entstehen erst durch die Aufbereitung 
im Empfänger.

Zumindest war das so, als die Empfänger noch nicht mit µC vollgestopft 
waren. Das war einfach nur ein Dekadenzähler, der von den Pulsen im PPM 
Signal getrieben wurde, sowie ein RC-Glied, welches aus der längeren 
Pause im PPM den Reset-Puls für den Dekadenzähler generiert.

An der Form oder Funktion der PPM Pulse hat sich nichts geändert. 
Lediglich die Auswertung geschieht heute meistens mit einem µC anstatt 
eines Dekadenzählers.

von Maude (Gast)


Lesenswert?

Schön zu lesen, dass sich mal jemand realistische Erstprojekte sucht und 
nicht gleich autonome Unterwasservehicel bauen will, die um den Globus 
fahren sollen.

RC Modellbau ist eine gute Spielwiese zum lernen und es gibt unmengen 
Gimicks an denen man sich mit immer neuen Herausforderungen austoben 
kann ohne sich sinnlos zu überfordern.

Du könntest es auch gleich wagen und einen losen Mega8 nehmen. Zu deiner 
Aufgabenstellung wirst du zudem gerade mit DEM Controller massenhaft 
Beispiele finden, weil der Mega8 lange Zeit "Everybodys Darling" war 
(oder ist, bin nicht ganz sicher). Den hab ich auch Jahre lang benutzt 
und für deine Aufgabe langt er dicke.
Wenn es dir noch nichts sagt, gibt es da noch das Roboternetz als Forum.
Speziell für Modellbau währe da noch Rc-line.de  Dort findest du sicher 
auch einige, die Ahnung von Controllern haben, aber Vorsicht, die 
meisten Modellbauer stöpseln nur Systeme zusammen. Aber vielleicht gibts 
da die passende Themenrubrik.

von Jaepen (Gast)


Lesenswert?

Hallo

Erst mal danke für die Antworten.
Dann ist es fast wie ich es mir gedacht hab.
Der Empfänger teild die Kanäle und pro Pin habe ich nur noch einen 
Kanal.
Mit meinem µC messe ich die Pulsbreite eines einzelnen Kanals und alles 
ist gut....

Bzgl des µC. Da bin ich nicht ganz neu und hab schon mehrere verschieden 
µCs programmiert. Ein Bekannter schwärmt aktuell von dem Arduino Uno 
daher würde ich den mal gerne verwenden. Ich dachte es gibt vielleicht 
einen µC mit "PPM in" der irgendwelche speziellen vorteile hat. Aber das 
Puls messen sollte keine Hexerei sein.
Zudem brauch ich etwas Rechenreserve, da später mal noch ein paar 
Motorregler auf dem µC laufen sollen.


Nebenbei - gibt es eine "einsteiger Fernbedienung" die empfohlen wird?

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Jaepen schrieb:
> Hallo
>
> Erst mal danke für die Antworten.
> Dann ist es fast wie ich es mir gedacht hab.
> Der Empfänger teild die Kanäle und pro Pin habe ich nur noch einen
> Kanal.
> Mit meinem µC messe ich die Pulsbreite eines einzelnen Kanals und alles
> ist gut....

Dann bist du aber schon einen Schritt weiter. PPM interessiert dich dann 
gar nicht mehr. Was du dann willst, sind Servo-Pulse auswerten.

Das sind 2 verschiedene Dinge. Servopulse entstehen zwar aus dem PPM 
Signal. Aber selbst sind sie kein PPM Signal mehr.

> daher würde ich den mal gerne verwenden. Ich dachte es gibt vielleicht
> einen µC mit "PPM in" der irgendwelche speziellen vorteile hat.

Nicht wirklich. In Relation zu der Geschwindigkeit eines heutigen µC 
sind diese Pulse alle schnarchlangsam.

> Aber das
> Puls messen sollte keine Hexerei sein.

Eben.
Timer mit Input Capture und gut ists.

von Maude (Gast)


Lesenswert?

Am besten ist ein Empfänger geeignet, der an einem Pin das PPM Signal 
ausgibt, auch "Summensignal" genannt.
Dann liegt es natürlich an dir, die Kanäle aus dem Signal zu 
extrahieren, aber wie schon oben geschrieben dafür ist die lange Pause 
am Ende des Signales da.

Nicht alle Empfänger haben einen nach außen geführten Pin mit 
Summensignal. Bei manchen kann man es vorsichtig im inneren abgreifen. 
Ich habe "damals" an einer MC10 von Graupner und einem RJ700 getüftelt. 
Aber die 40Mhz Techik ist im Grunde Outdated ;-)
Da währe vielleicht wirklich das RC-Line Forum oder die FPV-Community 
sinnvoll, um nach für dich passenden Sender/Empfängerkombinatinen zu 
fragen.

von Stefan Schulz (Gast)


Lesenswert?


von Jaepen (Gast)


Lesenswert?

Hallo

Warum sollte ich die Signale wieder verUNDen?
Ich kann doch einfach pro Kanal einen Eingang meines µC verwenden und 
dann dieses Servosignal auswerten.
Oder nicht?
Warum sollte ich mir die Arbeit machen um das PPM Signal abzugreifen uns 
selbst zu zerlegen. Ich spare mir höchstens die Eingänge.....

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Jaepen schrieb:

> Warum sollte ich mir die Arbeit machen um das PPM Signal abzugreifen uns
> selbst zu zerlegen.

Tja. Du darfst dich nicht wundern. Im Eröffnungsposting hast du nach PPM 
gefragt. Und erst nachher hat sich herausgestellt, dass du gar nicht PPM 
willst sondern direkt am Servoausgang des Empfängers das Servosignal 
abgreifen kannst.

Wobei ich mich allerdings auch frage: wozu?
So ein Fahrtregler aus dem Modellbau kostet nicht die Welt und wenn der 
genug Power mitbringen soll, kannst du den selbst auch nicht billiger 
bauen.
Aber ok. Des Menschen Wille ist sein Himmelreich.

von Maude (Gast)


Lesenswert?

Zum einlesen benutzt man i. d. R. einen Pin eines µC, der einen 
Inputcapture bietet, so dass das PPM Signal den Timer dazu veranlasst, 
einen Zeitstempel zu speichern, den man dann in der Interruptroutine 
abholt.

Im Prinzip kann man auch jeden Kanal an einen Pin anschließen und 
externe Interrupts auslösen und in der ISR den Timer auslösen, jedoch 
wird dann der Zeitstempel eventuell ungenau wegen der Sprungzeit zur ISR 
und eventuell anderer gerade aktiver Interrupts.

von Karl H. (kbuchegg)


Lesenswert?

Ich denke wir sollten hier mal was klären, ehe noch mehr aneinander 
vorbei reden.

Jaepen, was willst du wirklich tun.

Hast du einen Modellbauempfänger, an den du deine Schaltung anstecken 
willst, die sich dann wie ein Servo verhält, oder hast du so etwas 
nicht? Wo kommt das Signal her, das du ausmessen möchtest?

von Maude (Gast)


Lesenswert?

> wozu?

Wegen des Lernerfolges, wegen der Spaß an der Sache oder als 
Zwischenprojekt zu einem anderen Vorhaben

Soll meine Oma aufhören zu stricken, weil man Schals in jeder beliebigen 
Variation kaufen kann?

von Karl H. (kbuchegg)


Lesenswert?

Maude schrieb:
>> wozu?
>
> Wegen des Lernerfolges, wegen der Spaß an der Sache oder als
> Zwischenprojekt zu einem anderen Vorhaben

Ich hab die Erfahrung gemacht, dass hier in den seltensten Fällen Leute 
aufschlagen, die aus Spass an der Freude etwas machen wollen und dann 
ihr Posting so anfangen

> Ich möchte gerne ein PPM Signal mit einem µC einlesen und weiter
> verarbeiten, sprich einen Motor steuern.
> Bzgl. PPM Signalen habe leider absolut keine Ahnung und habe
> beim googeln sowas gefunden:
> ...
> Welcher µC eignet sich zum einlesen der Signale.


Da steckt schon was dahinter. Das macht er nicht nur aus Spass an der 
Freude.


Ich wills ihm nicht ausreden! So ist das nicht. Aber wenns darum geht, 
dass es in absehbarer Zeit auch zuverlässig funktionieren soll, dann 
....

von Hans S. (nettworker)


Lesenswert?

Ich hol den Beitrag mal wieder hoch.
Ich möchte als Anfänger zum Einstieg das PPM Signal decodieren ( im 
Prinzip nur zum Lernen / Spass). Ich habe das von einem Empfänger als 
Vorgabe ( also keine einzelnen PIN's der Servos ), 'höre' das mit und 
möchte die Daten als eine Art Servomonitor auf einem Display ausgeben.

Hintergrund ist, das eine 'Umsetzerbox' von einem Summensignalempfänger 
das PPM Signal bekommt und das dann als Eingangssignal eines anderen 
Systems weitergibt.

Nettes Gimmick wäre halt das PPM Signal mit zu hören und die Daten auf 
seinem Display auszugeben.

Ich habe zwar schon einiges gefunden, stehe aber teilweise bei dem Code 
echt auf dem Schlauch:

TIMSK |= (1<<TOIE0);
TCCR0 |= ((1<<CS00) | (1<<CS02));

Solche Konstrukte sagen mir überhaupt nix. Wo find ich denn da ne 
passende Einsteigerliteratur? Programmieren ist mir nicht ganz fremd, 
bin es aber nur unter Windows mit dem .NET  Studio gewohnt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.