Forum: Mikrocontroller und Digitale Elektronik (AVR ATMega32) maximale PWM Frequenz


von Der Daniel (Gast)


Lesenswert?

Hallo zusammen,

ich bin kurz davor mir den ATMega32-16 zu kaufen. Hab mir die Anleitung 
ebenfalls runtergeladen. Ich möchte mit dem µC ein Schaltnetzteil 
betreiben, brauche also ne PWM, die der ja auch an Bord hat. Nun blick 
ich noch nicht so ganz durch, wie hoch die maximale Frequenz für die PWM 
ist. Auf Seite 75 hab ich dann ein Kapitel "Fast PWM" entdeckt, da steht 
eine Gleichung dabei(bzw. das ganze gibt's auf Seite 121 nochmal, für 
den zweiten Counter, wobei es dort mehr Prescale Factoren gibt):

f_pwm = f_clkio / (N * 256)

wobei f_clkio ja der eingestellten µC Frequenz entspricht(hier also 
16MHz)

Bedeutet das, wenn ich den Prescale Factor N auf 1 setze, das ich dann 
eine PWM Frequenz von 62,5kHz bei einer Auflösung von 8Bit(die 256) 
bekommen kann?
Und ist es dann darüber hinaus möglich, die PWM mit 50kHz zu betreiben? 
(ein ja oder nein wäre hierfür schon ok, das wie würd ich dann erstmal 
selber versuchen rauszufinden...)

Schonmal vielen Dank im vorraus!

Gruß Daniel

von Johannes M. (johnny-m)


Lesenswert?

Der Daniel wrote:
> Bedeutet das, wenn ich den Prescale Factor N auf 1 setze, das ich dann
> eine PWM Frequenz von 62,5kHz bei einer Auflösung von 8Bit(die 256)
> bekommen kann?
Ja.

> Und ist es dann darüber hinaus möglich, die PWM mit 50kHz zu betreiben?
> (ein ja oder nein wäre hierfür schon ok, das wie würd ich dann erstmal
> selber versuchen rauszufinden...)
Ja, aber nicht mit einem 16-MHz-Takt (f_clkio)... Reicht das? Es kann 
halt nur durch ganzzahlige Vielfache von 256 geteilt werden.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Deine 62,5kHz stimmen, und der rest der Rechnung auch ;)

Aber auf 50kHz kommst du so nicht,
um auf 50kHz zu laufen müsstest du den µC mit 12,8MHz takten.

Die Prescaler lassen sich halt nur in 2er potenzen oder noch schlechter 
einstellen, deswegen kommst du mit prescaler = 2 nur auf 31,25kHz.
Also musst du am Systemtakt schrauben um auf exakt 50kHz zu kommen.
Aber ich denke 62,5kHz sollte doch nen ganz guter Kompromiss sein oder?

von Der Daniel (Gast)


Lesenswert?

Danke erstmal, ist mir jetzt alles recht klar, bzw. so wie ich's mir 
gedacht habe.
Nochmal kurz zu dem Prescaler. Im Datenblatt steht das der mit 1,8,32,64 
etc. eingestellt werden kann, von 2 oder z.b. steht da nichts, also 
sollte das auch nicht möglich sein, oder?
Die 62,5kHz sind auch ok, die 50kHz sind keine Pflicht... umso kleiner 
wird ja mein L wenn f größer wird...

Gruß Daniel

von Johannes M. (johnny-m)


Lesenswert?

Der Daniel wrote:
> Nochmal kurz zu dem Prescaler. Im Datenblatt steht das der mit 1,8,32,64
> etc. eingestellt werden kann, von 2 oder z.b. steht da nichts, also
> sollte das auch nicht möglich sein, oder?
Genau. Kannste aber im Prinzip hinbekommen, indem Du anstelle einer 
8-Bit-PWM eine 9-Bit-PWM nimmst. Das wäre ein Faktor 2... Geht aber 
natürlich nur mit nem 16-Bit-Timer.

von Der Daniel (Gast)


Lesenswert?

Bei dem 16Bit Counter müsste ich dann TOP = 511 setzen, dann bekomme ich 
eine Auflösung von 9Bit.

R = log(TOP+1)/log(2) = log(511+1)/log(2) = 9

Daraus kann ich dann die die Frequenz errechnen(im Fast PWM Mode):

f_PWM = f_clkio / (N*(1+TOP)) = 16MHz / (1*(1+511)) = 31,25kHz, richtig?

Der Unterschied zwischen den 3 Modi muss ich mir auch nochmal näher 
anschauen, also Fast PWM, Phase Correct und Phase & Frequency Correct 
Mode's. Wobei ja schon drin steht, das der FastPWM Mode für 
Leistungsregelung, Gleichrichtung etc. geeignet wäre, also wohl auch für 
die Ansteuerung meines FET.

Aber ich denke ich werd dann wohl bei den 62,5kHz bleiben...

von Johannes M. (johnny-m)


Lesenswert?

Phase Correct brauchste eigentlich v.a. dann, wenn Du Schalttotzeiten 
erzeugen willst oder ein symmetrisches Signal brauchst. Die haben auch 
nur die halbe PWM-Frequenz. Kannst also im Prinzip auch ne Division 
durch 2 machen, indem Du anstelle der Fast PWM eine Phase Correct PWM 
nimmst...

von Der Daniel (Gast)


Lesenswert?

Ahh ok! Wie gesagt, ich denke ich bleib dann bei den 62,5kHz, hab dafür 
jetzt mein L schon berechnet und nen Kern gesucht...
Dann nochmal danke für die schnelle Hilfe. Werd mich dann wohl auch 
gleich mal hier registrieren. War bestimmt nicht das letzte mal, das ich 
Hilfe bei dem µC brauche g

So long

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nur als Nachtrag: wenn du höhere Frequenzen haben willst, kannst du
dir mal einen ATtinyX5 oder ATtinyX61 ansehen.  Bei denen kann man
den Timer1 über eine PLL von 32 oder 64 MHz takten.  Sowas dann als
Slave-Prozessor, der ausschließlich die PWM für das Schaltnetzteil
macht, während ein ,,großer'' Prozessor die gesamte Steuerung übernimmt.

Im Prinzip ist das BC100 (battery charger reference design) so ähnlich
aufgebaut.

von Daniel S. (daniels)


Lesenswert?

Hallo Jörg,

danke für die Info, hört sich interessant an mit der Slavetechnik! Bin 
aber noch relativ neu was µC angeht, hab nur in der Uni mal Grundlagen 
µC Technik gehabt und im Praktikum auf nem 68HC11 rumprogrammiert. Von 
daher weiss ich nicht, ob das nicht etwas zu viel wird für nen 
Anfänger... muss mich halt erstmal durch die "normalen" Probleme 
kämpfen...

Werd mir das mit dem BC100 aber nochmal anschauen...

MfG Daniel

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Der Vorteil, wenn du die eigentliche PWM von der restlichen Steuerung
entkoppelst ist, dass du gewissermaßen voll paralleles Multitasking
machen kannst: der ATtiny kann sich dann auf die PWM konzentrieren
(der läuft praktisch ständig in einer Schleife, in der er den Soll-/
Istwert-Vergleich macht), während der größere Prozessor alle
Interaktion mit dem Benutzer erledigt.

von Daniel S. (daniels)


Lesenswert?

Stimmt schon. Hierbei wäre es nur so, dass der "Große" 2 Werte einlesen 
muss, eine Berechnung durchführen müsste und dem kleinen dann nur den 
Duty Cycle vorgeben würde... Mehr wäre hierbei nicht zu machen... und 
dafür dann 2 µC's zu verarbeiten, ich glaube da wird der Aufwand zu 
groß... und wie gesagt, ich bin Anfänger und werde noch mit anderen 
Problemen zu kämpfen haben. Aber ich behalte das mal im Hinterkopf... 
vielleicht gibt's mal ne Erweiterung wo ich das dann verwenden könnte.

von noch ein Daniel (Gast)


Lesenswert?

Daniel, ich hab einen guten Tipp für dich: vergiss diese Website hier - 
sie ist voller Forentrolle und Möchtegerns, die nichtmal ein Datenblatt 
lesen können etc.

Das was du da machst ist totaler Overkill, man kann einen PWM mit einer 
maximalen Frequenz von Systemtakt / 2 betreiben. Ich werde dir jetzt 
leider nicht sagen wie das denn genau geht (ich habe guet Gründe), aber 
du wirst die Antwort sehr schnell finden wenn du von solchen Webseiten 
fernbleibst und dich stattdessen sehr tief in das Datenblatt 
eingräbst, die Lösung ist wahrlich einfach und sogar etwas blöd - wenn 
du komplizierte Sachen machst bist du nicht auf dem Lösungsweg.
Viel Spass und ein erfolgreiches Meiden falscher Informationen!

von Keniff (Martin S.) (Gast)


Lesenswert?

hey du düsentrieb für arme!

solche foren sind dafür gedacht fragen zu stellen un zu beantworten!
und nicht, um dumme kommentare abzuliefern, die dem hilfesuchenden nur 
auf en sack gehen! das is das einzig beschissene an solchen foren!
du dummbabbler...!

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.