Infrarot Thermometer GY-906 MLX90614: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(68 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:GY-906-MLX-90614-Infrarot-Thermometer-back.png|thumb|rigth|450px|Abb. 1: Infrarot Thermometer GY-906 MLX90614]]
[[Datei:GY-906-MLX-90614-Infrarot-Thermometer-back.png|thumb|rigth|300px|Abb. 1: Infrarot Thermometer GY-906 MLX90614]]
{|class="wikitable"
{|class="wikitable"
|-
|-
Zeile 47: Zeile 47:
|}
|}
|}
|}


*'''Thema/Fragestellung:''' Messung der Entfernung mit dem Sensor Sharp GP2-0430K  
*'''Thema/Fragestellung:''' Messung der Entfernung mit dem Sensor Sharp GP2-0430K  
Zeile 75: Zeile 74:
=== Beschreibung Funktionsweise der verwendeten Hard- und Software ===
=== Beschreibung Funktionsweise der verwendeten Hard- und Software ===


* Arduino Uno R3: Der Arduino Uno R3 ist eine vielseitige Mikrocontroller-Platine, die auf dem ATmega328P-Prozessor basiert. Sie verfügt über 14 digitale Ein- und Ausgänge sowie 6 analoge Eingänge, was sie ideal für die Steuerung einer Vielzahl von Sensoren und Aktoren macht. Die Platine ist mit einem 16 MHz Quarzoszillator, einer USB-Schnittstelle zur Programmierung und Stromversorgung, einer Strombuchse für externe Stromquellen, einem ICSP-Header für die Programmierung des Mikrocontrollers und einem Reset-Button ausgestattet. Die Programmierung erfolgt über die benutzerfreundliche Arduino IDE, die eine breite Palette von Bibliotheken und Beispielen bietet, um den Einstieg zu erleichtern.
* Arduino Uno R3<ref name = "ard">https://wiki.hshl.de/wiki/index.php/Arduino:_Bibliothek_einbinden, abgerufen am 26.07.2024</ref>: Der Arduino Uno R3 ist eine vielseitige Mikrocontroller-Platine, die auf dem ATmega328P-Prozessor basiert. Sie verfügt über 14 digitale Ein- und Ausgänge sowie 6 analoge Eingänge, was sie ideal für die Steuerung einer Vielzahl von Sensoren und Aktoren macht. Die Platine ist mit einem 16 MHz Quarzoszillator, einer USB-Schnittstelle zur Programmierung und Stromversorgung, einer Strombuchse für externe Stromquellen, einem ICSP-Header für die Programmierung des Mikrocontrollers und einem Reset-Button ausgestattet. Die Programmierung erfolgt über die benutzerfreundliche Arduino IDE, die eine breite Palette von Bibliotheken und Beispielen bietet, um den Einstieg zu erleichtern.
* Infrarot-Thermometer GY-906 MLX90614: Das GY-906 MLX90614 ist ein hochpräziser Infrarot-Sensor, der zur berührungslosen Temperaturmessung verwendet wird. Er misst die von einem Objekt emittierte Infrarotstrahlung und wandelt diese in Temperaturwerte um. Der Sensor kann Temperaturen im Bereich von -70°C bis +380°C mit einer Genauigkeit von ±0,5°C messen. Er kommuniziert über die I2C-Schnittstelle, wodurch er leicht in bestehende Mikrocontroller-Systeme wie den Arduino integriert werden kann. Dank seiner schnellen Reaktionszeit und hohen Empfindlichkeit ist er ideal für Anwendungen in der Medizin, Industrie und Automobiltechnik.
* Infrarot-Thermometer GY-906 MLX90614<ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref>: Das GY-906 MLX90614 ist ein hochpräziser Infrarot-Sensor, der zur berührungslosen Temperaturmessung verwendet wird. Er misst die von einem Objekt emittierte Infrarotstrahlung und wandelt diese in Temperaturwerte um. Der Sensor kann Temperaturen im Bereich von -70°C bis +380°C mit einer Genauigkeit von ±0,5°C messen. Er kommuniziert über die I2C-Schnittstelle, wodurch er leicht in bestehende Mikrocontroller-Systeme wie den Arduino integriert werden kann. Dank seiner schnellen Reaktionszeit und hohen Empfindlichkeit ist er ideal für Anwendungen in der Medizin, Industrie und Automobiltechnik.
* LCD Modul 16x02 I2C: Das LCD Modul 16x02 I2C ist ein alphanumerisches Display, das 16 Zeichen pro Zeile und zwei Zeilen anzeigen kann. Es verwendet die I2C-Kommunikationsschnittstelle, was die Anzahl der benötigten Verbindungsleitungen reduziert und die Integration mit Mikrocontrollern vereinfacht. Dieses Display eignet sich hervorragend für die Darstellung von Textinformationen wie Temperaturmessungen, Statusmeldungen und anderen wichtigen Daten in Echtzeit. Die Hintergrundbeleuchtung und Kontraststeuerung sind anpassbar, um die Lesbarkeit in verschiedenen Lichtverhältnissen zu verbessern
* LCD Modul 16x02 I2C<ref name = "LCD">https://wiki.hshl.de/wiki/index.php/LCD_Modul_16x02_I2C, abgerufen am 26.07.2024</ref>: Das LCD Modul 16x02 I2C ist ein alphanumerisches Display, das 16 Zeichen pro Zeile und zwei Zeilen anzeigen kann. Es verwendet die I2C-Kommunikationsschnittstelle, was die Anzahl der benötigten Verbindungsleitungen reduziert und die Integration mit Mikrocontrollern vereinfacht. Dieses Display eignet sich hervorragend für die Darstellung von Textinformationen wie Temperaturmessungen, Statusmeldungen und anderen wichtigen Daten in Echtzeit. Die Hintergrundbeleuchtung und Kontraststeuerung sind anpassbar, um die Lesbarkeit in verschiedenen Lichtverhältnissen zu verbessern
* PC mit MATLAB/Simulink R2023b: Ein Computer, auf dem MATLAB/Simulink R2023b installiert ist, bietet eine leistungsstarke Umgebung für die grafische Modellierung, Simulation und Analyse dynamischer Systeme. MATLAB ist eine Programmiersprache und Umgebung, die speziell für numerische Berechnungen und Datenanalyse entwickelt wurde, während Simulink eine grafische Oberfläche für die Erstellung von Modellen und die Simulation von Systemen bietet. Diese Kombination ermöglicht es, komplexe Algorithmen zu entwickeln, zu testen und zu optimieren, was insbesondere in der Forschung und Entwicklung von Vorteil ist.
* PC mit MATLAB/Simulink R2023b<ref name = "MATLAB/Simulink">https://de.mathworks.com/products/simulink.html, abgerufen am 27.07.2024</ref>: Ein Computer, auf dem MATLAB/Simulink R2023b installiert ist, bietet eine leistungsstarke Umgebung für die grafische Modellierung, Simulation und Analyse dynamischer Systeme. MATLAB ist eine Programmiersprache und Umgebung, die speziell für numerische Berechnungen und Datenanalyse entwickelt wurde, während Simulink eine grafische Oberfläche für die Erstellung von Modellen und die Simulation von Systemen bietet. Diese Kombination ermöglicht es, komplexe Algorithmen zu entwickeln, zu testen und zu optimieren, was insbesondere in der Forschung und Entwicklung von Vorteil ist.
* Steckbrett: Ein Steckbrett, auch Breadboard genannt, ist ein unverzichtbares Werkzeug für das Prototyping elektronischer Schaltungen. Es besteht aus einer Vielzahl von Löchern, in die elektronische Bauteile und Verbindungsdrähte gesteckt werden können, ohne dass Löten erforderlich ist. Dies erleichtert das schnelle und flexible Zusammenstellen und Ändern von Schaltungen. Das Steckbrett ermöglicht es Entwicklern, verschiedene Konfigurationen zu testen und Fehler schnell zu beheben, bevor sie eine dauerhafte Platine erstellen.
* Steckbrett<ref name = "Steckbrett">https://www.az-delivery.de/products/breadboard, abgerufen am 28.07.2024</ref>: Ein Steckbrett, auch Breadboard genannt, ist ein unverzichtbares Werkzeug für das Prototyping elektronischer Schaltungen. Es besteht aus einer Vielzahl von Löchern, in die elektronische Bauteile und Verbindungsdrähte gesteckt werden können, ohne dass Löten erforderlich ist. Dies erleichtert das schnelle und flexible Zusammenstellen und Ändern von Schaltungen. Das Steckbrett ermöglicht es Entwicklern, verschiedene Konfigurationen zu testen und Fehler schnell zu beheben, bevor sie eine dauerhafte Platine erstellen.
* Jumper Kabel, männlich/männlich, 20 cm: Diese Jumper-Kabel sind 20 cm lange, flexible Verbindungsdrähte mit Stiftsteckern an beiden Enden. Sie werden verwendet, um elektrische Verbindungen zwischen Komponenten auf einem Steckbrett oder zwischen verschiedenen Modulen herzustellen. Die männlich/männlich-Konfiguration bedeutet, dass beide Enden des Kabels in Buchsen gesteckt werden können, was die Verdrahtung und Umverdrahtung in Prototypen und Experimenten vereinfacht.
* Jumper Kabel, männlich/männlich, 20 cm: Diese Jumper-Kabel sind 20 cm lange, flexible Verbindungsdrähte mit Stiftsteckern an beiden Enden. Sie werden verwendet, um elektrische Verbindungen zwischen Komponenten auf einem Steckbrett oder zwischen verschiedenen Modulen herzustellen. Die männlich/männlich-Konfiguration bedeutet, dass beide Enden des Kabels in Buchsen gesteckt werden können, was die Verdrahtung und Umverdrahtung in Prototypen und Experimenten vereinfacht.
* Buzzer: Ein Buzzer ist ein kleines elektromechanisches Bauteil, das zur Erzeugung von Tönen verwendet wird. Er kann über einen digitalen Ausgang eines Mikrocontrollers angesteuert werden, um akustische Signale zu erzeugen. Buzzers werden häufig in Projekten eingesetzt, um Alarme, Benachrichtigungen oder Bestätigungstöne auszugeben. Sie sind in der Lage, eine Vielzahl von Tönen zu erzeugen, die in Frequenz und Lautstärke variieren können, je nach den Anforderungen der Anwendung.
* Buzzer<ref name = "Buzzer">https://wiki.hshl.de/wiki/index.php/Piezo_Lautsprecher, abgerufen am 28.07.2024</ref>: Ein Buzzer ist ein kleines elektromechanisches Bauteil, das zur Erzeugung von Tönen verwendet wird. Er kann über einen digitalen Ausgang eines Mikrocontrollers angesteuert werden, um akustische Signale zu erzeugen. Buzzers werden häufig in Projekten eingesetzt, um Alarme, Benachrichtigungen oder Bestätigungstöne auszugeben. Sie sind in der Lage, eine Vielzahl von Tönen zu erzeugen, die in Frequenz und Lautstärke variieren können, je nach den Anforderungen der Anwendung.


=== Technische Daten ===
=== Technische Daten ===
Im Folgenden sind die technischen Daten des Infrarot-Thermometers aufgelistet<ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref>:
{| class="wikitable"
{| class="wikitable"
|-  
|+ style = "text-align: left"|Tabelle 3: Technische Daten des Primärsensors
| Messbereich || 0&thinsp;° .. 180&thinsp;°
|-
|-  
| Modell || MLX90614
| PWM-Modulation || analog
|-
|-  
| Messbereich Temperatur (Objekt) || -70&thinsp;°C .. +380&thinsp;°C
| PWM-Pulszykluszeit || 20&thinsp;ms
|-
|-  
| Messbereich Temperatur (Umgebung) || -40&thinsp;°C .. +125&thinsp;°C
| PWM-Pulsweite || 500-2400&thinsp;ms
|-
|-  
| Genauigkeit || ±0,5&thinsp;°C (0&thinsp;°C .. +50&thinsp;°C)
| Versorgungsspannung || 4.0&thinsp;V .. 7.2&thinsp;V
|-
|-  
| Auflösung || 0,02&thinsp;°C
| Versorgungsstrom || 20&thinsp;mA
|-
|-  
| Reaktionszeit || 0,5&thinsp;s
| Geschwingigkeit || 0,12&thinsp;s/60&thinsp;° (@4,8&thinsp;V, lastfrei)
|-
|-  
| Kommunikationsschnittstelle || I2C
| Drehmoment || 1,5&thinsp;kg/cm (@4,8&thinsp;V)
|-
|-  
| Betriebsspannung || 3,6&thinsp;V .. 5&thinsp;V DC
| Gewicht || 9&thinsp;g
|-
|-  
| Stromverbrauch || 1,5&thinsp;mA
| Getriebe || Kunststtoff
|-
|-  
| Emissionsgrad || 0,1 .. 1,0 (einstellbar)
| Arbeitstemperatur || 0&thinsp;°C .. +55&thinsp;°C
|-
|-  
| Sichtfeld || 35&thinsp;° (Standard)
| Abmessungen|| 22,2&thinsp;mm x 11,8&thinsp;mm x 31&thinsp;mm
|-
| Gehäuse || TO-39
|-
| Kalibrierung || Kalibriert für weite Temperaturbereiche
|-
| Abmessungen || 7,2&thinsp;mm Durchmesser, 5,6&thinsp;mm Höhe (exklusive Pins)
|}
|}
=== Pinbelegung ===
=== Pinbelegung ===
In diesem Kapitel wird die Pinbelegung des GY-906 MLX90614 anhand Tabelle 4 genauer beschrieben:
{| class="wikitable"
{| class="wikitable"
! style="font-weight: bold;" | Pin
|+ style = "text-align: left"|Tabelle 4: Pinbelegung des GY-906 MLX90614
! style="font-weight: bold;" | Belegung
|-
! style="font-weight: bold;" | Signal
| Pin || Beschreibung
|-
|-
| 1 || Versorgungsspannung VCC  || 5&thinsp;V
| VDD || Versorgungsspannung (3,6&thinsp;V .. 5&thinsp;V DC)
|-
|-
| 2 || Triggereingang || TTL-Pegel
| VSS || Masse (GND)
|-
|-
| 3 || Echo, Ausgang Messergebnis  || TTL-Pegel
| SCL || I2C-Taktleitung (Clock)
|-
|-
| 4 || Masse (GND) || 0&thinsp;V
| SDA || I2C-Datenleitung (Data)
|}
|}
== Funktionsweise Primärsensor ==
Abbildung 2 zeigt die Funktionsweise des Primärsensors in Form eines Blockschaltbildes.<ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref>
[[Datei:Blockschaltbild des GY-906 MLX90614.jpg|thumb|550px|Abb. 2: Blockschaltbild des GY-906 MLX90614<ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref>]]
Der MLX90614 nutzt eine Kombination aus Thermopile-Detektor, Operationsverstärker, ADC und DSP, gesteuert von einer State Machine, um präzise und zuverlässige Temperaturmessungen durchzuführen und diese Daten über eine PWM-Ausgabe zur Verfügung zu stellen. Ein interner Spannungsregler stellt die notwendige Stabilität für den Betrieb sicher. Diese strukturierte Verarbeitungskette ermöglicht es dem Sensor, genaue Temperaturmessungen ohne direkten Kontakt durchzuführen.
* Thermopile Detektor (81101): Der Sensor beginnt mit einem Thermopile-Detektor, der die einfallende Infrarotstrahlung in eine elektrische Spannung umwandelt. Diese Strahlung stammt von der Wärme des zu messenden Objekts.
* Operationsverstärker (OPA): Diese Spannung wird dann durch einen Operationsverstärker verstärkt, um das Signal für die weitere Verarbeitung vorzubereiten.
* Analog-Digital-Wandler (ADC): Nach der Verstärkung wird das analoge Signal vom ADC in digitale Daten umgewandelt. Dieser Schritt ist entscheidend, um die Daten für die digitale Verarbeitung nutzbar zu machen.
* Digitaler Signalprozessor (DSP): Die digitalisierten Daten werden an einen digitalen Signalprozessor weitergeleitet, der die Rohdaten analysiert und die tatsächliche Temperatur berechnet. Der DSP nutzt spezifische Algorithmen, um die Genauigkeit der Messung zu gewährleisten.
* PWM-Ausgabe: Die verarbeiteten Temperaturdaten können als PWM-Signal (Pulsweitenmodulation) ausgegeben werden, das als Schnittstelle zur Übertragung der Temperaturdaten an andere Systeme dient.
* State Machine: Eine interne State Machine steuert den gesamten Prozess, vom Einlesen der Infrarotstrahlung über die Signalverstärkung und -wandlung bis zur Ausgabe der Temperaturdaten. Sie koordiniert die verschiedenen Schritte und stellt sicher, dass der Sensor korrekt funktioniert.
* Spannungsregler: Schließlich sorgt ein interner Spannungsregler dafür, dass alle Komponenten des Sensors mit einer stabilen Betriebsspannung versorgt werden, was für die zuverlässige Funktion des Sensors unerlässlich ist.


== Versuchsaufbau und Durchführung ==
== Versuchsaufbau und Durchführung ==
=== Versuchsaufbau ===
=== Versuchsaufbau ===
[[Datei:Schaltplan Sharp.jpg|thumb|rigth|450px|Abb. 2: Schaltplan]]
Der Versuchsaufbau wird durch einen Schaltplan (Abb. 3), Anschlussplan (Abb. 4) und Foto des Aufbaus (Abb. 5) dokumentiert.
[[Datei:Anschlussplan Sharp.png|thumb|rigth|450px|Abb. 3: Anschlussplan]]
 
[[Datei:Foto Sharp.png|thumb|rigth|450px|Abb. 4: Foto des Versuchsaufbaus]]
{| class="mw-datatable"
Der Versuchsaufbau wird durch einen Schaltplan (Abb. 2), Anschlussplan (Abb. 3) und Foto des Aufbaus (Abb. 4) dokumentiert.
! style="font-weight: bold;" |
! style="font-weight: bold;" |
|+ style = "text-align: left"|
|-
|[[Datei:Schaltplan des GY-906 MLX90614.jpg|thumb|rigth|450px|Abb. 3: Schaltplan<ref> Eigenes Dokument </ref>]]
|[[Datei:Anschlussplan des GY-906 MLX90614.jpg|thumb|rigth|450px|Abb. 4: Anschlussplan<ref> Eigenes Dokument </ref>]]
|}<br>
 
[[Datei:Versuchsaufbau des GY-906 MLX90614.jpg|thumb|rigth|450px|Abb. 5: Foto des Versuchsaufbaus<ref> Eigenes Dokument </ref>]]
 
'''Verkabelung des GY-906 MLX90614 mit Arduino und LCD'''
 
1. LCD-Display:
* VCC und GND: Sind mit 5V und GND des Arduino verbunden.
* SDA und SCL: Sind mit den Pins A4 und A5 des Arduino verbunden (I2C-Kommunikation).
 
2. GY-906 MLX90614 Sensor:
* VCC und GND: Sind mit 5V und GND des Arduino verbunden.
* SDA und SCL: Sind mit den Pins A4 und A5 des Arduino verbunden.
 
3. Buzzer:
* Positiver Anschluss: Ist mit dem digitalen Pin D13 des Arduino verbunden.
* Negativer Anschluss: Ist mit GND verbunden.
 
'''Funktionsweise'''
 
1. Temperaturmessung:
* Der GY-906 MLX90614 misst die Temperatur des Objekts berührungslos und gibt die Daten über I2C an den Arduino weiter.
 
2. Datenverarbeitung mit Simulink:
* Die vom Sensor erfassten Temperaturdaten werden vom Arduino an Simulink übertragen. Simulink filtert die Daten und überprüft ihre Stabilität.
 
3. Anzeige auf dem LCD:
* Die berechnete Temperatur wird vom Arduino an das LCD-Display gesendet und angezeigt.
 
4. Buzzer:
* Wenn die Temperaturwerte über einen bestimmten Zeitraum stabil bleiben, wird der Buzzer aktiviert und gibt einen Ton aus.
 
'''Detaillierter Anschlussplan'''
 
1. GY-906 MLX90614:
* VCC (Sensor) → 5V (Arduino)
* GND (Sensor) → GND (Arduino)
* SDA (Sensor) → A4 (Arduino)
* SCL (Sensor) → A5 (Arduino)
 
2. LCD Display:
* VCC (LCD) → 5V (Arduino)
* GND (LCD) → GND (Arduino)
* SDA (LCD) → A4 (Arduino)
* SCL (LCD) → A5 (Arduino)
 
3. Buzzer:
* Positiver Anschluss (Buzzer) → D13 (Arduino)
* Negativer Anschluss (Buzzer) → GND (Arduino)
 
=== Implementierung in Simulink ===
[[Datei:Simulation GY-906 MLX90614.jpg|rechts|mini|850px| Abb. 6: Simulink-Modell zur Sensorverarbeitung<ref> Eigenes Dokument </ref>]]
 
In der Abbildung ist das Simulink-Modell dargestellt, welches die Temperaturmessung mithilfe des GY-906_MLX90614 Sensors über ein Arduino-Board beschreibt. Der Prozess beginnt mit dem Einlesen der Temperaturdaten über die I2C-Schnittstelle, wandelt die Daten in lesbare Temperaturwerte um, filtert und speichert die Daten und gibt sie schließlich aus. Nachfolgend wird der Aufbau und die Funktionsweise des Modells detailliert erläutert.
 
Eine Kennline wird hierbei nicht benötigt, da die Eingangswerte des Sensors durch eine Berechnung in Grad Celcius umgerechnet werden.
 
'''Einlesen der Temperatur über die I2C-Schnittstelle'''
 
Das Modell liest die Temperaturdaten von einem Arduino-Board ein, das über die I2C-Schnittstelle mit dem GY-906_MLX90614 Sensor verbunden ist. Hierfür wird der `I2C Controller Read` Block verwendet, der speziell für die Kommunikation mit I2C-Geräten konzipiert ist. Die Peripherieadresse des Sensors ist auf 0x5A festgelegt. Die eingelesenen Daten werden als `double`-Werte weitergegeben und stellen die Rohwerte dar, die noch umgerechnet werden müssen.
 
'''Umrechnung der Sensorwerte in die Temperatur in °C'''
 
Der MLX90614-Sensor von Melexis liefert Temperaturmessungen in Form von Rohdatenwerten, die in einem speziellen Format kodiert sind. Laut den Datenblatt-Spezifikationen<ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref>:
 
* Die Rohdaten <math>T_{raw} </math> werden als 16-Bit-Wert übertragen.
* Diese Rohdaten repräsentieren die Temperatur in Kelvin multipliziert mit einem Faktor von 50.
 
Formel aus dem Datenblatt:
 
Die Formel zur Umrechnung der Rohdaten in Kelvin lautet:
 
<math>T_{Kelvin} = \frac{T_{raw}}{50} </math> <br>
 
Die Temperatur in Kelvin <math>T_{Kelvin} </math> wird dann in Celsius umgerechnet, indem man den absoluten Nullpunkt (273.15 K) subtrahiert:
 
<math>T_{Celsius} = {T_{Kelvin}}-273.15 </math> <br>
 
Zusammengesetzte Formel:
 
Kombiniert ergibt sich die direkte Formel zur Umrechnung der Rohdaten <math>T_{raw} </math> in Grad Celsius:
 
<math>T_{Celsius} = \frac{T_{raw}}{50}-273.15 </math> <br>
 
Zusammenfassung:
 
Die Verwendung der Zahl 50 in der Umrechnungsformel für den MLX90614-Sensor basiert auf den Spezifikationen des Sensors und dient dazu, die Genauigkeit und Auflösung der Temperaturmessungen zu erhöhen. Dies ist eine designbedingte Entscheidung des Sensorherstellers, die in den technischen Dokumentationen und Datenblättern des Sensors beschrieben wird. Durch diese Umrechnung wird sichergestellt, dass die Sensorwerte in eine physikalisch sinnvolle Einheit überführt werden, die für die weitere Verarbeitung genutzt werden kann.
 
'''Filterung der Messwerte durch einen Median-Filter'''
 
Um die Messwerte zu glätten und potenzielle Ausreißer zu minimieren, wird ein Median-Filter verwendet. Der Median-Filter berechnet für jedes Datenfenster den Medianwert, der weniger empfindlich auf extreme Werte reagiert. Dadurch entsteht ein stabileres und verlässlicheres Signal. Im Modell wird der gefilterte Wert als „gefiltertes Signal“ bezeichnet und für nachfolgende Berechnungen sowie die Speicherung genutzt.
 
'''Mittelwert der letzten 5 Werte'''
 
Um eine zusätzliche Glättung und Stabilisierung der Daten zu erreichen, wird der Mittelwert der letzten fünf gemessenen Werte berechnet. Dies geschieht, indem die letzten fünf Werte summiert und anschließend durch fünf geteilt werden. Diese Mittelwertbildung trägt dazu bei, kurzfristige Schwankungen zu reduzieren und eine genauere Repräsentation der Temperatur über einen kleinen Zeitraum zu geben.
 
'''Buzzer-Steuerung'''
 
Eine wichtige Komponente des Modells ist die Buzzer-Steuerung. Diese Funktion wird aktiviert, wenn die Differenz zwischen dem gefilterten Signal und dem Mittelwert der letzten fünf Werte einen bestimmten Schwellwert überschreitet. Die genaue Logik ist wie folgt:
1. Differenzbildung: Die Differenz zwischen dem gefilterten Signal und dem Mittelwert wird berechnet.
2. Absolutwert und Vergleich: Der Absolutwert dieser Differenz wird mit dem Schwellwert (0.5) verglichen.
3. Aktivierung des Buzzers: Wenn der Absolutwert der Differenz größer als 0.5 ist, wird ein Signal an den Pin 13 des Arduino-Boards gesendet, wodurch der Buzzer aktiviert wird. Andernfalls bleibt der Buzzer inaktiv.
 
Diese Funktion dient als akustische Benachrichtigung, wenn erhebliche Temperaturabweichungen festgestellt werden, und kann als Alarm- oder Warnsystem genutzt werden.
 
'''Speicherung der Messdaten'''
 
Das Modell sieht ebenfalls die Speicherung der relevanten Messdaten vor. Es werden drei Hauptkategorien von Daten gespeichert:
1. Mittelwert der letzten fünf Werte: Diese Daten geben einen geglätteten Überblick über die Temperaturentwicklung.
2. Gefiltertes Signal: Die durch den Median-Filter geglätteten Daten werden gespeichert, um stabile Temperaturverläufe zu dokumentieren.
3. Rohes Signal: Die ungefilterten Rohdaten werden gespeichert, um eine detaillierte Analyse der originalen Messwerte zu ermöglichen.
 
Die Speicherung dieser Daten ermöglicht eine nachträgliche Auswertung und Analyse der Temperaturmessungen und hilft dabei, Trends oder Anomalien zu identifizieren.
 
'''Zusammenfassung'''
 
Das Simulink-Modell für den GY-906_MLX90614 Sensor bietet eine umfassende Lösung zur Temperaturmessung und -überwachung. Es kombiniert die Datenaufnahme, Umrechnung, Filterung, Mittelwertbildung und eine Buzzer-Steuerung, um präzise und zuverlässige Temperaturwerte zu liefern. Durch die Speicherung der Daten können diese für eine detaillierte Analyse und Weiterverarbeitung genutzt werden. Das Modell ist somit ein leistungsfähiges Werkzeug für Anwendungen, bei denen eine genaue und kontinuierliche Temperaturüberwachung erforderlich ist.


=== Versuchsdurchführung ===
=== Versuchsdurchführung ===
[[Datei:Simulink Sharp.png|thumb|rigth|450px|Abb. 5: Simulink-Modell]]
Der Versuchsaufbau wird durch einen Schaltplan (Abb. 3), Anschlussplan (Abb. 4) und ein Foto des Aufbaus (Abb. 5) dokumentiert.
Das Modell zur Datenverarbeitung wurde gemäß Abb. 5 in Simulink aufgebaut. Die Messdaten wurden aufgezeichnet. Ein Video der Versuchsdurchführung findet sich hier.
 
Die Durchführung des Experiments beginnt mit dem Flashen des Arduino Uno R3 mit der entsprechenden Firmware. Nachdem alle relevanten Einstellungen vorgenommen wurden, wird die erste Messung gestartet. Der Temperatursensor wird statisch in einem Raum platziert, um die Raumtemperatur zu ermitteln. Der Sensor bleibt dabei über mehrere Minuten unbewegt, um stabile und zuverlässige Messdaten zu gewährleisten. Diese Messung dient dazu, die Genauigkeit des Temperatursensors unter statischen Bedingungen zu überprüfen und sicherzustellen, dass der Sensor konsistente Werte liefert.
 
Im Anschluss wird eine dynamische Messung zur Einstellung des Medianfilters durchgeführt. Hierzu wird der Temperatursensor in einem Backofen aufgehängt. Der Backofen wird von Raumtemperatur auf 50°C aufgeheizt. Während dieses Vorgangs werden kontinuierlich Temperaturdaten erfasst, um die Reaktion des Sensors auf Temperaturänderungen zu analysieren. Das Ziel dieser Messung ist es, die Parameter des Medianfilters zu optimieren, um ein verwertbares und stabiles Signal zu erhalten. Es soll überprüft werden, ob das aktuelle Fenster des Medianfilters groß genug gewählt ist oder ob Anpassungen erforderlich sind, um die Qualität der dynamischen Messungen zu verbessern.
 
'''Referenzwerte der jeweiligen Versuche'''
 
Für die statische Messung, bei der der Temperatursensor in einem Raum platziert wird, dient die Raumtemperatur als Referenzwert. Dieser Referenzwert wird mithilfe eines präzisen digitalen Thermometers parallel gemessen (28.3 °C, Dachgeschosswohnung). Dadurch können die vom Sensor erfassten Temperaturwerte mit den tatsächlichen Raumtemperaturen verglichen werden, um die Genauigkeit und Konsistenz des Sensors unter statischen Bedingungen zu überprüfen.
 
Bei der dynamischen Messung, bei der der Temperatursensor in einem Backofen aufgehängt und der Backofen von Raumtemperatur auf 50°C aufgeheizt wird, dient die Temperatur des Backofens als Referenzwert. Der Vergleich der Sensorablesungen mit den tatsächlichen Temperaturwert des Backofens ermöglicht die Analyse und Optimierung des Medianfilters, um sicherzustellen, dass der Sensor auch unter dynamischen Bedingungen verlässliche und stabile Temperaturdaten liefert.


'''Modelleinstellungen:''' Arduino Uno, Solver: Fixed-step, discrete, Abtastrate: 0,001 s
'''Modelleinstellungen:''' Arduino Uno, Solver: Fixed-step, discrete, Abtastrate: 0,1 s


=== Versuchsbeobachtung ===
=== Versuchsbeobachtung ===
[[Datei:Sharp Ergebnis 1.png|thumb|rigth|450px|Abb. 6: Darstellung des Rohsignals des IR-Entfernungssensors (rote Kurve)]]
Im Folgenden werden die Versuchsbeobachtungen der statischen und dynamischen Messung erläutert.
[[Datei:Sharp Ergebnis 2.png |thumb|rigth|450px|Abb. 7: Darstellung von dynamischen Messwerten des IR-Entfernungssensors]]
 
Das Signal des Sensors weist alle 40&thinsp;ms systematische Ausreisser auf (vgl. Abb. 6, rote Kurve).
'''Statische Messung'''
 
Die statische Messung hat gezeigt, dass die Referenztemperatur von 29 °C nahezu erreicht wird, wie in Abbildung 7 (gelbe Kurve) dargestellt. Es sind keine großen Schwankungen oder Ausreißer zu erkennen, die das Messergebnis signifikant verfälschen könnten. Dies deutet darauf hin, dass der Temperatursensor unter statischen Bedingungen sehr genau arbeitet und konsistente Messwerte liefert.
Das Medianfilter, dessen Einfluss in Abbildung 7 durch die blaue Kurve veranschaulicht wird, zeigt, dass es keinen erheblichen Einfluss auf das bereits gut geglättete Messergebnis hat. Dennoch trägt das Medianfilter zu einer zusätzlichen Glättung der Daten bei, indem es kleinere Schwankungen weiter reduziert. Dies sorgt für eine noch gleichmäßigere Datenkurve und kann helfen, gelegentliche Störsignale zu eliminieren.
Zusätzlich wurde der Buzzer passend ausgelöst, wie in Abbildung 8 (blaue Kurve) zu sehen ist. Der Buzzer aktiviert sich, wenn die Differenz zwischen dem Mittelwert der letzten fünf Messwerte und dem aktuellen Wert kleiner als 0,5 °C ist. Dieses Kriterium gewährleistet, dass der Buzzer nur bei stabilen Temperaturveränderungen anspringt, wodurch Fehlalarme minimiert werden. Diese Funktionsweise ist auch in einem begleitenden Video dargestellt, das den Auslösemechanismus des Buzzers demonstriert.
 
{| class="mw-datatable"
! style="font-weight: bold;" |
! style="font-weight: bold;" |
|+ style = "text-align: left"|
|-
|[[Datei:Messung 1 GY-906 MLX90614.jpg|thumb|rigth|550px|Abb. 7: Gegenüberstellung des un-/gefilterten Signals<ref> Eigenes Dokument </ref>]]
|[[Datei:Messung 2 GY-906 MLX90614.jpg|thumb|rigth|550px|Abb. 8: Darstellung der berechneten Differenz und Verhalten des Buzzers<ref> Eigenes Dokument </ref>]]
|}<br>
 
[[Datei:Fehlermeldung GY-906 MLX90614.jpg|thumb|rigth|550px|Abb. 9: Fehlermeldung - MATLAB/Simulink<ref> Eigenes Dokument </ref>]]
 
'''Dynamische Messung'''
 
Die dynamische Messung konnte leider nicht durchgeführt werden, da beim ausführen des Programms sehr häufig eine Fehlermeldung erschienen ist (siehe Abbildung 9), weshalb der Sensor nicht ausgelesen werden konnte. Die genaue Ursache konnte nicht ermittelt werden, wobei die Vermutung jedoch darauf liegt, dass die I2C-Kommunikation nicht korrekt eingestellt ist. Auch nach ausgiebiger Recherche konnte der Fehler nicht behoben werden. Daher wird im Folgenden nur mit der statischen Messung fortgeführt.
 
=== Messunsicherheit ===
Folgend wird die Messunsicherheit anhand der statischen Messung bestimmt, um die Vertrauenswürdigkeit des Sensors und der Messwerte zu bewerten.
 
* <math> Quantisierungsfehler = 0.02 °C </math> <ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref><br>
* <math>Messunsicherheit = 0.5 °C </math> <ref name = "MLX90614">https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024</ref><br>
 
Daraus ermittelt sich die Standartunsicherheit Typ B (uB):
 
<math>uB = \sqrt{Quantisierungsfehler^2+Messunsicherheit^2} = \sqrt{(0.02 °C)^2+(0.5 °C)^2} = 0.5004 °C </math> <br>
 
Folglich muss nun die Standardunsicherheit Typ A und letztlich Typ C berechnet werden. Leider war es jedoch nicht möglich, eine statische Messung aufzunehmen, bei der die Messdaten gespeichert wurden. Die statische Messung hat zwar nach vielen Versuchen ein paar Mal funktionier, doch zu diesem Zeitpunkt wurden die Messdaten noch nicht im Workspace korrekt abgespeichert. Wenn in Zukunft jedoch die Standardunsicherheit A (uA) berechnet wird, kann mit folgender Formel die gesamte Standartunsicherheit Typ C errechnet und ein anschaulicher Plot erstellt werden:
 
<math>uC = \sqrt{uA^2+uB^2} </math> <br>
 
Die absolute Messunsicherheit (uAbs) berechnet sich dann folgendermaßen, wobei k den Grad des Vertrauens beschreibt (Bei 1 Sigma entspricht dies k=2):
 
<math>uAbs = k \cdot uC </math> <br>


== Auswertung==
== Auswertung==
Die Messhypothese wurde verworfen. Der Sensor weist systematische Messwertausreisser auf.


Die Ausreisser lassen sich mit einem Signalfilter eliminieren. Hierzu eignet sich ein Rangordnungsfilter (z.&thinsp;B. Median-Filter). Das Filter wird hierzu auf eine Fensterbreite von 30 Werten
Die statische Messung zeigte, dass die Referenztemperatur von 29 °C nahezu erreicht wird, wie in Abbildung 7 (gelbe Kurve) dargestellt. Die Messwerte waren stabil, und es traten keine signifikanten Schwankungen oder Ausreißer auf, die das Ergebnis verfälschen könnten. Dies deutet darauf hin, dass der Temperatursensor unter statischen Bedingungen sehr genau arbeitet und konsistente Messwerte liefert.
eingestellt. Das zufriedenstellende Filterergebnis für statische Werte zeigt Abb. 6 als blaue Kurve. Es konnte mit dynamische Werten verifiziert werden (vgl. Abb. 7). Das Datenblatt ([2, S. 6]) belegt die Messungen und bezeichnet die Messausreisser als "instabile Ausgabe" für maximal 5&thinsp;ms alle 40&thinsp;ms. Mit 50 Werten erhöht sich die Filterwirkung, es entsteht jedoch ein Delay von 10&thinsp;ms. Mit 10 Werten ist die Filterwirkung zu gering.
 
Das Medianfilter, dessen Einfluss in Abbildung 7 durch die blaue Kurve veranschaulicht wird, zeigte keinen erheblichen Einfluss auf die bereits gut geglätteten Messergebnisse. Dennoch trug das Medianfilter zu einer zusätzlichen Glättung der Daten bei, indem es kleinere Schwankungen weiter reduzierte. Dies sorgte für eine gleichmäßigere Datenkurve und half, gelegentliche Störsignale zu eliminieren.
 
Zusätzlich wurde der Buzzer passend ausgelöst, wie in Abbildung 8 (blaue Kurve) zu sehen ist. Der Buzzer aktivierte sich, wenn die Differenz zwischen dem Mittelwert der letzten fünf Messwerte und dem aktuellen Wert kleiner als 0,5 °C war. Dieses Kriterium gewährleistete, dass der Buzzer nur bei stabilen Temperaturveränderungen ansprang, wodurch Fehlalarme minimiert wurden.
 
Die dynamische Messung zur Einstellung des Medianfilters wurde leider nicht durchgeführt. Beim Ausführen des Programms trat sehr häufig eine Fehlermeldung auf (siehe Abbildung 9), wodurch der Sensor nicht ausgelesen werden konnte. Die genaue Ursache der Fehlermeldung konnte nicht ermittelt werden, jedoch besteht die Vermutung, dass die I2C-Kommunikation nicht korrekt eingestellt war. Auch nach ausgiebiger Recherche konnte der Fehler nicht behoben werden. Daher wird im Folgenden nur mit der statischen Messung fortgeführt.
 
Die durchgeführte statische Messung und die Analyse der Ergebnisse zeigen, dass der Temperatursensor unter statischen Bedingungen genaue und verlässliche Daten liefert. Die Anwendung des Medianfilters trägt zur zusätzlichen Glättung der Daten bei, ohne die Messgenauigkeit signifikant zu beeinträchtigen. Aufgrund der aufgetretenen Probleme bei der dynamischen Messung konnte diese nicht durchgeführt werden, weshalb die Auswertung sich auf die Ergebnisse der statischen Messung beschränkt. Der Sensor erfüllt unter den getesteten statischen Bedingungen die Anforderungen an Präzision und Zuverlässigkeit.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Testbericht gegen die Anforderungen&thinsp;</strong>
|-
| Der Test der Anforderungen wurden nicht explizit und nachvollziehbar dokumentiert. Anhand des Wiki-Artikels konnte nachfolgender Erfüllungsgrad abgelesen werden.
{| class="wikitable"
|-
! Req. !! Beschreibung !! Testergebnis
|-
| 1 || Die Temperatur in °C muss mittels Infrarot Thermometer GY-906 MLX90614, Arduino und Simulink gemessen werden.|| <span style="color:green">☑</span> 
|-
| 2 || Der Messbereich muss bestimmt werden. || <span style="color:red">☒</span>
|-
| 3 || Die Messunsicherheit (1σ) muss für den Messbereich ermittelt und als Vertrauensbereich angezeigt werden. || <span style="color:red">☒</span>
|-
| 4 || Der Sensor muss kalibriert werden. || <span style="color:green">☑</span>
|-
| 5 || Für den Messbereich muss die Temperatur referenziert werden. || <span style="color:red">☒</span>
|-
| 6 || Die Messwerte müssen über der Zeit gefiltert werden.  || <span style="color:green">☑</span>
|-
| 7 || Ein Piepton muss anzeigen, wenn der Messwert stabil/konstant ist. || <span style="color:green">☑</span>
|-
| 8 || Das Sensorsystem muss die Temperatur in °C auf dem [[LCD_Modul_16x02_I2C|LCD-Display]] anzeigen. || <span style="color:red">☒</span>
|}
|}
 
== Zusammenfassung und Ausblick ==
== Zusammenfassung und Ausblick ==
* Zusammenfassung der Kapitel 1-4
 
* Diskussion der Ergebnisse
'''Zusammenfassung'''
* Ausblick
 
* Selbstreflexion/Lessons learned
Das Infrarot-Thermometer GY-906 MLX90614 ist ein fortschrittlicher Sensor, der für präzise und berührungslose Temperaturmessungen entwickelt wurde. In diesem Projekt wurde der Sensor verwendet, um Temperaturmessungen unter statischen und dynamischen Bedingungen durchzuführen. Der Versuchsaufbau umfasste die Integration des Sensors mit einem Arduino Uno R3 und die Verarbeitung der Messdaten mithilfe von Simulink.
 
Die statische Messung zeigte, dass der Sensor in der Lage ist, die Referenztemperatur von 29 °C nahezu genau zu erreichen, ohne signifikante Schwankungen oder Ausreißer. Das Medianfilter trug zusätzlich zur Glättung der Daten bei, was die Stabilität der Messergebnisse weiter verbesserte. Der Buzzer wurde passend ausgelöst, wenn die Temperaturänderungen innerhalb eines bestimmten Schwellenwertes lagen.
 
Leider konnte die dynamische Messung nicht durchgeführt werden, da beim Ausführen des Programms häufig eine Fehlermeldung auftrat, die das Auslesen des Sensors verhinderte. Die genaue Ursache konnte nicht ermittelt werden, jedoch wird vermutet, dass die I2C-Kommunikation nicht korrekt eingestellt war. Trotz intensiver Fehlersuche konnte das Problem nicht behoben werden, weshalb die Auswertung sich auf die Ergebnisse der statischen Messung beschränkt.
 
'''Ausblick'''
 
Für zukünftige Arbeiten ist es wichtig, die Ursache der I2C-Kommunikationsprobleme zu identifizieren und zu beheben, um die dynamische Messung erfolgreich durchzuführen. Eine mögliche Lösung könnte die Überprüfung und Anpassung der I2C-Bus-Einstellungen oder der Austausch des Kommunikationsprotokolls sein. Zusätzlich muss ebenfalls die Messunsicherheit und Standardunsicherheit mit gespeicherten Messdaten berechnet werden.
 
Zusätzlich könnten weitere Experimente durchgeführt werden, um die Leistung des Sensors in verschiedenen Umgebungen und unter unterschiedlichen Bedingungen zu bewerten. Dazu gehört die Untersuchung der Sensorreaktion auf schnelle Temperaturänderungen sowie die Langzeitstabilität der Messungen.
 
Durch die gewonnenen Erkenntnisse können die Implementierung und Nutzung des MLX90614-Sensors in industriellen, medizinischen und automobiltechnischen Anwendungen weiter optimiert werden. Dies umfasst die Entwicklung robuster Algorithmen zur Datenverarbeitung und Filterung sowie die Integration des Sensors in komplexe Steuerungssysteme.
 
'''Selbstreflexion/Lessons Learned'''
 
Das Projekt hat gezeigt, wie wichtig es ist, sowohl die Hardware- als auch die Softwarekomponenten sorgfältig zu prüfen und zu validieren. Die Schwierigkeiten bei der dynamischen Messung haben verdeutlicht, dass die Kommunikation zwischen den Komponenten eine entscheidende Rolle spielt und gründlich getestet werden muss. Zudem hat die Arbeit mit dem Medianfilter die Bedeutung der Datenverarbeitung zur Verbesserung der Messgenauigkeit hervorgehoben.


== Ergebnisvideo ==
== Ergebnisvideo ==
Binden Sie hier Ihr Ergebnisvideo ein.
Im Ergebnisvideo wird das Simulink-Modell, das auf einem Arduino implementiert ist, demonstriert. Die Kennlinie zeigt deutlich, dass die Temperatur stabil gemessen wird, was zusätzlich durch das akustische Signal bestätigt wird. Dieses Signal dient als Indikator für die Stabilität des gemessenen Wertes. Der Messaufbau entspricht den angegebenen Spezifikationen und ist so eingerichtet, dass der Temperatur-Sensor keinen Störgrößen, wie Wind oder Wetterbedingungen unterlegen ist.
 
[[Datei:Messung GY906-mlx90614.mp4|thumb|rigth|450px|Darstellung der Versuchsdurchführung<ref> Eigenes Dokument </ref>]]
Anleitung: [[Videos_einbinden|Videos im Wiki einbinden]]


== Lernzielkrontrolle ==
== Lernzielkrontrolle ==
Zeile 187: Zeile 432:
* Simulink-Modell
* Simulink-Modell
* Originaldateien (PAP, Schaltplan,... )
* Originaldateien (PAP, Schaltplan,... )
----
----
→ zurück zum Hauptartikel: [[BSE_Angewandte_Informatik_-_SoSe24|BSE Angewandte Informatik SoSe24]] | [[BSE_Angewandte_Informatik_-_SoSe24_-_Hausarbeit|Hausarbeit SoSe24]]
→ zurück zum Hauptartikel: [[BSE_Angewandte_Informatik_-_SoSe24|BSE Angewandte Informatik SoSe24]] | [[BSE_Angewandte_Informatik_-_SoSe24_-_Hausarbeit|Hausarbeit SoSe24]]

Aktuelle Version vom 10. August 2024, 10:43 Uhr

Abb. 1: Infrarot Thermometer GY-906 MLX90614
Autor: Johann Kismann
Studiengang: Business and Systems Engineering
Modul: BSE-M-2-1.03, Hausarbeit in Angewandte Informatik gehalten von Prof. Dr.-Ing. Schneider
Semester: Sommersemester 2024
Abgabetermin: 28.07.2024

Einführung

Das Infrarot-Thermometer GY-906 MLX90614 ist ein fortschrittlicher Sensor, der zur präzisen und berührungslosen Temperaturmessung entwickelt wurde. Es nutzt die Infrarotstrahlung, die von Objekten emittiert wird, um deren Temperatur genau zu bestimmen. Diese Eigenschaft macht es besonders nützlich in Anwendungen, bei denen herkömmliche Thermometer aufgrund von Kontaminationsrisiken, Zugangsproblemen oder der Notwendigkeit einer schnellen Messung nicht geeignet sind.

In der Industrie wird der Sensor häufig zur Überwachung von Produktionsprozessen eingesetzt, um sicherzustellen, dass Maschinen und Materialien die richtigen Temperaturen haben. Im Automobilbereich kann er zur Überwachung von Motor- und Abgastemperaturen verwendet werden, was zur Verbesserung der Effizienz und Sicherheit beiträgt. In der Medizintechnik ermöglicht der Sensor die berührungslose Messung der Körpertemperatur, was besonders in Zeiten von Infektionskrankheiten von Vorteil ist.

Dieser Artikel bietet einen detaillierten Überblick über die Funktionsweise und die technischen Spezifikationen des GY-906 MLX90614. Darüber hinaus werden praktische Beispiele und Anwendungsfälle vorgestellt, um den Leserinnen und Lesern eine fundierte Grundlage für die Integration dieses Sensors in ihre eigenen Projekte zu bieten. Das Ziel ist es, die vielfältigen Einsatzmöglichkeiten und die einfache Implementierung des GY-906 MLX90614 zu veranschaulichen und so dessen Potenzial voll auszuschöpfen.

Aufgabenstellung

Messen Sie die Temperatur mit dem Infrarot Thermometer (Pyrometer).

  • Thema/Fragestellung: Messung der Entfernung mit dem Sensor Sharp GP2-0430K
  • Hypothese: Die Entfernung lässt sich im Bereich von 4 cm bis 50 cm fehlerfrei messen.
  • Einordnung in den Lehrplan Der Infrarot-Sensor GY-906 MLX90614 spielt eine wichtige Rolle bei der berührungslosen Temperaturmessung in der Informatik und Technik. Diese Technologie findet breite Anwendung in industriellen Prozessen, der Automobiltechnik und der Medizintechnik. In der Lehrveranstaltung "Angewandte Informatik" werden anhand dieses Beispiels verschiedene Lernziele verfolgt. Die Studierenden lernen, nachhaltige Quelltextverwaltung mit SVN durchzuführen, Programmierstandards einzuhalten und Konflikte zu lösen. Zusätzlich wird die mathematisch orientierte Programmierung in MATLAB® vermittelt, einschließlich der Arbeit mit Vektoren, Matrizen und Funktionen. Darüber hinaus erwerben sie Kenntnisse in der modellbasierten Programmierung mit der Arduino-Plattform und Simulink, um den Sensor auszulesen, Daten zu visualisieren und Aktoren zu steuern.

Projektbeschreibung

Tabelle 2: Materialliste
# Anzahl Material
1 1 Arduino Uno R3
2 1 Infrarot-Thermometer GY-906 MLX90614
3 1 LCD Modul 16x02 I2C
4 1 PC mit MATLAB/Simulink R2023b
5 1 Streckbrett
6 5 Jumper Kabel, männlich/männlich, 20 cm
7 1 Buzzer

Beschreibung Funktionsweise der verwendeten Hard- und Software

  • Arduino Uno R3[1]: Der Arduino Uno R3 ist eine vielseitige Mikrocontroller-Platine, die auf dem ATmega328P-Prozessor basiert. Sie verfügt über 14 digitale Ein- und Ausgänge sowie 6 analoge Eingänge, was sie ideal für die Steuerung einer Vielzahl von Sensoren und Aktoren macht. Die Platine ist mit einem 16 MHz Quarzoszillator, einer USB-Schnittstelle zur Programmierung und Stromversorgung, einer Strombuchse für externe Stromquellen, einem ICSP-Header für die Programmierung des Mikrocontrollers und einem Reset-Button ausgestattet. Die Programmierung erfolgt über die benutzerfreundliche Arduino IDE, die eine breite Palette von Bibliotheken und Beispielen bietet, um den Einstieg zu erleichtern.
  • Infrarot-Thermometer GY-906 MLX90614[2]: Das GY-906 MLX90614 ist ein hochpräziser Infrarot-Sensor, der zur berührungslosen Temperaturmessung verwendet wird. Er misst die von einem Objekt emittierte Infrarotstrahlung und wandelt diese in Temperaturwerte um. Der Sensor kann Temperaturen im Bereich von -70°C bis +380°C mit einer Genauigkeit von ±0,5°C messen. Er kommuniziert über die I2C-Schnittstelle, wodurch er leicht in bestehende Mikrocontroller-Systeme wie den Arduino integriert werden kann. Dank seiner schnellen Reaktionszeit und hohen Empfindlichkeit ist er ideal für Anwendungen in der Medizin, Industrie und Automobiltechnik.
  • LCD Modul 16x02 I2C[3]: Das LCD Modul 16x02 I2C ist ein alphanumerisches Display, das 16 Zeichen pro Zeile und zwei Zeilen anzeigen kann. Es verwendet die I2C-Kommunikationsschnittstelle, was die Anzahl der benötigten Verbindungsleitungen reduziert und die Integration mit Mikrocontrollern vereinfacht. Dieses Display eignet sich hervorragend für die Darstellung von Textinformationen wie Temperaturmessungen, Statusmeldungen und anderen wichtigen Daten in Echtzeit. Die Hintergrundbeleuchtung und Kontraststeuerung sind anpassbar, um die Lesbarkeit in verschiedenen Lichtverhältnissen zu verbessern
  • PC mit MATLAB/Simulink R2023b[4]: Ein Computer, auf dem MATLAB/Simulink R2023b installiert ist, bietet eine leistungsstarke Umgebung für die grafische Modellierung, Simulation und Analyse dynamischer Systeme. MATLAB ist eine Programmiersprache und Umgebung, die speziell für numerische Berechnungen und Datenanalyse entwickelt wurde, während Simulink eine grafische Oberfläche für die Erstellung von Modellen und die Simulation von Systemen bietet. Diese Kombination ermöglicht es, komplexe Algorithmen zu entwickeln, zu testen und zu optimieren, was insbesondere in der Forschung und Entwicklung von Vorteil ist.
  • Steckbrett[5]: Ein Steckbrett, auch Breadboard genannt, ist ein unverzichtbares Werkzeug für das Prototyping elektronischer Schaltungen. Es besteht aus einer Vielzahl von Löchern, in die elektronische Bauteile und Verbindungsdrähte gesteckt werden können, ohne dass Löten erforderlich ist. Dies erleichtert das schnelle und flexible Zusammenstellen und Ändern von Schaltungen. Das Steckbrett ermöglicht es Entwicklern, verschiedene Konfigurationen zu testen und Fehler schnell zu beheben, bevor sie eine dauerhafte Platine erstellen.
  • Jumper Kabel, männlich/männlich, 20 cm: Diese Jumper-Kabel sind 20 cm lange, flexible Verbindungsdrähte mit Stiftsteckern an beiden Enden. Sie werden verwendet, um elektrische Verbindungen zwischen Komponenten auf einem Steckbrett oder zwischen verschiedenen Modulen herzustellen. Die männlich/männlich-Konfiguration bedeutet, dass beide Enden des Kabels in Buchsen gesteckt werden können, was die Verdrahtung und Umverdrahtung in Prototypen und Experimenten vereinfacht.
  • Buzzer[6]: Ein Buzzer ist ein kleines elektromechanisches Bauteil, das zur Erzeugung von Tönen verwendet wird. Er kann über einen digitalen Ausgang eines Mikrocontrollers angesteuert werden, um akustische Signale zu erzeugen. Buzzers werden häufig in Projekten eingesetzt, um Alarme, Benachrichtigungen oder Bestätigungstöne auszugeben. Sie sind in der Lage, eine Vielzahl von Tönen zu erzeugen, die in Frequenz und Lautstärke variieren können, je nach den Anforderungen der Anwendung.

Technische Daten

Im Folgenden sind die technischen Daten des Infrarot-Thermometers aufgelistet[2]:

Tabelle 3: Technische Daten des Primärsensors
Modell MLX90614
Messbereich Temperatur (Objekt) -70 °C .. +380 °C
Messbereich Temperatur (Umgebung) -40 °C .. +125 °C
Genauigkeit ±0,5 °C (0 °C .. +50 °C)
Auflösung 0,02 °C
Reaktionszeit 0,5 s
Kommunikationsschnittstelle I2C
Betriebsspannung 3,6 V .. 5 V DC
Stromverbrauch 1,5 mA
Emissionsgrad 0,1 .. 1,0 (einstellbar)
Sichtfeld 35 ° (Standard)
Gehäuse TO-39
Kalibrierung Kalibriert für weite Temperaturbereiche
Abmessungen 7,2 mm Durchmesser, 5,6 mm Höhe (exklusive Pins)

Pinbelegung

In diesem Kapitel wird die Pinbelegung des GY-906 MLX90614 anhand Tabelle 4 genauer beschrieben:

Tabelle 4: Pinbelegung des GY-906 MLX90614
Pin Beschreibung
VDD Versorgungsspannung (3,6 V .. 5 V DC)
VSS Masse (GND)
SCL I2C-Taktleitung (Clock)
SDA I2C-Datenleitung (Data)

Funktionsweise Primärsensor

Abbildung 2 zeigt die Funktionsweise des Primärsensors in Form eines Blockschaltbildes.[2]

Abb. 2: Blockschaltbild des GY-906 MLX90614[2]

Der MLX90614 nutzt eine Kombination aus Thermopile-Detektor, Operationsverstärker, ADC und DSP, gesteuert von einer State Machine, um präzise und zuverlässige Temperaturmessungen durchzuführen und diese Daten über eine PWM-Ausgabe zur Verfügung zu stellen. Ein interner Spannungsregler stellt die notwendige Stabilität für den Betrieb sicher. Diese strukturierte Verarbeitungskette ermöglicht es dem Sensor, genaue Temperaturmessungen ohne direkten Kontakt durchzuführen.

  • Thermopile Detektor (81101): Der Sensor beginnt mit einem Thermopile-Detektor, der die einfallende Infrarotstrahlung in eine elektrische Spannung umwandelt. Diese Strahlung stammt von der Wärme des zu messenden Objekts.
  • Operationsverstärker (OPA): Diese Spannung wird dann durch einen Operationsverstärker verstärkt, um das Signal für die weitere Verarbeitung vorzubereiten.
  • Analog-Digital-Wandler (ADC): Nach der Verstärkung wird das analoge Signal vom ADC in digitale Daten umgewandelt. Dieser Schritt ist entscheidend, um die Daten für die digitale Verarbeitung nutzbar zu machen.
  • Digitaler Signalprozessor (DSP): Die digitalisierten Daten werden an einen digitalen Signalprozessor weitergeleitet, der die Rohdaten analysiert und die tatsächliche Temperatur berechnet. Der DSP nutzt spezifische Algorithmen, um die Genauigkeit der Messung zu gewährleisten.
  • PWM-Ausgabe: Die verarbeiteten Temperaturdaten können als PWM-Signal (Pulsweitenmodulation) ausgegeben werden, das als Schnittstelle zur Übertragung der Temperaturdaten an andere Systeme dient.
  • State Machine: Eine interne State Machine steuert den gesamten Prozess, vom Einlesen der Infrarotstrahlung über die Signalverstärkung und -wandlung bis zur Ausgabe der Temperaturdaten. Sie koordiniert die verschiedenen Schritte und stellt sicher, dass der Sensor korrekt funktioniert.
  • Spannungsregler: Schließlich sorgt ein interner Spannungsregler dafür, dass alle Komponenten des Sensors mit einer stabilen Betriebsspannung versorgt werden, was für die zuverlässige Funktion des Sensors unerlässlich ist.

Versuchsaufbau und Durchführung

Versuchsaufbau

Der Versuchsaufbau wird durch einen Schaltplan (Abb. 3), Anschlussplan (Abb. 4) und Foto des Aufbaus (Abb. 5) dokumentiert.

Abb. 3: Schaltplan[7]
Abb. 4: Anschlussplan[8]


Abb. 5: Foto des Versuchsaufbaus[9]

Verkabelung des GY-906 MLX90614 mit Arduino und LCD

1. LCD-Display:

  • VCC und GND: Sind mit 5V und GND des Arduino verbunden.
  • SDA und SCL: Sind mit den Pins A4 und A5 des Arduino verbunden (I2C-Kommunikation).

2. GY-906 MLX90614 Sensor:

  • VCC und GND: Sind mit 5V und GND des Arduino verbunden.
  • SDA und SCL: Sind mit den Pins A4 und A5 des Arduino verbunden.

3. Buzzer:

  • Positiver Anschluss: Ist mit dem digitalen Pin D13 des Arduino verbunden.
  • Negativer Anschluss: Ist mit GND verbunden.

Funktionsweise

1. Temperaturmessung:

  • Der GY-906 MLX90614 misst die Temperatur des Objekts berührungslos und gibt die Daten über I2C an den Arduino weiter.

2. Datenverarbeitung mit Simulink:

  • Die vom Sensor erfassten Temperaturdaten werden vom Arduino an Simulink übertragen. Simulink filtert die Daten und überprüft ihre Stabilität.

3. Anzeige auf dem LCD:

  • Die berechnete Temperatur wird vom Arduino an das LCD-Display gesendet und angezeigt.

4. Buzzer:

  • Wenn die Temperaturwerte über einen bestimmten Zeitraum stabil bleiben, wird der Buzzer aktiviert und gibt einen Ton aus.

Detaillierter Anschlussplan

1. GY-906 MLX90614:

  • VCC (Sensor) → 5V (Arduino)
  • GND (Sensor) → GND (Arduino)
  • SDA (Sensor) → A4 (Arduino)
  • SCL (Sensor) → A5 (Arduino)

2. LCD Display:

  • VCC (LCD) → 5V (Arduino)
  • GND (LCD) → GND (Arduino)
  • SDA (LCD) → A4 (Arduino)
  • SCL (LCD) → A5 (Arduino)

3. Buzzer:

  • Positiver Anschluss (Buzzer) → D13 (Arduino)
  • Negativer Anschluss (Buzzer) → GND (Arduino)

Implementierung in Simulink

Abb. 6: Simulink-Modell zur Sensorverarbeitung[10]

In der Abbildung ist das Simulink-Modell dargestellt, welches die Temperaturmessung mithilfe des GY-906_MLX90614 Sensors über ein Arduino-Board beschreibt. Der Prozess beginnt mit dem Einlesen der Temperaturdaten über die I2C-Schnittstelle, wandelt die Daten in lesbare Temperaturwerte um, filtert und speichert die Daten und gibt sie schließlich aus. Nachfolgend wird der Aufbau und die Funktionsweise des Modells detailliert erläutert.

Eine Kennline wird hierbei nicht benötigt, da die Eingangswerte des Sensors durch eine Berechnung in Grad Celcius umgerechnet werden.

Einlesen der Temperatur über die I2C-Schnittstelle

Das Modell liest die Temperaturdaten von einem Arduino-Board ein, das über die I2C-Schnittstelle mit dem GY-906_MLX90614 Sensor verbunden ist. Hierfür wird der `I2C Controller Read` Block verwendet, der speziell für die Kommunikation mit I2C-Geräten konzipiert ist. Die Peripherieadresse des Sensors ist auf 0x5A festgelegt. Die eingelesenen Daten werden als `double`-Werte weitergegeben und stellen die Rohwerte dar, die noch umgerechnet werden müssen.

Umrechnung der Sensorwerte in die Temperatur in °C

Der MLX90614-Sensor von Melexis liefert Temperaturmessungen in Form von Rohdatenwerten, die in einem speziellen Format kodiert sind. Laut den Datenblatt-Spezifikationen[2]:

  • Die Rohdaten werden als 16-Bit-Wert übertragen.
  • Diese Rohdaten repräsentieren die Temperatur in Kelvin multipliziert mit einem Faktor von 50.

Formel aus dem Datenblatt:

Die Formel zur Umrechnung der Rohdaten in Kelvin lautet:


Die Temperatur in Kelvin wird dann in Celsius umgerechnet, indem man den absoluten Nullpunkt (273.15 K) subtrahiert:


Zusammengesetzte Formel:

Kombiniert ergibt sich die direkte Formel zur Umrechnung der Rohdaten in Grad Celsius:


Zusammenfassung:

Die Verwendung der Zahl 50 in der Umrechnungsformel für den MLX90614-Sensor basiert auf den Spezifikationen des Sensors und dient dazu, die Genauigkeit und Auflösung der Temperaturmessungen zu erhöhen. Dies ist eine designbedingte Entscheidung des Sensorherstellers, die in den technischen Dokumentationen und Datenblättern des Sensors beschrieben wird. Durch diese Umrechnung wird sichergestellt, dass die Sensorwerte in eine physikalisch sinnvolle Einheit überführt werden, die für die weitere Verarbeitung genutzt werden kann.

Filterung der Messwerte durch einen Median-Filter

Um die Messwerte zu glätten und potenzielle Ausreißer zu minimieren, wird ein Median-Filter verwendet. Der Median-Filter berechnet für jedes Datenfenster den Medianwert, der weniger empfindlich auf extreme Werte reagiert. Dadurch entsteht ein stabileres und verlässlicheres Signal. Im Modell wird der gefilterte Wert als „gefiltertes Signal“ bezeichnet und für nachfolgende Berechnungen sowie die Speicherung genutzt.

Mittelwert der letzten 5 Werte

Um eine zusätzliche Glättung und Stabilisierung der Daten zu erreichen, wird der Mittelwert der letzten fünf gemessenen Werte berechnet. Dies geschieht, indem die letzten fünf Werte summiert und anschließend durch fünf geteilt werden. Diese Mittelwertbildung trägt dazu bei, kurzfristige Schwankungen zu reduzieren und eine genauere Repräsentation der Temperatur über einen kleinen Zeitraum zu geben.

Buzzer-Steuerung

Eine wichtige Komponente des Modells ist die Buzzer-Steuerung. Diese Funktion wird aktiviert, wenn die Differenz zwischen dem gefilterten Signal und dem Mittelwert der letzten fünf Werte einen bestimmten Schwellwert überschreitet. Die genaue Logik ist wie folgt: 1. Differenzbildung: Die Differenz zwischen dem gefilterten Signal und dem Mittelwert wird berechnet. 2. Absolutwert und Vergleich: Der Absolutwert dieser Differenz wird mit dem Schwellwert (0.5) verglichen. 3. Aktivierung des Buzzers: Wenn der Absolutwert der Differenz größer als 0.5 ist, wird ein Signal an den Pin 13 des Arduino-Boards gesendet, wodurch der Buzzer aktiviert wird. Andernfalls bleibt der Buzzer inaktiv.

Diese Funktion dient als akustische Benachrichtigung, wenn erhebliche Temperaturabweichungen festgestellt werden, und kann als Alarm- oder Warnsystem genutzt werden.

Speicherung der Messdaten

Das Modell sieht ebenfalls die Speicherung der relevanten Messdaten vor. Es werden drei Hauptkategorien von Daten gespeichert: 1. Mittelwert der letzten fünf Werte: Diese Daten geben einen geglätteten Überblick über die Temperaturentwicklung. 2. Gefiltertes Signal: Die durch den Median-Filter geglätteten Daten werden gespeichert, um stabile Temperaturverläufe zu dokumentieren. 3. Rohes Signal: Die ungefilterten Rohdaten werden gespeichert, um eine detaillierte Analyse der originalen Messwerte zu ermöglichen.

Die Speicherung dieser Daten ermöglicht eine nachträgliche Auswertung und Analyse der Temperaturmessungen und hilft dabei, Trends oder Anomalien zu identifizieren.

Zusammenfassung

Das Simulink-Modell für den GY-906_MLX90614 Sensor bietet eine umfassende Lösung zur Temperaturmessung und -überwachung. Es kombiniert die Datenaufnahme, Umrechnung, Filterung, Mittelwertbildung und eine Buzzer-Steuerung, um präzise und zuverlässige Temperaturwerte zu liefern. Durch die Speicherung der Daten können diese für eine detaillierte Analyse und Weiterverarbeitung genutzt werden. Das Modell ist somit ein leistungsfähiges Werkzeug für Anwendungen, bei denen eine genaue und kontinuierliche Temperaturüberwachung erforderlich ist.

Versuchsdurchführung

Der Versuchsaufbau wird durch einen Schaltplan (Abb. 3), Anschlussplan (Abb. 4) und ein Foto des Aufbaus (Abb. 5) dokumentiert.

Die Durchführung des Experiments beginnt mit dem Flashen des Arduino Uno R3 mit der entsprechenden Firmware. Nachdem alle relevanten Einstellungen vorgenommen wurden, wird die erste Messung gestartet. Der Temperatursensor wird statisch in einem Raum platziert, um die Raumtemperatur zu ermitteln. Der Sensor bleibt dabei über mehrere Minuten unbewegt, um stabile und zuverlässige Messdaten zu gewährleisten. Diese Messung dient dazu, die Genauigkeit des Temperatursensors unter statischen Bedingungen zu überprüfen und sicherzustellen, dass der Sensor konsistente Werte liefert.

Im Anschluss wird eine dynamische Messung zur Einstellung des Medianfilters durchgeführt. Hierzu wird der Temperatursensor in einem Backofen aufgehängt. Der Backofen wird von Raumtemperatur auf 50°C aufgeheizt. Während dieses Vorgangs werden kontinuierlich Temperaturdaten erfasst, um die Reaktion des Sensors auf Temperaturänderungen zu analysieren. Das Ziel dieser Messung ist es, die Parameter des Medianfilters zu optimieren, um ein verwertbares und stabiles Signal zu erhalten. Es soll überprüft werden, ob das aktuelle Fenster des Medianfilters groß genug gewählt ist oder ob Anpassungen erforderlich sind, um die Qualität der dynamischen Messungen zu verbessern.

Referenzwerte der jeweiligen Versuche

Für die statische Messung, bei der der Temperatursensor in einem Raum platziert wird, dient die Raumtemperatur als Referenzwert. Dieser Referenzwert wird mithilfe eines präzisen digitalen Thermometers parallel gemessen (28.3 °C, Dachgeschosswohnung). Dadurch können die vom Sensor erfassten Temperaturwerte mit den tatsächlichen Raumtemperaturen verglichen werden, um die Genauigkeit und Konsistenz des Sensors unter statischen Bedingungen zu überprüfen.

Bei der dynamischen Messung, bei der der Temperatursensor in einem Backofen aufgehängt und der Backofen von Raumtemperatur auf 50°C aufgeheizt wird, dient die Temperatur des Backofens als Referenzwert. Der Vergleich der Sensorablesungen mit den tatsächlichen Temperaturwert des Backofens ermöglicht die Analyse und Optimierung des Medianfilters, um sicherzustellen, dass der Sensor auch unter dynamischen Bedingungen verlässliche und stabile Temperaturdaten liefert.

Modelleinstellungen: Arduino Uno, Solver: Fixed-step, discrete, Abtastrate: 0,1 s

Versuchsbeobachtung

Im Folgenden werden die Versuchsbeobachtungen der statischen und dynamischen Messung erläutert.

Statische Messung

Die statische Messung hat gezeigt, dass die Referenztemperatur von 29 °C nahezu erreicht wird, wie in Abbildung 7 (gelbe Kurve) dargestellt. Es sind keine großen Schwankungen oder Ausreißer zu erkennen, die das Messergebnis signifikant verfälschen könnten. Dies deutet darauf hin, dass der Temperatursensor unter statischen Bedingungen sehr genau arbeitet und konsistente Messwerte liefert. Das Medianfilter, dessen Einfluss in Abbildung 7 durch die blaue Kurve veranschaulicht wird, zeigt, dass es keinen erheblichen Einfluss auf das bereits gut geglättete Messergebnis hat. Dennoch trägt das Medianfilter zu einer zusätzlichen Glättung der Daten bei, indem es kleinere Schwankungen weiter reduziert. Dies sorgt für eine noch gleichmäßigere Datenkurve und kann helfen, gelegentliche Störsignale zu eliminieren. Zusätzlich wurde der Buzzer passend ausgelöst, wie in Abbildung 8 (blaue Kurve) zu sehen ist. Der Buzzer aktiviert sich, wenn die Differenz zwischen dem Mittelwert der letzten fünf Messwerte und dem aktuellen Wert kleiner als 0,5 °C ist. Dieses Kriterium gewährleistet, dass der Buzzer nur bei stabilen Temperaturveränderungen anspringt, wodurch Fehlalarme minimiert werden. Diese Funktionsweise ist auch in einem begleitenden Video dargestellt, das den Auslösemechanismus des Buzzers demonstriert.

Abb. 7: Gegenüberstellung des un-/gefilterten Signals[11]
Abb. 8: Darstellung der berechneten Differenz und Verhalten des Buzzers[12]


Abb. 9: Fehlermeldung - MATLAB/Simulink[13]

Dynamische Messung

Die dynamische Messung konnte leider nicht durchgeführt werden, da beim ausführen des Programms sehr häufig eine Fehlermeldung erschienen ist (siehe Abbildung 9), weshalb der Sensor nicht ausgelesen werden konnte. Die genaue Ursache konnte nicht ermittelt werden, wobei die Vermutung jedoch darauf liegt, dass die I2C-Kommunikation nicht korrekt eingestellt ist. Auch nach ausgiebiger Recherche konnte der Fehler nicht behoben werden. Daher wird im Folgenden nur mit der statischen Messung fortgeführt.

Messunsicherheit

Folgend wird die Messunsicherheit anhand der statischen Messung bestimmt, um die Vertrauenswürdigkeit des Sensors und der Messwerte zu bewerten.

  • [2]
  • [2]

Daraus ermittelt sich die Standartunsicherheit Typ B (uB):


Folglich muss nun die Standardunsicherheit Typ A und letztlich Typ C berechnet werden. Leider war es jedoch nicht möglich, eine statische Messung aufzunehmen, bei der die Messdaten gespeichert wurden. Die statische Messung hat zwar nach vielen Versuchen ein paar Mal funktionier, doch zu diesem Zeitpunkt wurden die Messdaten noch nicht im Workspace korrekt abgespeichert. Wenn in Zukunft jedoch die Standardunsicherheit A (uA) berechnet wird, kann mit folgender Formel die gesamte Standartunsicherheit Typ C errechnet und ein anschaulicher Plot erstellt werden:


Die absolute Messunsicherheit (uAbs) berechnet sich dann folgendermaßen, wobei k den Grad des Vertrauens beschreibt (Bei 1 Sigma entspricht dies k=2):


Auswertung

Die statische Messung zeigte, dass die Referenztemperatur von 29 °C nahezu erreicht wird, wie in Abbildung 7 (gelbe Kurve) dargestellt. Die Messwerte waren stabil, und es traten keine signifikanten Schwankungen oder Ausreißer auf, die das Ergebnis verfälschen könnten. Dies deutet darauf hin, dass der Temperatursensor unter statischen Bedingungen sehr genau arbeitet und konsistente Messwerte liefert.

Das Medianfilter, dessen Einfluss in Abbildung 7 durch die blaue Kurve veranschaulicht wird, zeigte keinen erheblichen Einfluss auf die bereits gut geglätteten Messergebnisse. Dennoch trug das Medianfilter zu einer zusätzlichen Glättung der Daten bei, indem es kleinere Schwankungen weiter reduzierte. Dies sorgte für eine gleichmäßigere Datenkurve und half, gelegentliche Störsignale zu eliminieren.

Zusätzlich wurde der Buzzer passend ausgelöst, wie in Abbildung 8 (blaue Kurve) zu sehen ist. Der Buzzer aktivierte sich, wenn die Differenz zwischen dem Mittelwert der letzten fünf Messwerte und dem aktuellen Wert kleiner als 0,5 °C war. Dieses Kriterium gewährleistete, dass der Buzzer nur bei stabilen Temperaturveränderungen ansprang, wodurch Fehlalarme minimiert wurden.

Die dynamische Messung zur Einstellung des Medianfilters wurde leider nicht durchgeführt. Beim Ausführen des Programms trat sehr häufig eine Fehlermeldung auf (siehe Abbildung 9), wodurch der Sensor nicht ausgelesen werden konnte. Die genaue Ursache der Fehlermeldung konnte nicht ermittelt werden, jedoch besteht die Vermutung, dass die I2C-Kommunikation nicht korrekt eingestellt war. Auch nach ausgiebiger Recherche konnte der Fehler nicht behoben werden. Daher wird im Folgenden nur mit der statischen Messung fortgeführt.

Die durchgeführte statische Messung und die Analyse der Ergebnisse zeigen, dass der Temperatursensor unter statischen Bedingungen genaue und verlässliche Daten liefert. Die Anwendung des Medianfilters trägt zur zusätzlichen Glättung der Daten bei, ohne die Messgenauigkeit signifikant zu beeinträchtigen. Aufgrund der aufgetretenen Probleme bei der dynamischen Messung konnte diese nicht durchgeführt werden, weshalb die Auswertung sich auf die Ergebnisse der statischen Messung beschränkt. Der Sensor erfüllt unter den getesteten statischen Bedingungen die Anforderungen an Präzision und Zuverlässigkeit.

Zusammenfassung und Ausblick

Zusammenfassung

Das Infrarot-Thermometer GY-906 MLX90614 ist ein fortschrittlicher Sensor, der für präzise und berührungslose Temperaturmessungen entwickelt wurde. In diesem Projekt wurde der Sensor verwendet, um Temperaturmessungen unter statischen und dynamischen Bedingungen durchzuführen. Der Versuchsaufbau umfasste die Integration des Sensors mit einem Arduino Uno R3 und die Verarbeitung der Messdaten mithilfe von Simulink.

Die statische Messung zeigte, dass der Sensor in der Lage ist, die Referenztemperatur von 29 °C nahezu genau zu erreichen, ohne signifikante Schwankungen oder Ausreißer. Das Medianfilter trug zusätzlich zur Glättung der Daten bei, was die Stabilität der Messergebnisse weiter verbesserte. Der Buzzer wurde passend ausgelöst, wenn die Temperaturänderungen innerhalb eines bestimmten Schwellenwertes lagen.

Leider konnte die dynamische Messung nicht durchgeführt werden, da beim Ausführen des Programms häufig eine Fehlermeldung auftrat, die das Auslesen des Sensors verhinderte. Die genaue Ursache konnte nicht ermittelt werden, jedoch wird vermutet, dass die I2C-Kommunikation nicht korrekt eingestellt war. Trotz intensiver Fehlersuche konnte das Problem nicht behoben werden, weshalb die Auswertung sich auf die Ergebnisse der statischen Messung beschränkt.

Ausblick

Für zukünftige Arbeiten ist es wichtig, die Ursache der I2C-Kommunikationsprobleme zu identifizieren und zu beheben, um die dynamische Messung erfolgreich durchzuführen. Eine mögliche Lösung könnte die Überprüfung und Anpassung der I2C-Bus-Einstellungen oder der Austausch des Kommunikationsprotokolls sein. Zusätzlich muss ebenfalls die Messunsicherheit und Standardunsicherheit mit gespeicherten Messdaten berechnet werden.

Zusätzlich könnten weitere Experimente durchgeführt werden, um die Leistung des Sensors in verschiedenen Umgebungen und unter unterschiedlichen Bedingungen zu bewerten. Dazu gehört die Untersuchung der Sensorreaktion auf schnelle Temperaturänderungen sowie die Langzeitstabilität der Messungen.

Durch die gewonnenen Erkenntnisse können die Implementierung und Nutzung des MLX90614-Sensors in industriellen, medizinischen und automobiltechnischen Anwendungen weiter optimiert werden. Dies umfasst die Entwicklung robuster Algorithmen zur Datenverarbeitung und Filterung sowie die Integration des Sensors in komplexe Steuerungssysteme.

Selbstreflexion/Lessons Learned

Das Projekt hat gezeigt, wie wichtig es ist, sowohl die Hardware- als auch die Softwarekomponenten sorgfältig zu prüfen und zu validieren. Die Schwierigkeiten bei der dynamischen Messung haben verdeutlicht, dass die Kommunikation zwischen den Komponenten eine entscheidende Rolle spielt und gründlich getestet werden muss. Zudem hat die Arbeit mit dem Medianfilter die Bedeutung der Datenverarbeitung zur Verbesserung der Messgenauigkeit hervorgehoben.

Ergebnisvideo

Im Ergebnisvideo wird das Simulink-Modell, das auf einem Arduino implementiert ist, demonstriert. Die Kennlinie zeigt deutlich, dass die Temperatur stabil gemessen wird, was zusätzlich durch das akustische Signal bestätigt wird. Dieses Signal dient als Indikator für die Stabilität des gemessenen Wertes. Der Messaufbau entspricht den angegebenen Spezifikationen und ist so eingerichtet, dass der Temperatur-Sensor keinen Störgrößen, wie Wind oder Wetterbedingungen unterlegen ist.

Darstellung der Versuchsdurchführung[14]

Lernzielkrontrolle

Beantworten Sie in Ihrem Artikel die Lernzielkontrollfragen.

Literatur

Zitieren Sie nach DIN ISO 690:2013-10.

Anhang

  • Datenblätter
  • Simulink-Modell
  • Originaldateien (PAP, Schaltplan,... )

→ zurück zum Hauptartikel: BSE Angewandte Informatik SoSe24 | Hausarbeit SoSe24

  1. https://wiki.hshl.de/wiki/index.php/Arduino:_Bibliothek_einbinden, abgerufen am 26.07.2024
  2. 2,0 2,1 2,2 2,3 2,4 2,5 2,6 https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf, abgerufen am 22.07.2024
  3. https://wiki.hshl.de/wiki/index.php/LCD_Modul_16x02_I2C, abgerufen am 26.07.2024
  4. https://www.az-delivery.de/products/breadboard, abgerufen am 28.07.2024
  5. https://wiki.hshl.de/wiki/index.php/Piezo_Lautsprecher, abgerufen am 28.07.2024
  6. Eigenes Dokument
  7. Eigenes Dokument
  8. Eigenes Dokument
  9. Eigenes Dokument
  10. Eigenes Dokument
  11. Eigenes Dokument
  12. Eigenes Dokument
  13. Eigenes Dokument