Suche

Temperatur messen mit dem Infrarot-Temperatursensor MLX90614

Inhaltsverzeichnis

Für dieses Projekt benötigst du

MLX90614 Infrarot-Sensor an einem Mikrocontroller verwenden

Obwohl sie für das menschliche Auge nicht sichtbar sind, strahlen alle Objekte Infrarotlicht aus, wobei die Konzentration je nach Temperatur unterschiedlich ist. Die erfassten Infrarot-Strahlen werden in elektrische Impulse umgewandelt. Der MLX90614 arbeitet nach diesem Prinzip.

Infrarot-Thermometer finden im privaten Bereich und in der Industrie Anwendung:

Die Hardware

Der MLX90614 ist ein berührungsloser Temperatursensor. Er misst die Infrarotstrahlung und gibt zwei Messwerte aus: die Umgebungstemperatur und die Temperatur des Objektes in seiner Nähe.

Objekttemperatur: -70° C bis 382.2°C
Umgebungstemperatur:
-40° C bis 125°C
Genauigkeit:
0,02°C
Abstand zwischen Objekt und Sensor: 2 cm bis 5 cm

Quelle: https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf

Aufgabenstellung

Die Messdaten sollen im Seriellen Monitor angezeigt werden.
Zunächst wird ein Glas mit heißem Wasser dem Sensor angenähert. Anschließend wird ein Glas mit einem Eiswürfel in die Nähe gebracht.

Anschluss am Mikrokontroller

Arduino UNO
VIN
(rot) -> 5V
GND (schwarz) -> GND
SCL (gelb) -> A5
SDA (grün) -> A4

ESP32-Wroom
VIN
(rot) -> 5V
GND (schwarz) -> GND
SCL (gelb) -> 21
SDA (grün) -> 22

NodeMCU/Wemos D1 Mini
VIN
(rot) -> 3.3V
GND (schwarz) -> GND
SCL (gelb) -> D1
SDA (grün) -> D2

Bibliothek installieren

Nachdem du die Bibliothek ausgewählt hast installiere im zweiten Schritte die benötigten Abhängigkeiten.

Der Quellcode

				
					#include "Adafruit_MLX90614.h"

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

void setup() 
{
  /// Seriellen Monitor starten
  Serial.begin(9600);

  // auf serielle Verbindung warten
  while (!Serial);
  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());

  // . in , umwandeln
  TemperaturUmgebung.replace(".", ",");

  // Objekttemperatur lesen
  String TemperaturObjekt = String(mlx.readObjectTempC());

  // . in , umwandeln
  TemperaturObjekt.replace(".", ",");

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

  // Wartezeit bis zur nächsten Messung
  delay(3000);
}

				
			

Erweiterung des Programms: Messdaten auf einem LCD anzeigen

Das Programm im Film

Der Schaltplan

Zusätzlich benötigte Bibliothek

Der Quellcode

				
					#include "LCDIC2.h"
#include "Adafruit_MLX90614.h"

// 4-zeiliges LCD
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);

  // auf serielle Verbindung warten
  while (!Serial); 
  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());

  // . in , umwandeln
  TemperaturUmgebung.replace(".", ",");

  // Objekttemperatur lesen
  String TemperaturObjekt = String(mlx.readObjectTempC());

  // . in , umwandeln
  TemperaturObjekt.replace(".", ",");

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

  // Daten auf dem LCD anzeigen
  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 nächsten Messung
  delay(3000);
}

				
			

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE

Alle Modelle der hier gezeigten Modelle sind hier zum Download  in einer kompakten Zip Datei verfügbar.