LM75A temperaturni senzor sa LCD1602 I2C
U ovom tutorijalu naučit ćemo kako koristiti LM75A senzor temperature za prikaz očitanja temperature u Celzijusima i Fahrenheitima na LCD1602 ekranu koristeći I2C komunikaciju. LM75A može mjeriti temperature u rasponu od -55°C do +125°C, što ga čini pogodnim za različite primjene. Nakon što je postavljanje završeno, moći ćete vidjeti očitanja temperature u realnom vremenu na LCD ekranu.


Za ovaj projekat koristit ćemo LM75A senzor i LCD1602 modul povezane putem I2C-a, što omogućava jednostavnije ožičenje i manje korištenih pinova na Arduinu. Cilj je kreirati sistem koji kontinuirano očitava temperaturu i prikazuje je na LCD-u. Ako vam treba pojašnjenje bilo kojeg dijela procesa, svakako pogledajte video tutorijal (u videu na 00:00).
Objašnjenje hardvera
Glavne komponente za ovaj projekat uključuju LM75A senzor temperature i LCD1602 ekran. LM75A je I2C senzor temperature koji pruža precizna očitanja temperature. Komunicira s Arduinom preko samo dvije žice, SDA (linija podataka) i SCL (linija takta), što ga čini lakim za integraciju u vaše projekte.
LCD1602 je 16x2 karaktera ekran koji može prikazati do 32 karaktera odjednom. Korištenjem I2C interfejsa, možemo ga kontrolirati sa samo dvije dodatne žice, što uvelike pojednostavljuje proces ožičenja. Pozadinsko osvjetljenje LCD-a također može pružiti bolju vidljivost u okruženjima sa slabim svjetlom.
Detalji iz tehničke dokumentacije
| Proizvođač | Texas Instruments |
|---|---|
| Broj dijela | LM75A |
| Logički/IO napon | 2.7 V do 5.5 V |
| Napon napajanja | 2.7 V do 5.5 V |
| Izlazna struja (po kanalu) | N/A |
| Vršna struja (po kanalu) | N/A |
| Smjernice za PWM frekvenciju | N/A |
| Ulazni logički pragovi | 0.3 * Vcc (nisko), 0.7 * Vcc (visoko) |
| Pad napona / RDS(on) / zasićenje | N/A |
| Toplotna ograničenja | Radna: -55°C do +125°C |
| Pakovanje | SOT-23 |
| Napomene / varijante | Dostupan u više I2C adresa |
- Osigurajte odgovarajuće napajanje (2.7 V do 5.5 V).
- Koristite pull-up otpornike na SDA i SCL linijama ako je potrebno.
- Provjerite konfiguraciju I2C adrese za više uređaja.
- Držite ožičenje kratkim kako biste smanjili smetnje.
- Pratite temperaturni raspon: -55°C do +125°C.
- Koristite serijski monitor za otklanjanje grešaka u očitanjima temperature.
- Efikasno upravljajte stanjima grešaka u kodu.
- Budite oprezni sa zahtjevima za napajanje ekrana.
Upute za ožičenje

Za ožičenje LM75A senzora temperature i LCD1602, počnite spajanjem napajanja. Spojite VCC pin i LM75A i LCD1602 na 5V pin na Arduinu. Zatim spojite pin uzemljenja (GND) oba modula na GND pin na Arduinu.
Zatim spojite I2C komunikacijske linije. SDA pin LM75A treba spojiti na A4 pin na Arduinu, dok SCL pin treba spojiti na A5 pin. Ovo omogućava I2C komunikaciju između senzora i Arduina. Provjerite da su veze sigurne kako biste spriječili greške u komunikaciji.
Primjeri koda i objašnjenje
U kodu prvo uključujemo potrebne biblioteke za LM75A senzor i LCD1602 ekran. Sljedeći izvod pokazuje kako kreirati instancu LM75A senzora:
LM75A lm75a_sensor(false, false, false);
Ova linija inicijalizira LM75A senzor objekt. Boolean parametri odgovaraju A0, A1 i A2 pinovima LM75A, omogućavajući različite I2C adrese ako je potrebno.
Zatim postavljamo serijski monitor i inicijaliziramo LCD ekran:
void setup(void) {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
}
Ovdje započinjemo serijsku komunikaciju na 9600 bauda i inicijaliziramo LCD ekran. Pozadinsko osvjetljenje se uključuje, a početna poruka se ispisuje na ekran.
U glavnoj petlji kontinuirano očitavamo temperaturu i prikazujemo je:
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
}
Ovaj dio preuzima temperaturu sa senzora. Ako je očitanje nevažeće, poruka o grešci se šalje na serijski monitor. U suprotnom, temperatura se može obraditi i prikazati na LCD-u.
Demonstracija / Šta očekivati
Nakon što je sve ožičeno i kod uploadan, trebali biste vidjeti očitanja temperature na LCD1602 ekranu, koja se izmjenjuju između Celzijusa i Fahrenheita. Ako LM75A senzor ispravno funkcionira, kontinuirano će ažurirati prikazanu temperaturu svake sekunde. Ako postoje problemi, poput obrnutog polariteta ili pogrešnog ožičenja, provjerite veze i osigurajte da se koriste ispravni pinovi (u videu na 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);
}
Stvari koje bi vam mogle zatrebati
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
AmazonPurchase LM75A from Amazonamzn.to
-
eBayPurchase LCD1602-I2C from eBayebay.us
-
AliExpressPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
Resursi i reference
-
EksternoLM75A datasheet from NXPnxp.com
-
EksternoLM75A datasheet from TIti.com
-
EksternoLM75A library from GitHubgithub.com
Datoteke📁
Fritzing datoteka
-
LM75 senzor temperature
Temperature Sensor - LM75.fzpz0.01 MB
Ostale datoteke
-
LM75A tehnički list od Philipsa
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB -
LM75A biblioteka sa Robojax.com
robojax-LM75A_temperature_sensor.zip0.56 MB