Sensor de temperatura infrarrojo MLX90614 con Arduino

FunduinoÚltima actualización el

Temperaturen berührungslos messen – im Seriellen Monitor und auf dem LCD

Alles, was wärmer als der absolute Nullpunkt ist, strahlt Infrarotlicht ab – für unsere Augen unsichtbar, aber messbar. Genau das macht der MLX90614: Er fängt diese Strahlung auf und rechnet daraus eine Temperatur, ohne das Objekt zu berühren.

In dieser Anleitung schließt du das Sensormodul GY-906 an deinen Mikrocontroller an und lässt dir Umgebungs- und Objekttemperatur ausgeben. Im letzten Schritt erweiterst du den Aufbau um ein LCD, sodass die Messwerte auch ohne angeschlossenen Computer sichtbar sind.

Kleine Platine GY-906 mit dem metallischen MLX90614-Sensorkopf
Das Sensormodul GY-906 mit dem MLX90614
Verkabelung des GY-906-Moduls mit vier farbigen Leitungen zum Mikrocontroller
Anschluss des MLX90614 am Mikrocontroller
1 / 2

Elige un microcontrolador

Pins, Schaltplan und Sketch in den Arbeitsschritten ändern sich entsprechend deiner Auswahl. Sie bleibt gespeichert.

Material

Für den Grundaufbau brauchst du:

  • 1× Mikrocontroller mit passendem USB-Kabel
  • 1× Infrarot-Thermometer GY-906 mit MLX90614
  • 4× Steckkabel männlich/weiblich

Für die Erweiterung im letzten Schritt kommt dazu:

  • 1× LCD-Display 20×4 mit I2C-Adapter

Was der Sensor misst

Jeder Körper gibt Infrarotstrahlung ab – umso mehr, je wärmer er ist. Der MLX90614 fängt diese Strahlung auf und rechnet sie in eine Temperatur um, ohne das Objekt zu berühren. Er liefert dabei zwei Werte: die Temperatur seiner eigenen Umgebung und die Temperatur des Objekts, auf das er gerichtet ist.

Technische Daten laut Datenblatt:

  • Objekttemperatur: −70 °C bis 382,2 °C
  • Umgebungstemperatur: −40 °C bis 125 °C
  • Auflösung: 0,02 °C
  • Genauigkeit: rund ±0,5 °C im normalen Temperaturbereich

Eingesetzt werden Infrarot-Thermometer zum berührungslosen Messen der Körpertemperatur, an schwer zugänglichen Maschinenteilen, zur Überwachung von Motoren und Getrieben und zur Kontrolle von Heizungen und Klimaanlagen.

Datenblatt des MLX90614 (PDF)

Auflösung und Genauigkeit sind nicht dasselbe: Der Sensor gibt seine Werte zwar in Schritten von 0,02 °C aus, der tatsächliche Messfehler liegt aber bei etwa einem halben Grad. Für medizinische Messungen ist das Modul deshalb nicht geeignet.

Kleine Platine GY-906 mit dem metallischen MLX90614-Sensorkopf
Das Sensormodul GY-906 mit dem MLX90614

Anschluss am Mikrocontroller

Verkabelung des GY-906-Moduls mit vier farbigen Leitungen zum Mikrocontroller
Anschluss des MLX90614 am Mikrocontroller

Asignación de pines Arduino UNO

LED 1Pin 5
LED 2Pin 7
Logikspannung5 V

Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.

  • VIN (rot) → 5V
  • GND (schwarz) → GND
  • SDA (grün) → A4
  • SCL (gelb) → A5

Placa en el IDE de ArduinoArduino Uno

Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.

Bibliothek installieren

Öffne in der Arduino IDE den Bibliotheksverwalter über Sketch → Bibliothek einbinden → Bibliotheken verwalten und suche nach Adafruit MLX90614 Library.

Nach dem Klick auf „Installieren“ fragt die IDE, ob auch die benötigten Abhängigkeiten installiert werden sollen. Bestätige das mit „Install all“ – ohne die Adafruit-BusIO-Bibliothek lässt sich der Sketch später nicht kompilieren.

Bibliotheksverwalter der Arduino IDE mit der Adafruit-MLX90614-Bibliothek
Die Bibliothek „Adafruit MLX90614 Library“ im Bibliotheksverwalter

Temperaturen im Seriellen Monitor anzeigen

Lade den Sketch hoch und öffne den Seriellen Monitor mit 9600 Baud. Alle drei Sekunden erscheinen dort die Umgebungs- und die Objekttemperatur.

Zum Ausprobieren hältst du zuerst ein Glas mit heißem Wasser vor den Sensor und danach ein Glas mit einem Eiswürfel. Die Objekttemperatur folgt beidem deutlich, während die Umgebungstemperatur nahezu gleich bleibt.

Halte den Sensor beim Messen nah an das Objekt, etwa zwei bis fünf Zentimeter. Der MLX90614 erfasst einen kegelförmigen Bereich – aus großer Entfernung mischt sich die Umgebung in den Messwert.

Versuchsaufbau mit Sensor und zwei Gläsern
Zum Testen wird ein Glas mit heißem Wasser und danach ein Glas mit einem Eiswürfel vor den Sensor gehalten
Sketch: Temperaturen im Seriellen Monitor anzeigen
#include "Adafruit_MLX90614.h"

// Sensor MLX90614 als mlx initialisieren
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup()
{
  // Seriellen Monitor starten
  Serial.begin(9600);
  delay(1000);
  Serial.println("Adafruit MLX90614 Test");

  // Sensor starten
  if (!mlx.begin())
  {
    Serial.println("Keine Verbindung zum MLX90614.");
    // Programm anhalten
    while (1);
  }
}

void loop()
{
  // Umgebungstemperatur lesen
  String TemperaturUmgebung = String(mlx.readAmbientTempC());
  // Punkt in Komma umwandeln
  TemperaturUmgebung.replace(".", ",");

  // Objekttemperatur lesen
  String TemperaturObjekt = String(mlx.readObjectTempC());
  // Punkt in Komma umwandeln
  TemperaturObjekt.replace(".", ",");

  // Daten im Seriellen Monitor anzeigen
  Serial.print("Temperatur Umgebung:\t");
  Serial.println(TemperaturUmgebung + " Grad C");
  Serial.print("Temperatur Objekt:\t");
  Serial.println(TemperaturObjekt + " Grad C");
  Serial.println("-----------------------");

  // Wartezeit bis zur naechsten Messung
  delay(3000);
}

Erweiterung: Messwerte auf einem LCD anzeigen

Damit du den Seriellen Monitor nicht mehr brauchst, kommt jetzt ein 20×4-LCD dazu. Es hängt am selben I2C-Bus wie der Sensor, du schließt es also parallel an dieselben beiden Datenleitungen an.

Dafür brauchst du zusätzlich die Bibliothek LCDIC2, die du auf demselben Weg im Bibliotheksverwalter installierst.

Im Sketch steht die I2C-Adresse 0x27. Viele Displays nutzen stattdessen 0x3F. Bleibt die Anzeige leer, probiere die andere Adresse aus.

Schaltplan mit Arduino, MLX90614 und einem 20x4-LCD am I2C-Bus
Schaltplan mit zusätzlichem I2C-Display
Bibliotheksverwalter der Arduino IDE mit der LCDIC2-Bibliothek
Die Bibliothek „LCDIC2“ im Bibliotheksverwalter
1 / 2
Sketch: Temperaturen zusaetzlich auf dem LCD anzeigen
#include "LCDIC2.h"
#include "Adafruit_MLX90614.h"

// 4-zeiliges LCD mit 20 Zeichen je Zeile an der I2C-Adresse 0x27
LCDIC2 lcd(0x27, 20, 4);

// Sensor MLX90614 als mlx initialisieren
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup()
{
  // LCD starten
  lcd.begin();
  // Cursor verstecken
  lcd.setCursor(false);

  Serial.begin(9600);
  delay(1000);
  Serial.println("Adafruit MLX90614 Test");

  if (!mlx.begin())
  {
    Serial.println("Keine Verbindung zum MLX90614.");
    // Programm anhalten
    while (1);
  }
}

void loop()
{
  // Umgebungstemperatur lesen
  String TemperaturUmgebung = String(mlx.readAmbientTempC());
  // Punkt in Komma umwandeln
  TemperaturUmgebung.replace(".", ",");

  // Objekttemperatur lesen
  String TemperaturObjekt = String(mlx.readObjectTempC());
  // Punkt in Komma umwandeln
  TemperaturObjekt.replace(".", ",");

  // Daten im Seriellen Monitor anzeigen
  Serial.print("Temperatur Umgebung:\t");
  Serial.println(TemperaturUmgebung + " Grad C");
  Serial.print("Temperatur Objekt:\t");
  Serial.println(TemperaturObjekt + " Grad C");
  Serial.println("-----------------------");

  // Daten auf dem LCD anzeigen. \337 ist das Gradzeichen im Zeichensatz des Displays.
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temperatur Umgebung:");
  lcd.setCursor(0, 1);
  lcd.print(TemperaturUmgebung + " \337C");
  lcd.setCursor(0, 2);
  lcd.print("Temperatur Objekt:");
  lcd.setCursor(0, 3);
  lcd.print(TemperaturObjekt + " \337C");

  // Wartezeit bis zur naechsten Messung
  delay(3000);
}
Calificar la guía

Comentarios

Haz una pregunta o comparte tu experiencia

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Revisamos cada comentario antes de publicarlo. Tu dirección de correo electrónico permanece con nosotros.