Forum: Mikrocontroller und Digitale Elektronik Aus RC Ferbedienung PWM signal auslesen


von Christoph (Gast)


Lesenswert?

Hi,
hab hier nen Problem, ich hab ne RC - Fernbedieung aus dem Modelbau und 
mit ihr möchte ich Funktionen über meinen ATMega ausführen lassen.
Die Ferbedienung erzeugt PWM Signale wobei die High zeit etwa 1-2ms 
beträgt und die Periode ca 20ms ausmacht.
Ich habe versucht die signale einfach über nen Analogeingang 
aufzunehmen, das ging leider nicht.

Hat das von euch schon mal jemand gemacht? Muss ich das Signal 
ersteinmal glätten oder irgendwie anders abfragen?

Für hilfe wäre ich sehr Dankbar!

MFG Christoph

von Düsendieb (Gast)


Lesenswert?

Christoph schrieb:
> Ich habe versucht die signale einfach über nen Analogeingang
> aufzunehmen, das ging leider nicht.

Das taugt auch nicht.


Mess doch die Zeit direkt über einen Timereingang ähnlich wie beim 
Frequenzmesser

von Christoph (Gast)


Lesenswert?

Ja aber das benötigt soviele Systemrecourcen und bremst mir den Rest 
aus...

von Düsendieb (Gast)


Lesenswert?

Das dauert weniger lange als einen Analoseingang einlesen.

Timer so einstellen, dass er in 20ms nicht überläuft
Das RC Signal auf einen Interrupteingang
Bei steigender Flanke Timer auf 0 setzen
Bei fallender Flanke Timerwert in Variable speichern

von mexman (Gast)


Lesenswert?

Christoph schrieb:
> Ja aber das benötigt soviele Systemrecourcen und bremst mir den Rest
>
> aus...

Dann solltest Du schnellstens lernen, mit Interrupts und Timern 
umzugehen.


Gruss

Michael

von Christoph (Gast)


Lesenswert?

Mit timern und Interups ist das nicht das Problem, aber ich dachte immer 
das das mit den Ints zu viel Systemresourcen auffrist?!? Wenn ich mich 
täusche dann mach ich das mit ints nur die Hardware habe ich so 
aufgebaut das ich die Analogen eingänge noch frei hab, muss dann alles 
umbasteln...

von Michael (Gast)


Lesenswert?

Also bei mir fressen andere Dinge Systemleistung im µC, in einer 
bestimmten Zeit einen Timerwert zu speichern ist nun nicht wirklich das 
Ding, lastet einen Atmega8 und Co nicht mal zu (gefühltem) 1% aus.

von Karl H. (kbuchegg)


Lesenswert?

Christoph schrieb:
> Mit timern und Interups ist das nicht das Problem, aber ich dachte immer
> das das mit den Ints zu viel Systemresourcen auffrist?!?

Noch schneller und einfacher als mit Interrupts ist nur ganz schwer 
möglich. Mit dem Capture Interrupt vom Timer 1 ist es geradezu ein 
Kinderspiel, solange es nur um 1 Servosignal geht.
Prozessorauslastung: irgendwo bei vielleicht Zehntel-Prozent. 
Wahrscheinlich sogar noch viel weniger.

von Christoph (Gast)


Lesenswert?

ja aber ich brauch nachher 6 Kanäle :-(
hab ja auch schon an den ICP eingang gedacht, nur wohin mit den anderen 
5?
und hab nur noch den einen Timer Frei...
Hab schon überlegt das mit dem ICP und ner Hardwarevorschaltung zu 
machen um die nacheinander abzufragen...
Aber naja mal schauen wie ich weiter komme

Danke auf jeden Fall schon mal!

von Karl H. (kbuchegg)


Lesenswert?

Christoph schrieb:
> ja aber ich brauch nachher 6 Kanäle :-(

Hast du dir schon angesehen, ob die Pulse der Einzelkanäle nacheinander 
oder gleichzeitig aus dem Empfänger kommen?

von Lehrmann M. (ubimbo)


Lesenswert?

Christoph schrieb:
> Mit timern und Interups ist das nicht das Problem, aber ich dachte immer
> das das mit den Ints zu viel Systemresourcen auffrist?!?

Man sollte bei Überlegungen auch immer den Umkehrschluss mit bedenken. 
Oder meinst du, dass man in Mikrocontroller mit Absicht Features einbaut 
die bremsen ? Ich möchte dir ebenfalls nahelegen dich mit dem 
AVR-Tutorial hier zu beschäftigen. Das sind einfach elementarste 
Grundlagen. Wenn man sowas schon nicht beherrscht dann kommt am Ende 
sowieso nichts akzeptables raus. Das ist wie wenn ich Eigenwerte eine 
Matrix bestimmen möchte aber 1+2 nicht ausrechenn kann ...

Christoph schrieb:
> Wenn ich mich
> täusche dann mach ich das mit ints nur die Hardware habe ich so
> aufgebaut das ich die Analogen eingänge noch frei hab, muss dann alles
> umbasteln...

Jeder analoge Eingang kann auch als digitaler Eingang verwendet werden 
... genauso eine Grundlage. Dazu müsste man natürlich wissen wie ein 
analoger Eingang eigentlich aussieht. Nachdem du das Tutorial aber nicht 
gemacht hast weißt du das offensichtlich auch nicht.

Christoph schrieb:
> hab ja auch schon an den ICP eingang gedacht, nur wohin mit den anderen
> 5?

Stichwort: multiplexen

Christoph schrieb:
> Ja aber das benötigt soviele Systemrecourcen und bremst mir den Rest
> aus...

Was musst du denn noch so groß machen ? Ich glaube du unterschätzt die 
Leistungsfähigkeit der Microcontroller.

Sag mal was du sonst noch machen musst ...

von Christoph (Gast)


Lesenswert?

Der µC steuert nebenbei noch die 18 Servos für die Bewegung und die 3 
Servos für den kopf, habe das Programm schon zusammen gequetscht das die 
Servos noch schnell genug saubere Signale bekommen. Das man einen 
Analogen auch als normalen I/O nutzen kann ist mir schon klar.

Entschuldige bitte das ich nicht die weitsicht hatte das die 
Ferbedienung auch nur PWM's ausgibt. Aber das ist einfach die neue 
ausbaustufe.

An das multiplexen habe ich auch schon gedacht und was anderes wird mir 
wohl nicht über bleiben...

Schönen abend noch :-)

von NichtGast (Gast)


Lesenswert?

Mehrere (alle) Känäle eines RC-Empfängers per µC überwachen taucht immer 
wieder mal im Forum auf. Ein paar Beispiele:

Beitrag "4 RC-Empfängersignale mit µC messen"
Beitrag "RC Summensignal erzeugen aus 6 Kanälen (Modellbau)"

Ich würde sagen, die klassische Lösung zu der Fragestellung heißt 
Pin-Change-Interrupt. "Summensignal" ist ein gutes Suchwort zum selber 
stöbern.

von Christoph (Gast)


Lesenswert?

Danke das ist ne super hilfe!

MFG

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.