Infraroodtemperatuursensor MLX90614 met Arduino
Temperaturen berührungslos messen – im Seriellen Monitor und auf dem LCD
Kies een microcontroller
Pinnen, schakelschema en sketch in de werkstappen wisselen mee met je selectie. Deze blijft opgeslagen.
Material
Was der Sensor misst
Anschluss am Mikrocontroller
Pinbezetting Arduino UNO
Beim Arduino UNO schreibst du die Pin-Nummer direkt in den Sketch, also 5 und 7 ohne Zusatz.
Board in de Arduino IDEArduino Uno
Ein zusätzliches Board-Paket brauchst du dafür nicht. Der UNO ist in der Arduino IDE ab Werk dabei.
Pinbezetting ESP32-Wroom
Beim ESP32 schreibst du die GPIO-Nummer direkt in den Sketch, also 26 und 27 ohne D davor.
Board in de Arduino IDEESP32 Dev Module
Dafür muss die ESP32-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pinbezetting Wemos D1 Mini
Den Pin-Nummern muss das D vorangestellt werden. Du schreibst also D6 und D7 in den Sketch, nicht 6 und 7.
Board in de Arduino IDELOLIN(WEMOS) D1 R2 & mini
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Pinbezetting NodeMCU
Auch beim NodeMCU steht vor der Pin-Nummer ein D. D1 entspricht GPIO 5, D2 entspricht GPIO 4.
Board in de Arduino IDENodeMCU 1.0 (ESP-12E Module)
Dafür muss die ESP8266-Boardverwaltung installiert sein. Du fügst sie einmalig über die Einstellungen der Arduino IDE hinzu.
Bibliothek installieren
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
#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);
}