Smart Light: Unterschied zwischen den Versionen
Zeile 143: | Zeile 143: | ||
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 über den I2C auszulesen. Mehr Informationen zu dieser Problematik lassen sich unter dem Abschnitt Lessons Learned wiederfinden. | 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 6 dargestellte Programmcode. | 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 6 dargestellte Programmcode. | ||
Zeile 152: | Zeile 152: | ||
Eingangswerte der Funktion sind die Bytes aus dem Datenpaket, die der Sensor über den I2C Bus an den Mikrocontroller sendet. | 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 7 einsehbar. | |||
- Wirkung des Tiefpassfilters: | - Wirkung des Tiefpassfilters: |
Version vom 4. Januar 2022, 22:35 Uhr
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 |
---|---|
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 | Modul | Komponente |
---|---|---|
001 | Sensor | D6T44L06 |
002 | Datenverarbeitung | Einlesen der Messwerte |
003 | Datenverarbeitung | Interpretation der Messwerte |
004 | Datenverarbeitung | Ansteuern der LED |
005 | LED | Bezeichnung der LED |
006 | Gehäuse | Grundkörper |
005 | Gehäuse | Deckel |
Umsetzung (HW/SW)
Hardware
Die einzelnen Komponenten können aus Tabelle 1 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. Um einen ersten Überblick über den Programmablauf zu erhalten, lässt sich in Abbildung 5 der Programmablaufplan der programmierten Software erkennen.
Abbildung 5: 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 6 dargestellte Programmcode.
Abbildung 6: 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 7 einsehbar.
- Wirkung des Tiefpassfilters:
Abbildung 6: Messung der Raumtemperatur
Komponententest
Ergebnis
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
Literatur
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)