Jika sebelumnya kita hanya menggunakan pin yang menerima input digital (memiliki nilai 0 dan 1), pada percobaan ini kita mencoba menggunakan pin dengan nilai analog. Nilai analog pada Arduino Uno memiliki rentang antara 0 (jika diberi tegangan 0 V) sampai 1023 (jika diberi tegangan 5 V). Di dalam percobaan ini kita membaca nilai analog dari sebuah sensor temperatur LM-35 dan menampilkan temperatur lingkungan ke komputer.
Peralatan yang digunakan
- Arduino Uno + Konektor PC
- Kabel Tembaga
- Sensor LM-35
LM-35 |
Rangkaian |
Foto |
Source Code
/*
lm35 sketch
prints the temperature to the Serial Monitor
*/
const int inPin = 0; // analog pin
void setup(){
Serial.begin(9600);
}
void loop(){
int value = analogRead(inPin);
Serial.print(value); Serial.print(" > ");
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // sensor output is 10mV per degree Celsius
Serial.print(celsius);
Serial.print(" degrees Celsius, ");
Serial.print( (celsius * 9)/ 5 + 32 ); // converts to fahrenheit
Serial.println(" degrees Fahrenheit");
delay(1000); // wait for one second
}
Penjelasan
Ketika program dijalankan, fungsi loop() akan dieksekusi secara berulang. Pertama, nilai pin
analog akan disimpan di dalam variabel value.
int value = analogRead(inPin);
Nilai pin analog memiliki rentang antara 0 (0 V)
sampai 1023 (5 V). Contoh, jika tegangan pada pin adalah 2,5 V, nilai
yang dihasilkan adalah sekitar 511. Sensor temperatur LM-35 menghasilkan output sebesar
10 mV setiap 1 derajat Celsius dengan ketelitian 0,5 derajat Celsius. Misalnya
jika output dari sensor LM-35 adalah 240 mV, maka temperatur lingkungan sekitar 24
derajat Celsius. Nilai yang dapat dibaca dari pin input sensor adalah
nilai analog. Untuk mendapatkan temperatur, kita memerlukan nilai
tegangan dalam miliVolt pada pin sensor. Nilai tegangan sensor dalam miliVolt
dapat diperoleh dengan cara
tegangan dalam
miliVolt = nilai analog pin sensor/rentang nilai analog*tegangan pada nilai
analog maksimum dalam miliVolt
Diketahui rentang nilai analog antara 0-1023 berjumlah
1024 dan tegangan pada nilai 1023 adalah 5 V atau 5000 mV. Maka di dalam source
code
float millivolts = (value / 1024.0) * 5000;
Setelah diperoleh nilai tegangan dalam miliVolt, dapat
diperoleh temperatur. Telah diketahui sebelumnya setiap 1 derajat Celsius
sensor LM-35 menghasilkan output 10 mV. Maka
temperatur
dalam Celsius = tegangan dalam miliVolt/10
di dalam source code
float celsius = millivolts / 10;
Kemudian ditampilkan ke serial terminal
Serial.print(celsius);
Serial.print(" degrees Celsius, ");
Serial.print(" degrees Celsius, ");
Untuk mendapatkan temperatur dalam derajat Fahrenheit,
kita dapat menggunakan sensor LM-34. Kita juga dapat menggunakan sensor
LM-35 dengan mengonversi dari Celsius ke Fahrenheit. Diketahui persamaan
konversi dari Celsius ke Fahrenheit adalah
Fahrenheit = (Celsius*9/5) + 32
Di dalam source code, nilai temperatur dalam
Fahrenheit ditampilkan ke serial terminal
Serial.print( (celsius * 9)/ 5 + 32 );
Serial.println(" degrees Fahrenheit");
Program akan kembali ke awal setelah 1 detik
delay(1000); // wait for one second
Hasil
Screenshoot IDE |
Screenshoot Serial Terminal |