www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hohe PWM Auflösung bei HardwarePWM


Autor: Marcel Holle (multiholle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nutze zur Helligkeitssteuerung meiner LEDs HardwarePWM auf meinem 
Atmega168. Die Helligkeitswerte für die LEDs lese ich aus dieser 
Tabelle:
uint16_t pwmtable[32] PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 10, 11, 13,
    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?

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solch ein ähnlicher Thread war gerade...

Beitrag "30 PWM-Kanäle mit ATmega48 machbar?"

Hier dazu meine Empfehlung:
Beitrag "Re: 30 PWM-Kanäle mit ATmega48 machbar?"

Aber Falk bekommt das sicher per Software hin.

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn dir 2 Kanäle reichen, kannst du den Timer1 nehmen, der hätte 2 
16Bit Kanäle wo du logarithmische 256 Stufen unterbringst.

Ansonnsten mal nach nem grösseren AVR umschauen, der mehr 16Bit Timer 
bzw. 16Bit PWM Ausgänge hat.

Gruss

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Linearen Helligkeitswert verwenden und den auf logarythmisch umrechnen?
Also die Tabelle durch eine Berechnung ersetzen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: ulrich (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Marcel Holle (multiholle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir wird wohl nur Soft-PWM übrig bleiben, da ich bei meinem Atmega168 
bleiben möchte. Timer1 reicht ja nicht für 3 Kanäle aus. Ich werde mal 
testen, wie das dann aussieht.

Autor: Marcel Holle (multiholle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher AVR würde denn mit mindestens drei 10-Bit-PWM Kanälen in Frage 
kommen? Möglichst nicht in SMD Bauform.

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.