Projekt 20b: Smarte Tischleuchte: Unterschied zwischen den Versionen
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 232: | Zeile 232: | ||
<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. Er gleicht keine Regelabweichungen aus. Die Reglergleichung lautet: <math>x_a (t)=K_P | 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 | 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> |
Aktuelle Version vom 29. September 2020, 11:18 Uhr
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.
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.
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).
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).
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.
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
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).
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
- ↑ "Kanban Projektmanagementmethode" http://projektmanagement-definitionen.de/agile-projektmanagement-methoden-fuer-alle-teil-1-kanban/
- ↑ "Regelungstechnik RN Wissen" https://rn-wissen.de/wiki/index.php?title=Regelungstechnik
→ zurück zur Übersicht: WS 18/19: Fachpraktikum Elektrotechnik (MTR)