Dynamische Beleuchtung: Unterschied zwischen den Versionen
Zeile 70: | Zeile 70: | ||
'''3. Turm(90x20x2mm & 90x16x2mm):''' Der Turm beinhaltet die LED-Lichtleiste, die mit Hilfe von Doppelseitigem Klebeband an eine der vier Wände befestigt wurde. Der Turm an sich steht genau oben drauf in der Mitte des Gehäuses. | '''3. Turm(90x20x2mm & 90x16x2mm):''' Der Turm beinhaltet die LED-Lichtleiste, die mit Hilfe von Doppelseitigem Klebeband an eine der vier Wände befestigt wurde. Der Turm an sich steht genau oben drauf in der Mitte des Gehäuses. | ||
Softwaretechnisch wurde das Projekt mit Hilfe der Arduino IDE und der Adafruit NeoPixel Library realisiert. | |||
Softwaretechnisch wurde das Projekt mit Hilfe der Arduino IDE und der Adafruit NeoPixel Library realisiert. Denn durch die benötigte externe Bibliothek war es uns nicht möglich das Projekt im Matlab/Simulink zu programmieren. Zur Filterung kam ein gleitender Mittelwert zum Einsatz, der das Signal glättet und ein zeitverzögertes (PT1) Verhalten mit sich bringt. | |||
== Komponententest == | == Komponententest == |
Version vom 10. Januar 2022, 10:52 Uhr
Autoren: Adam Kaczmarek & Tristan Thörner
Betreuer: Prof. Göbel & Prof. Schneider
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
Einleitung
In diesem Projekt soll eine dynamische, sich der Helligkeit anpassende Beleuchtung entwickelt werden. Diese Beleuchtung kann dann in Form einer Lampe auf den (Schreib-)Tisch gestellt werden. Die Beleuchtung passt ihre Helligkeit mit Hilfe eines Fotowiderstands an die gegebenen Lichtverhältnisse im Raum an. Die eigentliche "Lampe" besteht aus 8 WS2812b LEDs, die mit Hilfe von integrierter Schaltungen auf den LEDs, Signale von LED zu LED weiterreichen können. Dadurch lassen sich viele LEDs in SMD Bauweise aneinander schalten. Außerdem wird dadurch auch der Abstand zwischen den LEDs verringert.
Anforderungen
- Zum Einschalten wird ein einfacher Schalter verwendet.
- Die Helligkeit der LEDs soll mit Hilfe eines Helligkeitssensors (Fotowiderstand/LDR) geregelt werden.
- Die Beleuchtung passt sich an die gegebenen Lichtverhältnisse an. Je dunkler es im Raum wird, desto heller leuchten die LEDs.
Funktionaler Systementwurf/Technischer Systementwurf
Hellblauer Balken = LED Lichtleiste; Hellgrauer Kreis = Einschalter.
Gelbes Viereck = Helligkeitssensor (Position noch nicht genau definiert)
Komponentenspezifikation
- AZ-Delivery Prototyping Shield inkl. mini Breadboard
- NeoPixel 8x WS2812b 5V LEDs mit RGB Funktion und integrierter Treiberschaltung
- Externes 5V 0.7A Smartphone Netzteil (Marke: Samsung)
- Fotowiderstand inkl. 1kΩ Pull-Down Widerstand (aus dem Funduino Kasten)
- 330Ω Vorwiderstand für den digitalen Eingang der LEDs (300-500Ω)
- 220µF Kondensator zur Glättung von Stromspitzen (100-1000µF)
Umsetzung (HW/SW)
- Die Spannungsversorgung erfolgt durch ein altes Smartphone Netzteil (z.B. Samsung) mit 5 Volt Nennspannung und bis zu 0,7 A Ausgangsstrom. Dieses Netzteil ist in der Lage die LEDs und den Arduino selbst inkl. Sensor mit Strom zu versorgen. (Jede WS2812b LED benötigt bei maximaler Leistung [255 rot, 255 grün, 255 blau] ca. 60 mA)
- Der Fotowiderstand wird mit Hilfe eines 1kΩ Pull-Down Widerstandes an den analogen Eingang A0 des Arduino angeschlossen.
- Zu guter Letzt werden die WS2812b LEDs inklusive Treiberschaltung mit dem digitalen Eingang über einen 330Ω Widerstand an den digitalen PWM-Ausgang des Arduino angeschlossen.
- Parallel zum Eingang des Netzteils wird der 220µF Kondensator angeschlossen.
Alle Komponenten wurden auf einem Prototyping Shield verkabelt. Das Prototyping Shield erhöht die Anzahl an 5V und GND Ausgängen und sorgt dafür, dass alle Ein- und Ausgänge auf einer Ebene mit einem Mini Breadboard liegen.
Als Material für das Gehäuse hatten wir uns für ein Gehäuse aus Acrylglas mit 2mm Wanddicke entschieden. Dabei wurde jede einzelne Wand per Hand aus einer Acrylglasplatte zurechtgeschnitten. Das Gehäuse lässt sich in drei modulare Teile einteilen:
1. Grundplatte(90x90x2mm): Unter dieser Bodenplatte befinden sich vier Unterlegscheiben aus Eisen. Diese wurden an jede Ecke unter die Acrylglasplatte geklebt. Auf der Grundplatte steht der Arduino auf vier Kunststofffüßen.
2. Gehäuse(90x90x2mm & 90x60x2mm & 86x60x2mm): Das Gehäuse schützt den Arduino vor äußeren Umwelteinflüssen. Außerdem befinden sich vier Permanent-Magnete an den unteren Ecken des Gehäuses. Dadurch lässt sich das Gehäuse einfach öffnen und schließen. In der Mitte der oberen Deckplatte befindet sich ein ungefähr 5-7 mm dickes Loch. Dieses Loch wird benötigt, um die Kabel der LED-Lichtleiste durchführen zu können.
3. Turm(90x20x2mm & 90x16x2mm): Der Turm beinhaltet die LED-Lichtleiste, die mit Hilfe von Doppelseitigem Klebeband an eine der vier Wände befestigt wurde. Der Turm an sich steht genau oben drauf in der Mitte des Gehäuses.
Softwaretechnisch wurde das Projekt mit Hilfe der Arduino IDE und der Adafruit NeoPixel Library realisiert. Denn durch die benötigte externe Bibliothek war es uns nicht möglich das Projekt im Matlab/Simulink zu programmieren. Zur Filterung kam ein gleitender Mittelwert zum Einsatz, der das Signal glättet und ein zeitverzögertes (PT1) Verhalten mit sich bringt.
Komponententest
1. Schritt: Fotowiderstand mit der Arduino IDE auslesen.
Mit Hilfe einer einfachen weißen LED, die wir über Pulsweiten-Modulation angesteuert haben, konnten wir erkennen, wie sich der Fotowiderstand bei verschiedenen Lichtverhältnissen verhält. Dabei ist uns aufgefallen, dass der Fotowiderstand proportional zu externen Lichteinflüssen reagiert. Um den gewünschten Effekt zu erzielen, mussten wir die analogen Werte des Fotowiderstands invertieren. Da wir wissen, dass die analogen Eingänge des Arduino eine 10-Bit Auflösung besitzen, mussten wir die eingelesenen Werte mit 1023 subtrahieren. Am Ende hatten wir dann schon fast den gewünschten Effekt.
2. Schritt: WS2812b LED mit der Adafruit NeoPixel Library ansteuern.
Nahaufnahme der WS2812b LED Lichtleiste. (aufgenommen mit einem Samsung Galaxy S21 Ultra)
Durch die integrierte Schaltung in den LEDs mussten diese anders angesteuert werden, als normale LEDs. Denn die Besonderheit der WS2812b LEDs liegt darin, dass man über einen digitalen Eingang mehrere LEDs einzeln ansteuern kann. Dabei wird ein getaktetes Signal über den digitalen Ausgang des Arduino gesendet. Dieses Signal enthält die Zustände der einzelnen LEDs in Form von Speicher-Adressen. Durch die Taktung entsteht jedoch eine Verzögerung zwischen den einzelnen LEDs. Diese ist aber so minimal, dass sie erst bei einer Anzahl von >1000 LEDs bemerkbar wird.
3. Schritt: Filterung des Sensorsignals
Ergebnis
Zusammenfassung
Mit Hilfe unseres Wissens aus der Elektrotechnik, der Informatik und der Mess- & Regelungstechnik ist es uns gelungen, eine sich selbst regulierende Lampe inkl. Filter zu bauen.
Lessons Learned
- Ansteuerung von WS2812b LEDs mit Hilfe der externen Adafruit NeoPixel Library.
- Digitale Filterung/Glättung von analogen Messsignalen.
- Umgang mit dem Multimeter zur Messung der Spannung.
- Kein Sekundenkleber für Acrylglas verwenden...
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Weblinks
Literatur
Von Erleuchtungen und Lichterketten: https://m.heise.de/developer/artikel/Von-Erleuchtungen-und-Lichterketten-3277261.html
Adafruit NeoPixel Library: https://github.com/adafruit/Adafruit_NeoPixel
WS2812 – Der einfachste Weg, viele LEDs mit Arduino steuern: https://starthardware.org/viele-leds-mit-arduino-steuern-ws2812/
Nr.17 – WS2812 – NeoPixel WS2812 bzw. „NeoPixel“ mit Arduino Mikrocontrollern ansteuern: https://funduino.de/nr-17-ws2812-neopixel
Smoothing | Arduino: https://www.arduino.cc/en/Tutorial/BuiltInExamples/Smoothing
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)