Forum: Mikrocontroller und Digitale Elektronik Frage zum Artikel "Soft PWM"


von Thomas (Gast)


Lesenswert?

Hallo Zusammen,

ich lesen den Artikel nun schon einige male und komme auch langsam hiner 
das Geheimnis "PWM". Was ich aber nicht verstehe, ist folgender Satz "

im AVR-Studio kann man den Code simulieren. Wichtig ist hier vor allem 
die Ausführungszeit des Interrupts. Bei 100 Hz PWM-Frequenz und 256 
Schritten pro PWM-Zyklus wird diese Funktion immerhin 25600 mal pro 
Sekunde aufgerufen (PWM-Takt 25,6 kHz), bei 8MHz Taktfrequenz stehen 
damit maximal 312 Takte zur Verfügung "

Warum 312 Takte ??
Kann mir das jemand erklären ?
Danke im Voraus

von Falk B. (falk)


Lesenswert?

@  Thomas (Gast)

>Warum 312 Takte ??

Mathematik?

PWM Frequenz 100 Hz -> 10ms Periodendauer.
Diese wird unterteilt in 2^8=256 PWM-Takte: 100 Hz * 256 = 25,6kHz bzw. 
39µs Periodendauer
Bei 8 MHz schafft man 8MHz / 25,6kHz = 312,5 Takte.

MfG
Falk

von Helmut S. (helmuts)


Lesenswert?

Genaugenommen wären es 312,5.
8000000/25600=312.5

Da hier aber keine halben Takte möglich sind, nimmt man 312 Takte.

Die Interruptfrequenz wird dann 25641Hz.
Die PWM Frequenz ist dann 100,16Hz

8000000/312=25641Hz
25644/256=100,16

von Gerd B. (Gast)


Lesenswert?

Hallo.
ich habe hier ein Verfahren, mit dem man bereits bei sehr langsamen 
Taktraten ein Signal Erzeugen mit geringem niederfrequenten Anteil 
erzeugen kann.

Diese Art der PWM eignet sich aber nur, wenn man die mittlere Spannung 
reduzieren will. Zum Beispiel einen ohmschen Verbrauchen in der Leistung 
reduzieren

http://www.sebulli.com/gpwm/index.html

Gerd

von Thomas (Gast)


Lesenswert?

Danke für die Erklärung.

von Jobst M. (jobstens-de)


Lesenswert?

Gerd B. schrieb:
> ich habe hier ein Verfahren ...

Ui, das geht aber wesentlich einfacher zu lösen:

Bei jedem Interupt:
1. addiere den Ausgabewert zu einem Zähler
2. kopiere das Überlaufflag auf Deinen Ausgabeport.
Fertig.

Delta-Sigma-Wandler erzeugen ähnliche Signale.



Gruß

Jobst

von Falk B. (falk)


Lesenswert?

@  Gerd B. (Gast)

>ich habe hier ein Verfahren, mit dem man bereits bei sehr langsamen
>Taktraten ein Signal Erzeugen mit geringem niederfrequenten Anteil
>erzeugen kann.

Pulsdichtemodulation, ein alter Hut.

>Diese Art der PWM eignet sich aber nur, wenn man die mittlere Spannung
>reduzieren will.

Genau das gleiche macht PWM. Der Unterschied ist die Minimalfrequenz. 
Die ist bei Pulsdichtemodulation hoch, das vereinfacht die Filterung. 
Bedeutet aber viele Schaltverluste, was ab einem bestimmten 
Leistungsbereich nicht mehr tragbar ist.

MFG
Falk

von Thomas (Gast)


Lesenswert?

Helmut S. schrieb:
> Genaugenommen wären es 312,5.
>  8000000/25600=312.5
>  Da hier aber keine halben Takte möglich sind, nimmt man 312 Takte.
>  Die Interruptfrequenz wird dann 25641Hz.
>  Die PWM Frequenz ist dann 100,16Hz
>  8000000/312=25641Hz
>  25644/256=100,16

Um nun diese exakten 100 Hz (bzw. 100,16) mit einem Quarz von 8Mhz zu 
ereichen, muss ich die ISR dann auch alle 25641 Takte anspringen ?

von Falk B. (falk)


Lesenswert?

@  Thomas (Gast)

>Um nun diese exakten 100 Hz (bzw. 100,16) mit einem Quarz von 8Mhz zu
>ereichen, muss ich die ISR dann auch alle 25641 Takte anspringen ?

Nachmal lesen und drüber nachdenken. . .

von Thomas (Gast)


Lesenswert?

Falk Brunner schrieb:
> Nachmal lesen und drüber nachdenken. . .

... das mach ich leider schon den ganzen Vormittag ... :-(

von Falk B. (falk)


Lesenswert?

@  Thomas (Gast)

>> Nachmal lesen und drüber nachdenken. . .

>... das mach ich leider schon den ganzen Vormittag ... :-(

Die Timer-ISR wird nach jeweils 312 Takten aufgerufen. Steht überall im 
Artikel. Das sind bei 8 MHz 39µs bzw 25,6kHz, das die der PWM-TAKT. 256 
dieser Aufrufe machen eine PWM-PERIODE mit 10ms. WOW!

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Puh ... ich hoffe, dass ich das nun kapiert habe. Anbei meine kurze 
Grafik.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

... als Bild ...

von Falk B. (falk)


Lesenswert?

@  Thomas (Gast)

>Puh ... ich hoffe, dass ich das nun kapiert habe. Anbei meine kurze
>Grafik.

Fast. Dein Hardwarezähler (Timer) zählt von 0-311, nicht 0-255.
Dein Softwärezähler zählt vonh 0-255, das passt.

MfG
Falk

von Thomas (Gast)


Lesenswert?

Falk Brunner schrieb:
> Fast. Dein Hardwarezähler (Timer) zählt von 0-311, nicht 0-255.
>
> Dein Softwärezähler zählt vonh 0-255, das passt.

ahhrrgg ... Ich raste hier noch aus .. warum kann ich denn mit einem 
8bit Timer von 0 - 311 zählen ??

von Falk B. (falk)


Lesenswert?

@  Thomas (Gast)

>ahhrrgg ... Ich raste hier noch aus .. warum kann ich denn mit einem
>8bit Timer von 0 - 311 zählen ??

Wer redet denn von einem 8 Bit Timer? Im Artikel wird Timer 1 verwendet, 
der hat 16 Bit. Der Softwarezähler hat 8 Bit.

MFG
Falk

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.