Hohe PWM Auflösung bei HardwarePWM

OP #1971857
Lesenswert?
• ▲
▼
Ich nutze zur Helligkeitssteuerung meiner LEDs HardwarePWM auf meinem 
Atmega168. Die Helligkeitswerte für die LEDs lese ich aus dieser 
Tabelle:
1
uint16_t pwmtable[32] PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11, 13,
2
    16, 19, 23, 27, 32, 38, 45, 54, 64, 76, 91, 108, 128, 152, 181, 215, 255};

Durch diese Tabelle sind die LED Schritte allerdings auf 32 Schritte 
begrenzt, was bei übergängen zu einem sichtbaren ruckeln führt. Da ich 
Timer0 und Timer2 verwende (3 LEDs) kann ich als maximalen Wert nur 256 
verwenden. Gibt es eine Möglichkeit diese Schranke zum umgehen?
#1971887
Lesenswert?
• ▲
▼
Marcel Holle schrieb:

> Timer0 und Timer2 verwende (3 LEDs) kann ich als maximalen Wert nur 256
> verwenden. Gibt es eine Möglichkeit diese Schranke zum umgehen?

Eine 10 Bit Software-PWM ist bei 20Mhz Systemtakt noch so lala drinnen. 
Das ergibt dann knapp 76Hz PWM Frequenz. 3 LED sind dann kein Thema. In 
~200 Takten in der ISR müsste man so um die 10 bis 20 LED relativ 
problemlos unterbringen können, so dass auch nebenher noch etwas 
Rechenzeit übrig bleibt.

Wenn das nicht reicht, müsste man Falks 'intelligente Lösung' aus dem 
Ärmel zaubern.
Gast #1971937
Lesenswert?
• ▲
▼
Man kann das Hardware PWM Signal noch zusätzlich mit einer Software 
Modulation übrelagern.  Für einen Wert von z.B: 2,5 also zwischen 2 und 
3 als PWM Wert hin und her wechseln. Die Software braucht so nur 4 - 8 
Bits zu berechnen.  Weil die Software nur für 1 PWM Schritt 
verantwortlich ist, fallen auch relativ niedrige Frequenzen noch nicht 
so sehr als Flackern auf.
#1971966
Lesenswert?
• ▲
▼
@  Marcel Holle (multiholle)

>uint16_t pwmtable[32] PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10,


Da du ja anscheinend den Artikel LED-Fading schon kennst, warum 
nutzt du nicht Timer 1 mit 16 Bit? Damit kannst du zwei LEDs butterweich 
dimmen. Und mit dem richtigen AVR hast du zwei 16 Bit Timer und 4 PWM 
Kanäle. Problem gelöst. Alternativ Soft-PWM und 10 Bit Auflösung, 
das könnte schon reichen.

MFG
Falk

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.