Sensor Suhu LM75A dengan LCD1602 I2C
Dalam tutorial ini, kita akan mempelajari cara menggunakan sensor suhu LM75A untuk menampilkan pembacaan suhu dalam Celsius dan Fahrenheit pada layar LCD1602 menggunakan komunikasi I2C. LM75A dapat mengukur suhu mulai dari -55°C hingga +125°C, sehingga cocok untuk berbagai aplikasi. Setelah pengaturan selesai, Anda akan dapat melihat pembacaan suhu secara real-time pada layar LCD.


Untuk proyek ini, kita akan menggunakan sensor LM75A dan modul LCD1602 yang terhubung melalui I2C, yang memungkinkan pengkabelan lebih sederhana dan penggunaan pin yang lebih sedikit pada Arduino. Tujuannya adalah untuk membuat sistem yang terus membaca suhu dan menampilkannya pada LCD. Jika Anda memerlukan klarifikasi tentang bagian mana pun dari proses ini, pastikan untuk menonton tutorial video (di video pada 00:00).
Penjelasan Perangkat Keras
Komponen utama untuk proyek ini termasuk sensor suhu LM75A dan layar LCD1602. LM75A adalah sensor suhu I2C yang memberikan pembacaan suhu yang akurat. Sensor ini berkomunikasi dengan Arduino hanya melalui dua kabel, SDA (jalur data) dan SCL (jalur clock), sehingga mudah diintegrasikan ke dalam proyek Anda.
LCD1602 adalah layar karakter 16x2 yang dapat menampilkan hingga 32 karakter sekaligus. Dengan menggunakan antarmuka I2C, kita dapat mengontrolnya hanya dengan dua kabel tambahan, yang sangat menyederhanakan proses pengkabelan. Fitur lampu latar pada LCD juga dapat memberikan visibilitas yang lebih baik di lingkungan dengan cahaya rendah.
Detail Datasheet
| Produsen | Texas Instruments |
|---|---|
| Nomor bagian | LM75A |
| Tegangan logika/IO | 2,7 V hingga 5,5 V |
| Tegangan suplai | 2,7 V hingga 5,5 V |
| Arus keluaran (per saluran) | T/A |
| Arus puncak (per saluran) | T/A |
| Panduan frekuensi PWM | T/A |
| Ambang logika input | 0,3 * Vcc (rendah), 0,7 * Vcc (tinggi) |
| Penurunan tegangan / RDS(on) / saturasi | T/A |
| Batas termal | Operasi: -55°C hingga +125°C |
| Kemasan | SOT-23 |
| Catatan / varian | Tersedia dalam beberapa alamat I2C |
- Pastikan catu daya yang tepat (2,7 V hingga 5,5 V).
- Gunakan resistor pull-up pada jalur SDA dan SCL jika diperlukan.
- Periksa konfigurasi alamat I2C untuk beberapa perangkat.
- Jaga kabel tetap pendek untuk meminimalkan interferensi.
- Pantau rentang suhu: -55°C hingga +125°C.
- Gunakan monitor serial untuk debugging pembacaan suhu.
- Tangani kondisi kesalahan dalam kode secara efektif.
- Berhati-hatilah dengan kebutuhan daya layar.
Instruksi Pengkabelan

Untuk menghubungkan sensor suhu LM75A dan LCD1602, mulailah dengan menghubungkan catu daya. Hubungkan pin VCC dari LM75A dan LCD1602 ke pin 5V pada Arduino. Kemudian, hubungkan pin ground (GND) dari kedua modul ke pin GND pada Arduino.
Selanjutnya, hubungkan jalur komunikasi I2C. Pin SDA dari LM75A harus dihubungkan ke pin A4 pada Arduino, sedangkan pin SCL harus dihubungkan ke pin A5. Ini memungkinkan komunikasi I2C antara sensor dan Arduino. Pastikan koneksi aman untuk mencegah kesalahan komunikasi.
Contoh Kode & Penjelasan
Dalam kode, pertama-tama kita menyertakan library yang diperlukan untuk sensor LM75A dan layar LCD1602. Cuplikan berikut menunjukkan cara membuat instance dari sensor LM75A:
LM75A lm75a_sensor(false, false, false);
Baris ini menginisialisasi objek sensor LM75A. Parameter boolean sesuai dengan pin A0, A1, dan A2 dari LM75A, memungkinkan alamat I2C yang berbeda jika diperlukan.
Selanjutnya, kita mengatur monitor serial dan menginisialisasi layar LCD:
void setup(void) {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
lcd.print("Robojax LM75A");
}
Di sini, kita memulai komunikasi serial pada 9600 baud dan menginisialisasi layar LCD. Lampu latar dinyalakan, dan pesan awal dicetak ke layar.
Dalam loop utama, kita terus membaca suhu dan menampilkannya:
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
}
Bagian ini mengambil suhu dari sensor. Jika pembacaan tidak valid, pesan kesalahan dikirim ke monitor serial. Jika tidak, suhu dapat diproses dan ditampilkan pada LCD.
Demonstrasi / Apa yang Diharapkan
Setelah semuanya terhubung dan kode diunggah, Anda akan melihat pembacaan suhu pada layar LCD1602, bergantian antara Celsius dan Fahrenheit. Jika sensor LM75A berfungsi dengan benar, sensor akan terus memperbarui suhu yang ditampilkan setiap detik. Jika ada masalah, seperti polaritas terbalik atau pengkabelan yang salah, periksa koneksi dan pastikan pin yang benar digunakan (di video pada 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);
}
Hal-hal yang mungkin Anda butuhkan
-
AmazonPurchase 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
Sumber daya & referensi
-
EksternalLM75A datasheet from NXPnxp.com
-
EksternalLM75A datasheet from TIti.com
-
EksternalLM75A library from GitHubgithub.com
Berkas📁
File Fritzing
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
File lainnya
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB -
LM75A library from Robojax.com
robojax-LM75A_temperature_sensor.zip0.56 MB