Senin, 24 Februari 2014

Arduino Basic - Membaca Nilai Analog dari Sensor Temperatur

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, "); 

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

Tidak ada komentar:

Posting Komentar