Membuat Sensor Suhu Presisi dengan Arduino + LM35 - Elang Sakti
Download Ebook Belajar Arduino PDF, Arduino untuk pemula
Jasa Pembuatan Program Arduino, pemrograman Arduino
# Hack Your Skills! to be Professional Mechatronics

Membuat Sensor Suhu Presisi dengan Arduino + LM35

19 komentar
Pada tulisan ini akan saya paparkan dua cara membuat sensor suhu pada arduino dengan sensor LM35. Cara yang pertama adalah dengan menggunakan tegangan referensi default yaitu 5 volt, sedangkan cara yang kedua yaitu menggunakan tegangan referensi internal 1.1 volt. Apakah hasilnya berbeda? Tentu! Oiya, sekedar informasi, harga sensor suhu LM35 tidak begitu mahal dan relatif murah bagi kantong mahasiswa. :D
Rangkaian Arduino & Sensor Suhu LM35 + Source Code
Rangkaian fisik arduino dan sensor LM35
Sebelum kita membahas source code, akan saya bahas dulu bagaimana cara kerja input analog pada arduino dan cara mengukur suhu dengan sensor LM35. Sebagian akan saya sertakan cara menghitungnya, semoga tulisan ini bermanfaat dan bisa dijadikan referensi bagi teman-teman yang baru belajar Arduino dan LM35. Untuk dasar dari sensor LM35, bisa dicek di tulisan saya yang dahulu tentang Rangkaian Dasar Sensor Suhu LM35.

Rangkaian yang akan kita pakai pada percobaan kali ini adalah seperti di bawah ini. Jadi, siapkan sensor LM35, beberapa kabel, dan Uno. Baik, mari kita bahas dahulu tengan input analog pada Arduino.
Skema Rangkaian Arduino & Sensor Suhu LM35 + Source Code
Skema rangkaian Arduino + sensor LM35
Input analog pada arduino merupakan cacahan dari 0 hingga 1023. Artinya, 0 berarti 0 volt, dan 1023 berarti 5 volt. Secara matematis, sebenarnya voltase merupakan data analog / data kontinue. Yang berarti data tersebut bisa dicacah hingga tak hingga angka penting di belakang koma. Coba bayangkan, antara 0 sampai 5, berapa angka yang bisa kita ambil? 0.1, 0.2, 0.21, 0.211, 0.2111, dst yang berarti angka dari 0 hingga 5 itu tak terhingga.

Mikrokontroller merupakan alat, yang didalamnya memiliki memori terbatas. Sehingga mikrokontroller juga memiliki kemampuan mencacah yang terbatas juga. Dengan demikian, pada arduino memiliki kemampuan mencacah hingga 1024 (0 hingga 1023). Artinya, setiap cacahan akan memiliki nilai 5/1024 = 0.004883 volt = 4.883 mV, yang berarti:
Cacahan 1 =  4.883 mV
Cacahan 2 =  9.766 mV
Cacahan 3 = 14.649 mV
dst...

Untuk lebih memahami tentang sistem analog pada arduino, silakan cek link di bawah ini:
1) http://playground.arduino.cc/CourseWare/AnalogInput
2) http://www.arduino.cc/en/Reference/AnalogRead

Dengan demikian, jika kita menggunakan tegangan referensi 5 volt, maka setiap kenaikan 1 derajat Celcius bisa dihitung dengan rumus:
1 C = 10 mV / 4.883 mV
1 C = 2.0479

10 mV didapat dari karakteristik sensor LM35 dimana setiap kenaikan 10 mV berarti kenaikan 1 derajat celcius. Berdasarkan perhitungan di atas, maka setiap kenaikan 2.0479 cacahan pada input analog, akan dianggap sebagai kenaikan 1 derajat celcius. Dengan demikian, rumus untuk menghitung suhu adalah:
suhu = Nilai_Input_Analog / 2.0479

Source code untuk sensor suhu versi pertama seperti berikut:
//----------------------------------
// Sensor SUHU Teg. Referensi 5 Volt
//----------------------------------

const int pSuhu = A1;
float suhu, data;

void setup() {
  Serial.begin(9600);
  pinMode(pSuhu, INPUT);
}

void loop() {
  data = analogRead(pSuhu);
  suhu = data / 2.0479;
  
  Serial.print("data: ");
  Serial.print(data);
  Serial.print(", suhu: ");
  Serial.print(suhu);
  Serial.println();
  delay(1000);
}

Hasil Rangkaian Arduino & Sensor Suhu LM35 + Source Code
Tampilan hasil source code yang pertama
Perhatikan, jika data dari input adalah 55, maka itu dianggap sebagai 26.86 derajat celcius. Sebenarnya ada beberapa rumus yang bisa digunakan untuk menghitung suhu pada sensor LM35, akan tetapi tulisan ini bermaksud untuk membahas secara detail bagaimana sebenarnya rumus-rumus itu dibuat. :)

Sensor Suhu Versi 2 : Pengukuran Suhu yang Lebih Akurat

Berdasarkan referensi pada dataset sensor LM35, output dari sensor tidak akan mencapai 5 V / 5000 mV / 500 derajat celcius (ingat, setiap 10 mV berarti 1 derajat celcius). Jika benar sensor LM35 hanya bisa mengukur hingga suhu 150 derajat celcius, maka jika batas minimal kemampuan sensor adalah 0 derajat celcius, maka output dari kaki sensor hanya akan berkisar dari 0 - 1.5 Volt (0 - 1500 mV). Artinya, tegangan referensi pada input analog arduino terlalu besar.

Karena tegangan referensinya terlalu besar, sedangkan kemampuan dari sensor terlalu kecil, maka nilai pada input analog tidak mungkin lebih dari 307.188 cacahan (1500 mV / 4.883 mV) sebab output dari sensor hanya sekitar 1500 mV.

Untuk mendapatkan hasil pengukuran yang presisi, lebih bagus jika tegangan referensi juga 1.5 Volt, disesuaikan dengan kemampuan sensor. Akan tetapi, selain menggunakan tegangan referensi 5 V, Arduino menyediakan tegangan referensi internal sebesar 1.1 Volt. Jadi, untuk mendapatkan informasi suhu yang lebih presisi, kita bisa menggunakan tegangan referensi ini. Untuk mengaktifkan tegangan referensi internal, kita harus menyisipkan perintah di bawah ini, minimal pada fungsi setup():
analogReference(INTERNAL);

Karena tegangan referensi berubah dari 5000 mV menjadi 1100 mV, otomatis perhitungan untuk menentukan suhu juga harus berubah. Mari kita hitung lagi dengan cara seperti di atas:
Cacahan : 1100 mV / 1024 = 1.07421875 mV;

Artinya, setiap kenaikan 1.07421875 mV akan dianggap 1 cacah pada analog input. Karena 1 derajat celcius = 10 mV, maka:
1 Celcius = 10 mV / 1.07421875 mV = 9.309 (dibulatkan)

Artinya, setiap 9.309 cacahan akan dianggap 1 derajat celcius. Jika demikian, setiap nilai pada input analog bisa bisa dihitung / dikonversi menjadi suhu dengan rumus:
suhu = Nilai_Input_Analog / 9.309

Berikut ini source code sensor suhu yang kedua:
//----------------------------------
// Sensor SUHU Teg. Referensi 1.1 Volt
//----------------------------------

const int pSuhu = A1;
float suhu, data;

void setup() {
  Serial.begin(9600);
  analogReference(INTERNAL);
  pinMode(pSuhu, INPUT);
}

void loop() {
  data = analogRead(pSuhu);
  suhu = data / 9.309;
  
  Serial.print("data: ");
  Serial.print(data);
  Serial.print(", suhu: ");
  Serial.print(suhu);
  Serial.println();
  delay(1000);
}

Port serial Rangkaian Arduino & Sensor Suhu LM35 + Source Code
Hasil source code yang kedua
Perhatikan, jika nilai input analog 263, maka akan dianggap sebagai 28.25 derajat celcius. Perbedaan antara hasil dengan cara yang pertama, yaitu menggunakan tegangan referensi 5 Volt dengan yang menggunakan tegangan referensi 1.1 Volt menghasilkan nilai yang berbeda. Pada penggunaan tegangan referensi 1.1 Volt, mempunyai akurasi yang lebih bagus, karena nilai dari input analog bisa full dari 0 hingga 1023.

Engngngngngng.....
Menurut dataset sensor LM35, dataset terbaru bisa didownload di sini (http://www.ti.com/lit/ds/symlink/lm35.pdf, cek halaman 4, pada tabel di poin 6.3), bahwa LM35 bisa mengukur suhu dari -55 hingga 150 derajat celcius. Dari data tersebut membuat saya bingung :D. Jika inputan 0 pada input analog berarti -55 derajat celcius dan 1023 berarti 150 derajat celcius, maka 0 pada input analog bukanlah 0 derajat celcius tetapi -55 derajat celcius!!

Jika analisa saya ini benar, berarti perhitungan di atas itu salah! Tapi jika ada informasi yang keliru saya baca, mari kita diskusikan. :D

Written by ElangSakti
Membuat Sensor Suhu Presisi dengan Arduino + LM35
Bahasan: Pada tulisan ini akan saya paparkan dua cara membuat sensor suhu pada arduino dengan sensor LM35. Cara yang pertama adalah dengan menggun...
Published at Jumat, 08 Mei 2015, Updated at Jumat, 08 Mei 2015
Reviewed by dr. on
Rating: 4.7

19 komentar :

  1. sensor LM35 efektif pada ukuran ruangan berapa ??

    BalasHapus
  2. lm35 ada 3 varian... pertama lm35A (-55 to 150), kedua lm35C(-40 to 150) dan yang ketiga lm35D (0 to 100) .....? dan yg paling umum diperdagangkan lm35D ,kanapa jenis ini paling banyak karena importir alias pedagang nya hanya peduli harga tanpa mengenal datasheet ..... yang penting murah jualnya laris.....?

    BalasHapus
    Balasan
    1. Oh gitu toh.
      Jempol buat mas harry santoso yang membuka wacana diskusi.
      Jempol juga buat mas dwi setio.
      Jadi tambah tertarik saya belajar arduino ini :D

      Hapus
    2. Kalau barang murah, akuratkah ?

      Hapus
    3. kualitas, range, dan akurasi sesuai harga.

      Hapus
  3. Ada tutorial sensor suhu ds18b20 gak

    BalasHapus
  4. nilai input analog maksudnya apa yah ?

    BalasHapus
  5. bang kalo pake relay skripnya gimana ?

    BalasHapus
  6. Masnya ini keliru baca datasheet, untuk menggunakan LM35 sampai Range negatif 55 derajat celcius, PIN Outputnya harus ditarik ke MINUS VSS. Jadi rangkaian yang Masnya berikan sudah seratus persen bener, tapi Jangkauan pengukuran ) derajat celcius keatas sampai Mentok 155 derajat celcius. Salam semangat.

    BalasHapus
    Balasan
    1. Terima kasih atas koreksinya.
      Benar, untuk mendapatkan pengukuran suhu full rage, output dihubungkan ke -vss.

      Hapus
  7. Kenapa setiap membaca suhu selalu reset ke 0 dulu baru membaca suhu lagi

    BalasHapus
    Balasan
    1. bisa karena masalah hardware delay atau masalah di codingnya.

      Hapus
  8. Adakah tutorial update terkait optimasi pembacaan lm35...

    BalasHapus
  9. Coding untuk mengambilkan suhu yang <25 bagaimana bang?

    BalasHapus
    Balasan
    1. if(suhu < 25){
      Serial.print("data: ");
      Serial.print(data);
      Serial.print(", suhu: ");
      Serial.print(suhu);
      Serial.println();
      }

      Hapus