Moin, ich habe nur eine kurze Frage: Wenn ich das Datenblatt des Atmega328p richtig verstehe, verträgt dieser einen Quartz mit max. 16MHz. Für meine FAST PWM würde das dann entsprechend Vorteiler 1 bedeuten: 16.000.000/1x256 = 62500Hz. Mit anderen Worten ich werde mit diesem Chip nie mehr als ~62KHz erreichen können richtig? bG B.
Baumbart schrieb: > richtig? Hallo. Leider falsch. Benutze die CTC-Modi, dann geht mehr, zulasten der Auflösung. Benutze einen 20MHz Quarz, weil der ATMEGA328-20 das auch erlaubt. Lies mal die Gehäusebeschriftung ;) mfg mf
:
Bearbeitet durch User
Baumbart schrieb: > Für meine FAST PWM würde das dann entsprechend Vorteiler 1 bedeuten: > 16.000.000/1x256 = 62500Hz. Wenn deine Anwendung volle 8 Bit Auflösung braucht, dann ja. Oder eben bestenfalls noch die 25% mehr mit 20MHz Taktfrequenz. Nicht schlecht für ein knapp 30 Jahre altes Design... Wenn du schneller willst, dann musst du neuere oder speziellere Designs nehmen, wie z.B. den ATTiny25/45/85, der kann die PWM-Grundfrequenz erst mal per PLL auf 64MHz anheben und erreicht damit bei 8 Bit Auflösung ein PWM-Frequenz mit 250kHz.
:
Bearbeitet durch Moderator
Sorry falls ein bisschen Offtopic, würde gerne etwas dazu lernen :D. Für was könnte man so hohe PWM Frequenzen benötigen? Für Motorensteuerungen werden doch afaik Frequenzen >20kHz genutzt, damit die Lautstärke verringert wird. Für LEDs nutzt man doch zwischen 100Hz & 500Hz. Mir fällt gerade nicht wirklich ein, für was man PWM noch nutzen könnte :l
Thomas R. schrieb: > Sorry falls ein bisschen Offtopic, würde gerne etwas dazu lernen :D. > > Für was könnte man so hohe PWM Frequenzen benötigen? > Für Motorensteuerungen werden doch afaik Frequenzen >20kHz genutzt, > damit die Lautstärke verringert wird. Das stimmt so allgemein nicht. Bei kleinen Motoren kann man mit 20kHz und mehr arbeiten, bei großen Umrichtern mit 2-3stelligen kW Leistungen geht es deutlich darunter. Ich hab hier ein Datenblatt von Hitatchi, die größte Kiste der SJ700 Reihe mit 132kW erreicht seine volle Leistung bei max. 3kHz, darüber muss er auf grund der Schaltverluste den Ausgangsstrom reduzieren. > Für LEDs nutzt man doch zwischen 100Hz & 500Hz. In etwa. > Mir fällt gerade nicht wirklich ein, für was man PWM noch nutzen könnte Es gibt Dutzende Anwendungen für PWM. https://www.mikrocontroller.net/articles/Pulsweitenmodulation#DA-Wandlung_mit_PWM Datenübertragung WS2812 Ansteuerung Liste unvollständig
Thomas R. schrieb: > Für LEDs nutzt man doch zwischen 100Hz & 500Hz. Ich nehme oft 4kHz, weils dann nicht mehr sichtbar flimmert, auch bei Bewegung. Je höher die PWM, umso besser kann man sie wegfiltern, was z.B. bei FU und WR sinnvoll ist.
Für BLDCs sind 100kHz durchaus sinnvoll. Das verringert den Ripple und damit die Wärmeentwicklung des BLDC.
Stimmt... Gar nicht so weit gedacht. Bin irgendwie nur von Brushed-DC Motoren ausgegangen. Ist ja auch ebenfalls bei Schrittmotoren (siehe Hard-drive-disk) so mit einer hohen Frequenz. Danke euch!
Mir fiele noch ein, dass man mit der PWM auch andere Dinge in der Schaltung clocken könnte. So bräuchte man weniger Quarze (und weniger Oszillatoren, die warum auch immer nicht anschwingen; weniger kosten tut es dann auch). Da würde mich aber auch interessieren: Wird das professionell auch so gemacht?
> So bräuchte man weniger Quarze Quarze und Quarzoszillatoren sind in einem kommerziellen Design wohl die geringsten Kostenfaktoren. Ueblich sind dagegen eher "spezielle" Signalprozessoren (z.B. TI TMS320x28) und fuer exakte Timings, verifizierbare Sicherheit etc. noch ein FPGA.
Löppt schrieb: > Mir fiele noch ein, dass man mit der PWM auch andere Dinge in der > Schaltung clocken könnte. So bräuchte man weniger Quarze Um "Dinge zu clocken" - sprich: ein Taktsignal bereit zu stellen, braucht man aber keine PWM. Für die meisten Anwendungsfälle dürfte ein symmetrisches Taktsignal (50% PWM) ausreichen. Und das kann man wesentlich einfacher und vor allem bis zur Taktfrequenz des AVR selber generieren. > Da würde mich aber auch interessieren: Wird das professionell auch so > gemacht? Mit PWM? Sicher nicht. Taktsignal für angeschlossene Peripherie mit µC erzeugen? Absolut. Oft ist es sogar notwendig, etwa für die Synchronisation.
Cartman schrieb: >> So bräuchte man weniger Quarze > > Quarze und Quarzoszillatoren sind in einem kommerziellen Design > wohl die geringsten Kostenfaktoren. > Ueblich sind dagegen eher "spezielle" Signalprozessoren > (z.B. TI TMS320x28) und fuer exakte Timings, verifizierbare > Sicherheit etc. noch ein FPGA. Hängt wohl davon ab, was das für ein Design ist. Nicht alles enthält 2 FPGA und Cortex A :) Axel S. schrieb: > Löppt schrieb: > >> Mir fiele noch ein, dass man mit der PWM auch andere Dinge in der >> Schaltung clocken könnte. So bräuchte man weniger Quarze > > Um "Dinge zu clocken" - sprich: ein Taktsignal bereit zu stellen, > braucht man aber keine PWM. Für die meisten Anwendungsfälle dürfte ein > symmetrisches Taktsignal (50% PWM) ausreichen. Und das kann man > wesentlich einfacher und vor allem bis zur Taktfrequenz des AVR selber > generieren. >> Da würde mich aber auch interessieren: Wird das professionell auch so >> gemacht? > > Mit PWM? Sicher nicht. > Taktsignal für angeschlossene Peripherie mit µC erzeugen? Absolut. Oft > ist es sogar notwendig, etwa für die Synchronisation. Ja, da war ich noch nicht wach. Ich meine natürlich, ein Taktsignal mit Timer-Peripherien zu erzeugen. Danke für die Antwort :)
Thomas R. schrieb: > Sorry falls ein bisschen Offtopic, würde gerne etwas dazu lernen > :D. > > Für was könnte man so hohe PWM Frequenzen benötigen? > Für Motorensteuerungen werden doch afaik Frequenzen >20kHz genutzt, > damit die Lautstärke verringert wird. > Für LEDs nutzt man doch zwischen 100Hz & 500Hz. > > Mir fällt gerade nicht wirklich ein, für was man PWM noch nutzen könnte > :l Auch wenn bereits mehrfach drauf eingegangen, bei mir war die hohe Schaltfrequenz für Versuche mit einem selbstbau-Aufwärtswandler. Den dazu notwendigen Mosfet steuere ich mit dem Atmega328p an. Btw. ich habe mir laut Datenblatt nachfolgendes gebaut. Damit sind alle möglichen Frequenzen < Quarz möglich. Die Frequenz errechnet sich aus: QuartzFrequenz/Prescale*OCR0A Duty Cycle muss zwangsläufig mind OCR0A -1 sein. Beispiel: 16000000/1*100 = 160kHz Duty Cycle 50% (OCR0B) wären dann max OCR0A * 0.5 ergibt OCR0B = 50;
1 | //generate Timer0 Fast PWM on PD5 OC0B with adjustable Freq on OC0A
|
2 | TCCR0A |= (1<<COM0B1); //Clear OC0B on compare match |
3 | TCCR0A |= (1<<WGM00) | (1<<WGM01); //Fast PWM Mode 7 with OCR0A as TOP |
4 | TCCR0B |= (1<<WGM02); //Fast PWM Mode 7 with OCR0A as TOP |
5 | TCCR0B |= (1<<CS00); //start PWM with Prescale 1 |
6 | OCR0A = 0; //PWM Frequency > variable |
7 | OCR0B = 0; //Duty Cycle (max OCR0A) |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.