Projekt 20b: Smarte Tischleuchte: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(43 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 10: Zeile 10:
== Einleitung ==
== Einleitung ==
Das Modul Mechatronische Systeme 2 im 5. Semester des Studiengangs [https://de.wikipedia.org/wiki/Mechatronik Mechatronik] beinhaltet das GET-Fachpraktikum, das die angewandte Elektrotechnik zum einen in vier Laborversuchen vertiefen soll. Zum anderen werden diverse mechatronische Projekte in Kleingruppen behandelt, sodass die Studierenden erste Erfahrungen in der Planung und Umsetzung von technischen Projekten sammeln können und ihr theoretisches Wissen in der Praxis anwenden können.
Das Modul Mechatronische Systeme 2 im 5. Semester des Studiengangs [https://de.wikipedia.org/wiki/Mechatronik Mechatronik] beinhaltet das GET-Fachpraktikum, das die angewandte Elektrotechnik zum einen in vier Laborversuchen vertiefen soll. Zum anderen werden diverse mechatronische Projekte in Kleingruppen behandelt, sodass die Studierenden erste Erfahrungen in der Planung und Umsetzung von technischen Projekten sammeln können und ihr theoretisches Wissen in der Praxis anwenden können.
Es bestand die Möglichkeit aus vorgegebenen Projekten auszuwählen oder sich ein eigenes Projekt zu wählen, dass in den zeitlichen Rahmen des Praktikums passt und die fachlichen Inhalte abdeckt. Dieser Artikel beschäftigt sich mit einem selbst definierten Projekt, bei dem eine intelligente Schreibtischleuchte entwickelt und gebaut werden soll, die sich selbstständig an die Lichtverhältnisse auf dem Schreibtisch anpasst. Dazu wurden die folgenden Anforderungen als Aufgabe gestellt:
Es bestand die Möglichkeit aus vorgegebenen Projekten auszuwählen oder sich ein eigenes Projekt auszuwählen, das in den zeitlichen Rahmen des Praktikums passt und die fachlichen Inhalte abdeckt. Dieser Artikel beschäftigt sich mit einem selbst definierten Projekt, bei dem eine intelligente Schreibtischleuchte entwickelt und gebaut werden soll, die sich selbstständig an die Lichtverhältnisse auf dem Schreibtisch anpasst. Dazu wurden die folgenden Anforderungen als Aufgabe gestellt:


== Erwartungen an die Projektlösung ==
== Erwartungen an die Projektlösung ==
Zeile 27: Zeile 27:
== Aufgabe ==
== Aufgabe ==


Es soll eine RGB-[https://de.wikipedia.org/wiki/Leuchtdiode LED]-Tischleuchte gebaut werden, die zum einen manuell über einen Schalter ein- und ausgeschaltet und einen Drehgeber gedimmt werden kann.
Es soll eine RGB-[https://de.wikipedia.org/wiki/Leuchtdiode LED]-Tischleuchte gebaut werden, die zum einen manuell über einen Schalter ein- und ausgeschaltet und mit einem Drehgeber gedimmt werden kann.
Außerdem soll ein Automatikmodus zur Verfügung stehen, bei dem sich die Leuchte automatisch an die Beleuchtungssituation im Raum anpasst. Dazu wird die [https://de.wikipedia.org/wiki/Beleuchtungsst%C3%A4rke Beleuchtungsstärke] auf dem Arbeitsplatz über einen Helligkeitssensor gemessen und die Leuchte entsprechend eines Regelungsalgorithmus automatisch gedimmt.  
Außerdem soll ein Automatikmodus zur Verfügung stehen, bei dem sich die Leuchte automatisch an die Beleuchtungssituation im Raum anpasst. Dazu wird die [https://de.wikipedia.org/wiki/Beleuchtungsst%C3%A4rke Beleuchtungsstärke] auf dem Arbeitsplatz über einen Helligkeitssensor gemessen und die Leuchte entsprechend eines Regelungsalgorithmus automatisch gedimmt.  
Weiterhin soll die Steuerung der Leuchte mit Hilfe einer [https://de.wikipedia.org/wiki/Microsoft_Windows Windows] - [https://de.wikipedia.org/wiki/Anwendungssoftware Applikation] über einen PC möglich sein.  
Weiterhin soll die Steuerung der Leuchte mit Hilfe einer [https://de.wikipedia.org/wiki/Microsoft_Windows Windows] - [https://de.wikipedia.org/wiki/Anwendungssoftware Applikation] über einen PC möglich sein.  
Zeile 41: Zeile 41:
==== Projektmanagement ====
==== Projektmanagement ====
Zu Beginn des Projektes wurde zunächst nach einer geeigneten Projektmanagementmethode gesucht, um die Aufgaben im Team aufzuteilen, Fristen für die Aufgabenpakete zu definieren und um einen Überblick über die auszuführenden und abgeschlossenen Tätigkeiten für alle Gruppenmitglieder zu gewährleisten. <br/>   
Zu Beginn des Projektes wurde zunächst nach einer geeigneten Projektmanagementmethode gesucht, um die Aufgaben im Team aufzuteilen, Fristen für die Aufgabenpakete zu definieren und um einen Überblick über die auszuführenden und abgeschlossenen Tätigkeiten für alle Gruppenmitglieder zu gewährleisten. <br/>   
Es wurde sich für die [http://projektmanagement-definitionen.de/agile-projektmanagement-methoden-fuer-alle-teil-1-kanban/ Kanban] Methode entschieden. Umgesetzt wurde Projektmanagement mit der web-basierten Software [https://trello.com/ Trello]. Der aktuelle Stand des Projektes ist nicht nur für die Gruppenmitglieder sichtbar, sondern wurde veröffentlicht, um eine transparente Vorstellung unseres Projekts zu ermöglichen. [https://trello.com/b/isBhcQcu/projekt-20b-smarte-tischleuchte Trello Kanban Projekt 20b Smarte Tischleuchte] <br/>   
Es wurde sich für die [http://projektmanagement-definitionen.de/agile-projektmanagement-methoden-fuer-alle-teil-1-kanban/ Kanban] Methode entschieden. Umgesetzt wurde das Projektmanagement mit der web-basierten Software [https://trello.com/ Trello]. Der aktuelle Stand des Projektes ist nicht nur für die Gruppenmitglieder sichtbar, sondern wurde veröffentlicht, um eine transparente Vorstellung unseres Projekts zu ermöglichen. [https://trello.com/b/isBhcQcu/projekt-20b-smarte-tischleuchte Trello Kanban Projekt 20b Smarte Tischleuchte] <br/>   
Bei der Kanban-Methode wird eine Tafel mit drei Spalten erstellt. Die erste Spalte erhält den Namen „To Do“. In diese werden zu Beginn des Projektes alle Aufgaben in Form von einzelnen Karten geschrieben, die aus den Projektanforderungen abgeleitet werden. Diese Karten sollten mit absteigender Priorität in der Spalte geordnet werden. Außerdem werden die Verantwortlichen für jede Aufgabe definiert und die Bearbeitungsfristen festgelegt.
Bei der Kanban-Methode wird eine Tafel mit drei Spalten erstellt. Die erste Spalte erhält den Namen „To Do“. In diese werden zu Beginn des Projektes alle Aufgaben in Form von einzelnen Karten geschrieben, die aus den Projektanforderungen abgeleitet werden. Diese Karten sollten mit absteigender Priorität in der Spalte geordnet werden. Außerdem werden die Verantwortlichen für jede Aufgabe definiert und die Bearbeitungsfristen festgelegt.
Die zweite Spalte wird als „In Bearbeitung“ bezeichnet. Jeder Mitarbeiter kann selbstständig die Aufgabenkarten von der Liste „To Do“ in die Liste „In Bearbeitung“ ziehen.  
Die zweite Spalte wird als „In Bearbeitung“ bezeichnet. Jeder Mitarbeiter kann selbstständig die Aufgabenkarten von der Liste „To Do“ in die Liste „In Bearbeitung“ ziehen.  
Ist die Bearbeitung einer Aufgabe abgeschlossen wird die jeweilige Karte in die letzte Spalte „Abgeschlossen“ gezogen.  <ref name="Kanban Projektmanagementmethode"> "Kanban Projektmanagementmethode" http://projektmanagement-definitionen.de/agile-projektmanagement-methoden-fuer-alle-teil-1-kanban/ </ref> <br/>   
Ist die Bearbeitung einer Aufgabe abgeschlossen, wird die jeweilige Karte in die letzte Spalte „Abgeschlossen“ gezogen.  <ref name="Kanban Projektmanagementmethode"> "Kanban Projektmanagementmethode" http://projektmanagement-definitionen.de/agile-projektmanagement-methoden-fuer-alle-teil-1-kanban/ </ref> <br/>   
Mit dieser Methode hat jedes Gruppenmitglied eine gute Übersicht über den Projektfortschritt und über die Aufgaben, die in den jeweiligen Fristen fertig gestellt sein müssen. Am Ende einer jeweiligen Frist wurde in unserer Gruppe ein [https://de.wikipedia.org/wiki/Meilenstein_(Projektmanagement) Meilensteintermin] angehalten, in der die jeweiligen Ergebnisse vorgestellt, überprüft und verbessert wurden. Durch diese Methode konnten Probleme schnell erkannt und behoben werden. Außerdem war es uns möglich durch eng gesetzte Fristen, das Projekt weit vor dem eigentlichen Präsentationstermin fertigzustellen.
Mit dieser Methode hat jedes Gruppenmitglied eine gute Übersicht über den Projektfortschritt und über die Aufgaben, die in den jeweiligen Fristen fertig gestellt sein müssen. Am Ende einer jeweiligen Frist wurde in unserer Gruppe ein [https://de.wikipedia.org/wiki/Meilenstein_(Projektmanagement) Meilensteintermin] abgehalten, in der die jeweiligen Ergebnisse vorgestellt, überprüft und verbessert wurden. Durch diese Methode konnten Probleme schnell erkannt und behoben werden. Außerdem war es uns möglich, durch eng gesetzte Fristen, das Projekt weit vor dem eigentlichen Präsentationstermin fertigzustellen.


====Planung der Umsetzungsmöglichkeiten ====
====Planung der Umsetzungsmöglichkeiten ====
Zeile 52: Zeile 52:
Auf einige Punkte des morphologischen Kastens soll kurz eingegangen werden:<br/>   
Auf einige Punkte des morphologischen Kastens soll kurz eingegangen werden:<br/>   
Ein [https://de.wikipedia.org/wiki/Arduino_(Plattform) Arduino]Uno wurde ausgewählt, da dieser bereits durch den dritten Versuchstermin zur Verfügung stand. Für die Umsetzung hätte ein Arduino Nano in Bezug auf die Ein- und Ausgänge gereicht. Dieser wurde allerdings aufgrund von unnötigen Zusatzkosten nicht beschafft.<br/>   
Ein [https://de.wikipedia.org/wiki/Arduino_(Plattform) Arduino]Uno wurde ausgewählt, da dieser bereits durch den dritten Versuchstermin zur Verfügung stand. Für die Umsetzung hätte ein Arduino Nano in Bezug auf die Ein- und Ausgänge gereicht. Dieser wurde allerdings aufgrund von unnötigen Zusatzkosten nicht beschafft.<br/>   
Der Lichtsensor mit [https://de.wikipedia.org/wiki/Photodiode Photodioden] wurde gewählt, da Dioden als Halbleiterbauelement schneller auf Veränderungen der Helligkeit reagieren als ein [https://de.wikipedia.org/wiki/Fotowiderstand Photowiderstand]. Dadurch war es uns möglich in Kombination mit dem Regelungsalgorithmus schnell auf Änderungen zu reagieren und keine Verzögerungen durch einen trägen Sensor in Kauf nehmen zu müssen. Außerdem ist der gewählte [https://www.adafruit.com/product/1980 TSL2591-Sensor] mit [https://de.wikipedia.org/wiki/Integrierter_Schaltkreis IC] und [https://de.wikipedia.org/wiki/Analog-Digital-Umsetzer ADCs] ausgestattet. Damit wird direkt der Strom der Photodiode in einen digitalen Wert umgerechnet. Mit diesem kann über eine [https://de.wikipedia.org/wiki/I%C2%B2C I2C]-Verbindung zum Arduino direkt die Beleuchtungsstärke in Lux ermittelt werden, ohne im Programm einen analogen Wert umrechnen zu müssen.<br/>   
Der Lichtsensor mit [https://de.wikipedia.org/wiki/Photodiode Photodioden] wurde gewählt, da Dioden als Halbleiterbauelemente schneller auf Veränderungen der Helligkeit reagieren als ein [https://de.wikipedia.org/wiki/Fotowiderstand Photowiderstand]. Dadurch war es uns möglich, in Kombination mit dem Regelungsalgorithmus schnell auf Änderungen zu reagieren und keine Verzögerungen durch einen trägen Sensor in Kauf nehmen zu müssen. Außerdem ist der gewählte [https://www.adafruit.com/product/1980 TSL2591-Sensor] mit [https://de.wikipedia.org/wiki/Integrierter_Schaltkreis IC] und [https://de.wikipedia.org/wiki/Analog-Digital-Umsetzer ADCs] ausgestattet. Damit wird direkt der Strom der Photodiode in einen digitalen Wert umgerechnet. Mit diesem kann über eine [https://de.wikipedia.org/wiki/I%C2%B2C I2C]-Verbindung zum Arduino direkt die Beleuchtungsstärke in Lux ermittelt werden, ohne im Programm einen analogen Wert umrechnen zu müssen.<br/>   
Ein Drehgeber wurde einem Potentiometer vorgezogen, damit es zu keinen Helligkeitsänderungen kommt, wenn aus dem Automatikbetrieb in den manuellen Betrieb umgeschaltet wird. Ein Potentiometer hätte einen festen Widerstandswert unabhängig von der eingestellten Helligkeit im Automatikbetrieb behalten. Mit dem Drehgeber war es möglich, den Helligkeitswert aus dem Automatikbetrieb ohne Differenz in den manuellen Betrieb zu übernehmen.<br/>   
Ein Drehgeber wurde einem Potentiometer vorgezogen, damit es zu keinen Helligkeitsänderungen kommt, wenn aus dem Automatikbetrieb in den manuellen Betrieb umgeschaltet wird. Ein Potentiometer hätte einen festen Widerstandswert unabhängig von der eingestellten Helligkeit im Automatikbetrieb behalten. Mit dem Drehgeber war es möglich, den Helligkeitswert aus dem Automatikbetrieb ohne Differenz in den manuellen Betrieb zu übernehmen.<br/>   
Die Verbindung der Leuchte über [https://de.wikipedia.org/wiki/Bluetooth Bluetooth] mit dem Computer wurde nicht gewählt, da ein Bluetooth-Modul einen zusätzlichen Kostenpunkt dargestellt hätte, was das Budget zu sehr ausgelastet hätte.
Die Verbindung der Leuchte über [https://de.wikipedia.org/wiki/Bluetooth Bluetooth] mit dem Computer wurde nicht gewählt, da ein Bluetooth-Modul einen zusätzlichen Kostenpunkt dargestellt hätte, was das Budget zu sehr ausgelastet hätte.
<br/>
<br/>
<br/>   
<br/>   
<br/>
<br/>
 
==== Materialplanung ====
==== Materialplanung ====
Nachdem die Planung des Projektes abgeschlossen war, wurde ein Materialplan erstellt, um möglichst schnell die Bauteile bestellen zu können und mit der Umsetzung anfangen zu können. Die Bauteile sind in folgender Liste zu finden:
Nachdem die Planung des Projektes abgeschlossen war, wurde ein Materialplan erstellt, um möglichst schnell die Bauteile bestellen und mit der Umsetzung anfangen zu können. Die Bauteile sind in folgender Liste zu finden:


{| class="mw-datatable"
{| class="mw-datatable"
Zeile 137: Zeile 138:




Die Positionen 5 - 11 waren bereits als privater Eigentum vorhanden und mussten daher nicht bestellt werden.
Die Positionen 5 - 11 waren bereits aus privatem Eigentum vorhanden und mussten daher nicht bestellt werden.
<br/> 
<br/>   
<br/>   
<br/>


=== Projektdurchführung ===
=== Projektdurchführung ===
Zeile 148: Zeile 149:


====Konstruktion und Bau des Leuchtengehäuses ====
====Konstruktion und Bau des Leuchtengehäuses ====
Durch die Wahl eines additiven Fertigungsverfahrens, das [https://de.wikipedia.org/wiki/Selektives_Lasersintern Lasersintern], war ein hohes Maß an Freiheiten bei der Konstruktion gegeben, sodass nicht auf die Umsetzbarkeit einiger Konstruktionselemente mit konventionellen Fertigungsverfahren, wie beispielweise das [https://de.wikipedia.org/wiki/Fr%C3%A4sen Fräsen], geachtet werden musste.
Durch die Wahl eines additiven Fertigungsverfahrens, das [https://de.wikipedia.org/wiki/Selektives_Lasersintern Lasersintern], war ein hohes Maß an Freiheiten bei der Konstruktion gegeben, sodass nicht auf die Umsetzbarkeit einiger Konstruktionselemente mit konventionellen Fertigungsverfahren, wie beispielweise dem [https://de.wikipedia.org/wiki/Fr%C3%A4sen Fräsen], geachtet werden musste.
Die einzige Einschränkung durch das Fertigungsverfahren war der Bauraum der Sintermaschine. Daher wurde die Leuchte aus mehreren Teilen konstruiert.<br/>   
Die einzige Einschränkung durch das Fertigungsverfahren war der Bauraum der Sintermaschine. Daher wurde die Leuchte aus mehreren Teilen konstruiert.<br/>   
Bei der Konstruktion des Leuchtenkopfes wurde darauf geachtet, dass eine möglichst große Lichtaustrittsfläche zur Verfügung steht, um möglichst viele LEDs verwenden zu können und eine gute Ausleuchtung des Arbeitsplatzes zu gewährleisten. Die LEDs werden an den inneren Seitenflächen des Leuchtenkopfes platziert und strahlen in die Mitte. Durch die Reflexion im weißen Gehäuse wird das Licht nach unten geleitet und zusätzlich durch die satinierte Kunststoffscheibe gebrochen. Für diese Abdeckungsscheibe wurde ebenfalls seitlich eine Auflagefläche geschaffen, damit sie sich in dem Leuchtenkopf einpasst und bündig mit der äußeren Kante sitzt.  
Bei der Konstruktion des Leuchtenkopfes wurde darauf geachtet, dass eine möglichst große Lichtaustrittsfläche zur Verfügung steht, um möglichst viele LEDs verwenden zu können und eine gute Ausleuchtung des Arbeitsplatzes zu gewährleisten. Die LEDs werden an den inneren Seitenflächen des Leuchtenkopfes platziert und strahlen in die Mitte. Durch die Reflexion im weißen Gehäuse wird das Licht nach unten geleitet und zusätzlich durch die satinierte Kunststoffscheibe gebrochen. Für diese Abdeckungsscheibe wurde ebenfalls seitlich eine Auflagefläche geschaffen, damit sie sich in dem Leuchtenkopf einpasst und bündig mit der äußeren Kante sitzt.  
Zunächst wurde geplant, den Lichtsensor auf die Oberseite des Leuchtenkopfes zu platzieren, um nicht von dem Licht der Leuchte beeinflusst zu werden und nur das Umgebungslicht zu detektieren. Dies stellte sich im Nachhinein als der Regler entworfen wurde allerdings als Fehlplanung heraus. <br/>   
Zunächst wurde geplant, den Lichtsensor auf die Oberseite des Leuchtenkopfes zu platzieren, um nicht von dem Licht der Leuchte beeinflusst zu werden und nur das Umgebungslicht zu detektieren. Dies stellte sich im Nachhinein, als der Regler entworfen wurde, als Fehlplanung heraus. Daher wurde die Position mittig auf den Leuchtenfuß verlagert. <br/>   
Der Leuchtenkopf wird mit zwei Säulen mit dem Leuchtenfuß verbunden. Beide Säulen sind hohl konstruiert, um Drähte vom Arduino zu den LEDs dadurch verlegen zu können. Die obere Säule wird mit dem Leuchtenkopf über vier M4 Senkkopfschrauben verbunden, um eine ausreichende Stabilität vor allem in Hinblick auf Biegebelastungen durch das Gewicht des Kopfes und durch eine mögliche externe Last zu gewährleisten. <br/>   
Der Leuchtenkopf wird mit zwei Säulen mit dem Leuchtenfuß verbunden. Beide Säulen sind hohl konstruiert, um Drähte vom Arduino zu den LEDs verlegen zu können. Die obere Säule wird mit dem Leuchtenkopf über vier M4 Senkkopfschrauben verbunden, um eine ausreichende Stabilität, vor allem in Hinblick auf Biegebelastungen durch das Gewicht des Kopfes und durch eine mögliche externe Last, zu gewährleisten. <br/>   
Die Säulen werden untereinander über eine Steckverbindung über gesinterte Stifte verbunden. Diese Verbindung ist als eine Übergangspassung ausgelegt. Das bedeutet, dass die Stifte nur mit großem Druck in die Bohrungen in den Säulen passen und dadurch eine sehr starke Verbindung ermöglichen, die nur schwer gelöst werden kann. Um überhaupt die Verbindung herstellen zu können, mussten kleine Bohrungen seitlich in den Aufnahmebohrungen der Stifte vorgesehen werden, damit die Luft beim Eindrücken der Stifte aus den Aufnahmebohrungen entweichen kann.<br/>   
Die Säulen werden untereinander über eine Steckverbindung mit gesinterten Stiften verbunden. Diese Verbindung ist als eine Übergangspassung ausgelegt. Das bedeutet, dass die Stifte nur mit großem Druck in die Bohrungen in den Säulen passen und dadurch eine sehr starke Verbindung ermöglichen, die nur schwer gelöst werden kann. Um überhaupt die Verbindung herstellen zu können, mussten kleine Bohrungen seitlich in den Aufnahmebohrungen der Stifte vorgesehen werden, damit die Luft beim Eindrücken der Stifte aus den Aufnahmebohrungen entweichen kann.<br/>   
Die untere Säule wird ebenfalls über eine Schraubverbindung mit dem Fuß verbunden. Dabei wird die Säule zusätzlich durch einen Durchbruch im Fuß geführt, um weitere Biegebelastungen abfangen zu können und die Schraubverbindungen zu entlasten.<br/>   
Die untere Säule wird ebenfalls über eine Schraubverbindung mit dem Fuß verbunden. Dabei wird die Säule zusätzlich durch einen Durchbruch im Fuß geführt, um weitere Biegebelastungen abfangen zu können und die Schraubverbindungen zu entlasten.<br/>   
Der Fuß wurde weiterhin so ausgelegt, dass genügend Platz für alle benötigten Komponenten und die Platine vorhanden ist und damit er durch seine Größe ein Kippen der Leuchte verhindert.<br/>   
Der Fuß wurde weiterhin so ausgelegt, dass genügend Platz für alle benötigten Komponenten und die Platine vorhanden ist. Außerdem wird durch seine Größe ein Kippen der Leuchte verhindert.<br/>   
Nachdem alle CAD-Teile erstellt wurden, konnte mit diesen Daten der Laser-Sinterprozess bei einer externen Firma gestartet werden. Der nachträgliche Zusammenbau der Teile war aufgrund der hohen Maßgenauigkeit des Fertigungsverfahren kein Problem.
Nachdem alle CAD-Teile erstellt wurden, konnte mit diesen Daten der Laser-Sinterprozess bei einem externen Unternehmen gestartet werden. Der nachträgliche Zusammenbau der Teile konnte aufgrund der hohen Maßgenauigkeit des Fertigungsverfahren problemlos erfolgen.
<br/>   
<br/>   
<br/>
<br/>
Zeile 164: Zeile 165:
[[Datei:Schaltplan_Leuchte.png|650px|thumb|left|Abb.3:Schaltplan Leuchte]]   
[[Datei:Schaltplan_Leuchte.png|650px|thumb|left|Abb.3:Schaltplan Leuchte]]   
Die Bestromung des Systems erfolgt über ein externes Handynetzteil über 5 [https://de.wikipedia.org/wiki/Volt V] [https://de.wikipedia.org/wiki/Gleichspannung DC] mit einem maximalen Strom von 2[https://de.wikipedia.org/wiki/Ampere A]. Die Leuchte kann über einen Kippschalter ein- und ausgeschaltet werden. Dabei unterbricht der Schalter den Stromkreis zur Hauptplatine, an die alle weiteren Komponenten angeschlossen sind.<br/>   
Die Bestromung des Systems erfolgt über ein externes Handynetzteil über 5 [https://de.wikipedia.org/wiki/Volt V] [https://de.wikipedia.org/wiki/Gleichspannung DC] mit einem maximalen Strom von 2[https://de.wikipedia.org/wiki/Ampere A]. Die Leuchte kann über einen Kippschalter ein- und ausgeschaltet werden. Dabei unterbricht der Schalter den Stromkreis zur Hauptplatine, an die alle weiteren Komponenten angeschlossen sind.<br/>   
Aufgrund der geringen Komplexität der Schaltung haben wir uns dazu entschieden, eine standardmäßige Lochrasterplatine zu nutzen und keine Platine extra für unsere Anforderungen zu fräsen. <br/>   
Aufgrund der geringen Komplexität der Schaltung haben wir uns dazu entschieden, eine standardmäßige Lochrasterplatine zu nutzen. <br/>   
Auf der Platine wird eine Reihe als 5V Anschluss und eine weitere als [https://de.wikipedia.org/wiki/Erdung Ground]-Reihe genutzt. Von dort aus werden Arduino, Drehgeber, Lichtsensor und LED-Streifen bestromt. <br/>   
Auf der Platine wird eine Reihe als 5V Anschluss und eine weitere als [https://de.wikipedia.org/wiki/Erdung Ground]-Reihe genutzt. Von dort aus werden Arduino, Drehgeber, Lichtsensor und LED-Streifen bestromt. <br/>   
Alle Signalleitungen (als flexible Drähte ausgeführt) der Sensoren werden ebenfalls auf einzelnen Reihen verlötet und von dort aus mit starren Drähten auf die jeweiligen Arduino-Ports geführt. Es wurde ebenfalls darauf geachtet, sowohl die Versorgungs- als auch die Datenleitungen der Komponenten zunächst auf Klemmen zu führen und von der Klemme aus den Kontakt zur Platine herzustellen. Damit ist es möglich jede einzelne Komponente aus dem Aufbau herauszunehmen, was vor allem bei Beschädigungen der Bauteile hilfreich ist, da dann keine Lötverbindungen gelöst werden müssen.<br/>   
Alle Signalleitungen (als flexible Drähte ausgeführt) der Sensoren werden ebenfalls auf einzelnen Reihen verlötet und von dort aus mit starren Drähten auf die jeweiligen Arduino-Ports geführt. Es wurde ebenfalls darauf geachtet, sowohl die Versorgungs- als auch die Datenleitungen der Komponenten zunächst auf Klemmen zu führen. Von diesen Klemmen ausgehend wird schließlich der Kontakt zur Platine hergestellt. Damit ist es möglich, jede einzelne Komponente aus dem Aufbau herauszunehmen ohne dafür Lötverbindungen zu lösen. Dies ermöglicht einen schnellen Austausch von beschädigten Bauteilen.<br/>   
In die digitale Datenleitung des LED-Streifens wird zusätzlich ein 220Ω [https://de.wikipedia.org/wiki/Elektrischer_Widerstand Widerstand] eingebracht. Dies wird durch den Hersteller des Streifens vorgegeben, um eine sichere Signalübertragung zu ermöglichen und einen zerstörungsfreien Betrieb zu gewährleisten.<br/>   
In die digitale Datenleitung des LED-Streifens wird zusätzlich ein 220Ω [https://de.wikipedia.org/wiki/Elektrischer_Widerstand Widerstand] eingebracht. Dies wird durch den Hersteller des Streifens vorgegeben, um eine sichere Signalübertragung zu ermöglichen.<br/>   
Ein weiterer Schalter dient dazu, zwischen dem manuellen und dem automatischen Modus der Leuchte zu wechseln. Dieser wird zum einen auf einen digitalen Eingang des Arduinos gezogen, aber die Ausgangsseite wird außerdem über einen Pulldown-Widerstand auf Ground gezogen. Durch den Pulldown-Widerstand wird das Signal des Schalters gezielt auf das jeweilige Potential gezogen und vermieden, dass Störungen das System beeinflussen.<br/>   
Ein weiterer Schalter dient dazu, zwischen dem manuellen und dem automatischen Modus der Leuchte zu wechseln. Dieser wird zum einen auf einen digitalen Eingang des Arduinos gezogen. Außerdem wird die Ausgangsseite über einen Pulldown-Widerstand auf Ground gezogen. Durch den Pulldown-Widerstand wird das Signal des Schalters gezielt auf das jeweilige Potential gezogen und vermieden, dass Störungen das System beeinflussen.<br/>   
Später wurde bei einem ersten Test der Leuchte ein flackern der LEDs festgestellt. Wir führten dies auf Spannungsschwankungen in unserem System oder sogar durch das Netzteil zurück. Abhilfe wurde durch einen 470µF [https://de.wikipedia.org/wiki/Kondensator_(Elektrotechnik) Kondensator] zwischen +5V und Ground geschaffen, der Schwingungen ausgleicht. Der Kapazitätswert wurde durch Ausprobieren mit verschiedenen Kondensatoren herausgefunden.
Später wurde bei einem ersten Test der Leuchte festgestellt, dass die LEDs flimmerten. Wir führten dies auf Spannungsschwankungen in unserem System oder sogar durch das Netzteil zurück. Abhilfe wurde durch einen 470µF [https://de.wikipedia.org/wiki/Kondensator_(Elektrotechnik) Kondensator] zwischen +5V und Ground geschaffen, der Schwingungen ausgleicht. Der Kapazitätswert wurde durch iteratives Testen mit verschiedenen Kondensatoren herausgefunden.
<br/>   
<br/>   
<br/>
<br/>


====Einarbeitung in die Regelungstechnik des Systems====
====Einarbeitung in die Regelungstechnik des Systems====
Dadurch, dass die Leuchte sich automatisch der Raumbeleuchtung anpassen soll, und für eine konstante Schreibtischbeleuchtung sorgen soll, musste ein [https://de.wikipedia.org/wiki/Regler Regler] entworfen werden, der später im Programm die Helligkeit der Leuchte reguliert.
Da sich die Leuchte automatisch der Raumbeleuchtung anpassen soll, und für eine konstante Schreibtischbeleuchtung sorgen soll, musste ein [https://de.wikipedia.org/wiki/Regler Regler] entworfen werden, der später im Programm die Helligkeit der Leuchte reguliert.
Zunächst wurde ein Blockschaltbild des Reglers aufgestellt, in dem die systemtechnischen Größen bestimmt werden. Zu diesem Zeitpunkt fiel wie bereits oben geschildert auf, dass die Positionierung des Lichtsensors geändert werden musste. Es wurde beschlossen, ihn auf dem Fuß zu montieren, damit er stets den Beleuchtungs-Istwert auf dem Arbeitsplatz misst, und somit auch Änderungen durch die eingestellte Helligkeit der Leuchte erkennt. Nur so war ein geschlossener Regelkreis realisierbar. Wäre nur die Raumbeleuchtung erfasst worden, hätte nur ein Steller entwickelt werden können.<br/>   
Zunächst wurde ein Blockschaltbild des Reglers aufgestellt, in dem die systemtechnischen Größen bestimmt werden. Zu diesem Zeitpunkt fiel, wie bereits oben geschildert, auf, dass die Positionierung des Lichtsensors geändert werden musste. Es wurde beschlossen, ihn auf dem Fuß zu montieren, damit er stets den Beleuchtungs-Istwert auf dem Arbeitsplatz misst, und somit auch Änderungen durch die eingestellte Helligkeit der Leuchte erkennt. Nur so war ein geschlossener Regelkreis realisierbar.<br/>   
Um die Systemgrößen ermitteln zu können, wurde zunächst aus dem allgemeinen Blockschaltbild eines Regelkreises, ein systemspezifisches Schaltbild erstellt (s. Abb. 4)
Um die Systemgrößen ermitteln zu können, wurde zunächst aus dem allgemeinen Blockschaltbild eines Regelkreises, ein systemspezifisches Schaltbild erstellt (s. Abb. 4).
[[Datei:Regelkreise_Blockschaltbilder.JPG|500px|thumb|left|Abb.4:Regelkreis Blockschaltbilder]]
[[Datei:Regelkreise_Blockschaltbilder.JPG|500px|thumb|left|Abb.4:Regelkreis Blockschaltbilder]]
<br/>  
<br/>  
Zeile 226: Zeile 227:
<br/>  
<br/>  
Im nächsten Schritt, wurde mit Hilfe eines Experiments die quantitativen Zusammenhänge unseres Systems bestimmt. Dazu wurde ein Testprogramm geschrieben, bei dem der LED-Streifen bitweise von 0-255 gedimmt wird und die jeweiligen Luxwerte unter der Lichtaustrittsfläche ermittelt werden. Der Test hat in einem dunklen Raum stattgefunden, um Störeinflüsse zu eliminieren.<br/>   
Im nächsten Schritt, wurde mit Hilfe eines Experiments die quantitativen Zusammenhänge unseres Systems bestimmt. Dazu wurde ein Testprogramm geschrieben, bei dem der LED-Streifen bitweise von 0-255 gedimmt wird und die jeweiligen Luxwerte unter der Lichtaustrittsfläche ermittelt werden. Der Test hat in einem dunklen Raum stattgefunden, um Störeinflüsse zu eliminieren.<br/>   
Die aufgenommenen Werte wurden in einer Excelliste dokumentiert und in einem Diagramm geplottet. Dabei konnte ein linearer Zusammenhang zwischen Digitalsignal und Beleuchtungsstärke herausgefunden werden. Des Weiteren wurde festgestellt, dass das System nur ein sehr geringes Eigenschwingverhalten aufweist, da sich der gemessene Luxwert bei konstanter Dimmstufe der Leuchte nur in Wertebereich von wenigen Milli-Lux ändert, der die weitere Regelung nicht stört. Außerdem wurde eine maximale Beleuchtungsstärke unserer Leuchte von 80 Lux ermittelt. Dieser Wert wurde als Führungsgröße des Systems festgestellt.<br/>   
Die aufgenommenen Werte wurden in einer Excelliste dokumentiert und in einem Diagramm geplottet. Dabei konnte ein linearer Zusammenhang zwischen Digitalsignal und Beleuchtungsstärke herausgefunden werden. Des Weiteren wurde festgestellt, dass das System nur ein sehr geringes Eigenschwingverhalten aufweist, da sich der gemessene Luxwert bei konstanter Dimmstufe der Leuchte nur in Wertebereichen von wenigen Milli-Lux ändert. Außerdem wurde eine maximale Beleuchtungsstärke unserer Leuchte von 80 Lux ermittelt. Dieser Wert wurde als Führungsgröße des Systems festgelegt.<br/>   
Um die Formel zur Berechnung der Stellgröße aufstellen zu können, mussten im Anschluss verschiedene Regleransätze bewertet werden. <ref name="Regler Vergleich"> "Regelungstechnik RN Wissen" https://rn-wissen.de/wiki/index.php?title=Regelungstechnik</ref>
Um die Formel zur Berechnung der Stellgröße aufstellen zu können, mussten im Anschluss verschiedene Regleransätze bewertet werden. <ref name="Regler Vergleich"> "Regelungstechnik RN Wissen" https://rn-wissen.de/wiki/index.php?title=Regelungstechnik</ref>
<br/>   
<br/>   
<br/>   
<br/>   
===== P-Regler =====
===== P-Regler =====
Ein proportionalwirkender Regler multipliziert die Regelabweichung mit einem Verstärkungsfaktor KP. Das Ergebnis wird dabei unverzögert weitergegeben. Der Regler ist mittelschnell aber, gleicht keine Regelabweichungen aus. Die Reglergleichung lautet: <math>x_a (t)=K_P*x_e</math>
Ein proportionalwirkender Regler multipliziert die Regelabweichung mit einem Verstärkungsfaktor KP. Das Ergebnis wird dabei unverzögert weitergegeben. Der Regler ist mittelschnell. Er gleicht keine Regelabweichungen aus. Die Reglergleichung lautet: <math>x_a (t)=K_P \cdot x_e</math>
<br/>
<br/>
 
===== I-Regler =====
===== I-Regler =====
Ein integrierender Regler summiert die Regelabweichung über die Zeit auf und multipliziert das daraus entstehende Integral mit dem Faktor KI. Je länger also die Regelabweichung besteht, desto größer wird die Stellgröße. Er ist langsam im Vergleich zu anderen Reglern, ermöglicht es aber, Abweichungen vollständig zu eliminieren. Die Reglergleichung lautet: <math>x_a (t)=K_I* \int_{}^{} x_e dt </math>
Ein integrierender Regler summiert die Regelabweichung über die Zeit auf und multipliziert das daraus entstehende Integral mit dem Faktor KI. Je länger also die Regelabweichung besteht, desto größer wird die Stellgröße. Er ist langsam im Vergleich zu anderen Reglern, ermöglicht es aber, Abweichungen vollständig zu eliminieren. Die Reglergleichung lautet: <math>x_a (t)=K_I\cdot \int_{}^{} x_e dt </math>
<br/>
<br/>
 
===== PI-Regler=====
===== PI-Regler=====
Der PI-Regler kombiniert den P- mit dem I-Regler und somit deren Vorteile. Daher reagiert er schnell auf Änderungen und kann diese exakt ausregeln. Die Reglergleichung lautet: <math>x_a=K_P*x_e+K_I*\int_{}^{} x_e dt</math>
Der PI-Regler kombiniert den P- mit dem I-Regler und somit deren Vorteile. Daher reagiert er schnell auf Änderungen und kann diese exakt ausregeln. Die Reglergleichung lautet: <math>x_a=K_P*x_e+K_I*\int_{}^{} x_e dt</math>
<br/>   
<br/>   
===== PD-Regler =====
===== PD-Regler =====
Der PD-Regler ist ein proportional-differential wirkender Regler. Dabei berechnet der D-Anteil die Änderung der Regelabweichung, also die Änderungsgeschwindigkeit. Damit reagiert der Regler bereits auf Ankündigungen von Veränderungen und ist sehr schnell im Vergleich zu anderen Reglern. Das Problem der bleibenden Regelabweichung eines P-Reglers wird allerdings nicht eliminiert.
Der PD-Regler ist ein proportional-differential wirkender Regler. Dabei berechnet der D-Anteil die Änderung der Regelabweichung, also die Änderungsgeschwindigkeit. Damit reagiert der Regler bereits auf Ankündigungen von Veränderungen und ist sehr schnell im Vergleich zu anderen Reglern. Auch hier bleibt eine Regelabweichung bestehen.
Ein weiterer Nachteil kann entstehen, wenn das Sensorsignal unsauber, also verrauscht ist. Durch die Differentiation würde dieses Rauschen weiter verstärkt und in den Kreis hereingegeben. Damit kann es zu einer so großen Stellgröße kommen, die der Aktuator nicht mehr verarbeiten kann. Durch das Regeln in die Begrenzung des Aktuators würde die schnelle Reaktion des D-Anteils ungenutzt bleiben und das Einschwingverhalten würde verlangsamt. Da unser Sensorsignal allerdings sehr stabil ist, sollte dieses Phänomen keinen Einfluss auf unser System haben.
Ein weiterer Nachteil kann bei einem verrauschten Sensorsignal entstehen. Durch die Differentiation würde dieses Rauschen weiter verstärkt und in den Kreis zurückgeführt. Damit kann es zu einer so großen Stellgröße kommen, die der Aktuator nicht mehr verarbeiten kann. Durch das Regeln in die Begrenzung des Aktuators würde die schnelle Reaktion des D-Anteils ungenutzt bleiben und das Einschwingverhalten würde verlangsamt. Da unser Sensorsignal allerdings sehr stabil ist, sollte dieses Phänomen keinen Einfluss auf unser System haben.
Die Reglergleichung lautet: <math>x_a=K_P*x_e+K_D* \frac{dx_e}{dt}</math>
Die Reglergleichung lautet: <math>x_a=K_P*x_e+K_D* \frac{dx_e}{dt}</math>
<br/>   
<br/>   
Zeile 253: Zeile 256:
<br/>   
<br/>   
Hier wird ein Sollwert von 1.0 angenommen.  
Hier wird ein Sollwert von 1.0 angenommen.  
Der P- und PD-Regler können ohne einen I-Anteil nicht auf denn Sollwert regeln. Dabei ist der PD-Regler allerdings schneller als der P-Regler. Bei einem reinen I-Regler wird der geforderte Endwert zwar erreicht. Dies geschieht jedoch so langsam, dass es nicht mehr in der Grafik abbildbar ist.  
Der P- und PD-Regler können ohne einen I-Anteil nicht auf denn Sollwert regeln. Dabei ist der PD-Regler allerdings schneller als der P-Regler. Bei einem reinen I-Regler wird der geforderte Endwert erreicht. Dies geschieht jedoch so langsam, dass es nicht mehr in der Grafik abbildbar ist.  
Der PI-Regler regelt schnell, führt jedoch zu einem Überschwinger über den Sollwert, sodass die Schnelligkeit ungenutzt bleibt. Der Sollwert wird auch hier erreicht.  
Der PI-Regler regelt schnell, führt jedoch zu einem Überschwinger über den Sollwert, sodass die Schnelligkeit ungenutzt bleibt. Der Sollwert wird auch hier erreicht.  
Der schnellste Regler ist der PID-Regler. Ohne Überschwinger kommt er als erstes auf den Sollwert.
Der schnellste Regler ist der PID-Regler. Ohne Überschwinger regelt er als erstes auf den Sollwert.
<br/> 
<br/>
<br/>   
<br/>   
<br/>
<br/>
Zeile 268: Zeile 273:


====Programmierung====
====Programmierung====
Die Programmierung lässt sich in zwei Teile unterteilen, die Programmierung der Hardware und die des Windowsprogramms.
Arduino Quelltext der Smarten Tischleuchte zum Download <br/>
Eine Vorgabe an das Projekt war es, die Programmierung in [https://de.wikipedia.org/wiki/Simulink Simulink ]durchzuführen. Dabei kamen für uns unüberwindbare Schwierigkeiten auf. Dies lag vor allem darin, die LEDs anzusteuern. Dazu steht in der Arduino IDE eine Bibliothek des Herstellers des LED-Streifens zur Verfügung, um den Helligkeits- und Farbwert an jede LED einzeln digital übermitteln zu können. Die Implementierung in Simulink wurde versucht, führte aber zu keinem zufriedenstellenden Ergebnis. Eine Lösung der auftretenden Probleme war ebenfalls im Rahmen der Durchführungszeit des Projektes nicht zu erwarten. Um das Projekt doch zu einem Ergebnis führen zu können, wurde die Programmierung mit der Arduino IDE und [https://de.wikipedia.org/wiki/Visual_Studio Visual Studio] durchgeführt.
[[Datei:Tischleuchte Software.zip]] <br/>
<br/>
Erstellte Librarys zum Download: <br/>
[[Datei:Encoder.zip]] <br/>
[[Datei:Regulator.zip]]
 
Die Programmierung lässt sich in zwei Teile unterteilen, die Programmierung des Microcontrollers und die des Windowsprogramms.
Eine Vorgabe an das Projekt war die Programmierung in [https://de.wikipedia.org/wiki/Simulink Simulink ]. Bei dem Versuch, die LEDs mit Simulink anzusteuern, stießen wir an unsere Grenzen. Für diese Ansteuerung steht in der Arduino IDE eine Bibliothek des Herstellers des LED-Streifens zur Verfügung. Diese ermöglicht es, den Helligkeits- und Farbwert an jede LED einzeln digital zu übermitteln. Die Implementierung in Simulink wurde versucht, führte aber zu keinem zufriedenstellenden Ergebnis. Eine Lösung der auftretenden Probleme war ebenfalls im Rahmen der Durchführungszeit des Projektes nicht zu erwarten. Um das Projekt doch zu einem Ergebnis führen zu können, wurde die Programmierung mit der Arduino IDE und [https://de.wikipedia.org/wiki/Visual_Studio Visual Studio] durchgeführt.
<br/>   
<br/>   
=====Programmierung des Microcontrollers=====
=====Programmierung des Microcontrollers=====
Zunächst wurden die Grundfunktionen der Leuchte programmiert, also der manuelle- und der automatische Betrieb.
Zunächst wurden die Grundfunktionen, der manuelle- und automatische Betrieb, programmiert.
Im manuellen Betrieb wird die Leuchte über einen Drehgeber gesteuert. Dieser ist mit dem Arduino über zwei digitale Eingänge verbunden. Der Drehgeber liefert zwei Rechtecksignale (Signal A und B), wenn man an ihm dreht. Bei der Drehrichtung nach rechts eilt Signal A dem Signal B um 90° voraus. Eine Drehung nach links lässt Signal A nacheilen. Um die Rechtecksignale zu verarbeiten und die Positionen zu zählen, wurde in einer externen Bibliothek eine neue Klasse namens Encoder erstellt. Diese Bibliothek wurde in C++ mit Visual Studio geschrieben, sodass sie auch für andere Projekte nutzbar ist. <br/>
Im manuellen Betrieb wird die Leuchte über einen Drehgeber gesteuert. Dieser ist mit dem Arduino über zwei digitale Eingänge verbunden. Beim drehen des Encoders, liefert dieser zwei Rechtecksignale (Signal A und B). Bei der Drehrichtung nach rechts eilt Signal A dem Signal B um 90° voraus. Eine Drehung nach links lässt Signal A nacheilen. Um die Rechtecksignale zu verarbeiten und die Drehpositionen zu zählen, wurde in einer externen Bibliothek eine neue Klasse namens Encoder erstellt. Diese Bibliothek wurde in C++ mit Visual Studio geschrieben. Somit ist sie auch für weitere Projekte nutzbar. <br/>
Im Hauptprogramm, das mit der Arduino IDE realisiert wurde, werden dann zwei Funktionen der Klasse genutzt. Die setPosition-Funktion erhält eine gewünschte Position, also einen Wert zwischen 0 und 255, aus dem Hauptprogramm und setzt diese in der Bibliothek als neue Position für die Drehgeberstellung. Wird die Leuchte eingeschaltet, ist die Initialposition auf null. Die Funktion dient primär dafür, um die Encoder-Position mit dem Digitalwert aus dem Automatikprogramm zu beschreiben, damit beim Übergang vom Automatikmodus in den manuellen Betrieb die Helligkeit der LEDs erhalten bleibt und nicht auf einen anderen Wert springt. <br/>
Im Hauptprogramm, das mit der Arduino IDE realisiert wurde, werden zwei Funktionen der Klasse genutzt. Die setPosition-Funktion erhält eine gewünschte Position, also einen Wert zwischen 0 und 255, aus dem Hauptprogramm. In der Bibliothek wird dieser Wert als neue Position für die Drehgeberstellung gesetzt. Beim Einschalten der Leuchte ist die Initialposition null. Die Funktion dient primär dazu, die Encoder-Position mit dem Digitalwert aus dem Automatikprogramm zu beschreiben. Damit wird erzielt, dass beim Übergang vom Automatikmodus in den manuellen Betrieb die Helligkeit der LEDs erhalten bleibt. <br/>
Die getPosition-Funktion gibt die berechnete Drehgeberposition zurück. Dieser Wert wird an die LEDs weitergeleitet, um sie zu dimmen. Die Position wird dadurch berechnet, dass zunächst geprüft wird, welches Signal (A oder B) vor- und welches nacheilt. Durch eine Addition oder Subtraktion auf die vorherige Drehgeberposition wird die neue Position berechnet. Beim Testen des manuellen Betriebs fiel auf, dass das manuelle Dimmen sehr lange dauert, wenn die Drehgeberposition lediglich um eins inkrementiert oder dekrementiert wird. Daher wurde die Position quadriert an die LEDs als Dimmwert übergeben.<br/>
Die getPosition-Funktion gibt die berechnete Drehgeberposition zurück. Dieser Wert wird zum Dimmen an die LEDs weitergeleitet. Die Position wird dadurch berechnet, dass zunächst geprüft wird, welches Signal (A oder B) vor- und welches nacheilt. Durch eine Addition oder Subtraktion auf die vorherige Drehgeberposition wird die neue Position berechnet. Beim Testen des manuellen Betriebs fiel auf, dass das manuelle Dimmen sehr lange dauert, wenn die Drehgeberposition lediglich um eins inkrementiert oder dekrementiert wird. Daher wurde die Position quadriert an die LEDs als Dimmwert übergeben.<br/>
Im Automatikbetrieb wird der Regelungsalgorithmus programmiert. Der Lux-Sensor wird dabei zur Detektion der Beleuchtungsstärke auf dem Arbeitsplatz genutzt. Dieser erfasst die Ist-Helligkeit. Zwischen diesem Wert und dem Soll-Helligkeitswert wird die Differenz, die Regelabweichung, gebildet. Die Differenz wird in die Reglergleichung des PID-Reglers als xe eingesetzt, womit der Stellwert berechnet wird, der an den LED-Streifen gesendet wird. Durch Tests wurden die KP, KD und KI Werte ermittelt, damit der Regler schnell auf Helligkeitsänderungen reagiert, durch kleine Helligkeitsschwankungen wenig beeinflusst wird und optimal die Soll-Helligkeit hält. Auch der Regelungsalgorithmus wurde nicht im Hauptprogramm implementiert, sondern in einer ausgelagerten Klasse. Dadurch bleibt das Hauptprogramm sehr übersichtlich.<br/>
Im Automatikbetrieb wird der Regelungsalgorithmus programmiert. Der Lux-Sensor wird dabei zur Detektion der Beleuchtungsstärke auf dem Arbeitsplatz genutzt. Dieser erfasst die Ist-Helligkeit. Zwischen diesem Wert und dem Soll-Helligkeitswert wird die Differenz, die Regelabweichung, gebildet. Die Differenz wird in die Reglergleichung des PID-Reglers als xe eingesetzt. Mit der Reglergleichung wird der Stellwert berechnet. Dieser wird an den LED-Streifen gesendet. Durch iteratives Testen wurden die KP, KD und KI Werte ermittelt. Durch geeignete Größen reagiert der Regler schnell auf Helligkeitsänderungen und hält die Soll-Helligkeit. Auch der Regelungsalgorithmus wurde in einer ausgelagerten Klasse implementiert. Das Hauptprogramm bleibt sehr übersichtlich.<br/>
Zwischen den beiden Modi kann mit einem Kippschalter gewechselt werden. Die Abfrage des Schalterstatus erfolgt mit einer Interrupt-Funktion, sodass nur bei einer Änderung des Schalterstatus der jeweilige Status abgefragt wird und nicht bei jedem Durchlauf des Hauptprogramms.
Zwischen den beiden Modi kann mit einem Kippschalter gewechselt werden. Die Abfrage des Schalterstatus erfolgt mit einer Interrupt-Funktion. Diese ermöglicht, dass der Schalterstatus nur bei einer Änderung abgefragt wird und nicht bei jedem Programmdurchlauf.


=====Programmierung der Windows Applikation=====
=====Programmierung der Windows Applikation=====
Windows Applikation [[Datei:Smarte_Tischleuchte.zip]]<br/>
Windows Applikation [[Datei:Smarte_Tischleuchte.zip]][[Datei:Verbindungseinstellung_-_Smarte_Tischleuchte.png|300px|thumb|right|Abb.7: Bedienoberfläche zur Verbindungseinstellung]]<br/>  
Nachdem die Software heruntergeladen wurde, muss diese entpackt werden und kann dann ausgeführt werden.<br/>
Nachdem die Software heruntergeladen wurde, muss diese entpackt werden und kann dann ausgeführt werden.<br/>
<br/>


Die Windows Applikation wurde mit Visual Studio programmiert.
In der App stehen dem Nutzer zwei Fenster zur Verfügung. Beim Öffnen der App, erscheint ein Fenster zur Verbindungseinstellung (s. Abb. 7). In einer Textbox sind  alle verbundenen COM Ports mit den jeweiligen Gerätenamen aufgelistet. Der gewünschte Port kann mit dem Dropdown Menü links neben der Textbox ausgewählt werden. Beim Drücken auf „Verbinden“ wird die Verbindung zur Leuchte hergestellt. Ist dies erfolgreich, blinken die LEDs. Die anderen Steuerungsmöglichkeiten (Manuell und Automatik) werden deaktiviert, sodass nun nur noch eine Steuerung über die App möglich ist. Nun öffnet sich das eigentliche Steuerungsfenster (s. Abb. 8). <br/>


[[Datei:Steuerung_-_Smarte_Tischleuchte.png|200px|thumb|left|Abb.7: Bedienoberfläche der Windows App]]
[[Datei:Steuerung_-_Smarte_Tischleuchte.png|200px|thumb|left|Abb.8: Bedienoberfläche der Windows App]]
[[Datei:Verbindungseinstellung_-_Smarte_Tischleuchte.png|300px|thumb|right|Abb.7 Bedienoberfläche zur Verbindungseinstellung]]
<br/>
<br/>
<br/>
Es stehen folgende Funktionen zur Verfügung:<br/>
Zum einen können die LEDs ein, und ausgeschaltet werden. Dies erfolgt über das setzen des Hakens bei „LED Ein“. Außerdem können drei Grundfarben durch Anklicken der farbigen Kacheln (rot, grün, blau) ausgewählt werden. Die ausgewählte Farbe erleuchten in der maximalen Helligkeit. <br/>
Eine Dimmung der Helligkeit ist über den mittleren Schieberegler möglich. Der Helligkeitswert wird in dem danebenliegenden Fenster angezeigt. Ist die gewünschte Helligkeit erreicht, kann diese über die Taste „Senden“ an die Leuchte übermittelt werden. (Es war nicht möglich, die Helligkeit in Echtzeit beim Verstellen des Schiebereglers an die Leuchte zu senden, da sich die Werte über den Schieberegler so schnell ändern, dass sie nicht korrekt über die USB-Verbindung seriell übermittelt werden können.)<br/>
Eine andere Lichtfarbe kann ebenfalls durch das Mischen der Rot-, Grün- und Blauanteile erzeugt werden. Über die Schieberegler kann der jeweilige Anteil eingestellt werden. Über die Taste „Senden“  wird die Lichtfarbe an die Leuchte übermittelt.<br/>
Schließt man das Steuerungsfenster, wird die Verbindung zwischen PC und Leuchte automatisch getrennt. Die Steuerung der Leuchte über den Drehgeber oder den Automatikbetrieb wird wieder aktiviert.
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
Zeile 296: Zeile 324:


== Ergebnis ==
== Ergebnis ==
Das Ergebnis ist eine voll funktionsfähige Leuchte, die alle Funktionen besitzt, die gefordert wurden. Auch die Kür, die Windows Applikation, wurde erfolgreich implementiert.<br>
Verbessern könnte man die Wahl der LEDs. Zum einen wird eine geringe Beleuchtungsstärke auf dem Arbeitsplatz erzielt. Dies ist darauf zu führen, dass der genutzte LED-Streifen über 5V gespeist wird. Auch die Lichtfarbe der RGB-LEDs ist für eine Arbeitsplatzbeleuchtung wenig geeignet. Trotz vieler Versuche eine angenehme Lichtfarbe durch mischen der Rot-, Grün- und Blauanteile zu erzielen, gelang dies nicht oder die Beleuchtungsstärke wurde noch geringer.<br>
Als Weiterentwicklung könnte man sich vorstellen, andere LEDs mit einer größeren Lichtausbeute und einer angenehmeren Lichtfarbe zu wählen. Dabei würde sich die Weiterentwicklung vor allem auf die Bestromung und Ansteuerung der LEDs über eine Pulsweitenmodulation beziehen. Auch die Wärmeabfuhr der leistungsstärkeren LEDs wäre eine Fragestellung.<br>
Eine zusätzliche Erweiterungsmöglichkeit wäre die Verbindung der Leuchte über Bluetooth mit dem Computer.


== Zusammenfassung ==
== Zusammenfassung ==
Insgesamt sind wir stolz auf das Projektergebnis. Ein Projekt, was zunächst vermeintlich einfach schien, stellte sich im Endeffekt, auch aufgrund der interdisziplinären Aufgabe, als eine große Herausforderung heraus. <br>
Wegen der Vielseitigkeit und der etlichen Einzelaufgaben, war das Projektmanagement von großer Bedeutung. Durch die Kanban-Methode hatten beide Teammitglieder einen guten Überblick über die zu erledigenden Aufgaben und die Fristen. Diese wurden sehr eng gesetzt, um möglichst früh im Semester mit der Projektdurchführung beginnen zu müssen. So waren Verzögerungen, z.B. durch Verspätungen der Bauteillieferungen oder bei der Fertigung des Leuchtengehäuses, unproblematisch. Es war durch die gute Planung sogar möglich, das Projekt bereits Mitte Dezember abschließen zu können.<br>
Es konnten viele Erfahrungen bei der mechanischen Konstruktion, der Programmierung von Microcontrollern und von Windows-Applikationen gewonnen werden. <br>
Auch die theoretischen Lehrinhalte aus der Vorlesung Mess- und Regelungstechnik konnten teilweise in der Praxis angewendet werden. Jedoch war das aufgebaute System aus regelungstechnischer Sicht sehr komplex, sodass mehr Erfahrungen in diesem Gebiet hilfreich gewesen wären, um möglicherweise einen besseren Regler entwerfen zu können.
=== Lessons Learned ===
=== Lessons Learned ===
Zum einen konnten wir durch das Projekt verschiedene Studieninhalte verfestigen und praktische Bezüge dazu herstellen. Dazu zählen:
*Planung eines Projektes unter Verwendung geeigneter Projektmanagementmethoden
*Konstruktion einer Baugruppe in Solid Works mit Beachtung der Toleranzen und der Genauigkeit des Fertigungsverfahrens des Sinterns
*Vertiefung des Schaltungsentwurfes mit Multisim
*Effiziente Programmierung von Microcontrollern
*Programmierung einer Windows Applikation
*Auswahl geeigneter Sensoren für den Anwendungsfall
*Entwickeln eines Reglers <br><br>
Da in der Realität nicht alles so funktioniert wie in der Theorie, kamen Komplikationen auf:
*Die Auslegung des Reglers war eine Herausforderung, da die benötigten Inhalte in der Veranstaltung Mess- und Regelungstechnik in der Mitte des Semesters noch nicht gelehrt wurden.
*Die Positionierung des Lux-Sensors hätte zuvor gründlicher durchdacht werden sollen.
*Die Programmierung in Simulink war nicht möglich, da eine Bibliothek zur Ansteuerung der LEDs fehlte und die Entwicklung einer eigenen Bibliothek den Zeitrahmen ausgelastet hätte.
*In der Windows Applikation können die Farben und die Beleuchtungsstärke nicht unmittelbar beim Ziehen des Schiebereglers an die Leuchte gesendet werden. <br><br>
Verbesserungspotential:
*Wahl von LEDs, die für die Schreibtischplatzbeleuchtung besser geeignet sind (höhere Beleuchtungsstärke, angenehme Lichtfarbe)
*Drahtlose Verbindung zum Computer statt USB


== Projektunterlagen ==
== Projektunterlagen ==
Zeile 305: Zeile 360:


== YouTube Video ==
== YouTube Video ==
Direktlink zum Youtube Video: [https://www.youtube.com/channel/UC6neyTIx5U6Fhw7UNOttJvg Kanal Luca Di Lillo]
Direktlink zum Youtube Video: [https://youtu.be/cqcTBqJx-tA Smarte Tischleuchte]


== Weblinks ==
== Weblinks ==

Aktuelle Version vom 29. September 2020, 11:18 Uhr

Abb.1: Leuchte im Einsatz mit Windows App

Autoren: Felix Bruchhage, Luca Di Lillo:
Betreuer: Prof. Schneider

→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)

Einleitung

Das Modul Mechatronische Systeme 2 im 5. Semester des Studiengangs Mechatronik beinhaltet das GET-Fachpraktikum, das die angewandte Elektrotechnik zum einen in vier Laborversuchen vertiefen soll. Zum anderen werden diverse mechatronische Projekte in Kleingruppen behandelt, sodass die Studierenden erste Erfahrungen in der Planung und Umsetzung von technischen Projekten sammeln können und ihr theoretisches Wissen in der Praxis anwenden können. Es bestand die Möglichkeit aus vorgegebenen Projekten auszuwählen oder sich ein eigenes Projekt auszuwählen, das in den zeitlichen Rahmen des Praktikums passt und die fachlichen Inhalte abdeckt. Dieser Artikel beschäftigt sich mit einem selbst definierten Projekt, bei dem eine intelligente Schreibtischleuchte entwickelt und gebaut werden soll, die sich selbstständig an die Lichtverhältnisse auf dem Schreibtisch anpasst. Dazu wurden die folgenden Anforderungen als Aufgabe gestellt:

Erwartungen an die Projektlösung

  • Planung und Konstruktion der Leuchte
  • Darstellung der regelungstechnischen Theorie
  • Beschaffung der Bauteile (Miniaturisierung z.B. Arduino Nano)
  • Systemidentifikation (Übertragungsfunktion der Regelstrecke bestimmen)
  • Realisierung des Aufbaus
  • Vergleichen und bewerten Sie verschiedene Regleransätze (P, PI, PID und andere).
  • Modellbasierte Programmierung der Hardware via Simulink
  • Machen Sie ein tolles Videos, welches die Funktion visualisiert.
  • Test und wiss. Dokumentation
  • Live Vorführung während der Abschlusspräsentation

Kür: Steuerung über eine Windows App.

Aufgabe

Es soll eine RGB-LED-Tischleuchte gebaut werden, die zum einen manuell über einen Schalter ein- und ausgeschaltet und mit einem Drehgeber gedimmt werden kann. Außerdem soll ein Automatikmodus zur Verfügung stehen, bei dem sich die Leuchte automatisch an die Beleuchtungssituation im Raum anpasst. Dazu wird die Beleuchtungsstärke auf dem Arbeitsplatz über einen Helligkeitssensor gemessen und die Leuchte entsprechend eines Regelungsalgorithmus automatisch gedimmt. Weiterhin soll die Steuerung der Leuchte mit Hilfe einer Windows - Applikation über einen PC möglich sein. Dieses Projekt deckt alle Facetten der Mechatronik ab. Es können Kenntnisse in der mechanischen Fertigung, des elektrischen Schaltungsentwurfs, der Umsetzung der elektronischen Schaltung sowie der Programmierungen von Mikrocontrollern gewonnen werden. Auch die Programmierung einer Windows Applikation wird eine Herausforderung an das Projekt stellen.

Projekt

Projektplanung


Projektmanagement

Zu Beginn des Projektes wurde zunächst nach einer geeigneten Projektmanagementmethode gesucht, um die Aufgaben im Team aufzuteilen, Fristen für die Aufgabenpakete zu definieren und um einen Überblick über die auszuführenden und abgeschlossenen Tätigkeiten für alle Gruppenmitglieder zu gewährleisten.
Es wurde sich für die Kanban Methode entschieden. Umgesetzt wurde das Projektmanagement mit der web-basierten Software Trello. Der aktuelle Stand des Projektes ist nicht nur für die Gruppenmitglieder sichtbar, sondern wurde veröffentlicht, um eine transparente Vorstellung unseres Projekts zu ermöglichen. Trello Kanban Projekt 20b Smarte Tischleuchte
Bei der Kanban-Methode wird eine Tafel mit drei Spalten erstellt. Die erste Spalte erhält den Namen „To Do“. In diese werden zu Beginn des Projektes alle Aufgaben in Form von einzelnen Karten geschrieben, die aus den Projektanforderungen abgeleitet werden. Diese Karten sollten mit absteigender Priorität in der Spalte geordnet werden. Außerdem werden die Verantwortlichen für jede Aufgabe definiert und die Bearbeitungsfristen festgelegt. Die zweite Spalte wird als „In Bearbeitung“ bezeichnet. Jeder Mitarbeiter kann selbstständig die Aufgabenkarten von der Liste „To Do“ in die Liste „In Bearbeitung“ ziehen. Ist die Bearbeitung einer Aufgabe abgeschlossen, wird die jeweilige Karte in die letzte Spalte „Abgeschlossen“ gezogen. [1]
Mit dieser Methode hat jedes Gruppenmitglied eine gute Übersicht über den Projektfortschritt und über die Aufgaben, die in den jeweiligen Fristen fertig gestellt sein müssen. Am Ende einer jeweiligen Frist wurde in unserer Gruppe ein Meilensteintermin abgehalten, in der die jeweiligen Ergebnisse vorgestellt, überprüft und verbessert wurden. Durch diese Methode konnten Probleme schnell erkannt und behoben werden. Außerdem war es uns möglich, durch eng gesetzte Fristen, das Projekt weit vor dem eigentlichen Präsentationstermin fertigzustellen.

Planung der Umsetzungsmöglichkeiten

Bei der Planungstätigkeit wurde ein morphologischer Kasten (s. Abb. 2) aufgestellt, um aus den Projektanforderungen konkrete Lösungsvarianten abzuleiten und um sich für einen Lösungsweg für die Projektumsetzung zu entscheiden.

Abb.2: Morphologischer Kasten

Auf einige Punkte des morphologischen Kastens soll kurz eingegangen werden:
Ein ArduinoUno wurde ausgewählt, da dieser bereits durch den dritten Versuchstermin zur Verfügung stand. Für die Umsetzung hätte ein Arduino Nano in Bezug auf die Ein- und Ausgänge gereicht. Dieser wurde allerdings aufgrund von unnötigen Zusatzkosten nicht beschafft.
Der Lichtsensor mit Photodioden wurde gewählt, da Dioden als Halbleiterbauelemente schneller auf Veränderungen der Helligkeit reagieren als ein Photowiderstand. Dadurch war es uns möglich, in Kombination mit dem Regelungsalgorithmus schnell auf Änderungen zu reagieren und keine Verzögerungen durch einen trägen Sensor in Kauf nehmen zu müssen. Außerdem ist der gewählte TSL2591-Sensor mit IC und ADCs ausgestattet. Damit wird direkt der Strom der Photodiode in einen digitalen Wert umgerechnet. Mit diesem kann über eine I2C-Verbindung zum Arduino direkt die Beleuchtungsstärke in Lux ermittelt werden, ohne im Programm einen analogen Wert umrechnen zu müssen.
Ein Drehgeber wurde einem Potentiometer vorgezogen, damit es zu keinen Helligkeitsänderungen kommt, wenn aus dem Automatikbetrieb in den manuellen Betrieb umgeschaltet wird. Ein Potentiometer hätte einen festen Widerstandswert unabhängig von der eingestellten Helligkeit im Automatikbetrieb behalten. Mit dem Drehgeber war es möglich, den Helligkeitswert aus dem Automatikbetrieb ohne Differenz in den manuellen Betrieb zu übernehmen.
Die Verbindung der Leuchte über Bluetooth mit dem Computer wurde nicht gewählt, da ein Bluetooth-Modul einen zusätzlichen Kostenpunkt dargestellt hätte, was das Budget zu sehr ausgelastet hätte.


Materialplanung

Nachdem die Planung des Projektes abgeschlossen war, wurde ein Materialplan erstellt, um möglichst schnell die Bauteile bestellen und mit der Umsetzung anfangen zu können. Die Bauteile sind in folgender Liste zu finden:

Pos. Anzahl Bezeichnung Preis Link
1. 1 Digitaler RGB-LED Flexi-Streifen 60 LED 19,95 € Conrad
2. 1 DEBO LIGHT SENSE3 7,80 € Reichelt
3. 1 Arduino - Grove Encoder 4,99 € Reichelt
4. 1 Streifenrasterplatine 0,69 € Reichelt
5. 1 Kippschalter 1,85€ Reichelt
6. 1 Potikappe -- --
7. 1 Handynetzteil (5V DC, 2A) 7,99 € Conrad
8. 1 10kΩ Widerstand 0,154 € Reichelt
9. 1 220Ω Widerstand 0,154 € Reichelt
10. 1 470µF Kondensator 0,12 € Conrad
11. 1 Verdrahtungsmaterial (Litzen, Lötzinn, ...)


Die Positionen 5 - 11 waren bereits aus privatem Eigentum vorhanden und mussten daher nicht bestellt werden.

Projektdurchführung


Bereits bevor die Bauteile geliefert wurden, konnten anhand der Datenblätter CAD-Daten der Leuchte mit Solid Works und Beschaltungspläne mit Multisim angefertigt werden.

Konstruktion und Bau des Leuchtengehäuses

Durch die Wahl eines additiven Fertigungsverfahrens, das Lasersintern, war ein hohes Maß an Freiheiten bei der Konstruktion gegeben, sodass nicht auf die Umsetzbarkeit einiger Konstruktionselemente mit konventionellen Fertigungsverfahren, wie beispielweise dem Fräsen, geachtet werden musste. Die einzige Einschränkung durch das Fertigungsverfahren war der Bauraum der Sintermaschine. Daher wurde die Leuchte aus mehreren Teilen konstruiert.
Bei der Konstruktion des Leuchtenkopfes wurde darauf geachtet, dass eine möglichst große Lichtaustrittsfläche zur Verfügung steht, um möglichst viele LEDs verwenden zu können und eine gute Ausleuchtung des Arbeitsplatzes zu gewährleisten. Die LEDs werden an den inneren Seitenflächen des Leuchtenkopfes platziert und strahlen in die Mitte. Durch die Reflexion im weißen Gehäuse wird das Licht nach unten geleitet und zusätzlich durch die satinierte Kunststoffscheibe gebrochen. Für diese Abdeckungsscheibe wurde ebenfalls seitlich eine Auflagefläche geschaffen, damit sie sich in dem Leuchtenkopf einpasst und bündig mit der äußeren Kante sitzt. Zunächst wurde geplant, den Lichtsensor auf die Oberseite des Leuchtenkopfes zu platzieren, um nicht von dem Licht der Leuchte beeinflusst zu werden und nur das Umgebungslicht zu detektieren. Dies stellte sich im Nachhinein, als der Regler entworfen wurde, als Fehlplanung heraus. Daher wurde die Position mittig auf den Leuchtenfuß verlagert.
Der Leuchtenkopf wird mit zwei Säulen mit dem Leuchtenfuß verbunden. Beide Säulen sind hohl konstruiert, um Drähte vom Arduino zu den LEDs verlegen zu können. Die obere Säule wird mit dem Leuchtenkopf über vier M4 Senkkopfschrauben verbunden, um eine ausreichende Stabilität, vor allem in Hinblick auf Biegebelastungen durch das Gewicht des Kopfes und durch eine mögliche externe Last, zu gewährleisten.
Die Säulen werden untereinander über eine Steckverbindung mit gesinterten Stiften verbunden. Diese Verbindung ist als eine Übergangspassung ausgelegt. Das bedeutet, dass die Stifte nur mit großem Druck in die Bohrungen in den Säulen passen und dadurch eine sehr starke Verbindung ermöglichen, die nur schwer gelöst werden kann. Um überhaupt die Verbindung herstellen zu können, mussten kleine Bohrungen seitlich in den Aufnahmebohrungen der Stifte vorgesehen werden, damit die Luft beim Eindrücken der Stifte aus den Aufnahmebohrungen entweichen kann.
Die untere Säule wird ebenfalls über eine Schraubverbindung mit dem Fuß verbunden. Dabei wird die Säule zusätzlich durch einen Durchbruch im Fuß geführt, um weitere Biegebelastungen abfangen zu können und die Schraubverbindungen zu entlasten.
Der Fuß wurde weiterhin so ausgelegt, dass genügend Platz für alle benötigten Komponenten und die Platine vorhanden ist. Außerdem wird durch seine Größe ein Kippen der Leuchte verhindert.
Nachdem alle CAD-Teile erstellt wurden, konnte mit diesen Daten der Laser-Sinterprozess bei einem externen Unternehmen gestartet werden. Der nachträgliche Zusammenbau der Teile konnte aufgrund der hohen Maßgenauigkeit des Fertigungsverfahren problemlos erfolgen.

Schaltplanentwurf und Aufbau der Schaltung

Der Schaltplan (s. Abb. 3) konnte mit der Software Multisim, die durch einen Versuchstermin erlernt wurde, einfach erstellt werden.

Abb.3:Schaltplan Leuchte

Die Bestromung des Systems erfolgt über ein externes Handynetzteil über 5 V DC mit einem maximalen Strom von 2A. Die Leuchte kann über einen Kippschalter ein- und ausgeschaltet werden. Dabei unterbricht der Schalter den Stromkreis zur Hauptplatine, an die alle weiteren Komponenten angeschlossen sind.
Aufgrund der geringen Komplexität der Schaltung haben wir uns dazu entschieden, eine standardmäßige Lochrasterplatine zu nutzen.
Auf der Platine wird eine Reihe als 5V Anschluss und eine weitere als Ground-Reihe genutzt. Von dort aus werden Arduino, Drehgeber, Lichtsensor und LED-Streifen bestromt.
Alle Signalleitungen (als flexible Drähte ausgeführt) der Sensoren werden ebenfalls auf einzelnen Reihen verlötet und von dort aus mit starren Drähten auf die jeweiligen Arduino-Ports geführt. Es wurde ebenfalls darauf geachtet, sowohl die Versorgungs- als auch die Datenleitungen der Komponenten zunächst auf Klemmen zu führen. Von diesen Klemmen ausgehend wird schließlich der Kontakt zur Platine hergestellt. Damit ist es möglich, jede einzelne Komponente aus dem Aufbau herauszunehmen ohne dafür Lötverbindungen zu lösen. Dies ermöglicht einen schnellen Austausch von beschädigten Bauteilen.
In die digitale Datenleitung des LED-Streifens wird zusätzlich ein 220Ω Widerstand eingebracht. Dies wird durch den Hersteller des Streifens vorgegeben, um eine sichere Signalübertragung zu ermöglichen.
Ein weiterer Schalter dient dazu, zwischen dem manuellen und dem automatischen Modus der Leuchte zu wechseln. Dieser wird zum einen auf einen digitalen Eingang des Arduinos gezogen. Außerdem wird die Ausgangsseite über einen Pulldown-Widerstand auf Ground gezogen. Durch den Pulldown-Widerstand wird das Signal des Schalters gezielt auf das jeweilige Potential gezogen und vermieden, dass Störungen das System beeinflussen.
Später wurde bei einem ersten Test der Leuchte festgestellt, dass die LEDs flimmerten. Wir führten dies auf Spannungsschwankungen in unserem System oder sogar durch das Netzteil zurück. Abhilfe wurde durch einen 470µF Kondensator zwischen +5V und Ground geschaffen, der Schwingungen ausgleicht. Der Kapazitätswert wurde durch iteratives Testen mit verschiedenen Kondensatoren herausgefunden.

Einarbeitung in die Regelungstechnik des Systems

Da sich die Leuchte automatisch der Raumbeleuchtung anpassen soll, und für eine konstante Schreibtischbeleuchtung sorgen soll, musste ein Regler entworfen werden, der später im Programm die Helligkeit der Leuchte reguliert. Zunächst wurde ein Blockschaltbild des Reglers aufgestellt, in dem die systemtechnischen Größen bestimmt werden. Zu diesem Zeitpunkt fiel, wie bereits oben geschildert, auf, dass die Positionierung des Lichtsensors geändert werden musste. Es wurde beschlossen, ihn auf dem Fuß zu montieren, damit er stets den Beleuchtungs-Istwert auf dem Arbeitsplatz misst, und somit auch Änderungen durch die eingestellte Helligkeit der Leuchte erkennt. Nur so war ein geschlossener Regelkreis realisierbar.
Um die Systemgrößen ermitteln zu können, wurde zunächst aus dem allgemeinen Blockschaltbild eines Regelkreises, ein systemspezifisches Schaltbild erstellt (s. Abb. 4).

Abb.4:Regelkreis Blockschaltbilder


Daraus ergeben sich folgende Größen:

Formelzeichen Beschreibung Systemgröße
w(t) Führungsgröße Soll-Helligkeit (80 Lux)
e(t) Regelabweichung Helligkeitsdifferenz
u(t) Stellgröße Digitalsignal (0-255)
y(t) Regelgröße Ist-Helligkeit













Aus dem Datenblatt des Sensors wurde ebenfalls das Messverfahren grafisch dargestellt (s. Abb. 5).

Abb.5:Messverfahren Lux Sensor










Im nächsten Schritt, wurde mit Hilfe eines Experiments die quantitativen Zusammenhänge unseres Systems bestimmt. Dazu wurde ein Testprogramm geschrieben, bei dem der LED-Streifen bitweise von 0-255 gedimmt wird und die jeweiligen Luxwerte unter der Lichtaustrittsfläche ermittelt werden. Der Test hat in einem dunklen Raum stattgefunden, um Störeinflüsse zu eliminieren.
Die aufgenommenen Werte wurden in einer Excelliste dokumentiert und in einem Diagramm geplottet. Dabei konnte ein linearer Zusammenhang zwischen Digitalsignal und Beleuchtungsstärke herausgefunden werden. Des Weiteren wurde festgestellt, dass das System nur ein sehr geringes Eigenschwingverhalten aufweist, da sich der gemessene Luxwert bei konstanter Dimmstufe der Leuchte nur in Wertebereichen von wenigen Milli-Lux ändert. Außerdem wurde eine maximale Beleuchtungsstärke unserer Leuchte von 80 Lux ermittelt. Dieser Wert wurde als Führungsgröße des Systems festgelegt.
Um die Formel zur Berechnung der Stellgröße aufstellen zu können, mussten im Anschluss verschiedene Regleransätze bewertet werden. [2]

P-Regler

Ein proportionalwirkender Regler multipliziert die Regelabweichung mit einem Verstärkungsfaktor KP. Das Ergebnis wird dabei unverzögert weitergegeben. Der Regler ist mittelschnell. Er gleicht keine Regelabweichungen aus. Die Reglergleichung lautet:

I-Regler

Ein integrierender Regler summiert die Regelabweichung über die Zeit auf und multipliziert das daraus entstehende Integral mit dem Faktor KI. Je länger also die Regelabweichung besteht, desto größer wird die Stellgröße. Er ist langsam im Vergleich zu anderen Reglern, ermöglicht es aber, Abweichungen vollständig zu eliminieren. Die Reglergleichung lautet:

PI-Regler

Der PI-Regler kombiniert den P- mit dem I-Regler und somit deren Vorteile. Daher reagiert er schnell auf Änderungen und kann diese exakt ausregeln. Die Reglergleichung lautet:

PD-Regler

Der PD-Regler ist ein proportional-differential wirkender Regler. Dabei berechnet der D-Anteil die Änderung der Regelabweichung, also die Änderungsgeschwindigkeit. Damit reagiert der Regler bereits auf Ankündigungen von Veränderungen und ist sehr schnell im Vergleich zu anderen Reglern. Auch hier bleibt eine Regelabweichung bestehen. Ein weiterer Nachteil kann bei einem verrauschten Sensorsignal entstehen. Durch die Differentiation würde dieses Rauschen weiter verstärkt und in den Kreis zurückgeführt. Damit kann es zu einer so großen Stellgröße kommen, die der Aktuator nicht mehr verarbeiten kann. Durch das Regeln in die Begrenzung des Aktuators würde die schnelle Reaktion des D-Anteils ungenutzt bleiben und das Einschwingverhalten würde verlangsamt. Da unser Sensorsignal allerdings sehr stabil ist, sollte dieses Phänomen keinen Einfluss auf unser System haben. Die Reglergleichung lautet:

PID-Regler

Dieser Regler ist der wohl am meisten eingesetzte, da er alle Vorzüge der eben genannten Regler vereinigt. Er ist sehr genau und sehr schnell. Daher haben wir uns in unserem Projekt auch für die Umsetzung mit diesem Modell entschieden. Die Reglergleichung lautet:

Grafischer Vergleich der Regler

In der Grafik (s. Abb. 6) ist ein Vergleich aller aufgeführten Regler zu sehen.

Abb.6:Vergleich der Regler


Hier wird ein Sollwert von 1.0 angenommen. Der P- und PD-Regler können ohne einen I-Anteil nicht auf denn Sollwert regeln. Dabei ist der PD-Regler allerdings schneller als der P-Regler. Bei einem reinen I-Regler wird der geforderte Endwert erreicht. Dies geschieht jedoch so langsam, dass es nicht mehr in der Grafik abbildbar ist. Der PI-Regler regelt schnell, führt jedoch zu einem Überschwinger über den Sollwert, sodass die Schnelligkeit ungenutzt bleibt. Der Sollwert wird auch hier erreicht. Der schnellste Regler ist der PID-Regler. Ohne Überschwinger regelt er als erstes auf den Sollwert.











Programmierung

Arduino Quelltext der Smarten Tischleuchte zum Download
Datei:Tischleuchte Software.zip

Erstellte Librarys zum Download:
Datei:Encoder.zip
Datei:Regulator.zip

Die Programmierung lässt sich in zwei Teile unterteilen, die Programmierung des Microcontrollers und die des Windowsprogramms. Eine Vorgabe an das Projekt war die Programmierung in Simulink . Bei dem Versuch, die LEDs mit Simulink anzusteuern, stießen wir an unsere Grenzen. Für diese Ansteuerung steht in der Arduino IDE eine Bibliothek des Herstellers des LED-Streifens zur Verfügung. Diese ermöglicht es, den Helligkeits- und Farbwert an jede LED einzeln digital zu übermitteln. Die Implementierung in Simulink wurde versucht, führte aber zu keinem zufriedenstellenden Ergebnis. Eine Lösung der auftretenden Probleme war ebenfalls im Rahmen der Durchführungszeit des Projektes nicht zu erwarten. Um das Projekt doch zu einem Ergebnis führen zu können, wurde die Programmierung mit der Arduino IDE und Visual Studio durchgeführt.

Programmierung des Microcontrollers

Zunächst wurden die Grundfunktionen, der manuelle- und automatische Betrieb, programmiert. Im manuellen Betrieb wird die Leuchte über einen Drehgeber gesteuert. Dieser ist mit dem Arduino über zwei digitale Eingänge verbunden. Beim drehen des Encoders, liefert dieser zwei Rechtecksignale (Signal A und B). Bei der Drehrichtung nach rechts eilt Signal A dem Signal B um 90° voraus. Eine Drehung nach links lässt Signal A nacheilen. Um die Rechtecksignale zu verarbeiten und die Drehpositionen zu zählen, wurde in einer externen Bibliothek eine neue Klasse namens Encoder erstellt. Diese Bibliothek wurde in C++ mit Visual Studio geschrieben. Somit ist sie auch für weitere Projekte nutzbar.
Im Hauptprogramm, das mit der Arduino IDE realisiert wurde, werden zwei Funktionen der Klasse genutzt. Die setPosition-Funktion erhält eine gewünschte Position, also einen Wert zwischen 0 und 255, aus dem Hauptprogramm. In der Bibliothek wird dieser Wert als neue Position für die Drehgeberstellung gesetzt. Beim Einschalten der Leuchte ist die Initialposition null. Die Funktion dient primär dazu, die Encoder-Position mit dem Digitalwert aus dem Automatikprogramm zu beschreiben. Damit wird erzielt, dass beim Übergang vom Automatikmodus in den manuellen Betrieb die Helligkeit der LEDs erhalten bleibt.
Die getPosition-Funktion gibt die berechnete Drehgeberposition zurück. Dieser Wert wird zum Dimmen an die LEDs weitergeleitet. Die Position wird dadurch berechnet, dass zunächst geprüft wird, welches Signal (A oder B) vor- und welches nacheilt. Durch eine Addition oder Subtraktion auf die vorherige Drehgeberposition wird die neue Position berechnet. Beim Testen des manuellen Betriebs fiel auf, dass das manuelle Dimmen sehr lange dauert, wenn die Drehgeberposition lediglich um eins inkrementiert oder dekrementiert wird. Daher wurde die Position quadriert an die LEDs als Dimmwert übergeben.
Im Automatikbetrieb wird der Regelungsalgorithmus programmiert. Der Lux-Sensor wird dabei zur Detektion der Beleuchtungsstärke auf dem Arbeitsplatz genutzt. Dieser erfasst die Ist-Helligkeit. Zwischen diesem Wert und dem Soll-Helligkeitswert wird die Differenz, die Regelabweichung, gebildet. Die Differenz wird in die Reglergleichung des PID-Reglers als xe eingesetzt. Mit der Reglergleichung wird der Stellwert berechnet. Dieser wird an den LED-Streifen gesendet. Durch iteratives Testen wurden die KP, KD und KI Werte ermittelt. Durch geeignete Größen reagiert der Regler schnell auf Helligkeitsänderungen und hält die Soll-Helligkeit. Auch der Regelungsalgorithmus wurde in einer ausgelagerten Klasse implementiert. Das Hauptprogramm bleibt sehr übersichtlich.
Zwischen den beiden Modi kann mit einem Kippschalter gewechselt werden. Die Abfrage des Schalterstatus erfolgt mit einer Interrupt-Funktion. Diese ermöglicht, dass der Schalterstatus nur bei einer Änderung abgefragt wird und nicht bei jedem Programmdurchlauf.

Programmierung der Windows Applikation

Windows Applikation Datei:Smarte Tischleuchte.zip

Abb.7: Bedienoberfläche zur Verbindungseinstellung


Nachdem die Software heruntergeladen wurde, muss diese entpackt werden und kann dann ausgeführt werden.

Die Windows Applikation wurde mit Visual Studio programmiert. In der App stehen dem Nutzer zwei Fenster zur Verfügung. Beim Öffnen der App, erscheint ein Fenster zur Verbindungseinstellung (s. Abb. 7). In einer Textbox sind alle verbundenen COM Ports mit den jeweiligen Gerätenamen aufgelistet. Der gewünschte Port kann mit dem Dropdown Menü links neben der Textbox ausgewählt werden. Beim Drücken auf „Verbinden“ wird die Verbindung zur Leuchte hergestellt. Ist dies erfolgreich, blinken die LEDs. Die anderen Steuerungsmöglichkeiten (Manuell und Automatik) werden deaktiviert, sodass nun nur noch eine Steuerung über die App möglich ist. Nun öffnet sich das eigentliche Steuerungsfenster (s. Abb. 8).

Abb.8: Bedienoberfläche der Windows App




Es stehen folgende Funktionen zur Verfügung:
Zum einen können die LEDs ein, und ausgeschaltet werden. Dies erfolgt über das setzen des Hakens bei „LED Ein“. Außerdem können drei Grundfarben durch Anklicken der farbigen Kacheln (rot, grün, blau) ausgewählt werden. Die ausgewählte Farbe erleuchten in der maximalen Helligkeit.
Eine Dimmung der Helligkeit ist über den mittleren Schieberegler möglich. Der Helligkeitswert wird in dem danebenliegenden Fenster angezeigt. Ist die gewünschte Helligkeit erreicht, kann diese über die Taste „Senden“ an die Leuchte übermittelt werden. (Es war nicht möglich, die Helligkeit in Echtzeit beim Verstellen des Schiebereglers an die Leuchte zu senden, da sich die Werte über den Schieberegler so schnell ändern, dass sie nicht korrekt über die USB-Verbindung seriell übermittelt werden können.)
Eine andere Lichtfarbe kann ebenfalls durch das Mischen der Rot-, Grün- und Blauanteile erzeugt werden. Über die Schieberegler kann der jeweilige Anteil eingestellt werden. Über die Taste „Senden“ wird die Lichtfarbe an die Leuchte übermittelt.
Schließt man das Steuerungsfenster, wird die Verbindung zwischen PC und Leuchte automatisch getrennt. Die Steuerung der Leuchte über den Drehgeber oder den Automatikbetrieb wird wieder aktiviert.













Ergebnis

Das Ergebnis ist eine voll funktionsfähige Leuchte, die alle Funktionen besitzt, die gefordert wurden. Auch die Kür, die Windows Applikation, wurde erfolgreich implementiert.
Verbessern könnte man die Wahl der LEDs. Zum einen wird eine geringe Beleuchtungsstärke auf dem Arbeitsplatz erzielt. Dies ist darauf zu führen, dass der genutzte LED-Streifen über 5V gespeist wird. Auch die Lichtfarbe der RGB-LEDs ist für eine Arbeitsplatzbeleuchtung wenig geeignet. Trotz vieler Versuche eine angenehme Lichtfarbe durch mischen der Rot-, Grün- und Blauanteile zu erzielen, gelang dies nicht oder die Beleuchtungsstärke wurde noch geringer.
Als Weiterentwicklung könnte man sich vorstellen, andere LEDs mit einer größeren Lichtausbeute und einer angenehmeren Lichtfarbe zu wählen. Dabei würde sich die Weiterentwicklung vor allem auf die Bestromung und Ansteuerung der LEDs über eine Pulsweitenmodulation beziehen. Auch die Wärmeabfuhr der leistungsstärkeren LEDs wäre eine Fragestellung.
Eine zusätzliche Erweiterungsmöglichkeit wäre die Verbindung der Leuchte über Bluetooth mit dem Computer.

Zusammenfassung

Insgesamt sind wir stolz auf das Projektergebnis. Ein Projekt, was zunächst vermeintlich einfach schien, stellte sich im Endeffekt, auch aufgrund der interdisziplinären Aufgabe, als eine große Herausforderung heraus.
Wegen der Vielseitigkeit und der etlichen Einzelaufgaben, war das Projektmanagement von großer Bedeutung. Durch die Kanban-Methode hatten beide Teammitglieder einen guten Überblick über die zu erledigenden Aufgaben und die Fristen. Diese wurden sehr eng gesetzt, um möglichst früh im Semester mit der Projektdurchführung beginnen zu müssen. So waren Verzögerungen, z.B. durch Verspätungen der Bauteillieferungen oder bei der Fertigung des Leuchtengehäuses, unproblematisch. Es war durch die gute Planung sogar möglich, das Projekt bereits Mitte Dezember abschließen zu können.
Es konnten viele Erfahrungen bei der mechanischen Konstruktion, der Programmierung von Microcontrollern und von Windows-Applikationen gewonnen werden.
Auch die theoretischen Lehrinhalte aus der Vorlesung Mess- und Regelungstechnik konnten teilweise in der Praxis angewendet werden. Jedoch war das aufgebaute System aus regelungstechnischer Sicht sehr komplex, sodass mehr Erfahrungen in diesem Gebiet hilfreich gewesen wären, um möglicherweise einen besseren Regler entwerfen zu können.

Lessons Learned

Zum einen konnten wir durch das Projekt verschiedene Studieninhalte verfestigen und praktische Bezüge dazu herstellen. Dazu zählen:

  • Planung eines Projektes unter Verwendung geeigneter Projektmanagementmethoden
  • Konstruktion einer Baugruppe in Solid Works mit Beachtung der Toleranzen und der Genauigkeit des Fertigungsverfahrens des Sinterns
  • Vertiefung des Schaltungsentwurfes mit Multisim
  • Effiziente Programmierung von Microcontrollern
  • Programmierung einer Windows Applikation
  • Auswahl geeigneter Sensoren für den Anwendungsfall
  • Entwickeln eines Reglers

Da in der Realität nicht alles so funktioniert wie in der Theorie, kamen Komplikationen auf:

  • Die Auslegung des Reglers war eine Herausforderung, da die benötigten Inhalte in der Veranstaltung Mess- und Regelungstechnik in der Mitte des Semesters noch nicht gelehrt wurden.
  • Die Positionierung des Lux-Sensors hätte zuvor gründlicher durchdacht werden sollen.
  • Die Programmierung in Simulink war nicht möglich, da eine Bibliothek zur Ansteuerung der LEDs fehlte und die Entwicklung einer eigenen Bibliothek den Zeitrahmen ausgelastet hätte.
  • In der Windows Applikation können die Farben und die Beleuchtungsstärke nicht unmittelbar beim Ziehen des Schiebereglers an die Leuchte gesendet werden.

Verbesserungspotential:

  • Wahl von LEDs, die für die Schreibtischplatzbeleuchtung besser geeignet sind (höhere Beleuchtungsstärke, angenehme Lichtfarbe)
  • Drahtlose Verbindung zum Computer statt USB

Projektunterlagen

Direktlink zum SVN-Ordner: Projekt 20b: Smarte Tischleuchte

YouTube Video

Direktlink zum Youtube Video: Smarte Tischleuchte

Weblinks

Technische Daten LED-Streifen: WS2813B LED-Stripe
Datenblatt Lux-Sensor: TSL2591
Technische Daten Drehgeber: Grove-Encoder

Literatur



→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)