Generierung - Wie werden PWM-Signale erzeugt?
Wie werden PWM-Signale erzeugt?
- Wie leicht einzusehen ist, lassen sich Rechtecksignale sehr einfach mit Hilfe digitaler Bausteine erzeugen.
- Zu ihrer Generierung werden die Timer des ATmega32 verwendet.
- Da er drei Timer hat (Timer0, Timer1, Timer2) und einer sogar zwei PWM-Signale erzeugen kann, können maximal gleichzeitig auch vier PWM-Signale auf vier verschiedenen Pins generiert werden:
- Timer0: OC0, Pin 4 (vergl. Piunbelegung im Datenblatt)
- Timer1: OC1, Pin 21 (vergl. Piunbelegung im Datenblatt)
- Timer2: OC2A, Pin 19; OC1B, Pin 18 (vergl. Piunbelegung im Datenblatt)
- Timer sind in erster Linie Zähler, die völlig unabhängig vom Mikrocontrollerprogramm mit einer bestimmten Taktrate hoch- oder herunterzählen.
- Diese Fähigkeit kann zu unterschiedlichen Zwecken eingesetzt werden.
- Im einfachsten Fall kann man den Zähler für Zeitmessungen verwenden, indem man den Zählerstand vor und nach dem zu untersuchenden Vorgang abruft.
- Wieder erfolgt die Konfigurierung dieser Peripherie über spezielle Register.
- Grundsätzlich arbeitet die Peripherie unabhängig vom Mikrocontrollerprogramm und wird von diesem nur aktiviert, bzw. benutzt:
|
Bild 0-1: Die Peripherie läuft unabhängig vom Programm und wird von diesem lediglich
konfiguriert und benutzt.
- Der Zähler eines Timers wird vom Prinzip her mit Toggle-Flipflops realisiert:
- In folgendem Beispiel eines T-Flipflops ändert sich der Zustand des des Ausgangs mit jeder fallenden Flanke des T-Eingangs / Takt-Eingangs.
|
Bild 0-3: T-Flipflop
- Damit bildet das T-Flipflop einen Frequenzteiler durch zwei:
- Eine am T-Eingang anliegende Rechteckschwingung erzeugt am Ausgang eine mit halber Frequenz.
- Dies wird dazu benutzt einen binären Zähler aufzubauen (s. nächstes Bild).
|
Bild 0-3: Zähler mit Hilfe von T-Flipflops aufgebaut.
- Das gewöhnliche PWM-Signal wird bei den Timern des ATmega32 mit Hilfe einer Einstellung realisiert, bei der der Zähler ständig herauf und herunter zählt.
- Eine logische Vergleichsschaltung gibt dann an den PWM-Ausgang eine 1, wenn der Zählerstand x größer als der Schwellwert g ist.
- Mit dem Prameter g läßt sich somit die Pulsbreite einstellen.
- Dieser Parameter g kann bei Timer0 beispielsweise über das Register OCR0 und für Timer2 mit OCR2 eingestellt.
|
Bild 0-4: Generierung eines PWM-Signals über die Hardware der Timer-Peripherie.
- Wie leicht einzusehen ist, verschiebt sich bei Veränderung des Parameters g die Phase des Signals:
|
Bild 0-5: Veränderte Phase (Signalflanke verschoben) bei Änderung von g.