Forum: Mikrocontroller und Digitale Elektronik Gerät Hintergrundbeleuchtung dimmen


von chris (Gast)


Lesenswert?

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

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


Lesenswert?

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).

von Rainer U. (r-u)


Lesenswert?

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?

von chris (Gast)


Lesenswert?

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

von chris (Gast)


Lesenswert?

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.

von Leroy M. (mayl)


Lesenswert?

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.

: Bearbeitet durch User
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.