Inhaltsverzeichnis:

Kalibrieren der LED-Helligkeit - Gunook
Kalibrieren der LED-Helligkeit - Gunook

Video: Kalibrieren der LED-Helligkeit - Gunook

Video: Kalibrieren der LED-Helligkeit - Gunook
Video: Diese macOS Einstellungen solltest du SOFORT ändern (macOS Monterey)! | Nils-Hendrik Welk 2024, November
Anonim
Kalibrieren der LED-Helligkeit
Kalibrieren der LED-Helligkeit

Während ich eine Lichterkette machte, stellte ich fest, dass der PWM-Wert nichtlinear proportional zur Helligkeit der LED ist. Einfach gesagt, wenn der PWM-Wert doppelt ist, ist die Helligkeit nicht doppelt; besonders wenn PWM nahe am Maximum ist, ist jede Änderung für meine Augen nicht erkennbar. Ich dachte, es sollte ein einfaches Kalibrierungsproblem sein! und so habe ich dieses Projekt gemacht! Die Idee ist, die Helligkeit einer LED mit einem Gerät (Helligkeitssensor oder Fotowiderstand) zu messen und eine Korrelation zwischen dem PWM-Wert und der Helligkeit zu finden. Dann später Wenn ich die Helligkeit auf 50% stelle, berechnet Arduino die entsprechende PWM und dimmt die LED entsprechend.

Daher benötige ich einen Helligkeitssensor und eine LED um die Helligkeit zu messen. Mit einer SD-Karte speichere ich die Daten für die spätere Anpassung. Die Anpassung erfolgt in Excel (oder einem anderen Programm). Die Ausgabe wird im Arduino-Code verwendet, und das ist es! Es sollte einmal gemacht werden. Dann können Sie den Kalibrierparameter für immer verwenden!

Schritt 1: Teile

1- WEMOS mini D1: Aliexpress 3€

2- TSL 2561 (Helligkeitssensor): Aliexpress 3€

3- SD-Kartenmodul: Aliexpress 1€

4- LED

5- Widerstand 220 Ohm

6- Drähte

Gesamtkosten: 8 -10 €

Schritt 2: Verkabelung

Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung
Verdrahtung

Die Kabel des SD-Kartenmoduls und des Helligkeitssensors sollten nicht geändert werden (die meisten davon). Die LED sollte an einen PWM-Pin angeschlossen werden.

Schritt 3: Code

Code
Code

Ich habe drei Codes kombiniert:

SD-Karte: verwendetes Beispiel >SD > ReadWrite in Arduino IDE

TSL 2561: Verwendetes Adafruit TSL2561-Bibliotheksbeispiel (sensorapi); Sie finden es in Beispielen, wenn Sie die Bibliothek installieren (ich gehe davon aus, dass Sie wissen, wie man eine Bibliothek in der Arduino IDE installiert).

LED-Fading: Verwendete Beispiele > Analog > Fading

Der Code dimmt nach der Initialisierung der Module die LED, liest die Helligkeit und speichert sie auf der SD-Karte. Auf diese Weise werde ich einige Daten für die Kalibrierung sammeln.

Ich habe jeden Code nach meinen Bedürfnissen geändert. der endgültige Code angehängt.

Das Signal sollte wie das angehängte Bild aussehen. Leider habe ich vergessen, ein Foto zu machen, also habe ich es in Excel umgeschrieben, um Ihnen zu zeigen, wie es sein sollte.

HINWEIS: Ich verwende wemo mini D1 anstelle von Arduino. Aus irgendeinem Grund, den ich nicht kenne, liegt die PWM zwischen 0 und 1023. In Arduino sollte sie zwischen 0-255 liegen. Wenn Sie den Code für Arduino verwenden möchten, sollten Sie sich darum kümmern (Zeile 90).

Schritt 4: Anpassen und Verwenden

Anpassen und Verwenden
Anpassen und Verwenden
Anpassen und Verwenden
Anpassen und Verwenden

Nachdem ich die Daten gesammelt hatte, habe ich die Datei in Excel geöffnet und die Daten geplottet (siehe Bild). die erste Spalte ist der PWM-Wert und die zweite ist Lux (Messung des Sensors, die Einheit spielt keine Rolle). Tragen Sie daher Lux (y-Achse) vs. PWM (x-Achse) auf. Wie Sie sehen, ist die Helligkeit linear proportional zum PWM-Wert. Ich habe eine Linie daran befestigt.

Um eine Linie einzupassen, gehen Sie wie folgt vor:

1- Plotten Sie die Daten (Einfügen > Streudiagramm) Ich nehme an, Sie wissen, wie.

2- Rechtsklick auf die gezeichneten Daten

3- Klicken Sie auf die Trendlinie.

4- (in Excel 2013) auf der rechten Seite erscheint ein Panel. Wählen Sie linear. Unten wählen Sie "Gleichung im Diagramm anzeigen".

Der lineare Zusammenhang ist anders als meine Wahrnehmung. Daher denke ich, dass es einen logarithmischen Zusammenhang zwischen meiner Wahrnehmung und der Helligkeit geben sollte (dies ist der einfachste Weg, der mir eingefallen ist!). Also nahm ich die Steigung der Passform. Der Intercept ist nicht wichtig, da er von der umgebenden Lichtverschmutzung abhängt! stattdessen habe ich 1 hinzugefügt. Weil Log10(0) unendlich ist. Also brauche ich ein Intercept, um das Problem zu lösen. In meinem Fall sieht die Gleichung so aus:

y =Log10(0,08 x +1), y ist die Helligkeit und x ist der PWM-Wert (0-1023)

Ich habe die Gleichung auf den Maximalwert normalisiert. dann liegt der Ausgabebereich immer zwischen 0-100. Auf diese Weise kann ich Arduino nach einer bestimmten relativen Helligkeit fragen, ohne die maximale absolute Helligkeit zu berücksichtigen.

y =Log10(0,08 x +1)*100/1,914

Da meine Eingabe in Arduino die relative Helligkeit ist, muss ich die Gleichung für x (PWM) neu ordnen:

x = (10^(y*1,914/100) - 1) / 0,08

Mit dieser Gleichung im Code können wir eine lineare Helligkeitsänderung erhalten. Sie fragen also arduino nach einer Helligkeit (y) zwischen 0-100 und arduino berechnet den entsprechenden PWM-Wert. Auf diese Weise ist Ihre Wahrnehmung bei doppelter Helligkeit auch gleich.

Wenn Sie es in Ihrem Code verwenden möchten, fügen Sie besser diese Zeilen hinzu:

Helligkeit = 50; // in Prozent

PWM = pow(10, Helligkeit*1,914/100)-1)/0,0793;

analogWrite (ledpin, PWM);

HINWEIS: Die Normalisierung erfolgt für eine maximale PWM von 1023 (für Wemos mini D1). Für Arduino liegt PWM zwischen 0-255. Sie müssen es entsprechend berechnen.

HINWEIS 2: Ich habe ein log-lineares Diagramm hinzugefügt, um zu zeigen, wie unsere Wahrnehmung und der PWM-Wert zusammenhängen. Sie sollten es nicht zum Anpassen verwenden!

Schritt 5: Fazit

Bei mir funktioniert die Kalibrierung einwandfrei. Wenn die PWM-Werte groß sind, kann ich den Unterschied sehen. Vor den großen Werten konnte ich den Effekt des Dimmens nicht sehen. Grundsätzlich wurden die meisten Änderungen in einem kleinen PWM-Bereich vorgenommen. jetzt ist es kalibriert!

jede LED, speziell unterschiedliche Farben, sollte ihre eigenen Kalibrierparameter haben. Ich habe jedoch eine blaue LED kalibriert und den Parameter für eine weiße LED verwendet und das Ergebnis war akzeptabel. Vielleicht können Sie also meine Kalibrierungsparameter verwenden, ohne sich selbst zu stören!!

Empfohlen: