Hallo, hab da ein kleines Problem. Bei einer LED-PWM-Steuerung verwende ich PWM-Werte, die ich grob für's lineare Helligkeitsempfinden des Auges berechnet habe. Grob deswegen, weil ich einfach die n-te Wurzel aus meiner PWM-Auflösung gezogen habe, wobei n die Anzahl der möglichen Werte ist, und das ganze n-mal multipliziert habe. (Hoffe das war verständlich :) Das ganze funktioniert auch soweit, das ein- und ausfaden mache ich, indem ich einfach in der Werte-Tabelle von Index 0 bis n gehe und wieder zurück. Allerdings habe ich jetzt zwei Fragen: 1) Müsste ich nicht (korrekterweise) auch eine Werte-Tabelle für's ausfaden haben? Deren Verlauf müsste ja eigentlich anders aussehen,oder? Ich konnte jetzt beim Ausfaden nichts auffälliges sehen, aber interessieren würde es mich. 2) Die Frage ist kniffliger: Ich möchte ein "wellenartiges" Ausfaden erreichen, bei dem die LEDs bei jeder "Welle" etwas schwächer leuchten, bis zum Schluss eben "Ruhe aufm Teich" ist. Momentan hab ich das ganz lapidar gelöst, in dem ich einfach bei jeder Welle den maximalen Tabellen-Index dekrementiert habe. Das unschöne daran ist, je "schwächer" die Wellen werden, desto flackernder wird das ganze logischerweise, weil die Zeit der Welle ja kürzer ist (da ich nicht alle Tabellenwerte durchlaufe). Ich denke aber, eine konstante Wellenzeit sieht besser aus. So, und da hab ich jetzt den Denkanstoss nötig. Ich könnte beispielsweise zwischen den Werten zeitlich auffüllen, sodass ich im Endeffekt die gleichen Wellenzeiten erreiche. Die einzig andere Möglichkeit, die mir noch einfiel wäre für jede Helligkeitsstufe, die in der jetzigen Werte-Tabelle vorhanden ist, eine weitere Tabelle mit der gleichen Formel zu berechnen, wobei die n-te Wurzel nicht aus der PWM-Auflösung, sondern aus dem entsprechenden Wert der ersten Tabelle gezogen wird. Gibts noch ne bessere Möglichkeit, die ich grad nicht sehe? Ralf
Ralf schrieb: > einfach die n-te Wurzel Das Auge hat exponentielles Helligkeitsempfinden. Aber als Approximation schon ok. Ralf schrieb: > auch eine Werte-Tabelle für's > ausfaden haben Nein, denn du bildest ja immer eine Zahlenreihe auf eine andere ab und das immer in der selben Richtung. Du benutzt also nie die Umkehrfunktion. Fürs Ein- und Ausfaden lässt sich dieselbe Transformationstabelle benutzen, wie du schon gemerkt hast. Ist wie ein Dolmetscher, der immer nur von Deutsch nach Englisch übersetzen muss. Ralf schrieb: > Das unschöne daran ist, je > "schwächer" die Wellen werden, desto flackernder wird das ganze > logischerweise, weil die Zeit der Welle ja kürzer ist (da ich nicht alle > Tabellenwerte durchlaufe) Machst du die Wellen vor oder nach der Tabelle? Vor würde ich dir raten. Wenn es dir schon zu sehr flackert(Sprünge im dunklen Bereich wahrnehmbar), nimm doch eine Tabelle mit 8bit Eingangs- und 16bit Ausgangswerten. Damit dann auf eine 16bit PWM gehen. Das sollte genug Auflösung für den dunklen Bereich bieten und verschlingt gerade mal 50% mehr Speicher als die alte 8bit-zu-8bit-Tabelle. mfg mf
@Jo: > Das Auge hat exponentielles Helligkeitsempfinden. > Aber als Approximation schon ok. Ich glaube das reicht für die Applikation auch aus. > Nein, denn du bildest ja immer eine Zahlenreihe auf eine andere ab und > das immer in der selben Richtung. Du benutzt also nie die > Umkehrfunktion. Okay, spart Aufwand :) > Machst du die Wellen vor oder nach der Tabelle? Vor würde ich dir raten. Ich glaube, ich habe es missverständlich ausgedrückt. Die Wellen erzeuge ich, indem ich einen Variable mit dem maximalen Index der PWM-Tabelle lade und diese Variable als Tabellen-Index benutze. Dann fade ich bis zum entsprechenden Index ein, dekrementiere die Variable und fade wieder aus. Somit ist jede "Welle" etwas dunkler als die vorherige. > Wenn es dir schon zu sehr flackert(Sprünge im dunklen Bereich > wahrnehmbar), nimm doch eine Tabelle mit 8bit Eingangs- und 16bit > Ausgangswerten. Damit dann auf eine 16bit PWM gehen. Das wird happig, es ist eine Software-PWM an einer 8x8-LED Matrix ;) > Das sollte genug Auflösung für den dunklen Bereich bieten und > verschlingt gerade mal 50% mehr Speicher als die alte > 8bit-zu-8bit-Tabelle. Vielleicht kann ich die Anzahl der Werte verdoppeln oder vervierfachen und beim Einfaden mit 2er/4er-Sprüngen im Index arbeiten und beim Ausfaden alle Tabellenwerte verwenden. @Falk: Danke. Ralf
Sieh dir die Themen Gammakorrektur und Spektrale Hellempfindlichkeit des meschlichen Auges mal genauer an. Die meisten Menschen haben ein Gamma von ca. 2,2. D.h. eine Potenzfunktion von k*x^(2,2) erreicht einen nahezu linear empfundenen Anstieg der Helligkeit. Vorsicht aber bei verschiedenen Farben und bei Farbmischung. Das Auge/Gehirn ist sehr komplex und nichtlinear ;)
@sonstwer: Danke. Ich werd bei Gelegenheit die Formel interessehalber auf die Werte umsetzen. Was sind k bzw. x? Das "Wellenproblem" hab ich zwar noch nicht gelöst, aber mal schauen, was ich noch hinbekomme. Ralf
Ralf schrieb: > Was sind k bzw. x? k ist ein konstanter faktor, den man anpassen kann, um auf einen endwert von 255 (bei 8 bit) (oder (2^16 - 1) bei 16 Bit) zu kommen. x ist die variable, die den wert der "Soll-Empfindung" auf einer linearen skala angibt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.