Anda di halaman 1dari 6

Membuat Sensor Suhu Presisi dengan

Arduino + LM35
Hari Santoso Arduino , Elektronika , LM35 , Sensor Suhu9 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 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 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:

1. //----------------------------------
2. // Sensor SUHU Teg. Referensi 5 Volt
3. //----------------------------------
4.
5. const int pSuhu = A1;
6. float suhu, data;
7.
8. void setup() {
9. Serial.begin(9600);
10. pinMode(pSuhu, INPUT);
11. }
12.
13. void loop() {
14. data = analogRead(pSuhu);
15. suhu = data / 2.0479;
16.
17. Serial.print("data: ");
18. Serial.print(data);
19. Serial.print(", suhu: ");
20. Serial.print(suhu);
21. Serial.println();
22. delay(1000);
23. }
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:

1. //----------------------------------
2. // Sensor SUHU Teg. Referensi 1.1 Volt
3. //----------------------------------
4.
5. const int pSuhu = A1;
6. float suhu, data;
7.
8. void setup() {
9. Serial.begin(9600);
10. analogReference(INTERNAL);
11. pinMode(pSuhu, INPUT);
12. }
13.
14. void loop() {
15. data = analogRead(pSuhu);
16. suhu = data / 9.309;
17.
18. Serial.print("data: ");
19. Serial.print(data);
20. Serial.print(", suhu: ");
21. Serial.print(suhu);
22. Serial.println();
23. delay(1000);
24. }
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

Anda mungkin juga menyukai