3 Kanal-Hardware-Pulsweitenmodulation beim ATMega8

Heute gibts endlich was von meiner kürzlich angefangenen Mikrocontroller-Bastelei zu berichten. Soeben ist es mir erfolgreich gelungen ein praktisches Feature eines Atmel ATMega8 zu benutzen.

Die erste Anwendung ist nix besonderes, aber trotzdem durchaus nett anzuschauen.

Pulsweitenmodulation ist sozusagen eine einfache Möglichkeit eine begrenzte Strommenge mit Hilfe eines Mikrocontrollers auszugeben. Dazu wird ein Rechtecksignal erzeugt. Der Durchschnitt über das Integral des Signals gibt dann einen Wert. Man nutzt dabei die Trägheit des Bauteils aus, das geschaltet werden soll. Genauer können das die Leute von mikrocontroller.net erklären. In meinem Fall sollen nur ein paar Leuchtdioden, bei denen man die Trägheit des Auges ausnutzt, das bei genügendhoher Frequenz kein Flackern sieht.

Weil ich lange gesucht und rumprobiert habe, bis ich raushatte, wie man dieses Feature nutzt, gibts für interessierte hier den kommentierten C-Quelltext zum Runterladen. Programmiert habe ich das im AVR-Studio.

Das kleine Programm nutzt die 3 PWM-Kanäle des ATMega8, und schaltet sie schrittweise heller und dunkler. Ich verdopple dabei die Helligkeit (binär) beim Erhellen und halbiere sie beim Verdunkeln. Dies hat den Grund, dass unser Auge Helligkeit logarithmisch wahrnimmt. Außerdem muss noch dazugesagt werden, dass mein Testboard (Atmel STK500) die LEDs dann hell schaltet, wenn der PIN low ausgibt, deshalb muss dem PWM-Register immer die Differenz zwischen 0xFF und dem gewollten wert zugewiesen werden.

Kommentare

Schreibe einen Kommentar