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:
- berührungslose Messung der Körpertemperatur
- Temperatur von schwer zugänglichen Teilen einer Maschine messen
- Überwachung der Temperatur von Motoren und Getrieben
- Überwachung von Klimaanlagen und Heizungen
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.