Dalam tutorial Arduino Indonesia kali ini akan mengulas mengenai tips cara mendapatkan resolusi pengukuran yang lebih tinggi untuk sensor suhu LM35.
Table of Contents
LM35
LM35 adalah sensor suhu TO-92 yang biasa digunakan karena mudah dan harganya yang murah. Dalam source code (sketch) Arduino, penggunaan LM35 biasanya menggunakan persamaan sebagai berikut.
temp = (500 * analogRead(tempPin)) / 1023;
Akan tetapi dengan persamaan tersebut, tidak menghasilkan resolusi yang tinggi. Akan tetapi, hal tersebut dapat dihindari dengan mudah. Sensor suhu LM35 hanya menghasilkan tegangan dengan rentang 0 volt hingga sekitar +1 volt. Bila ADC Arduino menggunakan tegangan referensi sebesar 5 volt sebagai nilai tertingginya, hal tersebut akan membuang potensi resolusi hingga sekitar 80% dari range yang dapat dicapai. Dengan mengubah nilai aRef menjadi 1,1 volt, maka resolusi yang lebih tinggi dapat diperoleh.
Persamaan sebenarnya dari pembacaan, menemukan persentase range 10-bit (1024), mengalikannya dengan referensi aRef (5000 mV), dan kemudian membaginya dengan 10.
Akan tetapi, bila menggunakan tegangan sebesar 1,1 volt sebagai aRef, hal tersebut akan mengubah persamaan yang digunakan secara drastis. Dengan membagi nilai beda potensial 1,1 volt dengan 1023, maka setiap step up dalam pembacaan analog kira-kira setara dengan 0,001074 volt atau 1,0742 mV. Jika 10 mV setara dengan perubahan 1 derajad celcius, maka 10 dibagi dengan 1,0742 adalah sekitar 9,31. Sehingga, untuk setiap perubahan sebesar 9,31 dalam pembacaan nilai analog, akan mampu mendeteksi adanya perubahan suhu sebesar 1 derajad celsius.
Wiring Diagram
Source Code
Untuk menggunakan aRef 1,1 volt sebagai tegangan referensi, maka digunakan command analogReference(INTERNAL); dan berikut adalah contoh source code (sketch) Arduino untuk pembacaan suhu dari sensor LM35 dengan resolusi yang lebih tinggi..
/*
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);
}
void loop()
{
lang.clear();
val = analogRead(lm35); // nilai ADC terbaca
delay(100);
lang.setCursor(0,0);
lang.print("Suhu celsius:");
lang.setCursor(0,1);
temp = val / 9.31;
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);
}
void loop()
{
lang.clear();
val = analogRead(lm35); // nilai ADC terbaca
delay(100);
lang.setCursor(0,0);
lang.print("Suhu celsius:");
lang.setCursor(0,1);
temp = val / 9.31;
lang.print(temp);
}
Dengan menggunakan source code (sketch) ini dapat menghasilkan pengukuran suhu ruangan dengan sensor LM35 secara lebih detail. Akan tetapi dengan menggunakan aRef sebesar 1,1 volt, akan mengakibatkan jangkauan suhu yang dapat dikur dari LM35 akan terbatas hanya sekitar 0 hingga 110 derajad celcius.