Smart Light

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Autoren: Björn Schlottke & Dennis Schleicher
Betreuer: Prof. Göbel & Prof. Schneider


→ zurück zur Übersicht: WS 21/22: Fachpraktikum Elektrotechnik (MTR) und Angewandte Elektrotechnik (BSE)


Einleitung

Das Smart Light System stellt ein Steuergerät für intelligentes Licht dar. Mithilfe eines thermischen MEMS Präsenzsensors sollen Menschen erkannt werden und dementsprechend eine Lichtquelle ein- und ausgeschaltet werden. Somit kann diese effizient und gleichzeitig vollautomatisch arbeiten. Der Unterschied zu einer reinen Abstandsmessung durch beispielsweise Ultraschallsensoren oder LiDAR Sensoren, ist der, dass die Menschen mithilfe eines MEMS Präsenzsensors auch ohne Bewegung erkannt werden können. Eine Skizze des Systems lässt sich in der folgenden Abbildung erkennen.


Abbildung 1: Skizze Smart Light

Der Sensor, welcher verwendet werden soll ist der D6T44L06 vom Hersteller OMRON. Das Datenblatt des Sensors kann hier eingesehen werden.

Anforderungen

ID Inhalt
Tabelle 1: Anforderungen
001 Das System muss Lebewesen erkennen können.
002 Der Mensch muss sich in einem definierten Bereich befinden, der dem Messbereich des MEMS Präsenzsensors entspricht, damit die Lichtquelle vom Steuergerät angeschaltet wird.
003 Die Lichtquelle muss angeschaltet bleiben, wenn sich das Lebewesen im Messbereich nicht bewegt.
004 Die Lichtquelle muss ausgeschaltet werden, wenn das Lebewesen sich nicht im definierten Messbereich befindet.
005 Alle elektrischen Komponenten des Messsystems müssen in einem entsprechenden Gehäuse integriert sein, mit Ausnahme der Lichtquelle.
006 Das System muss eine LED als Lichtquelle besitzen.
007 Das System muss von einem Mikrocontroller gesteuert werden.
008 Das System muss einen MEMS Präsenzsensor beinhalten.
009 Das System basiert auf einem Mikrocontroller der die Steuerung des Systems sowie Spannungsversorgung von Sensoren und Aktoren übernimmt.
010 Das Gehäuse des Systems muss im 3D-Druckverfahren hergestellt werden

Funktionaler Systementwurf/Technischer Systementwurf

Der funktionale Systementwurf lässt sich in der folgenden Abbildung erkennen.

Abbildung 2: Funktionaler Systementwurf


Komponentenspezifikation

ID Bezeichnung im System Technische Bezeichnung Spezifikation
Tabelle 2: Komponentenspezifikation
001 Sensor D6T-44L-06 Präsenzwärmesensor der 16 Temperaturen misst und sie in einer 4x4 Pixelmatrix hinterlegt
002 Datenverarbeitung Einlesen der Messwerte
003 Datenverarbeitung Interpretation der Messwerte
004 Datenverarbeitung Ansteuern der LED
005 LED1 Rote LED LED mit ungefähr 633 nm Wellenlänge
006 LED2 Blaue LED LED mit ungefähr 430 nm Wellenlänge
007 Widerstand 1 R1 330 Widerstand mit einer Toleranz von 5 %
008 Widerstand 2 R2 330 Widerstand mit einer Toleranz von 5 %
009 Gehäuse Grundkörper Abmaße(außen): 95 mm x 70 mm x 60 mm (LxBxH)
010 Gehäuse Deckel Abmaße(außen): 95 mm x 70 mm x 60 mm (LxBxH)
011 Versorgungsspannung Netzteil AC/DC Adapter mit 100-240 V Wechselspannung als Eingang und 9 V Gleichspannung als Ausgang

Umsetzung (HW/SW)

Hardware

Die einzelnen Komponenten können aus Tabelle 2 entnommen werden. Im folgenden Abschnitt wird insbesondere auf den Zusammenbau und das Zusammenwirken der Komponenten eingegangen.

Verdrahtungsplan

Der Verdrahtungsplan welcher mit der Software Fritzing erstellt wurde lässt sich in Abbildung 3 erkennen.


Abbildung 3: Fritzing Steckplatinenaufbau Smart Light Projekt


Bei Betrachtung von Abbildung 3 lässt sich erkennen, dass ein Arduino Uno dargestellt ist, welcher jedoch als Funduino Uno R3 gekennzeichnet ist. Dies liegt daran, dass es sich bei dem verwendeten Mikrocontroller um einen Arduino Uno Klon des Herstellers Funduino handelt. Beide Mikrocontroller sind von den Abmaßen, Anschlüssen und den technischen Daten identisch und somit wurde ein Arduino Uno für den Fritzing Entwurf verwendet, weil innerhalb dieser Software bisher keine Funduino Teile existieren. Des Weiteren wurden beide Status LEDs mit jeweils einem digitalen Ausgang des Funduino Uno verbunden und der Sensor über den I2C Bus an den Mikrocontroller angeschlossen. Anhand dieses Entwurfes wurde das System aufgebaut und anschließend der Schaltplan des Projektes ausgearbeitet.

Schaltplan

Der Verdrahtungsplan welcher mit der Software Multisim erstellt wurde lässt sich in Abbildung 4 erkennen.


Abbildung 4: Multisim Schaltplan Smart Light Projekt


In Abbildung 4 ist deutlich zu erkennen, dass der verwendete Funduino Uno mit einer externen Gleichspannungsquelle versorgt wird. Hierbei handelt es sich um ein Netzteil welches den Mikrocontroller mit 9 V versorgt. Die LEDs und der Sensor werden über den Mikrocontroller mit Spannung versorgt. Außerdem lässt sich erkennen, dass der Schaltplan aufgrund der Übersicht lediglich die belegten Steckverbindungsgruppen beinhaltet. Diese beiden Gruppen lassen sich in dem Steckplatinenaufbau in Abbildung 3 erkennen und somit auf dem Funduino Uno eindeutig zuordnen.

Software

Im folgenden Ablauf wird detailliert auf die erstellte Software des Projektes eingegangen. Grundlegend wurde die Software modellbasiert mit MATLAB Simulink erstellt. Dieses Modell ist in Abbildung 5 dargestellt.


Abbildung 5: Simulinkmodell des Smart Light Projektes


Um einen ersten Überblick über den Programmablauf zu erhalten, lässt sich in Abbildung 6 der Programmablaufplan der programmierten Software erkennen.


Abbildung 6: Programmablaufplan des Simulinkmodells


Die Software beginnt damit das Startkommando an den Sensor über den I2C Bus zu senden, damit er beginnt zu messen. Dies wird einmalig ausgeführt. Anschließend beginnt die endlose Zyklusschleife die nicht mehr verlassen wird. Innerhalb dieser Schleife wird zunächst ein 32 Byte langes Datenpaket über den I2C Bus ausgelesen. In diesem Datenpaket werden vom Sensor unter anderem die gemessenen Temperaturen übermittelt. Ursprünglich ist das Paket 35 Byte lang. Jedoch ist es mit den Bausteinen des "Simulink Support Package for Arduino Hardware" nicht möglich mehr als 32 Byte in einem Zyklus über den I2C auszulesen. Mehr Informationen zu dieser Problematik lassen sich unter dem Abschnitt Lessons Learned wiederfinden.

Nach dem Auslesen der Messdaten folgt die Berechnung der Temperaturen in der zugehörigen 4x4 Pixelmatrix des Sensor. Dieser Vorgang wurde genau wie der Detektionsalgorithmus in dem Simulinkmodell mithilfe eines "MATLAB Function" Blocks in dem Modell implementiert. In diesem Block befindet sich der in Abbildung 7 dargestellte Programmcode.


Abbildung 7: Programmcode getTemperature Funktion


Eingangswerte der Funktion sind die Bytes aus dem Datenpaket, die der Sensor über den I2C Bus an den Mikrocontroller sendet. Diese Bytes sind in der Variable data hinterlegt. Anschließend werden zunächst einmalig die verwendeten Variablen als persistent Datentyp deklariert und ein entsprechender Wert zugewiesen. Das 16. Temperaturpixel kann aufgrund der bereits beschriebenen Problematik nicht ausgesen und somit berechnet werden. Dementsprechend wird ihm dauerhaft der Wert NaN zugewiesen.

Als nächstes werden die anderen 15 Temperaturen aus den Bytes berechnet und an ihrer zugehörigen Stelle in der 4x4 Matrix hinterlegt. Abschließend wird die vollständige Matrix an die Variable temperature zurückgeben. Eine Rückgabevariable kann nicht als persistent Variable verwendet werden. Weitergehend folgt im Programmablauf der Detektionsalgorithmus. Der Programmcode dieser MATLAB Function ist in Abbildung 8 einsehbar.



Abbildung 8: Programmcode DetectionAlgorithm Funktion


Auch in dieser Funktion werden zu Anfang alle verwendeten Variablen als persistent Datentyp einmalig deklariert und falls vorhanden ein fester oder initialer Wert zugewiesen. Insgesamt beruht der Detektionsalgorithmus auf der Differenz zwischen den einzelnen Temperaturen der Pixelmatrix und einer berechneten Umgebungstemperatur. Für die Berechnung der Umgebungstemperatur werden zunächst alle gemessenen Temperaturen in einem Array nach Größe aufsteigend sortiert. Hiernach wird ein Tiefpassfilter 1. Ordnung verwendet.



stellt in dieser Gleichung den Mittelwert aus den vier kleinsten Temperaturwerten der Pixelmatrix dar. Diese Berechnung ergibt sich aus der Überlegung, dass das Smart Light System für die Wahrnehmung von Wärmesignaturen in einem Abstand von
ca. 2-3 m verwendet wird. Somit spannt sich die Pixelmatrix über einen Bereich von ungefähr 2.5 m^2 bis 5.7 m^2 auf (siehe Datenblatt). Da dieser Bereich im Vergleich mit der projizierten Fläche eines Menschen deutlich geringer ist, kann davon ausgegangen werden, dass mehrere Pixel repräsentative Messwerte für die Umgebungstemperatur besitzen.

Die Wirkung des verwendeten Tiefpassfilters lässt sich in Abbildung 9 erkennen.


Abbildung 9: Messung der Raumtemperatur


Es lässt sich deutlich erkennen, dass die Raumtemperatur über einen Zeitraum von 10 Sekunden konstant knapp unterhalb von 21 °C liegt. Dementsprechend konnte die gewünschte Wirkung mit der getroffenen Einstellung für = 0.6 erzielt werden. Die zeitliche Verzögerung des Messsignals (delay) durch das Tiefpassfilter kann vernachlässigt werden, weil es sich bei der Raumtemperatur um ein Messsignal mit keinen schnellen Änderungen handelt.

Im nächsten Schritt wird über jedes Temperaturpixel gegangen und die Differenz zur Umgebungstemperatur gebildet. Ist diese größer als die Variable dT_max, welche die maximale Abweichung darstellt, so wird in der Detektionsmatrix an der zugehörigen Stelle eine 1 hinterlegt. Diese 1 steht für ein gefundenes Objekt in dem jeweiligen Temperaturpixel. Anschließend wird die Anzahl an gefundenen Objekten gezählt und die Temperaturen der gefundenen Objekte abgespeichert. Wenn mindestens ein Objekt gefunden wird, schaltet das System die rote LED an, andernfalls die blaue. Abschließend wird die aktuelle Umgebungstemperatur in der Variable Temp_old für den nächsten Durchgang hinterlegt, damit diese im Tiefpassfilter verwendet werden kann.

Komponententest

Der Sensor konnte getestet werden indem dieser an den Arduino angeschlossen wurde und im Anschluss ein Testprogramm auf der Arduino IDE gestartet wurde. Die Ausgabe erfolgte wie gewünscht.

Die Komponententests zur Software werden im folgenden Erläutert:

1. getTemperature:

Die Komponente sollte die Messwerte aus dem Sensor in Simulink einlesen und uns Temperatur in Grad zurückgeben (Die Werte werden als Bits-geschickt). Dies funktioniert wie gewünscht die Ausgabe kann in folgender Abbildung betrachtet werden.

(Bild von der Ausgaben von getTemp)

2. Detection Algorithm:

Die Komponente soll die Messwerte interpretieren und uns Informationen zurückgeben ob im Messbereich ein Lebewesen erkannt wurde oder nicht. Dies ist nur mit vorhergehender Verarbeitung der Temperatur sinnvoll. Die Ausgabe wurde auf "Ja" und "Nein" begrenzt da wir nur zwei LED ansteuern und diese Informationen ausreichen. Es wäre aber auch möglich für alle Werte des Sensors (16) diese Information zu erhalten. Daher wurde diese Komponente zweimal getestet. Die Ergebnisse können in den folgenden Abbildungen betrachtet werden.

3. Ansteuern der LED

Diese Komponente ist ein Block in Simulink, welchem eine entsprechende Information( "0"=Aus, "1"=An) übergeben werden muss. Dies wurde durch einfaches Anlegen des entsprechen Signals (LED schon verbunden mit Arduino) getestet werden.


Die LED's konnten getestet werden, indem wir diese mit den Widerständen angeschlossen haben und dadurch überprüfen konnten ob alles in Ordnung ist. Die Widerstände wiederum wurden vorher mit einem Multimeter überprüft.

Der Grundkörper des Gehäuses konnte getestet werden indem geprüft wurde, ob die Komponenten (Arduino, Kabel, Sensor) in dem Grundkörper verbaut wurden. Dies war erfolgreich.

Der Deckel des Gehäuses konnte durch aufsetzen auf dem Grundkörper mit eingebauten LED's getestet werden. Dies war erfolgreich.

Ergebnis

Das Projekt konnte erfolgreich durchgeführt werden und wir konnten alle gesetzten Anforderungen erreichen. Das Endprodukt lies sich gut im Raum positionieren und hat zuverlässig Lebewesen erkannt. Zudem wird die LED wieder ausgeschaltet sobald die Person den definierten Bereich verlässt.

Probleme bei der Erkennung entstehen nur wenn sich (unbewegliche) Wärmequellen im Messbereich befinden. Dieses Problem wird nochmals ausführlich in dem Kapitel Lessons Learned erläutert.

Zusammenfassung

Lessons Learned

Durch das Verwenden von Matlab waren uns leider klare Grenzen in der Umsetzung des Projektes gesetzt. Durch die Schwierigkeiten Bibliotheken von Arduino in Matlab einzubauen konnten wir leider nicht alle Messwerte auswerten. Der letzte Messwert der 4x4 Matrix ist durch die Begrenzung auf 32 bit Verarbeitung in Matlab verloren gegangen. Weiterhin lies sich kein LED streifen oder eine LED Matrix mit (in dem Rahmen des Projektes) zumutbaren Umfang einbinden. Durch die Verwendung von einer LED gehen Informationen verloren, welche eigentlich ins der Software vorhanden wären.

- Menschen haben keine so signifikante Wärmesignatur wie erwartet und sind dementsprechend an der Oberfläche nicht so warm

- für die Differenzierung von anderen Wärmesignaturen wie Elektrogeräten müsste ein zusätzlicher Präsenzsensor verwendet werden

- Sensordatenfusion wäre möglich um den Algorithmus mit derselben Grundlage zu verwenden und das System zu verbessern

Projektunterlagen

Projektplan


Abbildung 6: Projektplan Smart Light

Projektdurchführung

YouTube Video

Weblinks

Präsenzsensor D6T-44L-06

Literatur


→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)