Pelajaran 42: Menggunakan Sensor Suhu LM35 | Kursus Arduino Langkah Demi Langkah
Dalam pelajaran ini, kita akan mempelajari cara menggunakan sensor suhu LM35 dengan Arduino untuk mengukur dan menampilkan suhu dalam Celsius, Fahrenheit, dan Kelvin. Sensor ini mengeluarkan tegangan yang sebanding dengan suhu, sehingga memungkinkan kita untuk dengan mudah membaca dan memproses data dalam program Arduino kita. Di akhir tutorial ini, Anda akan dapat menerapkan tindakan berbasis suhu dalam proyek Anda.

Sensor suhu LM35 memiliki tiga pin: pin kiri untuk catu daya, pin tengah mengeluarkan tegangan yang sesuai dengan suhu, dan pin kanan untuk ground. Sensor ini beroperasi dalam rentang tegangan 4 hingga 30 volt dan memberikan keluaran 10 milivolt per derajat Celsius. Presisi ini memungkinkan pembacaan suhu yang akurat dalam berbagai aplikasi.
Penjelasan Perangkat Keras
Komponen utama dalam proyek ini adalah sensor suhu LM35. Sensor ini dirancang untuk memberikan keluaran tegangan analog yang sebanding secara linear dengan suhu dalam derajat Celsius. Sensor ini cocok untuk berbagai rentang suhu, dari -55°C hingga +150°C, sehingga serbaguna untuk berbagai lingkungan.
LM35 membutuhkan daya minimal (60 mikroampere) dan beroperasi pada rentang tegangan yang lebar. Impedansi keluarannya rendah, sehingga dapat terhubung langsung dengan pin input analog Arduino tanpa rangkaian tambahan. Kesederhanaan desain ini menjadikan LM35 pilihan yang sangat baik untuk tugas pengukuran suhu.
Detail Datasheet
| Produsen | Texas Instruments |
|---|---|
| Nomor komponen | LM35 |
| Tegangan logika/IO | 4–30 V |
| Arus keluaran (per saluran) | 1 mA maks |
| Rentang suhu | -55 hingga +150 °C |
| Tegangan keluaran | 10 mV/°C |
| Akurasi | ±0,5 °C pada 25 °C |
| Kemasan | TO-92 |
- Pastikan catu daya yang tepat antara 4V dan 30V untuk pembacaan yang akurat.
- Tegangan keluaran sebanding langsung dengan suhu (10 mV/°C).
- Gunakan kapasitor decoupling di dekat pin daya untuk stabilisasi.
- Pertahankan polaritas yang benar saat menghubungkan untuk menghindari kerusakan.
- Pastikan koneksi yang baik untuk menghindari input mengambang, yang dapat menyebabkan pembacaan yang salah.
Instruksi Pengkabelan

Untuk menghubungkan sensor suhu LM35, sambungkan pin kiri (VCC) ke keluaran 5V pada Arduino. Pin tengah (Output) harus dihubungkan ke pin input analog A0, yang akan kita gunakan untuk membaca suhu. Terakhir, sambungkan pin kanan (Ground) ke salah satu pin ground pada Arduino. Pastikan semua koneksi aman untuk mencegah masalah selama pengoperasian.
Saat menghubungkan, ingat bahwa LM35 dapat diberi daya dengan tegangan suplai antara 4V dan 30V, tetapi menggunakan 5V sudah cukup untuk aplikasi Arduino. Jika Anda melihat pembacaan suhu yang tidak terduga, periksa kembali koneksi dan pastikan sensor diberi daya dengan benar.
Contoh Kode & Penjelasan
Dalam kode Arduino, kita mendefinisikan pin input analog untuk membaca tegangan keluaran LM35 dengan pengenal inPin, yang diatur ke A0. Selain itu, kita mendefinisikan konstanta LM35_FACTOR yang diatur ke 0,01 untuk mewakili keluaran sensor per derajat Celsius.
const int inPin = A0; // dapat diubah
const float LM35_FACTOR = 0.01; // jangan diubah
Pengaturan ini memungkinkan kita membaca suhu dengan cara yang sederhana. Selanjutnya, kita menginisialisasi komunikasi serial dalam fungsi setup() untuk mulai mengeluarkan data suhu ke monitor serial.
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 untuk Arduino");
}
Dalam fungsi loop(), kita terus membaca suhu dan mencetaknya dalam satuan yang berbeda. Fungsi printTemperature() mengambil parameter karakter untuk menentukan format suhu yang diinginkan, sehingga memungkinkan kita menampilkan suhu dalam Celsius, Fahrenheit, atau Kelvin.
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000); // Tunggu selama 1000ms
}
Untuk mengambil tindakan berdasarkan suhu, kita dapat memeriksa apakah suhu melebihi ambang batas tertentu menggunakan fungsi getTemperature(). Fungsi ini menghitung suhu rata-rata dari sejumlah sampel yang ditentukan.
Untuk detail lebih lanjut, tonton video terkait untuk penjelasan kode lengkap (di video pada menit 10:15).
Demonstrasi / Apa yang Diharapkan
Ketika sensor LM35 terhubung dengan benar dan kode Arduino diunggah, Anda akan melihat suhu ditampilkan dalam Celsius, Fahrenheit, dan Kelvin di monitor serial. Jika Anda memberikan panas pada sensor, Anda akan mengamati pembacaan suhu meningkat sesuai.
Perlu diketahui bahwa pengkabelan yang salah dapat menyebabkan pembacaan suhu yang tidak menentu, seperti nilai yang sangat tinggi atau rendah. Selalu pastikan sensor terhubung dengan benar untuk menghindari masalah tersebut (di video pada menit 12:30).
Stempel Waktu Video
- 00:00 - Pengenalan LM35
- 02:30 - Instruksi Pengkabelan
- 05:00 - Penjelasan Kode
- 10:15 - Demonstrasi Pembacaan Suhu
- 12:30 - Masalah Umum dan Pemecahan Masalah
++
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 42: Introduction to LM35
* This Arduino sketch is to use LM35 to measure temperature
* This code has two ways to get temperature
* 1-To print the temperature either in C, F or K on the serial monitor
* 2-To return the value in C, F and K
*
Please watch video instruction here https://youtu.be/DRIC4wDu878
This code is available at http://robojax.com/course1/?vid=lecture37
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
//robojax.com LM35 Code for Arduino
printTemperature('C');
Serial.println();
printTemperature('F');
Serial.println();
printTemperature('K');
Serial.println();
Serial.println();
// Serial.print(" Temperature: ");
// printDegree();
// Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
// do something here (watch video)
}
// Serial.println();
delay(1000);//Wait for 1000ms (change it if you want)
}
/*
* getTemperature()
* @brief gets the average temperature
* @param average temperature
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
float getTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value,voltage,temperature;//define variables
int sensorValue;
float averageTemperature =0;
for(int i=0; i< iteration; i++)
{
sensorValue = analogRead(inPin);//read analog value
voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
temperature = voltage / LM35_FACTOR; //convert voltage to temperature
averageTemperature += temperature;//add
}
averageTemperature /=iteration;
if(type =='F')
{
value = averageTemperature *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = averageTemperature + 273.15;//convert to Kelvin
}else{
value = averageTemperature;// return Celsius
}
return value ;
}//getTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param charact type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value;
float temp = getTemperature(type);
Serial.print(temp);
printDegree();
if(type =='F')
{
Serial.print("F");
}else if(type =='K')
{
Serial.print("K");
}else{
Serial.print("C");
}
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
Hal-hal yang mungkin Anda butuhkan
-
AmazonPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Sumber daya & referensi
-
Lembar DataLM35 Datasheetti.com
Berkas📁
Tidak ada file tersedia.