PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 490kHz PWM mit ATMEGA einlesen



Che Guevara
12.09.2012, 16:27
Hi,

durch Zufall bin ich gerade auf die SimonK - ESC-Firmware gestoßen ( http://www.rc-heli-fan.org/quadrocopter-co-f255/howto-esc-regler-flashen-t92521.html & http://vimeo.com/46293413 ). Wie aus dem ersten Link hervorgeht, können ESC mit dieser Firmware ein PWM-Signal mit 490kHz einlesen und das Ganze in 800 Schritten! Jetzt frage ich mich, WIE geht das?
Angenommen der ATMega wird mit 16MHz betrieben. Dann würde ein PWM-Zyklus ca. 32 Prozessortakte dauern. Bei 16MHz braucht der ATMega für einen Takt: 1 / 16000000 = 6.25e-8 s = 62.5ns.
Laut meiner Rechnung (und meinem Denken) könnte der AVR maximal und REIN theoretisch 32 Schritte unterscheiden...

Hat jemand einen Ansatz, wie das möglich ist oder habe ich einfach nur einen Fehler im Hirn?

Vielen Dank & Gruß
Chris

PICture
12.09.2012, 20:31
Hallo!

Für Zeitmessung (hier Impulsbreite) ist nicht CPU-Takt, sondern die Frequenz der Impulse, die ein Timer (als Zähler) zählen kann entscheident. Ich kenne AVR's nicht genau, aber beispielweise wenn der Timer 100 MHz zählen kann, komme ich auf 490 kHz / 100 Mhz = ca. 200 schritte. Für 800 Schritte müsste der Timer Impulse mit 490 kHz * 800 = 392 MHz zählen können. ;)

Besserwessi
12.09.2012, 20:56
So lange das PWM Signal und der µC Takt nicht Synchron sind, kann man durch mitteln über mehrere Perioden das PWM Verhältnis genauer bestimmen. Um von den 32 Schritten Auflösung die man direkt bekommt auch rund 200 Schritte zu kommen braucht man einen zusätzlichen Faktor von etwas über 6. Bei zufälligem Timing reichen dafür rund 40 Messungen aus, bei 2 Takten reichen in der Regel schon weniger Einzellmessungen.

Die alternative ist aber auch einfach der Analoge Umweg: per RC aus dem PWM ein analoges Signal machen, und das per AD Wandler messen.

Che Guevara
12.09.2012, 22:21
Hi,

@Picture,
diese Variante kommt bei den AVRs IMHO nicht in Frage, wäre aber sicherlich eine gute Idee gewesen ;)

@Besserwessi,
du sprichst von Interpolation?? Was genau meinst du mit 2 Takten?
Die analoge Variante scheidet IMHO aus, da ich glaube, dass nur die Firmware verändert wird, nicht jedoch die Hardware ;)

Vielen Dank für eure Antworten :D
Weitere Möglichkeiten sind aber trotzdem gerne Willkommen, mich interressiert das Thema :D

Gruß
Chris

Klebwax
13.09.2012, 03:21
Wie aus dem ersten Link hervorgeht, können ESC mit dieser Firmware ein PWM-Signal mit 490kHz einlesen ....

Könnte das ein Schreibfehler sein?

MfG Klebwax

Che Guevara
13.09.2012, 06:21
Hi,

wenn man bei Google "Odd Copter Simon K" eingibt und eine der ersten Seiten auswählt, gibts dort ein Video welches den Unterschied deutlich zeigt ;)

Gruß

Chris

Besserwessi
13.09.2012, 19:39
Es spricht schon einiges Dafür das die 490 kHz einfach ein Fehler sind. Im Text hier
http://www.diydrones.com/forum/topics/arducopter-2-5-released

wird 490 Hz erwähnt. Das ist absolut machbar und eigentlich keine Problem, wenn der µC nebenbei nicht noch zu 99% beschäftigt ist.

Che Guevara
14.09.2012, 13:13
Hi,

ja, dann wirds wohl wirklich nur ein Schreibfehler sein, danke für den Link!
Allerdings frage ich mich dann, warum diese Software oftmals so gut dargestellt wird? Sogar ein Turnigy-Plush Regler versteht von Haus aus schon 490Hz. Lediglich die 800Schritt Auflösung dürfte eine Verbesserung sein...

Gruß
Chris