Forum: Mikrocontroller und Digitale Elektronik PWM Tastverhältnis und Frequenz bestimmen


von PWMSpec (Gast)


Lesenswert?

Hallo

ich habe vor, mich intensiver mit dem Einlesen eines PWM Signals 
auseinanderzusetzen.
Ich habe bereits mehrere Beiträge gelesen und wie ich gesehen habe, wird 
oft empfohlen Interrupts und Timer zu benutzen.
Es wurden folgende Vorschläge gemacht:

1.  Variante:
- ICP

2. Variante:

- Interrupt Timer --> steigende flanke -->Timer Start
  Timer --> fallende flanke --> Timer Stop ---> Timer Wert auswerten

3. Variante (wie 2. variante):

- ext. Interrupt auf steigende Flanke einstellen
- wenn der auslöst, auf fallende Flanke umstellen und passenden Timer
  starten
- wenn der auslöst, Timer ablesen und auswerten

4.Variante:

>> Interrupt0 auf beide Flanken stellen.(geht z.B. beim Mega8)
In der Interuptroutine pin auf high testen, war steigende flanke.
Variable "X" auf null setzen.
ist der Portpin LOW, war es eine fallende Flanke, Variable "X"
auslesen und anzeigen.
Die Variable "X" wird im Timerinterrupt unabhängig vom Int0 langhin
hochgezählt. Die Genauigkeit/Auflösung hängt von der
Zählgeschwindigkeit des Timers ab. <<

Ich möchte gerne wissen (bevor ich mich an die Arbeit mache), welche 
Variante ihr emfehlen würdet. Gibt es inzwischen bessere Methoden ein 
veränderliches PWM Signal einzulesen?
Habt ihr bessere Vorschläge, wie man sowas angehen kann?

Wenn jemand sowas in der Richtung mal gemacht hat, wäre ich über Tipps 
sehr dankbar?

Gruss und Danke

von STK500-Besitzer (Gast)


Lesenswert?

Variante 1 und 3 sind sich sehr ähnlich, wobei ICP das was man bei 
Variante 3 von Hand macht, mehr oder weniger automatisch erledigt.

Atmel hat schon eine Application Note zu dem Thema herausgebracht. Da 
wird es per ICP erledigt...

von PWMSpec (Gast)


Lesenswert?

Hallo

ja, ich habe diese Fragmente aus vielen Beiträgen kopiert um mal diese 
vor augen zu haben.
Kannst du mir den Link zur Application Note geben?

von STK500-Besitzer (Gast)


Lesenswert?


von wt (Gast)


Lesenswert?

habe schon var 2 und 3 implementiert bis 2,5kHz, funktioniert beides 
gut, wobei die var 1 sehr sympatisch erscheint

von PWMSpec (Gast)


Lesenswert?

Hallo,

Teilst du deine Erfahrungen mit uns in Form deines Beispiel Codes oder 
ist es streng geheim? :)
Als Richtschnur wäre es sehr hilfreich, besonders in Anlehnung an ICP.

P.S.: Was müsste man machen, um Frequenzen in der Grössenordnung 20 kHz 
bis
60 kHz einzulesen?

Sind die 2,5 kHz dadurch begrenzt, weil der verwendete Timer nicht mehr 
kann oder liegt es einfach an deiner Anforderung?

Gruss

von STK500-Besitzer (Gast)


Lesenswert?

>Sind die 2,5 kHz dadurch begrenzt, weil der verwendete Timer nicht mehr
>kann oder liegt es einfach an deiner Anforderung?

Wenn dann ist die untere Grenzfrequenz die Beschränkung, weil der Timer 
nicht lange genug läuft, um es in einer "Runde" zu schaffen die 
komplette Periodendauer zu messen. Dann muß man den Timer manuell 
"verlängern".

>P.S.: Was müsste man machen, um Frequenzen in der Grössenordnung 20 kHz
>bis 60 kHz einzulesen?

Die Frequenzen sind nicht unbedingt das Problem, sondern die Auflösung 
des Pulses. Man muß ja während des Pulses eine bestimmte Anzahl an 
Takten haben, um auf das Tastverhältnis schliessen zu können. Wenn man 
den Timer mit 120kHz betreibt, wird man nur ein Tastverhältnis von 0,5 
bei einer Frequenz von 60kHz messen können. Nimmt man aber 600kHz, kann 
man schon 10 Pulsbreiten unterscheiden. Bei 6MHz wären es schon 100... 
(wenn ich mich jetzt nicht total vertan habe...).

von wt (Gast)


Lesenswert?

den Code kann ich leider nicht rausgeben, war damals kundenspezifisch.
Die Begrenzung 2,5kHz ist durch ext. Filter entstanden, wobei ich damals 
bis 5kHz getestet habe. Wenn es in Richtung 20-60 kHz geht, würde ich 
jegliche "Handarbeit" in ISR vermeiden wollen. Capture Einheit und 
geeignete Fensterung ist hier wohl geeignetere Methode.

von PWMSpec (Gast)


Lesenswert?

Also ist die beste Methode:

- ICP und mit möglichst hohem internem Takt (6MHz Osci), um eine 
Auflösung von 1% TV bei 60kHz PWM Freq. zu erhalten?

Bessere/optimierende Vorschläge weiterhin erwünscht ;)

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.