Monitoring Suhu dengan LM35 dan Mikrokontroler ATmega16
Aplikasi dasar mikrokontroler kali ini, kita akan membuat monitoring suhu ruangan dengan sensor suhu LM35. Mikrokontroler AVR ATmega16 yang akan melakukan proses pembacaan data dari sensor suhu LM35 (analog) kemudian menghitungnya (konversi) menjadi besaran suhu (derajat celcius).
Mikrokontroler AVR ATmega16 sudah terdapat ADC (Analog to Digital Converter) yang berfungsi mengubah sinyal analog menjadi digital, sehingga cocok untuk membaca sensor suhu LM35 tanpa perlu tambahan komponen ADC lagi.
Sensor suhu LM35 merupakan sensor suhu ruangan yang mampu mengukur suhu ruangan -55 – 150 derajat Celcius. Komponennya juga mudah diperoleh di toko komponen elektronik dengan harga relative murah. Terdapat 3 kaki (pin) pada sensor LM35.
- +Vs (tegangan input : 4 – 20V)
- Output ( 0mV + 10 mV/C)
- Gnd (ground)
Output sensor LM35 linear pada 10 mV/C, artinya keluaran pin output sensor bernilai (tegangan) 10mV tiap 1 derajat Celcius. Contoh : jika suhu terukur 30 derajat Celcius maka outputnya 300 mV, contoh lagi ya : jika terbaca tegangan out sensor LM35 adalah 450 mV berarti suhu yang terukur adalah 45 derajat Celcius.
Baik sekarang bagaimana cara menghubungkan sensor suhu LM35 dengan mikrokontroler AVR ATmega16 ? Cukup mudah, 2 kaki tegangan terhubung dengan tegangan mikrokontroler sedangkan pin output sensor terhubung dengan pin ADC ATmega16 (ADC0 – ADC7) :
- Vs (LM35) terhubung dengan pin Vcc (mikrokontroler)
- OUT (LM35) terhubung dengan ADC0 (boleh pilih antara ADC0 – ADC7)
- GND terhubung dengan pin GND (mikrokontroler)
Selanjutnya langsung saja kita tambahkan LCD 16×2 untuk menampilkan hasil pembacaan sensor suhu LM35, perhatikan rangkaian ATmega16 dengan LCD dan sensor suhu LM35 berikut ini.
Programnya kita buat dengan bahasa BASCOM-AVR ya, silakan tulis source code nya :
$regfile = "m16def.dat" $crystal = 16000000 Dim D As Word , V As Word , T As Word Config Adc = Single , Prescaler = Auto , Reference = Avcc Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2, Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Cls Cursor Off Lcd "Dig Thermometer" Lowerline Lcd "Temp=" Start Adc Do D = Getadc(0) V = D * 5 T = V / 10 Locate 2 , 6 Lcd T Lcd " Celcius " Wait 1 Loop End
Save kemudian Compile. Setelah programnya sukses, tidak ada error selanjutnya silakan download (isikan) ke mikrokontroler ATmega16. Sahabat bisa memakai ProgISP dan USBasp. Ok, kita lihat hasilnya :
Silakan beri perubahan panas ke sensor LM35. Sahabat dapat memakai korek api atau solder untuk memberi tambahan panas ke sensor suhu LM35, lihat hasilnya di LCD.
Sekilas pembahasan program monitoring suhu LM35 dengan ATmega16. Baris bagian atas adalah deklarasi jenis mikrokontrolernya yaitu ATmega16.
$regfile = "m16def.dat"
Berikutnya merupakan nilai crystal yaitu 16 Mhz.
$crystal = 16000000
Baris dibawahnya merupakan deklarasi variable yang digunakan.
Dim D As Word , V As Word , T As Word
Dilanjutkan perintah untuk konfigurasi ADC, jika sahabat mau mempelajari detail tentang ADC ATmega16 dapat membaca di datasheet.
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Konfigurasi LCD diprogram ini menyesuaikan dengan rangkaian mikrokontroler ATmega16 dengan LCD, silakan cek rangkaiannya.
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2, Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2
Blok program selanjutnya menampilkan tulisan ke LCD.
Cls Cursor Off Lcd "Dig Thermometer" Lowerline Lcd "Temp="
ADC internal ATmega16 diaktifkan dengan perintah :
Start Adc
Berikutnya adalah program utama, berupa looping (perintah terus menerus). Yang pertama membaca sinyal analog keluaran sensor LM35 kemudian mengkonversi ke suhu.
Do D = Getadc(0) V = D * 5 T = V / 10
Terakhir hasilnya ditampilkan di LCD.
Locate 2 , 6 Lcd T Lcd " Celcius " Wait 1
Selamat mencoba, semoga bermanfaat.
gan, di gambar rangkaian sensor LM3nya yang mana ya?
Di rangkaian yang ‘U2’ yang VOUT nyambung ke ADC0
Gan kalau sensor LM35 pin outnya di inputkan lewat PIN D di Atmega bisa ngga gan?
Output sensor LM35 adalah analog, maka untuk pembacaan di mikrokontroler juga harus pin analog. kalau ATmega16 di pin A mas. pin D tidak bisa