mikrocontroller.net

Forum: Projekte & Code 8-fach 12-Bit Soft-PWM LED-Dimmer für mega48


Autor: Michael S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier noch der Programmcode.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Michael S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.