Forum: Mikrocontroller und Digitale Elektronik Vorgehensweise: Mehrere PWM einlesen (Tiny2313)


von Draco (Gast)


Lesenswert?

Ich hab da so ein kleines "Gedankenproblem"...

Ich arbeite mit einem Tiny2313 / 4313 (je nach Größe die ich brauche, 
entscheidet sich noch), in diesen möchte ich 4 PWM Signale einlesen (Von 
einem RC Empfänger, nein: der Empfänger liefert kein Summensignal).

Meine Gedanken zur Vorgehensweise ist jener: Ich lasse einen Timer 
laufen, lasse die steigende und fallende Flanke von einem Ext. Int. Pin 
lesen an denen das PWM Signal eines Kanales liegt. Messe dann die Zeit 
vom Timer, setze ihn zurück und gehe von vorne los.

Nun hab ich da einen am laufen, benötige aber noch drei weitere. Da sich 
ja die nur zwei Timer an Board befinden wird dies dann sicherlich schwer 
zu realisieren sein. Nun frag ich mich ob es denn Sinn macht den 
Gedanken, alle gleichzeitig lesen zu wollen, weiterzuverfolgen oder es 
besser wäre sich über eine Art Mulitplexing zu machen?!

Meine Gedanken dazu: Ich lasse an PortD alle vier Kanäle jeweils an 
einen Int Pin laufen. Timer2 (16 Bit) ließt die Signallänge der PWM aus. 
Timer1 (8Bit) wechselt bei Überlauf den Int. Pin als Source. Somit 
ließen sich ja bis zu acht Kanäle hintereinander auslesen. Halt 
hintereinander... reichen da z.b. 50ms um einen gescheiten Mittelwert 
aus einem RC PWM zu bilden oder ist das zu wenig?! Weil höher wollte ich 
dann eigentlich nicht.

Oder gibt es da noch eine andere Möglichkeit?!

von Mick (Gast)


Lesenswert?

PinChangeInterrupt an allen gewünschten Pins aktivieren und die 
Mikrosekunden speichern und auswerten.

von Udo Swamp (Gast)


Lesenswert?

Liegen denn die RC-Kanalimpulse nicht zeitlich hintereinander im 
Impulstelegram? Da würde doch ein Timer genügen. Der jeweilige 
Kanalimpuls taucht doch erst nach ca. 20ms wieder auf.
Oder mach ich jetzt einen Denkfehler?

von Basti B. (basti195) Benutzerseite


Lesenswert?

Meines Wissens nach senden RC-Empfänger die verschieden Signale immer in 
einen 20ms Abstand, sodass immer bei maximal einem Channel das PWM 
Signal anliegt.

sprich 1. 20->ms CH1   nächsten 20ms->Ch.2 ...

Das auszulesende Signal für ch.1 wird dann in diesem entsprechendem 
Zeitraum(20ms) über die Länge des PWM-Signales übertragen.

So benötigst du für den kompletten RC-Emfänger insgesamt einen Timer

von Draco (Gast)


Lesenswert?

Ahhh....

Ja das kann sein, das muß ich mal durchmessen - also das mit den 20ms 
Intervall... oder zumindest die Differenz zwischen den Signalen. Ich 
weiß das ich bei meiner Spektrum da ein Timing einstellen kann (11ms, 
16,5ms und 20ms) - hatte mich immer schon gefragt was dies sein könnte.

Da würde ja ein Timer wirklich reichen und dann einfach nur zeitlich 
auswerten an welchem Pin der Interrupt auftritt - dann gestaltet sich 
die ganze Geschichte ja doch ein wenig einfacher als Gedacht. Danke 
euch.

Noch eine kleine Frage nebenher... isses sicherer für den Tiny wenn ich 
die PWM Leitung mit einem 100Ohm Wiederstand an den Pin hänge oder gibt 
es da Probleme?!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

100Ohm bringen nicht viel als Schutz, kannst auch 1kOhm nehmen, wenn Du 
Angst um Deinen Tiny hast. Das Signal wird dadurch nicht (wesentlich) 
beeinflusst.

von Stefan P. (form)


Lesenswert?

Draco schrieb:
> Ich
> weiß das ich bei meiner Spektrum da ein Timing einstellen kann (11ms,
> 16,5ms und 20ms)

Was für ein Empfänger von Spektrum hast Du denn da?
Ist da zufällig ein kleiner "Satellitenempfänger" über ein 3-poliges 
Kabel verbunden?

In dem Fall reicht der kleine Empfänger aus, dort fällt 115,2 kBaud 
raus.

von Draco (Gast)


Lesenswert?

Nein, ist kein Flugempfänger. Es handelt sich da um SR410, SRS4210 und 
in den Großmodellen SR3300T.

von Draco (Gast)


Lesenswert?

Knut B. schrieb:
> 100Ohm bringen nicht viel als Schutz, kannst auch 1kOhm nehmen, wenn Du
> Angst um Deinen Tiny hast. Das Signal wird dadurch nicht (wesentlich)
> beeinflusst.

Danke, probiere ich mal aus.

von Planlos (Gast)


Lesenswert?

Evtl. ist die APPNOTE AVR135 was für dich, zumindest zum inspirieren 
lassen:

http://www.atmel.com/Images/doc8014.pdf

verwendet aber ICP und hat nur einen Kanal...

von Klaus (Gast)


Lesenswert?

Draco schrieb:
> (Von einem RC Empfänger, nein: der Empfänger liefert kein Summensignal).

Das tun Empfänger selten, für was auch. Ein normaler Modellbauer kann 
damit nichts anfangen. Aber mit ein bißchen Phantasie, einem Scope und 
ein wenig Spürsinn kann man das Signal sicher auf der Platine finden. 
Und schon ist das Problem massiv geschrumpft.

MfG Klaus

von Draco (Gast)


Lesenswert?

Planlos schrieb:
> Evtl. ist die APPNOTE AVR135 was für dich, zumindest zum
> inspirieren
> lassen:
>
> http://www.atmel.com/Images/doc8014.pdf
>
> verwendet aber ICP und hat nur einen Kanal...

Ja danke Planlos, die Appnote habe ich Tatsächlich schon durchgelesen 
und auch die dazugehörigen Dateien mal eines Blickes riskiert. Für eine 
hochpräzise PWM Auswertung ist diese Note natürlich absolut geil, aber 
wie du bereits sagtest wird dort der ICP Verwendet, da stoße ich mit 
meinem Tiny an die 2 Kanal Grenze (zwei externe Interrupt Pins, 2 Timer) 
Bei meiner Version reicht da schon ein normaler Pinchange Interrupt über 
PortB, ich errechne mir die Differenz zwischen der sinkenden und der 
steigenden Flanken nach dem PWM Abfall und somit kann ich dann halt den 
ganzen Port nutzen - ist natürlich relativ ungenau aber reicht 
vollkommen aus für die Zwecke. Danke dennoch für deine Hilfe.

Klaus schrieb:
> Das tun Empfänger selten, für was auch. Ein normaler Modellbauer kann
> damit nichts anfangen. Aber mit ein bißchen Phantasie, einem Scope und
> ein wenig Spürsinn kann man das Signal sicher auf der Platine finden.
> Und schon ist das Problem massiv geschrumpft.
>
> MfG Klaus

Das mag stimmen Klaus, aber wie bereits oben geschrieben soll dies für 
mehrere Modelle sein, ich kann und will auch nicht jeden Empfänger 
öffnen und rumschustern. :D Wenn mir die Signale doch auch als PWM auf 
Headern zur Verfügung steht. Da isses dann relativ simpel: Modell auf, 
drei Servo Kabel ran, die Servo durchgeschleift und fertig.... und 
sollte dann bei jedem funktionieren. Da brauche ich keinen Empfänger 
öffnen oder drauf zu löten.

Aaaaber... einen SR410 kann ich ja dennoch mal opfern. Mal sehen...

von Norbert S. (norberts)


Lesenswert?

Hi,

ich kann Dir sicher sagen, die Signale kommen nacheinander und in der 
richtigen Reihenfolge. Das alles zusammen, allerdings mit 1,2ms high und 
0,3ms Pause statt 1,5ms für Neutral, wird vom Sender an das HF-Modul 
geschickt und kommt so beim Empfänger an.
Neutral für Servo ist also 1,5ms high, Neutral im Summensignal ist 1,2ms 
high und 0,3ms low.Ob alle 16, 20 oder teilweise bis zu 30ms 
Wiederholrate ist normalen Servos komplett egal.
Mit den PinChangeInterrupts geht das und wenn Du mit 8MHz oder mehr 
taktest, wirst Du selbst mit primitivem Polling der Pins keinen 
Unterschied merken.
Viele Empfänger haben das Summensignal, einfach mal in die Anleitung 
schauen.
Oft optional wenn man z.B. Ch7-8 jumpert, dann ist das Summensignal auf 
Kanal 1, RSSI auf 2 usw...
Sobald es aber einer der Vorgesehenen nicht hat, kannst Du Dir das 
sparen.

Gruß,
Norbert

von Olaf B. (Firma: OBUP) (obrecht)


Lesenswert?

Norbert S. schrieb:
> Viele Empfänger haben das Summensignal, einfach mal in die Anleitung
> schauen.

Sollte dann eigentlich per Funke aktivierbar sein - Summensignal oder 
pro Channel ein PWM alle xx ms.
Meine Funke liegt hier bei 27ms bei Summensignal.

Hier noch eine Übersicht: http://wiki.mikrokopter.de/SummenSignal

Schöne Übersicht Signal: 
http://www.rc-network.de/forum/showthread.php/444718-Summensignal?p=3382367&viewfull=1#post3382367

mfg

Olaf

von Tom (Gast)


Lesenswert?

Draco schrieb:
> Da würde ja ein Timer wirklich reichen und dann einfach nur zeitlich
> auswerten an welchem Pin der Interrupt auftritt - dann gestaltet sich
> die ganze Geschichte ja doch ein wenig einfacher als Gedacht.

Wenn in dem Empfänger die Signale direkt aus dem Summensignal generiert 
werden, steht die Reihenfolge, in der die Pulse an den Pins auftauchen 
auch fest - immer schön der Reihe nach, so wie sie im Summensignal eben 
übertragen werden. Mit einem Oszi sieht man das schnell.

von Ken (Gast)


Lesenswert?

Servus Leute, hat der SR3300T einen PWM Signal?
Bin in der Sache eine leie, es geht darum ob ich einen Empfänger z.B den 
SR3300T an einem DC Motor Regler anschließen kann. So dass ich es nicht 
mit dem Hallgeber regle sondern über den Empfänger.

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.