www.mikrocontroller.net

Diskussion:LED-Fading

[Bearbeiten] Hinweise zu Anpassungen an andere AVRs als ATmega32

[Bearbeiten] Diskussion wissenschaftl.-technischer Hintergrund

Das Helligkeitsempfinden des Auges ist NICHT logarithmisch!

Es genügt der Gleichung (für nahezu alle unsere Anwendungsfälle):

E = R ^ γ

wobei:

E = Empfinden

R = Reizintensität (Tastverhältnis der PWM)

γ = Gammakorrekturwert

Je nach Größe der Lichtquelle wählt man:

γ = 0.5 für punktförmige oder aufblitzende Helligkeiten

γ = 0.33 für Lichtquellen bei 5° Blickwinkel

γ = 1/2.2 ist meine Empfehlung für diffus strahlende LEDs - entspricht der Gamma-korrektur von VGA-Bildschirmen - hat in unseren Selbstversuchen hervorragende Ergebnisse geliefert

Die umgekehrte Look-Up-Wertetabelle ergibt sich aus:

R = E ^ 1/γ (wie man sieht auch hier KEIN Logarithmus! Der Exponent ist fix!)

oder für diskrete Werte:

R[i] = round((z - 1) * (i / (n - 1)) ^ (1/γ))

oder (je nachdem welche Rundungsfunktion verfügbar ist)

R[i] = floor((z - 1) * (i / (n - 1)) ^ (1/γ) + 0.5)

mit

n = Anzahl der Einträge in der Look-Up-Tabelle (z.B. 256)

i = Laufindex [0..n-1]

z = Anzahl der linearen Stufen, die die PWM-Routine wiedergeben kann (z.B. 65536)

Oder eingesetzt für den typischen Anwendungsfall:

R[i] = floor(65535.0 * (i / 255.0) ^ 2.2 + 0.5)

In Wikipedia ist's übrigens auch falsch beschrieben:

Der Artikel Gammakorrektur verweist fälschlicher Weise auf das Weber-Fechner-Gesetz welches den Logarithmus zur Grundlage hat. Weiter unten im Weber-Fechner-Gesetz-Artikel findet sich der Hinweis, das die Stevensschen Potenzfunktionen besser geeignet seien. In besagtem Artikel finden sich dann auch wieder die Verallgemeinerungen der Gamma-Korrektur wieder. Im Englischen Artikel zum Stevensschen Potenzgesetz sind auch einige Exponenten für die Reizfunktionen zu finden.

Komme mir hier im Forum manchmal wie ein Geisterfahrer vor... das wird einfach so oft falsch verwendet...

Ich hoffe mal, dass sich hier noch Gleichgesinnte einfinden und jemand (im Einverständnis mit dem Originalautor) den Artikel entsprechend anpasst - oder die entsprechende Gegenaussage begründen kann.

in diesem Sinne... schönen Restabend noch!


Ich bin der Autor des Artikels. Was die biologisch-physiologische Seite des Problems angeht, bin ich sicher nicht die Fachkraft, meine Kenntnisse bauen auch nur auf Wikipedia & Co auf. Wobei der praktische Unterschied zwischen Weber Fechner und Stevenssche Potenzfunktion relativ gering ist und bestenfalls für die Profis interessant ist. Aber meinestwegen kann der Artikel von dir dahingehend angepasst werden. Man lernt ja nie aus ;-)

MfG Falk


Bob Pease hat mal den Dynamikumfag des Auges abgeschätzt

http://electronicdesign.com/Articles/Index.cfm?AD=1&AD=1&ArticleID=6059

"What's All This Optical Stuff, Anyhow?" Er rechnet mit dB, also logarithmischen Maßen, und kommt auf 145 dB. Er gibt allerdings zu, dass er in optischen Maßeinheiten nicht so bewandert ist.


Danke euch für das schnelle Feedback. Ich schau mal, dass ich 'nen Millimeter Zeit finde um den Artikel (und die Wertetabellen) anzupassen.

Der Unterschied ist wirklich nicht groß, aber wenn's passende Formeln gibt, die zu dem nicht schwieriger zu rechnen sind, sollten die meiner Meinung nach verwendet werden. Die Unterschiede sind leider gerade im unteren Helligkeitsbereich nicht ohne :( Das Auge könnte da ruhig was kooperativer sein.

Danke und n8

[Bearbeiten] Danke!

Erstmal herzlichen Dank für diesen Artikel! Der hat mir schon sehr geholfen. Mir ist schon klar, dass das Hauptaugenmerk auf der Helligkeitsverteilung liegt. Was mir nur beim Studieren des Programms schwer gefallen ist, war die Initialisierung des Timers. Dort wird immer das ganze Register auf einmal geschrieben, mit einem Wert in Hex-Form. Könnte man das nicht ändern in die übliche Schreibweise register = (1<<BITNAME) | (1<<NOCHNBIT)? Dann wüsste man sofort welche Bits gesetzt sind und welche nicht. Ich würde mich auch dafür zur VErfügung stellen, das alles umzurechnen/nachzuschlagen. Was hälst du davon, Falk?

LG, Björn


Mach mal, klingt vernünftig. Aber bitte dann den Code REAL testen, damit sich keine Fehler einschleichen.

MFg Falk


>Interessant wäre ja noch, ob denn die LED nicht auch noch ein unlineares >Verhalten hat.

Hat sie, ist aber für diese Anwendung verschwindend gering.

> Die ist ja ein Diode. Im "Knick" der LED steigt doch die Helligkeit auch > nicht linear an. Ist das bei den Formeln schon berücksichtigt?

Welcher "Knick"? Die Strom-Spannungskennlinie? Ist bei LEDs im Wesentlichen uninteressant. Die werden sowiso mit einer Konstantstromquelle betrieben, siehe Artikel LED.

MfG Falk


Stimmt, war ein Denkfehler von mir. --> Ist ja PWM-Betrieb, nicht linear...

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net