Hallo und guten Hunger.
Hab da ein Fahrradtacho welches ich über einen Drehimpulsgeber in 22
Stufen die Hintergrundbeleuchtung einstellen kann. Nun möchte ich das
bei entsprechender Beleuchtung sich auch die Hintergrundbeleuchtung
anpasst.
Quasi:
Heller Tag = hellere Hintergrundbeleuchtung
Dunkler Tag/Nacht = dunklere Hintergrundbeleuchtung
Folgendes ist bereits erfüllt und arbeitet auch:
1. LDR(M996011A) --> ADC --> AVR 328P --> Lichtintesität ermitteln i.O.
2. AVR mit 2 Pins parallel zum Drehimpulsgeber(ALPS LOW-active)
geschaltet
um darüber die Hintergrundbeleuchtung zu beeinflussen i.O.
3. Test mit abdunkeln und erhellen lässt die Hintergrundbeleuchtung von
0-21 super anpassen. i.O.
Software reproduziert die Ergbenisse i.O.
4. alle 4s je eine Messung starten (ADC) das ganze 15mal = 60s i.O.
nur alle 60s den Durchschnitt von den 15 Werten bilden, i.O.
nur alle 60s dies auf die entsprechende Lichtstufe umrechnen, i.O.
nur alle 60s auf die Stufe dimmen. i.O.
Erstes Problem:
Wenn es Abends dunkler wird scheint es so als wenn der M996011A (600nm)
noch zu empfindlich auf das orange Spektrum reagiert und damit die
Helligkeit zu hell bleibt.
Bringt eine orange/rote/schwarze Folie Abhilfe um den LDR dezent
unempfindlicher werden zu lassen ?
Zweites Problem:
Alle 60s(war erstmal nur zum Testen) kann sich die Helligkeit anpassen.
Nun würde ich es ein wenig "smother" machen. Gerade weil man ja schnelle
Lichtwechsel hat, hell dunkel usw, ist meine Anpassung mit den 60s zu
langsam.
Fakt ist, die 60s müssen runter gesetzt werden so das es sich vllt alle
15s anpassen kann. Hat jmd mal einen Denkanstoß um den Algorythmus zu
beschleunigen ohne das man eine Überschneidung an einer
dunkeleren/helleren Stelle hat und es sich aktualisiert aber 1s später
wieder heller wird.
Controller Atmega 328P in ASM
chris schrieb:> Bringt eine orange/rote/schwarze Folie Abhilfe um den LDR dezent> unempfindlicher werden zu lassen ?
Wenn schon, dann brauchst du eine blaue Folie, damit das störende und
verfälschende orange Licht nicht durchkommt.
> Hat jmd mal einen Denkanstoß um den Algorythmus zu beschleunigen
Ich würde die Anpassung ständig in der Mainloop machen. Weil ich aber
dein Programm nicht kenne, weiß ich nicht, was du ändern musst.
> 4. alle 4s je eine Messung starten (ADC) das ganze 15mal = 60s i.O.> nur alle 60s den Durchschnitt von den 15 Werten bilden, i.O.> nur alle 60s dies auf die entsprechende Lichtstufe umrechnen, i.O.> nur alle 60s auf die Stufe dimmen. i.O.
Wenn du alle 4 Sekunden eine Messung machst, dann kannst du doch einfach
alle 4 Sekunden eine neue Helligkeit ermitteln (Stichwort: gleitender
Mittelwert).
chris schrieb:> Bringt eine orange/rote/schwarze Folie Abhilfe um den LDR dezent> unempfindlicher werden zu lassen ?
Einfach mit verschiedenen Folien ausprobieren, dazu..
chris schrieb:> Fakt ist, die 60s müssen runter gesetzt werden so das es sich vllt alle> 15s anpassen kann. Hat jmd mal einen Denkanstoß um den Algorythmus zu> beschleunigen ohne das man eine Überschneidung an einer> dunkeleren/helleren Stelle hat und es sich aktualisiert aber 1s später> wieder heller wird.
.. öfter messen, Mittelwert bilden und anpassen. Miss doch einfach 15x
pro Sekunde und passe jede Sekunde an - zumindest mal zum testen..
Wenn ich mit dem Fahrrad für 5-10 Sekunden durch eine dunkle
Unterführung fahre, würde ich erwarten, dass es nach < 1 Sekunde hell
wird.. nicht?
Lothar M. schrieb:> Wenn schon, dann brauchst du eine blaue Folie, damit das störende und> verfälschende orange Licht nicht durchkommt.
Blau ? gut gut Farblehre war nie so meins :D
> Ich würde die Anpassung ständig in der Mainloop machen. Weil ich aber> dein Programm nicht kenne, weiß ich nicht, was du ändern musst.
Wird auch vom Prinzip gemacht. Alle 60s wird ein Bit mit dem Timer1
generiert und in der Main abgefragt. So ist das anpassen für mich
einfacher von verschiedenen Zeiten.
> Wenn du alle 4 Sekunden eine Messung machst, dann kannst du doch einfach> alle 4 Sekunden eine neue Helligkeit ermitteln (Stichwort: gleitender> Mittelwert).
mmhh ja das geht natürlich auch. Das muss ich mir nochmal zur gemüte
führen. Ich hab nur den arithmetischen Mittelwert...
Rainer U. schrieb:> .. öfter messen, Mittelwert bilden und anpassen. Miss doch einfach 15x> pro Sekunde und passe jede Sekunde an - zumindest mal zum testen..
Der Gedanke ist dem vom Lothar ähnlich. Das schonmal gut.
> Wenn ich mit dem Fahrrad für 5-10 Sekunden durch eine dunkle> Unterführung fahre, würde ich erwarten, dass es nach < 1 Sekunde hell> wird.. nicht?
Genau umgekehrt finde ich besser. Nach der Unterführung wird beides dann
wieder heller.
Die Infos muss ich erstmal ver/erarbeiten.
Danke für die schnellen Infos
Gleitender Mittelwert:
Start
x = 15 Messung
y = Werte
z = Summe aus den 15 Werten
z/15 = mein erster Durchschnitt = entpsrechende Helligkeit
nun nächste Messung starten...
x = 15 Messungen
y = ältester Wert durch neuen Wert ersetzen
z = Summe aus den 14 alten Werten + den neuen Messwert addieren
z/15 = gleitender Mittelwert
Also muss die Software nur einen zusätzlichen Ringbuffer bekommen
Werd das mal bei Zeiten ausprobieren.
chris schrieb:>> Wenn ich mit dem Fahrrad für 5-10 Sekunden durch eine dunkle>> Unterführung fahre, würde ich erwarten, dass es nach < 1 Sekunde hell>> wird.. nicht?>> Genau umgekehrt finde ich besser. Nach der Unterführung wird beides dann> wieder heller.
Ich würde bei der Gelegenheit das Aufdimmen unverzögert geschehen
lassen, das Abdimmen (dunkler werden) jedoch etwas verzögert.
Einfach, weil die Dunkeladaption des Auges länger dauert.
Benutze den gleitenden Durchschnitt, der bei jeder Messung neu berechnet
wird.
Vielleicht könntest du eine Hysterese einbauen, d.h. die
Displayhelligkeit ändert sich erst, wenn wenn zwischen dem aktuellen
Durchschittswert und dem Durchschnittswert, bei dem die Helligkeit das
letzte mal angepasst wurde, ein bestimmtes Delta herrscht.
So könnte man kurze Dunkelphasen (Unterführung, Schatten einer
Straßenlaterne etc.) ausbügeln.
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.