Forum: Mikrocontroller und Digitale Elektronik LED-Streifen dimmen


von Brat W. (bratwurst_94)


Lesenswert?

Sehr geehrtes Forum, liebe Gemeinde,

ich habe vor, 18 LED-Stripes unabhängig voneinander zu dimmen.

Ein Arduino Mega liegt hierfür bereit.
Nun hat dieser meines Wissens 15 extra dafür vorgesehene 
Hardware-PWM-Ausgänge, welche problemlos zu verwenden sind.

Leider sind das immer noch 3 zu wenig, weshalb ich auf die 
SoftPWM-Library von Brett Hagman gestoßen bin. Diese ermöglicht ja PWM 
auf beliebigen digitalen Ausgängen.

Standardmäßig läuft die PWM aber in diesem Fall mit 60Hz, was für 
flickerfreies LED-Licht wohl etwas grenzwertig sein dürfte.

Bin ich mit meiner Herangehensweise, per Software-PWM die 18 Streifen zu 
dimmen, auf dem Holzweg?
Lässt sich die Frequenz auf 150Hz anheben?

Oder ist das Ganze evtl. anders einfacher zu bewerkstelligen?

Freue mich auf Eure Rückmeldung!

Viele Grüße von der Bratwurst ;-)

von MaWin (Gast)


Lesenswert?

Ein ATmega2560 kann problemlos 18 oder 24 Ausgänge auch mit 1000 Hz bei 
10 bit PWM dimmen, wenn man nicht die Kinderprogrammiererumgebung vom 
Arduino verwendet, die bremst doch sehr stark, sondern den uC direkt in 
C (oder gar Assembler, dann noch etwas schneller) programmiert.

https://www.mikrocontroller.net/articles/Soft-PWM

von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


Lesenswert?

Da Licht nicht linear sondern logarithmisch wahrgenommen wird, sollte 
die Dimmung mit mindestens 12 Bit erfolgen, sonst sieht man deutliche 
Sprünge in der Helligkeit am unteren Ende und nichts am oberen.
PWM Frequenzen deutlich unter 500 Hz sind gut geeignet für 
Kopfschmerzen, Desorientierung und andere spannede Effekte.

von Oliver S. (phetty)


Lesenswert?


von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Ansonsten schau dir mal Chips wie den PCA9685 an.

Den gibt's auch auf Arduino-User-tauglichen Plug&Play Breakout-Boards.

Da kannst du direkt kleine LL-Fets an die Ausgänge basteln, und dahinter 
deine LED-Strips.

Hat aber nur 16 Kanäle, d.H. entweder zwei von den ICs oder zwei 
PWM-Kanäle vom AVR mitverwenden.

von c-hater (Gast)


Lesenswert?

Guido K. schrieb:

> Da Licht nicht linear sondern logarithmisch wahrgenommen wird, sollte
> die Dimmung mit mindestens 12 Bit erfolgen, sonst sieht man deutliche
> Sprünge in der Helligkeit am unteren Ende und nichts am oberen.

Jepp. Ich würde sogar eher 16 Bit nehmen. Das reicht dann für für 
8Bit-Ansteuerung und Gamma=2.0 aus, für Gamma=2.2 ist aber selbst das 
noch zu wenig, da braucht man dann schon 20Bit.
Angeblich ist aber Gamma=2.2 das Optimum, keine Ahnung woher die (die 
dies in die Welt gesetzt haben) das wissen wollen. Ich selber sehe 
jedenfalls keinen wahrnehmbaren Unterschied, ob Gamma nun 2.0 oder 2.2 
ist. Auch nicht bei den 20Bit, mit denen das tatsächlich möglich wird...

> PWM Frequenzen deutlich unter 500 Hz sind gut geeignet für
> Kopfschmerzen, Desorientierung und andere spannede Effekte.

Ach watt. Milliarden Menschen haben über viele Jahrzehnte hinweg 
stundenlang jeden Tag in die (CRT-) Glotze mit 50Hz geschaut. Hätten die 
das getan, wenn das wirklich massive Beschwerden verusachen würde? Wohl 
nicht. Einfach mal logisch denken, bitte...

Sprich: Insbesondere bei den geringen Helligkeiten kann man sehr 
deutlich runter gehen. Meine 16Bit-Implementierung z.b. hat für die 
dunkelste Stufe (also Duty 1:65536) nur noch 56Hz. Aber davon kriegt 
garantiert niemand irgendwelche Beschwerden, schon deshalb, weil man 
sich schon anstrengen muß, um überhaupt noch irgendwas leuchten zu 
sehen. Das geht eigentlich nur, wenn es ringsrum schon sehr dunkel ist.

Dann allerdings kann man mit schnellen Augenbewegungen oder durch 
statisch Betrachtung am Rand des Sehfelds das Flimmern durchaus 
wahrnehmen. Insofern ist also schon was dran. Aber Kopfschmerzen, 
Desorientierung usw.? Quatsch mit Soße.

von Joachim B. (jar)


Lesenswert?

c-hater schrieb:
> Ach watt. Milliarden Menschen haben über viele Jahrzehnte hinweg
> stundenlang jeden Tag in die (CRT-) Glotze mit 50Hz geschaut.

schon mal was von Nachleuchtdauer gehört?
Eine Leuchtschicht in einer CRT ist nun mal kein Halbleiter.

Die miesen PWM LED der PKW Rückleuchten nerven mich auch, was zu geringe 
PWM Frequenz ausmacht kennt wohl jeder

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Joachim B. schrieb:

> schon mal was von Nachleuchtdauer gehört?
> Eine Leuchtschicht in einer CRT ist nun mal kein Halbleiter.

Genausowenig wie die Leuchtschicht von (weissen) LEDs...

Und ernsthaft zu Beleuchtung wird man wohl nur diese einsetzen wollen. 
Schon aus Gründen der Energieeffizienz.

von H. H. (Gast)


Angehängte Dateien:

Lesenswert?

c-hater schrieb:
> Joachim B. schrieb:
>
>> schon mal was von Nachleuchtdauer gehört?
>> Eine Leuchtschicht in einer CRT ist nun mal kein Halbleiter.
>
> Genausowenig wie die Leuchtschicht von (weissen) LEDs...
>

Da leuchtet nichts nennenswert nach.

von c-hater (Gast)


Lesenswert?

H. H. schrieb:

> Da leuchtet nichts nennenswert nach.

Eben, ungefähr genauso wenig wie bei den seligen TV-CRTs. Da hätte das 
nämlich fürchterlich gestört und häßliche Schlieren bei bewegten 
Bildinhalten gezogen.

Ja, es gab schon CRTs mit wesentlich höherer Nachleuchtdauer. Aber eben 
nicht als TV.

Insofern also: Joachim B.s Einwurf als Bullshit entlarvt. Und damit auch 
der Schwachsinn mit den angeblichen nennenswerten Beeinträchtigungen bei 
PWM-Frequenzen von unter 500Hz. Da hätten Millionen oder gar Milliarden 
Menschen viel Jahrzehnte lang dauernd beeinträchtigt sein müssen. Ist 
aber nicht so gewesen. Also: Absoluter Schwachsinn!!!

Jedenfalls bei geringen Helligkeiten. Und nur die sind überhaupt 
kritisch. Bei höheren Helligkeiten ist es leicht, auch bei 
hochauflösender PWM  deutlich höherer PWM-Frequenzen zu erreichen. Man 
muss halt nur ein brauchbares PWM-Schema implementieren.

von Joachim B. (jar)


Lesenswert?

c-hater schrieb:
> Insofern also: Joachim B.s Einwurf als Bullshit entlarvt

och das nichts nachleuchtet ist dein Bullshit

noch nie gesehen wenn eine Ablenkung oder Hochspannung urplötzlich 
ausfällt, wie die CRT Leuchtschicht nachleuchtet?

JEDER RFS Techniker aus der CRT Zeit kennt die Nachleuchtung, also 
erzähle du nicht:

c-hater schrieb:
> Da hätte das
> nämlich fürchterlich gestört und häßliche Schlieren bei bewegten
> Bildinhalten gezogen.

die war schon auf 50Hz abgestimmt und als die 100Hz Technik kam hatten 
einige CRT damit Probleme

von H. H. (Gast)


Lesenswert?

c-hater schrieb:
> Also: Absoluter Schwachsinn!!!

Von dir.

von 2aggressive (Gast)


Lesenswert?

c-hater schrieb:
> Insbesondere bei den geringen Helligkeiten kann man sehr
> deutlich runter gehen.
Kann man :-(

> Meine 16Bit-Implementierung z.b. hat für die
> dunkelste Stufe (also Duty 1:65536) nur noch 56Hz. Aber davon kriegt
> garantiert niemand irgendwelche Beschwerden, schon deshalb, weil man
> sich schon anstrengen muß, um überhaupt noch irgendwas leuchten zu
> sehen. Das geht eigentlich nur, wenn es ringsrum schon sehr dunkel ist.
Das mag für deine Augen und dein persönliches Nervensystem richtig sein.

> Dann allerdings kann man mit schnellen Augenbewegungen oder durch
> statisch Betrachtung am Rand des Sehfelds das Flimmern durchaus
> wahrnehmen.
Du "merkst" also doch noch was :-)

> Insofern ist also schon was dran. Aber Kopfschmerzen,
> Desorientierung usw.? Quatsch mit Soße.
Ich sehe mit meinen Augen solche Lichtblitzbeleuchtungen (Duty 1:65536 
bei 56Hz) praktisch genauso wie beim reinglotzen in das Stroboskop 
meiner Diskothek. Letzteres würdest auch du sicherlich wahrnehmen, und 
im dauerbetrieb als sehr unangenehm empfinden, bis hin zur totalen 
Desorientierung bei Bewegungen im Raum.

Nach wenigen Minuten sind Kopfschmerzen ein kleines Übel, einige andere 
Menschen riskieren bei so einem schlecht durchdachtem Konzept sogar 
epileptische Anfälle. Spastik ist nicht spassig!

von Rolf M. (rmagnus)


Lesenswert?

c-hater schrieb:
> Aber Kopfschmerzen, Desorientierung usw.? Quatsch mit Soße.

Menschen reagieren da sehr unterschiedlich drauf.

Joachim B. schrieb:
> Die miesen PWM LED der PKW Rückleuchten nerven mich auch, was zu geringe
> PWM Frequenz ausmacht kennt wohl jeder

Die müssen die PWM-Frequenz niedrig machen, weil sie sonst zu viele 
EMV-Störungen verursachen. Könnte man natürlich filtern, aber das würde 
ja 3 ct mehr kosten.

c-hater schrieb:
> H. H. schrieb:
>
>> Da leuchtet nichts nennenswert nach.
>
> Eben, ungefähr genauso wenig wie bei den seligen TV-CRTs. Da hätte das
> nämlich fürchterlich gestört und häßliche Schlieren bei bewegten
> Bildinhalten gezogen.
>
> Ja, es gab schon CRTs mit wesentlich höherer Nachleuchtdauer. Aber eben
> nicht als TV.

Die Nachleuchtdauer konnte durch Zusammensetzung der Beschichtung 
gewählt werden und wurde genau so lange gewählt, dass das Flimmern so 
weit wie möglich reduziert wurde, ohne dass es merkliche Schlieren gibt.
Und als die (für damalige Verhältnisse doch sehr komplexe) Technik reif 
dafür war, sind die 50 Hz auch ziemlich schnell von den Bildschirmen 
verschwunden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ich würde mir das ganze Geflimmer und potentielle Interferenzen 
untereinander und mit anderen Geräten(**) sparen, eine Spule in den 
Klimbim einbauen und die potentielle Änderung der Farbtemperatur durch 
den sich ändernden Konstantstrom einfach hinnehmen.

(**)Ich kenne da eine Fabrik, die die Leuchtstoffröhren gegen LED-Lampen 
getauscht hat. Und auf einmal tickte je nach Tageszeit die Anlage 
darunter aus. Der Grund: je nach Umgebungshelligkeit bekam die 
Verstärkungsregelung der verwendeten Lichttaster (die teils auch nach 
oben schauen und ihrerseits eben auch gepulstes Licht verwenden) so ihre 
Probleme mit dem neuen Flackerlicht...

: Bearbeitet durch Moderator
von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


Lesenswert?

c-hater schrieb:
> Ach watt. Milliarden Menschen haben über viele Jahrzehnte hinweg
> stundenlang jeden Tag in die (CRT-) Glotze mit 50Hz geschaut. Hätten die
> das getan, wenn das wirklich massive Beschwerden verusachen würde? Wohl
> nicht. Einfach mal logisch denken, bitte...

Ja, bitte mal logisch denken.

Die Leuchtstoffe einer Bildröhre sind darauf ausgerichtet eine gewisse 
Nachleuchtzeit zu haben. Ein Bildpunkt ist grade wieder ganz dunkel, 
wenn der Elektronenstrahl das nächste mal vorbei kommt. Die Lücke 
zwischen hell und dinkel ist also eher kurz.

LEDs dagegen reagieren sehr viel schneller. (Da wir grad dabei sind 
Flicker-Messgeräte zu entwickeln, habe ich auch konkrete Messwerte…) 
LEDs ohne Phosphor (oder Leuchtstoff) reagieren teilweise bis in den 
MHz-Bereich hinein, bei weißen LEDs sind ein paar 100 kHz normal. 
Entsprechend ist die PWM bei einer LED wirklich ein ziemlich hartes 
Abschalten. Die Flimmerwahrnehmung ist deutlich intensiver.

von c-hater (Gast)


Lesenswert?

Guido K. schrieb:

> Ja, bitte mal logisch denken.
>
> Die Leuchtstoffe einer Bildröhre sind darauf ausgerichtet eine gewisse
> Nachleuchtzeit zu haben. Ein Bildpunkt ist grade wieder ganz dunkel,
> wenn der Elektronenstrahl das nächste mal vorbei kommt.

Genau. Und was bedeutet das? 50Hz mit voller Amplitude. Nur der Verlauf 
der Helligkeit innerhalb einer Periode ist anders als bei einem 
Rechteck. Statt Rechteck was sägezahnähnliches. Das ist alles.

von Rolf M. (rmagnus)


Lesenswert?

c-hater schrieb:
> Genau. Und was bedeutet das? 50Hz mit voller Amplitude. Nur der Verlauf
> der Helligkeit innerhalb einer Periode ist anders als bei einem
> Rechteck. Statt Rechteck was sägezahnähnliches. Das ist alles.

Ja, oder anders gesagt: Es geht nicht nach der kurzen Zeit, für die der 
Pixel aktiv ist, vollständig aus, sondern leuchtet, wenn auch mit 
reduzierter Helligkeit, weiter.

von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


Lesenswert?

c-hater schrieb:
> Genau. Und was bedeutet das? 50Hz mit voller Amplitude. Nur der Verlauf
> der Helligkeit innerhalb einer Periode ist anders als bei einem
> Rechteck. Statt Rechteck was sägezahnähnliches. Das ist alles.

Ist schon witzig wie manche Leute einfach weiter Unsinn erzählen, 
nachdem schon klar gemacht wurde, dass mehrere Anwesende mit dem Thema 
bestens vertraut sind und einer sogar genau für dieses Thema aktuell 
grad ein Messgerät (und Prüfnormal) entwickelt.

Also mal abgesehen davon, dass so ein Fernseher nicht die einzige 
Beleuchtung des Raums ist oder sein sollte (da wurde früher auch immer 
wieder drauf hingewiesen…), ist genau dieses Profil des Lichtverlaufes 
ein wichtiger Faktor. Und was dann auch noch unter den Tisch fällt ist, 
dass das Bild ja kontinuierlich auf die Bildröhre geschrieben wird, also 
fast die ganze Zeit zumindest ein Teil des Bildes grad bei voller 
Helligkeit ist. Abhängig vom Bildinhalt ergibt sich dann eine eher 
gleichmäßige Hellgikeit, nur der Ort der Lichtquelle wandert. Dazu kommt 
noch, dass sich das noch mal durch die Halbbilder relativiert.

Aber meine (und die anderer) jahrelange Erfahrung mit LED und Dimming 
ist wohl nebensächlich im Verhältnis zur Meinung eines Forentrolls.

von Prokrastinator (Gast)


Lesenswert?

Alles unter 100Hz PWM geht garnicht.
Das mag subjektiv flimmerfrei erscheinen, geht aber auf die Augen.
(Hell Dunkel Wechsel verbrauchen Vitamin A)

Auch mit 100Hz kann man Digitalfotografie vergessen.
Das gibt heftigste Effekte im Zusammenhang mit der Cmos Sensor 
Abtastfrequenz.

von Brat W. (bratwurst_94)


Lesenswert?

Hallo zusammen,

da hab‘ ich ja was losgetreten..
Aber durchaus interessant und lehrreich, was es zum Thema PWM-Frequenzen 
bei LEDs zu beachten gibt.

Ich bin nun übrigens so weit, dass ich auf 18 Pins des Megas eine 
Software-PWM mit ca. 180 Hz habe :-)

Falls ich zur Desorientierung oder Übelkeit etwas bemerke, teile ich 
hier die Erfahrung.

Wobei ich sagen muss, dass die 180Hz (subjektiv) schon nen guten Job 
machen ;)

Es grüßt die Bratwurst!

von Stefan F. (Gast)


Lesenswert?

Prokrastinator schrieb:
> Hell Dunkel Wechsel verbrauchen Vitamin A

Aus welcher Verschwörungs-Studie hast du denn diese Erkenntnis?

von c-hater (Gast)


Lesenswert?

Prokrastinator schrieb:

> Auch mit 100Hz kann man Digitalfotografie vergessen.

So ein Schwachsinn. Auch Digitalfotografie kann integrieren. Lies' 
einfach mal bei den Klassikern nach, wie man sowas löst: 
Belichtungszeit...

Zumal die guten PWM-Lösungen diese geringen PWM-Frequenzen ohnehin nur 
bei den sehr geringen Helligkeiten haben, nach oben hin wird es dann 
sehr schnell mehr. Und diese extrem geringen Helligkeiten würden als 
Foto-Beleuchtung sowieso extrem lange Belichtungszeiten erfordern. Paßt 
also insofern schon automatisch.

von 2aggressive (Gast)


Lesenswert?

c-hater schrieb:
> diese extrem geringen Helligkeiten...
PWM und --im Mittel-- geringe Helligkeiten hat doch nix mit 
langszeitgemittelten Helligkeiten zu tun.

Nachts isses auch in Afrika dunkel!

> ... würden als
> Foto-Beleuchtung sowieso extrem lange Belichtungszeiten erfordern
Nö. Nein. Nope. Sogar du solltest schon einmal etwas der Begrifflichkeit 
"Blitzlicht" gehört haben.

In voreilendem gehorsam darf für dich ankreuzen:
[x] von Photographie auch keinerlei Ahnung


Grrrrrrrrrrrr
Sorry, aber das musste raus. Dein
> Zumal die guten PWM-Lösungen diese geringen PWM-Frequenzen ohnehin nur
> bei den sehr geringen Helligkeiten haben
bringt mich --ungesehen deiner sicherlich schmerzlichen 
Flickerkonstrukte-- in rage.


Nichtsdestotrotz respektiere ich das posten deiner eigene Meinung, 
welche du aufgrund deiner eigenen Erfahrung hier kund tust. Du solltest 
nur kapieren: "deine" Wirklichkeit entspricht nicht "der" Wirklichkeit. 
Andere "Besserwisser" wissen es wirklich besser.



Ok, manchmal mache ich mich in anderen Fäden hier selber zum Affen. 
Denkfehler über Denkfehler strotzenderweise.... irgendwann sollte man 
aber eine Einsicht zeigen. Dein irgendwann kommt auch irgendwann.



Bevor ich hier jetzt noch anfange (noch mehr) zu rappen; zurück zum TO!
Brat W. schrieb:
> Wobei ich sagen muss, dass die 180Hz (subjektiv) schon nen guten Job
> machen ;)
Wer PWM kennt nimmt Konstantstrom, aber deine 180 Hz sind zumindest ein 
guter Anfang :-)
Glückwunsch zu deiner Lösung!

von Brat W. (bratwurst_94)


Lesenswert?

Hallo zusammen,

falls noch jemand mitlesen sollte:
Habe gestern den ersten Test gemacht.
5m Billig-Led-Band an IRF520-Mosfet-Modulen.

Funktioniert einwandfrei und lässt sich hervorragend dimmen.

Die 180Hz sind aus meiner Sicht absolut ausreichend und ich (!) konnte 
keinen der beschriebenen negativen Effekte feststellen. Da flackert nix 
und erbrechen musste ich auch nicht.

Nur eins würde ich noch sehr gerne tunen.

Hier im Forum schrieb jmd, dass die Augen das Licht logarithmisch 
wahrnehmen.

Ich würde also anstatt linear, lieber quadratisch in einer Zählschleife 
hochdimmen, hab aber seither noch keinen richtig eleganten Weg gefunden, 
das zu tun.

Also am besten wie ein heftig breite Parabel, erst langsam, dann steil 
ansteigend.

Hat jmd nen Rat, wie das möglichst einfach ginge?

Im Prinzip funktionierts ja jetzt schon super, aber das wäre dann halt 
die Krönung.

Schönen Abend!

von Stefan F. (Gast)


Lesenswert?

Brat W. schrieb:
> Hat jmd nen Rat, wie das möglichst einfach ginge?

Ich verstehe dein Problem nicht. Rechnen ist doch die Haupt-Funktion 
jedes Mikrocontrollers. Du musst nur den entsprechenden Ausdruck in 
deinen Quelltext schreiben. Mindestens 16 Bit PWM vorausgesetzt.

von Brat W. (bratwurst_94)


Lesenswert?

Da hast Du wohl Recht.

Trotzdem erlaube ich es mir, in einem Forum mit erfahrenen Leuten, nach 
Ratschlägen zu fragen.

Ansonsten kann mein Post gerne ignoriert werden ;-)

von Stefan F. (Gast)


Lesenswert?

Beispiel für (fast) 160 Stufen:
1
#include <stdio.h>
2
#include <stdint.h>
3
4
int main()
5
{
6
  for (int i = 0; i <= 160; i++)
7
  {   
8
     uint16_t pwm = pow(2.0, i/10.0);
9
     
10
     // Ausnahme für den maximalen Wert
11
     if (pwm==0) pwm=65535;
12
     
13
     printf("pwm=%d\n", pwm);
14
  }
15
}

Beim Compilieren muss man die Option -lm angeben, um die math Bibliothek 
mit einzubinden.

> gcc test.c -lm

Wenn du das Programm kompakter brauchst (ohne Mathe), kannst du die 161 
Werte vorher berechnen und als konstantes Array in den Quelltext 
schreiben:
1
#include <stdio.h>
2
#include <stdint.h>
3
#include <math.h>
4
5
const uint16_t data[]={0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,6,6,6,7,8,8,9,9,10,11,12,12,13,14,16,17,18,19,21,22,24,25,27,29,32,34,36,39,42,45,48,51,55,59,64,68,73,78,84,90,97,103,111,119,128,137,147,157,168,181,194,207,222,238,256,274,294,315,337,362,388,415,445,477,512,548,588,630,675,724,776,831,891,955,1024,1097,1176,1260,1351,1448,1552,1663,1782,1910,2048,2194,2352,2521,2702,2896,3104,3326,3565,3821,4096,4389,4705,5042,5404,5792,6208,6653,7131,7643,8192,8779,9410,10085,10809,11585,12416,13307,14263,15286,16384,17559,18820,20171,21618,23170,24833,26615,28526,30573,32768,35119,37640,40342,43237,46340,49667,53231,57052,61147,65535};
6
7
int main()
8
{
9
  for (int i = 0; i <= 160; i++)
10
  {   
11
     uint16_t pwm = data[i];    
12
     printf("%d,", pwm);
13
  }
14
}


Am Anfang wiederholen sich einige kleine Zahlen, weil die 16 Bit 
Auflösung der PWM nicht ausreicht, um diese feinen Abstufungen 
darzustellen.

von Brat W. (bratwurst_94)


Lesenswert?

Wie genial ist das denn!
Vielen Dank für Deine Mühen.
Damit habe ich echt nicht gerechnet (im wahrsten Sinne 😃)

Ich werde das sobald möglich an meinem Testaufbau ausprobieren und hier 
berichten.

Die Lösung über das Array ist einfach top.

Danke nochmal!
Gruß

von 2aggressive (Gast)


Lesenswert?

Brat W. schrieb:
> Ich würde also anstatt linear, lieber quadratisch in einer Zählschleife
> hochdimmen, hab aber seither noch keinen richtig eleganten Weg gefunden,
> das zu tun.
>
> Also am besten wie ein heftig breite Parabel, erst langsam, dann steil
> ansteigend.
>
> Hat jmd nen Rat, wie das möglichst einfach ginge?
Stefanus hat einen guten Run :D


Anderer Weg:
-Wie gehabt auf/ab zählen (das kriegste wohl problemlos hin), Hausnummer 
10 verschiedene Hellikeitsstufen mE mehr als ausreichend.
-Den ermittelten (=gezählten Wert) darauf basierend Parabolisieren, 
entweder rechnen, oder aus einer Tabelle auslesen, dieses Ergebnis -> 
Helligkeitswert.


Ontop
Brat W. schrieb:
> falls noch jemand mitlesen sollte:
Dein Faden ist wieder oben. Klar Prominent.

> Die 180Hz sind aus meiner Sicht absolut ausreichend
Prima, den meisten Menschen reicht das völlig aus!
In meinem Hause würde ich dir wegen solchem Geflacker 180 mal pro 
Sekunde deinen Hals undrehen :D

suum cuique

von Carsten-Peter C. (carsten-p)


Angehängte Dateien:

Lesenswert?

Moin, vielleicht helfen Dir ja meine Erfahrungen mit meinem Dimmer 
weiter, wie Stefan habe ich eine Tabelle erstellt. Die hat jedoch einen 
Anfangswert von 256 und endet mit 65535. Damit lassen sich sowohl die 8 
Bit als auch die 16 Bit PWM steuern. Bei 1/65535stel leuchtet da noch 
garnichts. Das mag natürlich mit anderen Treibern anders sein. Ich nutze 
200 Helligkeitsschritte um ein softes dimmen zu erreichen. Um 
Netzsynchron zu arbeiten laufen die PWM mit 100 Hz. Bisher hat da noch 
keiner ein Flackern bemerkt. Wenn ich an die alten Röhrenmonitore denke, 
reichte mir eine Bildwiederholfrequenz von 72Hz völlig aus – probiere es 
einfach aus. Vielleicht hilft Dir die Exceltabelle Deine Dimm Kurve zu 
finden.
Gruß Carsten

von Joachim B. (jar)


Lesenswert?

Brat W. schrieb:
> Hier im Forum schrieb jmd, dass die Augen das Licht logarithmisch
> wahrnehmen.
>
> Ich würde also anstatt linear, lieber quadratisch in einer Zählschleife
> hochdimmen, hab aber seither noch keinen richtig eleganten Weg gefunden,
> das zu tun.

artikel LED fading mit Berechnung
https://www.mikrocontroller.net/articles/LED-Fading

von Brat W. (bratwurst_94)


Lesenswert?

Moin Carsten-Peter,

ideal, das ist schonmal sehr gut!
Ich kann zwar nur von 0-255 dimmen, aber mit der von Joachim B. 
verlinkten Seite komme ich ja an die Abstufungen, die für 8Bit gemacht 
sind. Ich denke 32-stufig sollte das dennoch funktionieren.

Ja, meine 180Hz PWM sind auch wahrlich genug (hätte ich nicht so smooth 
erwartet). Dass aber 100Hz auch noch gut laufen, hätte ich weniger 
erwartet.

Trotzdem schön wenns funktioniert 😉

Besten Dank für Eure Hilfe!

von Stefan F. (Gast)


Lesenswert?

Das schöne am Array ist, dass man die Abstufungen so gestalten kann wie 
man will. Es muss nicht zwingend linear, logarithmisch oder nach sonst 
einer Formel sein.

von Εrnst B. (ernst)


Lesenswert?

Statt dem durchgehenden Array kann man auch die gewünschte Kurve 
stückweise approximieren und nur Stützstellen speichern.

Ob sich das lohnt hängt natürlich davon ab, wieviel Array man einsparen 
kann, und ob die nötigen Mulitplikations/Divisionsroutinen sowieso schon 
im Projekt verwendet werden oder nicht.

Quick&Dirty für 8Bit -> 8Bit:
1
prog_uint8_t red_calibration[]= {
2
0,0,
3
50,10,
4
100,30,
5
150,80,
6
200,140,
7
0xFF,0xFF
8
};
9
prog_uint8_t green_calibration[]= {
10
0,0,
11
...
12
0xFF,0xFF
13
};
14
prog_uint8_t blue_calibration[]= {
15
0,0,
16
...
17
0xFF,0xFF
18
};
19
20
21
uint8_t get_calibration(prog_uint8_t data[], uint8_t value) {
22
  uint8_t low_pos;
23
  uint8_t low_val;
24
  uint8_t high_pos;
25
  uint8_t high_val;
26
  while (pgm_read_byte(&data[2])<value) {
27
    data+=2;
28
  } 
29
  low_pos=pgm_read_byte(&data[0]);
30
  low_val=pgm_read_byte(&data[1]);
31
  high_pos=pgm_read_byte(&data[2]);
32
  high_val=pgm_read_byte(&data[3]);
33
  high_val-=low_val;
34
  high_pos-=low_pos;
35
  value-=low_pos;
36
  return low_val+value*high_val/high_pos;
37
}

Ja, ein pgm_read_byte könnte man wegsparen (Lohnt das? wird doch zu 
einem simplen LPM?), und ich hoffe mal dass da kein out-of-bound read 
drinnen ist.

von Brat W. (bratwurst_94)


Lesenswert?

Hallo zusammen,

hatte gerade die Gelegenheit die Sache direkt zu testen.
Es funktioniert wie vorgestellt ;-)

Für meine 8-Bit-Auflösung habe ich das folgende Array eingebaut:

const uint16_t data[]=
{
    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
};

Zwischen den 32 Dimmschritten liegen jeweils 12ms, im Hoch- sowie im 
Runterlauf.

Der Effekt, dass die LEDs nun "gleichmäßiger" für´s Auge dimmen ist sehr 
deutlich vernehmbar und rundet die Sache ideal ab.

Besten Dank für Eure Unterstützung, hätte da wahrscheinlich noch ne 
Weile rumgemacht :D

LG
Bratwurst

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
Noch kein Account? Hier anmelden.