Ideenfindung: LED per PWM dimmen, Auflösung im unteren Bereich erhöhen?

Hallo zusammen,

ich dimme drei LEDs mittels WEMOS D1 Mini + MOSFET (1 pro LED). Das klappt soweit ganz gut und ich habe im höheren bereich einen hübschen, weichen Helligkeitsverlauf (so ab einem Signal von 40 aufwärts, der Wemos hat einen PWM-Bereich bis 1024.

Im unteren Bereich (ca 1-7) habe ich aber das Problem, dass die Helligkeitsstufen deutlich sichtbar sind. habt ihr hier Ideen, wie man auch dort einen "weicheren" Übergang hinbekommt, bzw. gibt es da empfohlene Ansätze? Einfach einen Controller mit höherer Auflösung zu nehmen verschiebt das Problem nur, fürchte ich.

Beste Grüße
Jan

Einfach einen Controller mit höherer Auflösung zu nehmen verschiebt das Problem nur, fürchte ich.

Ein PCA9685 hat immerhin 12Bit Auflösung.
Ein AVR schafft 16Bit mit einem Timer. (wobei es dann mit der Frequenz arg eng wird)

Wenn ich das richtig sehe ist der PCA9685 für bis zu 16 Ausgänge? Das wäre ganz schön überdimensioniert, gibt es hier eine kleinere Alternative? Beim Wemos würde ich ganz gern bleiben, da ich auch das WLAN benötige und bislang alles gut funktioniert.

Es gibt zu diesem Problem der Nichtlinearität einen Beitrag im Microcontrollerforum.

Gruß Tommy

Tommy56:
Es gibt zu diesem Problem der Nichtlinearität einen Beitrag im Microcontrollerforum.

Gruß Tommy

Den habe ich bereits gelesen. Die Nichtlinearität ist auch nicht das Problem, sondern die sehr geringe Auflösung in den unteren Bereichen.

Dort sind doch Werte für einen linearen Helligkeitsverlauf angegeben.

Gruß Tommy

Ich glaube wir reden aneinander vorbei. Den Helligkeitsverlauf habe ich bereits "linearisiert", wenn ich das Signal regelmäßig erhöhe, ist die wahrgenommene Helligkeitsänderung ca. jedesmal gleich.

Allerdings gibt es im kleinen Bereich (PWM-Signal ca. 1-7) deutliche Sprünge in der Helligkeit, die ich gerne "weicher" gestalten möchte. zwischen 7 bis 1024 nimmt man die Verteilung dann sehr sanft wahr.

Beim Wemos würde ich ganz gern bleiben,

Du könntest einen Tiny85 als I2C Slave anbinden und dem dann die PWM Aufgabe übertragen.
Der kann immerhin 16MHz ohne Quarz, was für eine 16Bit PWM die aller unterste Grenze sein dürfte.
Sorry, aber ein Tiny85 hat keinen 16Bit Timer

combie:
Du könntest einen Tiny85 als I2C Slave anbinden und dem dann die PWM Aufgabe übertragen.
Der kann immerhin 16MHz ohne Quarz, was für eine 16Bit PWM die aller unterste Grenze sein dürfte.

Das sieht nach erster Recherche ganz schön kompliziert aus, aber scheint eine vernünftige Lösung zu tun. Danke für den Tipp, ich arbeite mich mal ein!

Ich muss mich korrigieren: Ein Tiny85 hat leider keinen 16Bit Timer
Er kann zwar bis 64MHz mit Timer 1, aber das hilft hier nicht weiter

Naja...
Vielleicht findest du ja einen ähnlichen µC, mit 16Bit Timer
(z.B. der ATMega328P)

Hallo,

eigendlich ligt es in der Natur der Sache. Wenn Du einen Analogwert ausgibst ,sagen wir mal 10 dann ist der nächste 11 , der ist aber 10% mehr wie der erste, also ist das ein relaiv grosser Sprung bezogen auf den aktuellen Wert.

combie:
Ich muss mich korrigieren: Ein Tiny85 hat leider keinen 16Bit Timer
Er kann zwar bis 64MHz mit Timer 1, aber das hilft hier nicht weiter

Naja...
Vielleicht findest du ja einen ähnlichen µC, mit 16Bit Timer
(z.B. der ATMega328P)

Also wenn ich die Quellen (z.B. hier) richtig verstehe, scheint ja zumindest 12 Bit möglich zu sein, vielleicht hilft das ja auch schon? Wieso und in welchem Maße ist denn die Frequenz wichtig?

Wieso und in welchem Maße ist denn die Frequenz wichtig?

Die LEDs sollen ja nicht sichtbar flackern.