LM75A Sıcaklık Sensörü LCD1602 I2C ile
Bu eğitimde, I2C iletişimi kullanarak LM75A sıcaklık sensörünü kullanarak sıcaklık okumalarını hem Celsius hem de Fahrenheit cinsinden bir LCD1602 ekranda nasıl görüntüleyeceğimizi öğreneceğiz. LM75A, -55°C ile +125°C arasındaki sıcaklıkları ölçebilir ve bu da onu çeşitli uygulamalar için uygun hale getirir. Kurulum tamamlandığında, LCD ekranda gerçek zamanlı sıcaklık okumalarını görebileceksiniz.


Bu proje için, I2C üzerinden bağlanan LM75A sensörünü ve LCD1602 modülünü kullanacağız; bu, daha basit kablolama ve Arduino'da daha az pin kullanımı sağlar. Amaç, sıcaklığı sürekli okuyan ve LCD'de görüntüleyen bir sistem oluşturmaktır. Sürecin herhangi bir bölümünde açıklamaya ihtiyacınız olursa, video eğitimini kontrol ettiğinizden emin olun (videoda 00:00'da).
Donanım Açıklaması
Bu projenin ana bileşenleri LM75A sıcaklık sensörü ve LCD1602 ekranıdır. LM75A, doğru sıcaklık okumaları sağlayan bir I2C sıcaklık sensörüdür. Arduino ile yalnızca iki kablo üzerinden iletişim kurar: SDA (veri hattı) ve SCL (saat hattı), bu da projelerinize entegre etmeyi kolaylaştırır.
LCD1602, aynı anda 32 karaktere kadar gösterebilen 16x2 karakterli bir ekrandır. I2C arayüzünü kullanarak, onu yalnızca iki ek kablo ile kontrol edebiliriz, bu da kablolama sürecini büyük ölçüde basitleştirir. LCD'nin arka aydınlatma özelliği, düşük ışıklı ortamlarda daha iyi görünürlük sağlayabilir.
Veri Sayfası Ayrıntıları
| Üretici | Texas Instruments |
|---|---|
| Parça numarası | LM75A |
| Mantık/IO voltajı | 2,7 V ila 5,5 V |
| Besleme voltajı | 2,7 V ila 5,5 V |
| Çıkış akımı (kanal başına) | Yok |
| Tepe akımı (kanal başına) | Yok |
| PWM frekans kılavuzu | Yok |
| Giriş mantık eşikleri | 0,3 * Vcc (düşük), 0,7 * Vcc (yüksek) |
| Gerilim düşümü / RDS(on) / doyum | Yok |
| Termal sınırlar | Çalışma: -55°C ila +125°C |
| Paket | SOT-23 |
| Notlar / varyantlar | Birden fazla I2C adresinde mevcuttur |
- Doğru güç kaynağını sağlayın (2,7 V ila 5,5 V).
- Gerekirse SDA ve SCL hatlarında pull-up dirençleri kullanın.
- Birden fazla cihaz için I2C adres yapılandırmasını kontrol edin.
- Paraziti en aza indirmek için kabloları kısa tutun.
- Sıcaklık aralığını izleyin: -55°C ila +125°C.
- Sıcaklık okumalarında hata ayıklamak için seri monitörü kullanın.
- Kodda hata durumlarını etkili bir şekilde ele alın.
- Ekranın güç gereksinimlerine dikkat edin.
Kablolama Talimatları

LM75A sıcaklık sensörünü ve LCD1602'yi bağlamak için güç kaynağını bağlayarak başlayın. Hem LM75A'nın hem de LCD1602'nin VCC pinini Arduino'daki 5V pinine bağlayın. Ardından, her iki modülün toprak (GND) pinini Arduino'daki GND pinine bağlayın.
Sonra, I2C iletişim hatlarını bağlayın. LM75A'nın SDA pini Arduino'daki A4 pinine, SCL pini ise A5 pinine bağlanmalıdır. Bu, sensör ile Arduino arasında I2C iletişimini sağlar. İletişim hatalarını önlemek için bağlantıların güvenli olduğundan emin olun.
Kod Örnekleri ve Açıklama
Kodda, önce LM75A sensörü ve LCD1602 ekranı için gerekli kütüphaneleri dahil ediyoruz. Aşağıdaki alıntı, LM75A sensörünün bir örneğini nasıl oluşturacağınızı gösterir:
LM75A lm75a_sensor(false, false, false);
Bu satır, LM75A sensör nesnesini başlatır. Boolean parametreler, LM75A'nın A0, A1 ve A2 pinlerine karşılık gelir ve gerektiğinde farklı I2C adreslerine izin verir.
Sonra, seri monitörü kurar ve LCD ekranı başlatırız:
void setup(void) {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
}
Burada, seri iletişimi 9600 baud'da başlatıyor ve LCD ekranı başlatıyoruz. Arka aydınlatma açılır ve ekrana bir başlangıç mesajı yazdırılır.
Ana döngüde, sıcaklığı sürekli okur ve görüntüleriz:
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
}
Bu bölüm, sensörden sıcaklığı alır. Okuma geçersizse, seri monitöre bir hata mesajı gönderilir. Aksi takdirde, sıcaklık işlenebilir ve LCD'de görüntülenebilir.
Gösterim / Beklentiler
Her şey bağlandığında ve kod yüklendiğinde, LCD1602 ekranda Celsius ve Fahrenheit arasında değişen sıcaklık okumalarını görmelisiniz. LM75A sensörü doğru çalışıyorsa, görüntülenen sıcaklığı her saniye sürekli güncelleyecektir. Ters polarite veya yanlış kablolama gibi herhangi bir sorun varsa, bağlantıları kontrol edin ve doğru pinlerin kullanıldığından emin olun (videoda 00:00'da).
/*
* \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);
}
İhtiyacın olabileceğini düşünüyor
-
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
Kaynaklar ve referanslar
-
DışLM75A datasheet from NXPnxp.com
-
DışLM75A datasheet from TIti.com
-
DışLM75A library from GitHubgithub.com
Dosyalar📁
Fritzing Dosyası
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
Diğer dosyalar
-
Philips LM75A veri sayfası
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB -
Robojax.com'dan LM75A kütüphanesi
robojax-LM75A_temperature_sensor.zip0.56 MB