Pada tutorial belajar Arduino Indonesia kali ini akan membahas tentang bagaimana membuat project DIY (Do It Yourself) aplikasi pengukur suhu sederhana dengan menggunakan sensor suhu LM35. Karena nilai output dari sensor suhu LM35 berupa signal analog, maka perlu dilakukan proses untuk mengubah signal analog tersebut ke signal digital dengan menggunakan feature ADC pada Arduino. Untuk resolusi maximum ADC board Arduino Uno ialah 10 bit, sehingga nilai prescaler maximum yang dapat digunakan sebesar 1023. Baca juga artikel ini dalam Bahasa Inggris.
Sebelum membuat project pengukur suhu dengan Arduino, terlebih dahulu perlu memahami karakteristik dari sensor suhu LM35 yang akan digunakan. Hal ini penting untuk keperluan kalibrasi dan ralat dari aplikasi pengukur suhu dengan Arduino tersebut.
Sensor Suhu LM35
Sensor suhu LM35 merupakan komponen elektronika yang memiliki kemampuan mendeteksi input nilai besaran suhu dari lingkungannya, kemudian memberikan output besaran listrik dalam bentuk tegangan. Konfigurasi kaki IC LM35 tampak pada gambar, dengan urutan Vs tegangan pencatu (5 volt), nilai tegangan input ke microcontroller Arduino, dan ground.
Berikut ini adalah karakteristik dari sensor suhu LM35.
- Memiliki tingkat kepekaan suhu, dengan faktor skala linier berbanding dengan suhu 10 mV untuk setiap perubahan 1 derajad celsius
- Memiliki tingkat ketepatan kalibrasi yaitu 0,5 derajad celsius, pada suhu ruangan 25 derajad celsius
- Memiliki jangkauan maximum operasi hingga 150 derajad celsius
- Mampu bekerja pada tegangan input 4 volt hingga 30 volt
- Memiliki arus rendah yaitu kurang dari 60 µA
- Memiliki pemanasan sendiri yang rendah (low-self-heating) yaitu kurang dari 0,1 derajad celsius pada ruang kamar
- Memiliki tingkat impedance keluaran yang rendah yaitu 0,1 W untuk beban 1 mA
- Memiliki ralat sekitar kurang lebih 0,25 derajad celsius
Langkah Kerja
Langkah kerja untuk project Arduino pengukur suhu sederhana ini ialah sebagai berikut ini.
- Rangkai komponen yang dibutuhkan seperti pada gambar wiring diagram dengan board Arduino
- Sambungkan board Arduino dengan connector USB ke komputer
- Buka Arduino IDE, dan tulis source code (sketch) program
- Lakukan Verify untuk memastikan program telah ditulis dengan benar
- Selanjutnya Upload program tersebut ke board Arduino
- Lakukan pengujian dan amati hasil suhu terukur
- Bandingkan hasil pengukuran tersebut dengan suhu terukur dari thermometer suhu raksa
Wiring Diagram
Langkah selanjutnya perlu dilakukan pemetaan konfigurasi wiring diagram. Hal ini ditujukan agar pin yang digunakan pada source code dan wiring diagram sesuai. Berikut ini ialah wiring diagram yang digunakan antara Arduino dengan LCD.
Berdasarkan gambar wiring diagram tersebut.
- LCD RS pin dihubungkan ke digital pin 12
- LCD Enable pin dihubungkan ke digital pin 11
- LCD D4 pin dihubungkan ke digital pin 5
- LCD D5 pin dihubungkan ke digital pin 4
- LCD D6 pin dihubungkan ke digital pin 3
- LCD D7 pin dihubungkan ke digital pin 2
- Vout LM35 dihubungkan ke analog pin A0
Source Code
Berikut ini adalah source code (sketch) Arduino, aplikasi pengukur suhu dengan LM35.
/*
Program aplikasi pengukur suhu
Arduino LM35
Loki Lang
*/
#include <LiquidCrystal.h>
LiquidCrystal lang(12, 11, 5, 4, 3, 2);
int lm35 = A0;
int val = 0;
float temp;
void setup()
{
pinMode(A0, INPUT);
lang.begin(16, 2);
lang.setCursor(0, 0);
lang.print("Arduino");
lang.setCursor(0, 1);
lang.print("Pengukur Suhu");
delay(1000);
lang.clear();
}
void loop()
{
val = analogRead(lm35);
delay(100);
lang.setCursor(0, 0);
lang.print("Suhu celsius:");
lang.setCursor(0, 1);
temp = val * 5;
temp *= 100;
temp /= 1023;
lang.print(temp);
}
Program aplikasi pengukur suhu
Arduino LM35
Loki Lang
*/
#include <LiquidCrystal.h>
LiquidCrystal lang(12, 11, 5, 4, 3, 2);
int lm35 = A0;
int val = 0;
float temp;
void setup()
{
pinMode(A0, INPUT);
lang.begin(16, 2);
lang.setCursor(0, 0);
lang.print("Arduino");
lang.setCursor(0, 1);
lang.print("Pengukur Suhu");
delay(1000);
lang.clear();
}
void loop()
{
val = analogRead(lm35);
delay(100);
lang.setCursor(0, 0);
lang.print("Suhu celsius:");
lang.setCursor(0, 1);
temp = val * 5;
temp *= 100;
temp /= 1023;
lang.print(temp);
}
Penjelasan untuk source code (sketch) Arduino aplikasi pengukur suhu dengan LM35 ialah sebagai berikut.
- Untuk function analogRead(lm35), digunakan dalam membaca nilai analog dari sensor suhu LM35 yang terhubung dengan pin analog Arduino A0
- Nilai pembacaan ADC disimpan dalam variable val
- Penggunaan function delay(), bertujuan agar pembacaan ADC stabil
- Variable temp merupakan variable untuk nilai suhu yang akan ditampilkan nilainya pada LCD
Mengubah Nilai ADC ke Nilai Suhu
Dengan karakteristik sensor suhu LM35, bahwa setiap perubahan suhu 1 derajad celsius akan mengakibatkan perubahan nilai tegangan sebesar 10 mV. Dalam nilai standard unit 1 derajad celsius mengakibatkan perubahan 0,01 V, hingga diperoleh konstanta perubahan tegangan tiap satuan suhu 0,01 V/ºC. Sebagai contoh, pada saat suhu 50 derajad celsius nilai tegangannya ialah sebesar 500 mV. Untuk mendapatkan nilai suhu dalam celsius, terlebih dahulu mengolah nilai data digital yang terbaca oleh ADC. Secara garis besar langkah secara umum untuk mengubah nilai ADC menjadi nilai suhu bertahap ialah sebagai berikut.
- Bagi nilai ADC yang terbaca dari sensor suhu LM35 dengan prescaler, nilai maximum resolusi yang digunakan, resolusi ADC Arduino 10 bit, nilai maximum resolusi 1023
- Selanjutnya mencari nilai tegangan terbaca, kalikan nilai yang diperoleh sebelumnya dengan nilai tegangan referensi, dalam hal ini digunakan tegangan referensi sebesar 5 volt
- Setelah diperoleh nilai tegangan (dalam mV), selanjutnya ialah mengubah nilai tersebut dalam skala suhu celsius
- Dalam hal ini nilai skala tegangan mV dibagi dengan konstanta 0,01 V/ºC, atau dengan kata lain (pada source code) mengalikan nilai tegangan tersebut dengan 100