8-fach 12-Bit Soft-PWM LED-Dimmer für mega48 Dimmen mit der Hardware-PWM eines mega/tiny ist eigentlich eine von den einfachen Übungen. Leider ergeben sich damit bei kleinen PWM-Werten subjektiv große Helligkeitsveränderungen, während bei den hohen Wert kaum noch ein Effekt erkennbar ist. Will man Beleuchtung steuern, dann muss Rücksicht genommen werden auf die menschliche Empfindung/Empfindlichkeit für Helligkeitsveränderungen: Die Helligkeit sollte logarithmisch zunehmen. Damit zeigen sich aber auch schon die Grenzen der Hardware-PWM mit ihrer 8-Bit Auflösung: im Zahlenraum von 255 lassen sich nur begrenzt viele Zahlen einordnen, die in einem logarithmischen Verhältnis stehen. Somit muss eine höhere PWM-Auflösung her, die allerdings dann nur softwaremäßig realisiert werden kann. Anliegend ein Beispiel, mit dem man/frau bis zu 8 LEDs mit einer Auflösung von 12-Bit bei einem PWM-Takt von 76Hz ansteuern kann. Der Dimmer wird über TWI oder RS232 angesteuert. Zusätzlich sind noch zwei Schnörkel eingebaut: Die Überleitung vom aktuellen Helligkeitswert auf einen neuen mit bis zu 255 Zwischenschritten und ein Zufallsmodus, in dem ununterbrochen die Überleitung zwischen neuen Zufallswerten wiederholt wird. Weitere Beschreibung gibts in der readme sowie im dokumentierten C-Code. Als Hardware wurde ein mega88 verwendet, es reicht aber auch ein mega48 oder mega8 (bei letzterem müssen einige Registernamen angepasst werden). Viel Spaß beim Dimmen, Michael S.
Schon mal den xmega angeschaut? ;) Bis zu 24 PWM Ausgänge (16Bit) und 32MHz Takt. Damit habe ich eine 16Bit PWM bei 500Hz (absolut Flimmerfrei).
Morgen, so hoffe ich, liefert mir Reichelt die Bauteile für meine bunte LED Lampe. Laufen soll die mit einem Mega8, natürlich ist mir erst nach der Bestellung eingefallen, dass dieser nur einen 16 bit Timer hat. Dein Code kommt mir deshalb sehr gelegen wofür ich mich an dieser Stelle bedanken möchte! Gruß, Georg
Hallo allerseits, nach gut 2 Jahren habe ich den LED-Dimmer noch einmal überarbeitet: Die Interrupt-Routinen sind nun in ASM geschrieben, dadurch wird bei einem PWM-Takt von 81Hz eine Auflösung von 12.5Bit (0 - 6150) erreicht - gegenüber bisher 75Hz bei 12Bit (0 - 4096). Die aktualisierte Beschreibung und einen Schaltplan gibts in der Readme.pdf Viel Spaß bei Dimmen, Michael S.
Hallo, hat den code von Michael schon jemand auf dem atmega8 probiert? bzw. kann mir jemand sagen was ich abändern muss damit er auf dem atmega8 funktioniert?
Hallo, beim Mega8 haben einige Register/Bits andere Bezeichnungen. Der Compiler wird sich entsprechend beschweren. Und der Assembler-Code muss eingebunden werden. mfg Michael S.
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.