Inhaltsverzeichnis:
- Schritt 1: Teile
- Schritt 2: Verkabelung
- Schritt 3: Code
- Schritt 4: Anpassen und Verwenden
- Schritt 5: Fazit
Video: Kalibrieren der LED-Helligkeit - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
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
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
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
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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
ESP-01 Programmier-Hack - der Einfache :): 6 Schritte
ESP-01 Programmierer Hack - der Einfache :): Hallo ESPer, In diesem anweisbaren zeige ich Ihnen einen einfachen Hack, um einen Programmierer für ESP-01 / ESP8266-01 / ES-01-Modul zu machen. Die meisten von uns haben ein Arduino-Board oder FTDI USB-TTL-Geräte als Programmierer für dieses Modul verwendet. Beide Methoden funktionieren gut. Aber t
Der Sanity Check: 5 Schritte (mit Bildern)
Der Sanity Check: Bei diesem Projekt dreht sich alles um die Gesundheit oder darum, dass er regelmäßig überprüft wird. Der beste Weg, dies zu erreichen, besteht darin, eine Maske zu bauen, deren Augen zufällig rot leuchten. Oft genug, damit es auffällt, aber spärlich genug, um die Leute zweifeln zu lassen
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir