Software-LED-Helligkeitsproblem

OP #401243
Lesenswert?

Huhu,

bin jetzt mit meinem Microkontroller.net-Shop-Einsteigerboard am
rumgurken und hab mal zum Spaß ein Programm geschrieben, das die fertig
miteingebaute LED per Tastendruck in der Helligkeit verstellt.. Das
passiert, indem das Programm die LED immer an/ausmacht und die Länge
der An-/Aus-Phase verändert (Ich glaub, dafür gibts auch ein Fachwort
:D)
Allerdings ist der Helligkeitsverlauf merkwürdig... Im dunklen Bereich
nimmt die Helligkeit viel extremer zu, als im Hellen.
Ist das normal so bei der Methode oder könnte das z.B. an einem
Kondensator, der irgendwo versteckt ist oder anderen Gründen liegen?

MfG Hendrik
Gast #401244
Lesenswert?

Hi

PWM - Pulsweitenmodulation nennt sich das ganze. Es ist eigentlich
normal. Der Helligkeitsverlauf ist nicht linear sondern logarithmisch
soweit ich weis(ich hoffe ich habe mich jetzt nicht verdan).

mfg schoasch
OP #401247
Lesenswert?

Hmm, nachdem ich gemerkt habe, dass im Falle der eingeschalteten LED
(Helligkeitswert vom Zähler unterschritten), weniger Befehle ausgeführt
werden, als im Falle der eingeschalteten LED (Wert überschritten) und
das ganze mit NOP aufgefüllt habe, kommt es mir wesentlich
gleichmäßiger vor... Entweder rede ich mir das jetzt ein, um ein
Erfolgserlebnis zu haben, oder das ganze ist jetzt tatsächlich
brauchbar ;) Wobei ich mir kaum vorstellen kann, dass die 3 NOPs
tatsächlich so viel bewirkt haben sollen...
OP #401248
Lesenswert?

OK, ich nehm es direkt wieder zurück.. Es hat sich tatsächlich nur
verbessert, aber im Vergleich auf dem Monitor ist das nochmal was ganz
Anderes ;)

Aber ich versteh es echt nicht so ganz.. Wenn die LED bei einem von 256
Impulsen ein ist, müsste das doch 1/256 der vollen Leuchtkraft sein
(~0,4%), bei 128 dann 128/250, also 50%

Das mit der Tabelle ist eine gute Idee.. Da ich aber das Ergebnis der
Rechnung immer nur dann brauche, wenn per Tastendruck der
Helligkeitswert verändert wird, könnte ich ihn ja dann kurz berechnen..
Nur weiß ich halt immernoch nicht, wie...  Am PC wär das irgendwie
wesentlich leichter ;)
Gast #401249
Lesenswert?

hallo,

wie schon jemand weiter oben sagte, das auge nimmt das licht nicht mit
einer linearen kurve auf, sondern mit nem logarithmischen charakter.
also es reagiert empfindlicher bei niedriegen leuchtstärken. sonst
würden wir nachts auch ganz schön blöd aus der wäsche gucken - weil
blind. die ansteuerung, musst du nur an diese funktion anpassen, ich
habe dafür mal eine 10bit pwm verwendet. da war dann nur auf den ersten
5 stufungen ein helligkeitssprung feststellbar. danach war alles
bestens. es ist auch immer die frage, ob du direkt in die led siehst,
oder ob du damit was beleuchtest. im 2. falle, brauchst du keine 10 bit
pwm, weil die intensität in den ersten stufen dann meisst eh so schwach
ist, dass es über eine reflektion nicht mehr sichtbar ist.
OP #401250
Lesenswert?

OK, danke für die Erklärung. Irgendwas musste sich ja meinem genialen
Plan in den Weg stellen :D Genau genommen wollte ich mit je 3
einstellbaren Kanälen (Rot, Grün, Blau) dann LED-Leisten betreiben und
irgendwas wie ein Nachtlicht bauen, bei dem man den Farbton dann über
Taster verändern kann (Später dann ein ganzes Raumlicht, mit
IR-Fernbedienung bedient.. Aber bis ich dahin komme, stellt sich
irgendwas neues in den Weg ;))
Gast #401257
Lesenswert?

>Wie kann ich mir das dann vorstellen? Ich benutze dann 2
> verschiedene Intervalle, je einen für die An-Zeit und einen für
> die Aus-Zeit?

Nein, es ist sogar noch einfacher. Du benutzt nur einen Wert, der
direkt das Tastverhältnis angibt.
#401259
Lesenswert?

Schau dir mal im Datenblatt die Timermodi an.
Ab Seite 105 ist das alles detailiert beschrieben.

Im Grunde ist es ganz simpel:
Der Timer läuft ständig durch: von 0 bis 255
Jetzt programmierst du die ganze Einheit so, dass
der Timer selbständig bei Timerwerten unter einer
bestimmten Zahl einen Pin auf 1 hält und darüber
den Pin auf 0 setzt. Durch Variation dieses bestimmten
Wertes kannst du das Verhältnis von Ein- zu Auszeit
bestimmen (Seite 110 im Datenblatt)

Übrigens glaube ich nicht, das dich das weiter bringt.
Du brauchst 3 PWM Stufen (für jede Farbe eine) hast
aber nur 1 Hardware-PWM in Form vom Timer 2.

Also wirds wohl auf eine 3-fach Software-PWM hinauslaufen.
OP #401262
Lesenswert?

Vielen Dank, ich guck mir den Quellcode mal genauer an und probier, das
Relevante rauszufiltern.
Leider beschäftige ich mich erst seit ein paar Tagen mit µCs und der
ganzen Elektronik, so dass das noch etwas schwer ist ;)
Aber jetzt nochmal Danke an alle für die Hilfe bisher!
OP #401263
Lesenswert?

Hmm, hab grad nochmal eine Idee... Würde das z.B. gehen, wenn ich den
Helligkeitswert (0-255) mit sich selbst malnehme (also Helligkeit^2)
und irgendwie in 2 Registern speicher, dann wieder durch 255 teile?
Dann hätte ich ein Byte, aber mit nicht-linearem Verlauf.
Hab nur leider keine Ahnung, wie ich das lösen könnt ein asm :\

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren