MLX90614 – Kontaktlos mit dem Raspberry Pi Temperaturen messen

Gerade in den kälteren Jahreszeiten ist es interessant die Temperatur von Oberflächen zu kennen. Die meisten Sensoren messen allerdings nur die Umgebungstemperatur, daher möchten wir uns ansehen, wie man mit dem Raspberry Pi den MLX90614 Infrarot-Temperatursensor auslesen kann. Dieser kann nicht nur die Temperatur des Raums messen, sondern auch von Oberflächen – ohne diese zu berühren. So kann ein solches kontaktlose Thermometer zum Beispiel zum Fieber messen genutzt werden.

In diesem Tutorial schauen wir uns an, wie man den MLX90614 Sensor verkabelt und mittels Python am Raspberry Pi zur Temperaturmessung benutzt

Temperatursensor Zubehör

Raspberry Pi MLX90614 Temperatur Sensor

In diesem Tutorial werden folgende Bauteile verwendet:

  1. Raspberry Pi
  2. MLX90614 Temperatursensor auf PCB Board
  3. Jumper Kabel
  4. optional: Breadboard

Der Vorteil zu anderen Temperatursensoren wie dem DHT11 oder DS18B20 besteht darin, dass wir Temperaturen von Objekten eben auch komplett kontaktlos messen können!

Raspberry Pi MLX90614 Schaltdiagramm

Beginnen wir damit den Sensor an den Raspberry Pi anzuschließen. Dafür ist folgende Tabelle geeignet (die Pins kannst du ebenfalls hier nachsehen):

MLX90614 Sensor Raspberry Pi
VIN 5V (Pin 2)
GND GND (Pin 6)
SCL GPIO 3 (Pin 5)
SDA GPIO 2 (Pin 3)

Schematisch sieht der Aufbau dann folgendermaßen aus:

MLX90614 Pinout

Im Datenblatt ist beschrieben, wie der Sensor per I2C oder aber per PWM (Pulsdauermodulation) ausgelesen werden kann. Dem widmen wir uns als Nächstes. Doch vorher müssen wir noch ein paar Vorbereitungen treffen und die I2C Adresse des MLX90614 Sensors auslesen.

 

Vorbereitung: I2C aktivieren

Wir möchten den Sensor im Folgenden per I2C auslesen. Daher müssen wir es als Erstes aktivieren bzw. sicherstellen, dass es aktiv ist. Verbinde dich per SSH mit dem Raspberry Pi und gib folgendes ins Terminal ein:

sudo raspi-config

Unter „Interfacing Options“ > „I2C“ aktivieren das automatische Laden des I2C Kernel Moduls.

Anschließend können wir testen, ob der MLX90614 Temperatursensor bereits erkannt wird.

pi@raspberrypi:~ $ sudo i2cdetect -y 1

Das Ergebnis sieht folgendermaßen aus (unter der Adresse 5A ist der Sensor gelistet):

pi@raspberrypi:~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

 

MLX90614 Beispielcode laden und Temperatur messen

Schauen wir noch einmal ins Datenblatt. Hier finden wir einige nützliche Informationen:

  • Temperaturbereich: -40 … +125 °C
  • Register 0x06 (Ta) enthält die Umgebungstemperatur („Ambient Temperature measured from the chip“)
  • Register 0x07 (To) enthält die gemessene Objekttemperatur, auf die der
  • Field of View (FoV) von ca. 80° – das gemessene Objekt sollte also nicht zu weit entfernt sein

Das Auslesen an sich ist relativ simpel. Wir lesen lediglich an der I2C-Adresse (0x5A) den entsprechenden Wert aus (0x07 für die Objekttemperatur). Dafür habe ich eine kleine Klasse geschrieben, die folgenden Python-Code enthält:

Wir können und das Repository dazu einfach klonen:

git clone https://github.com/tutRPi/Raspberry-Pi-MLX90614-Python

Außerdem ist eine kleine Beispieldatei dabei, die du einfach ausführen kannst:

cd Raspberry-Pi-MLX90614-Python
sudo python example.py

Die MLX90614 Klasse kannst du einfach in anderen Projekten einbinden und somit die Temperatur auslesen.

 

Sofern weiteres Interesse an dem MLX90614 Infrarotsensor in Verbindung mit dem Raspberry Pi oder ESP8266 besteht, würde ich mich über einen Kommentar freuen. Angedacht sind z.B. 3d-gedruckte kontaktlose Messgeräte mit Display, wie im Titelbild zu sehen ist.

16 Kommentare

  1. Super Beitrag!
    Eine Kleinigkeit zur Korrektur:
    „sudo raspbi-config“ muss heißen „ sudo raspi-config“

    Antworten
  2. Toller Beitrag! Ja ein Beitrag zur Nuztung mit einem ESP8266 wäre super. Dann könnte man entfernte Objekte überwachen, z.B.: einen Kaminofen für die Steuerung der Dunsabzugshaube in Verbindung mit einem Fensterschalter oder Vorlauf / Rücklauftemperatur der Heizung, etc.

    Antworten
  3. Toller Beitrag! Über ein Folgeprojekt: 3d-gedruckte kontaktlose Messgeräte mit Display, wie im Titelbild zu sehen ist, würde ich mich freuen

    Antworten
  4. Wenn Du eine Idee hast wo und wie die Sensoren angebracht werden sollen.
    Von oben wird nichts werden, da ja der Topf steht. Schräg von der Seite wird möglicherweise bei einer alten Platte gehen, aber nicht bei einem Ceran – Kochfeld. Die Sensoren müssten auch so angebracht werden, das sie beim Kochen nicht stören und müssen geschützt sein, wenn mal was überkocht.
    Von unten wird es auch kaum klappen. Die Aussichten : eher Daumen runter.

    Antworten
  5. Ganz wichtig, was bei dem Beitrag fehlt!

    Kontaktloses Messen ist im Prinzip eine gute Sache und wird auch durch mich genutzt.
    Aber das Messen an glänzenden Metalloberflächen ist so nicht möglich !
    Diese Flächen strahlen ganz wenig Wärme ab. Da misst du an einem Alu – Kühlkörper möglicherweise 40° C , während die reale Temperatur schon über 200 ° C ist. Das ist bedingt durch das Messverfahren. Wenn man das Strahlungsverhalten der Oberfläche kennt, kann man den Fehler berechnen.
    Das muss man einfach wissen und beachten!

    Antworten
    • Hallo Aro, ich habe schon etliche Tests mit dem MLX gemacht.
      Die Problematik mit den unterschiedlichsten Oberflächen ist klar, jedoch habe ich sehr hohe Abweichungen bei den Temperaturwerten bei unterschiedlichen Abständen (2-30 cm) zum messenden Objekt. Gibt’s irgendwelche Informationen, wie ich reproduzierbar Ergebnisse bekomme?

      Antworten
      • Das ist ganz einfach. Ich habe jetzt keine Angabe zu dem Öffnungswinkel deines Sensor.
        Die Sensoren werden mit einem FOV zwischen 5 und 35 Grad produziert !
        Wenn Du sehr nah an der zu messenden Fläche bist, dann erfasst Du wirklich nur die interessierende Fläche. Je größer der Abstand und je größer der Öffnungswinkel deines Sensors, desto größer ist die Wahrscheinlichkeit, andere andere Objekte mit zu erfassen.
        Das Ergebnis ist dann der Durchschnitt aller erfassten Flächen!
        Möglicherweise wirkt sich bei großem Öffnungswinkel auch aus, das damit eine größere Fläche erfasst wird, wenn man sich entfernt. Am besten mal eine große Fläche mit konstanter Temperatur suchen, den Abstand messen und schrittweise ändern. Die Werte in eine Tabelle eintragen. Damit hast Du den abstansabhängigen Fehler. Dann das gleiche noch mal mit einer kleinen Fläche vor einem Hintergrund mit anderer Temperatur. Da merkst Du, ab welchem Abstand der Sensor an der Messstelle vorbei schaut. Ohne diese Daten ist das würfeln, hat aber nichts mit Messen zu tun.
        Ich habe mir vor längerer Zeit mal ein komplettes Gerät für unter 10 Euro aus China kommen lassen und kann damit keinen Unterschied bei unterschiedlichen Abständen feststellen.

    • Was verstehst Du unter Display ? Was ist ein kleiner Raspi ?
      Es gibt heute Treiber für sehr viele verschiedene LCD – Displays. Wenn Du unter der Bezeichnung Deines Displays im Netz suchst, findest Du sicher ein Beispiel.
      Tragbare Version mit Raspi ist Unsinn. Ein fertiges Gerät kostet nur den Bruchteil eines Raspi, hat eine fertige Anzeige und benötigt normale Batterien, die lange halten.
      Der Selbstbau lohnt aber, wenn Du die Daten irgend wie in ein anderes, übergeordnetes Projekt übernehmen willst, oder wenn Du Dich durch eigene Versuche in das Fachgebiet einarbeiten willst.
      Man kann sicher fast alles irgend wie selbst bauen, man sollte aber immer überlegen, ob es Sinn macht, oder ob man sein Geld und seine Zeit besser in ein anderes Projekt steckt.
      Da muss jeder seine eigenen Prioritäten setzen.

      Antworten
  6. Hallo,

    das ist ein sehr interessanter Beitrag. Vielen Dank.

    Wie viele MLX90614 Sensoren kann man eigentlich an einen Raspberry Pi anschliessen?
    Ich bräuchte 4 oder 8 Sensoren. Falls es 8 Sensoren sind bräuchte ich jeweils einen Mittelwert 2er Sensoren. Diese 4 Ausgänge bräuchte ich als Analog Ausgang 0-5V .

    Die Messgenauigkeit braucht nicht unter 1 C° zu sein.

    haben andere Sensoren wie ZB der gy-mlx90614-dci die gleichen Ein- und Ausgänge
    Ist das

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!