LM75A Temperatursensor mit LCD1602 I2C
In diesem Tutorial lernen wir, wie man den LM75A-Temperatursensor verwendet, um Temperaturwerte sowohl in Celsius als auch in Fahrenheit auf einem LCD1602-Display über I2C-Kommunikation anzuzeigen. Der LM75A kann Temperaturen von -55°C bis +125°C messen, wodurch er sich für verschiedene Anwendungen eignet. Sobald die Einrichtung abgeschlossen ist, können Sie Echtzeit-Temperaturwerte auf dem LCD-Display sehen.


Für dieses Projekt verwenden wir den LM75A-Sensor und das LCD1602-Modul, die über I2C verbunden sind, was eine einfachere Verkabelung ermöglicht und weniger Pins am Arduino benötigt. Ziel ist es, ein System zu erstellen, das die Temperatur kontinuierlich ausliest und auf dem LCD anzeigt. Wenn Sie zu einem Teil des Ablaufs eine Klärung benötigen, schauen Sie sich unbedingt das Video-Tutorial an (im Video bei 00:00).
Hardware erklärt
Die Hauptkomponenten für dieses Projekt umfassen den LM75A-Temperatursensor und das LCD1602-Display. Der LM75A ist ein I2C-Temperatursensor, der genaue Temperaturmesswerte liefert. Er kommuniziert mit dem Arduino über nur zwei Leitungen, SDA (Datenleitung) und SCL (Taktleitung), was die Integration in Ihre Projekte erleichtert.
Das LCD1602 ist ein 16x2-Zeichen-Display, das bis zu 32 Zeichen gleichzeitig anzeigen kann. Durch die Verwendung der I2C-Schnittstelle können wir es mit nur zwei zusätzlichen Leitungen steuern, was den Verdrahtungsaufwand erheblich vereinfacht. Die Hintergrundbeleuchtung des LCD sorgt außerdem für bessere Sichtbarkeit bei schlechten Lichtverhältnissen.
Details zum Datenblatt
| Hersteller | Texas Instruments |
|---|---|
| Teilenummer | LM75A |
| Logik-/I/O-Spannung | 2.7 V bis 5.5 V |
| Versorgungsspannung | 2,7 V bis 5,5 V |
| Ausgangsstrom (pro Kanal) | nicht anwendbar |
| Spitzenstrom (pro Kanal) | Nicht zutreffend |
| Hinweise zur PWM-Frequenz | nicht zutreffend |
| Schwellenwerte der Eingangslogik | 0.3 * Vcc (niedrig), 0.7 * Vcc (hoch) |
| Spannungsabfall / RDS(on)/ Sättigung | Nicht zutreffend |
| Thermische Grenzwerte | Betriebstemperatur: -55 °C bis +125 °C |
| Paket | SOT-23 |
| Notizen / Varianten | Verfügbar unter mehreren I2C-Adressen |
- Stellen Sie eine ordnungsgemäße Stromversorgung sicher (2.7 V bis 5.5 V).
- Verwenden Sie bei Bedarf Pull-up-Widerstände an den SDA- und SCL-Leitungen.
- Überprüfen Sie die I2C-Adresskonfiguration für mehrere Geräte.
- Halten Sie die Verkabelung kurz, um Störungen zu minimieren.
- Temperaturbereich des Monitors: -55 °C bis +125 °C
- Verwenden Sie den seriellen Monitor zur Fehlersuche bei Temperaturwerten.
- Behandle Fehlerzustände im Code effektiv.
- Achten Sie auf die Leistungsanforderungen des Displays.
Verdrahtungsanleitung

Um den LM75A-Temperatursensor und das LCD1602 zu verkabeln, beginnen Sie mit dem Anschluss der Stromversorgung. Verbinden Sie den VCC-Pin sowohl des LM75A als auch des LCD1602 mit dem 5V-Pin des Arduino. Verbinden Sie dann den Masseanschluss (GND) beider Module mit dem GND-Pin des Arduino.
Verbinden Sie als Nächstes die I2C-Kommunikationsleitungen. Der SDA-Pin des LM75A sollte mit dem A4-Pin am Arduino verbunden werden, während der SCL-Pin mit dem A5-Pin verbunden werden sollte. Dadurch kann der Sensor über I2C mit dem Arduino kommunizieren. Stellen Sie sicher, dass die Verbindungen fest sitzen, um Kommunikationsfehler zu vermeiden.
Codebeispiele & Schritt-für-Schritt-Anleitung
Im Code binden wir zunächst die notwendigen Bibliotheken für den LM75A-Sensor und das LCD1602-Display ein. Der folgende Auszug zeigt, wie man eine Instanz des LM75A-Sensors erstellt:
LM75A lm75a_sensor(false, false, false);Diese Zeile initialisiert das LM75A-Sensorobjekt. Die booleschen Parameter entsprechen den A0-, A1- und A2-Pins des LM75A und ermöglichen bei Bedarf unterschiedliche I2C-Adressen.
Als Nächstes richten wir den seriellen Monitor ein und initialisieren das LCD-Display:
void setup(void) {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
}Hier starten wir die serielle Kommunikation bei 9600 Baud und initialisieren das LCD-Display. Die Hintergrundbeleuchtung wird eingeschaltet, und eine Anfangsnachricht wird auf dem Bildschirm angezeigt.
In der Hauptschleife lesen wir kontinuierlich die Temperatur aus und zeigen sie an:
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
}Dieser Abschnitt liest die Temperatur vom Sensor. Wenn die Messung ungültig ist, wird eine Fehlermeldung an den seriellen Monitor gesendet. Andernfalls kann die Temperatur verarbeitet und auf dem LCD angezeigt werden.
Vorführung / Was Sie erwartet
Sobald alles verkabelt ist und der Code hochgeladen wurde, sollten die Temperaturwerte auf dem LCD1602-Display zu sehen sein, die abwechselnd zwischen Celsius und Fahrenheit angezeigt werden. Funktioniert der LM75A-Sensor korrekt, aktualisiert er die angezeigte Temperatur kontinuierlich jede Sekunde. Wenn Probleme auftreten, wie z. B. verkehrte Polarität oder falsche Verkabelung, überprüfen Sie die Verbindungen und stellen Sie sicher, dass die richtigen Pins verwendet werden (im Video bei 00:00).
/*
* \brief Show temperature in degrees Celsius and Fahrenheit every second
*
* \author Quentin Comte-Gaz <quentin@comte-gaz.com>
* \date 8 July 2016
* \license MIT License (contact me if too restrictive)
* \copyright Copyright (c) 2016 Quentin Comte-Gaz
* \version 1.0
*
* Modified by Ahmad Shamshiri on July 12, 2018 at 22:40 for Robojax.com
* in Ajax, Ontario, Canada
* Watch video instructions for this code: https://youtu.be/hVo_msVMlaI
For this sketch, you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5
*/
#include <LM75A.h>
// Create I2C LM75A instance
LM75A lm75a_sensor(false, //A0 LM75A pin state
false, //A1 LM75A pin state
false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
void setup(void)
{
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
// initialize the LCD
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
lcd.setCursor(0,1);
lcd.print("Demo");
delay(2000);
}
void loop()
{
lcd.clear();// clear previous values from screen
// Robojax.com LM75A Test
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temp: ");
Serial.print(temperature_in_degrees);
Serial.print(" C (");
float tmpF = LM75A::degreesToFahrenheit(temperature_in_degrees);
Serial.print(tmpF);
Serial.println(" F)");
lcdDisplay(
// to print Celsius:
0, // character 0
0, // line 0
"Celsius: ",
// to print Celsius
11, // character 10
0, // line 0
temperature_in_degrees
);
lcdDisplay(
// to print Fahrenheit:
0, // character 0
1, // line 1
"Fahrenheit: ",
// to print Fahrenheit
11, // character 9
1, // line 0
tmpF
);
}
delay(1000);
}
/*
* lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
* displays value and title on LCD1602
* How to use:
* If you want to display: "Voltage: 13.56mV" starting from the first character
* on the second row.
* use:
* lcdDisplay(0, 1, "Voltage: ", 13.56)
*
* tc is the character number (0)
* tr is the row number in the LCD (1)
* title is the text ("Voltage:")
* vc is the character number for the value
* vr is the row number for the value
* value is the value (13.56)
*/
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
// Robojax.com LCD1602 for LM75A Demo
lcd.setCursor (tc,tr); //
lcd.print(title);
lcd.setCursor (vc,vr); //
lcd.print(value);
}
Dinge, die Sie vielleicht brauchen
-
AmazonKaufen Sie LM75A bei Amazon.amzn.to
-
AmazonLCD1602-I2C bei Amazon kaufenamzn.to
-
eBayKaufen Sie LCD1602-I2C bei eBay.ebay.us
-
AliExpressKaufen Sie 10 Stück LCD1602-I2C von AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
-
ExternLM75A-Bibliothek von GitHubgithub.com
-
ExternLM75A-Datenblatt von NXPnxp.com
-
ExternLM75A-Datenblatt von TIti.com
Dateien📁
Fritzing-Datei
-
LM75 Temperatursensor
Temperature Sensor - LM75.fzpz0.01 MB
Andere Dateien
-
LM75A-Bibliothek von Robojax.com
robojax-LM75A_temperature_sensor.zip0.56 MB