Hallo Forum, das Objekt der Begierde um das es hier geht ist ein ATmega88. Nach eingehendem Studium des Datenblattes meine ich gelesen zu haben das der Zähler zwischen der oberen und unteren Grenze hin und her zählt und beim erreichen des Compare-Wertes OCRxA (oder B) das passende OCxB PIN umschaltet, auf High, beim unterschreiten, auf Low eim überschreiten, wobei man das auch noch drehen kann. Frage 1: Muss der Zähler immer bis 255 zählen, oder kann man ihn auch vorher zur Umkehr bewegen? TCNTx ?? Frage 2: Neben dem wohl einzigen Zweck der PWM, den Vorwiderstand an LEDs einzusparen, könnte man damit auch z.B. einen Sanftanlauf eines Motors und dessen Bremsung steuern. Dafür müsste dann aber der Compare-Wert ständig, verändert werden? Wie tut man das ohne den Timer zu verwirren? Frage 3: Wenn ein Hersteller einer Brücke de Maximale PWM-Frequenz mit 40kHz angibt, ist dann eine minimale Impulslänge von 12,5 us gemeint? Die Periode einer symmetrischen 40kHz Schwingung wäre ja 25us lang, jedoch ist davon ja nur eine Hälfte logisch high. Frage 4: Quält man den PWM-Timer nun von 0 auf 255 in Einerschritten hoch, habe ich bei 255 keinen low-Impuls mehr, der Motor läuft. Will ich ihn nun abbremsen, würde man ja 1. Brücke deaktivieren 2. Brücke umschalten auf stop 3. Impulse von 1 - 255 Takten Länge auf den Brücken-Enable-Pin geben. ?
Im phase correct pwm mode rennt der timer immer von 0 -> 255 -> 0. Verwirren kannst du ihn nicht, da die Register in diesem Modus gepuffert sind (double buffered output compare register, etc). Mittels des Prescalers kannst du die Frequenz ändern. Mittels des OCR Wertes kannst du die Länge der High Phase bestimmen. Phase correct pwm ist übrigens ausdrücklich für Motorsteuerungen gedacht. Siehe auch PID-Controller.
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.