posting saya kali ini adalah mengenai thermometer digital, banyak sensor / transduser yang dapat digunakan pada project kali ini, diantarnya, LM35, RTD, dll. pemilihan sensor suhu tersebut tergantung pada aplikasinya, beberapa pertibangannya adalah :
1. Range
2. Linearity
3. Resolusi
4. Kecepatan respon
gambar dibawah adalah rangkaian simulasi untuk menguji program. terdiri dari 1 unit ATMega 16, crystal 12MHz , LCD 16*2, 4 Push Button yang mewakili 4 satuan suhu yaitu : celcius, Kelvin, Reamur, Fahrenheit.
Potensiometer linear yang di pasang pada porta.0 adalah simulasi output dari pengondisi sinyal transducer. karena reference yang di gunakan adalah AVCC yang berarti nilai maksimum adalah +5V, maka nilai tegangan maksimum yang dapat dijadikan input porta.0 adalah 0 sampai +5V. porta.0 adalah port input untuk ADC (Analog to Digital Converter)
Coding untuk thermometer digital :
$regfile = "m16def.dat"
$crystal = 12000000
Config Porta = Input
Config Portc = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.0 , Rs = Portc.1
Config Lcd = 16 * 2
C Alias Pina.1
K Alias Pina.3
R Alias Pina.5
F Alias Pina.7
Dim Nilai As Integer
Dim Kode As Byte
Dim Suhu As Single
'kode 0 = celcius
'kode 1 = Kelvin
'Kode 2 = Reamur
'kode 3 = Fahrenheit
Cls
Cursor Off
Cursor Noblink
Start Adc
Do
Nilai = Getadc(0)
'asumsi nilai ADC 0-1023 ==> suhu dari 0-100 celcius
'nanti kalau kurang cocok diatur lagi gain nya,
Suhu = Nilai / 1023
Suhu = Suhu * 100
If Pina.1 = 0 Then
Kode = 0
Elseif Pina.3 = 0 Then
Kode = 1
Elseif Pina.5 = 0 Then
Kode = 2
Elseif Pina.7 = 0 Then
Kode = 3
End If
If Kode = 0 Then
Locate 1 , 1
Lcd "Celcius "
Locate 2 , 1
Lcd "Suhu = " ; Fusing(suhu , "#.##") ; "'C "
Waitms 10
Elseif Kode = 1 Then
Locate 1 , 1
Lcd "Kelvin "
Locate 2 , 1
Suhu = Suhu + 237.15
Lcd "Suhu = " ; Fusing(suhu , "#.##") ; "'K "
Waitms 10
Elseif Kode = 2 Then
Locate 1 , 1
Lcd "Reamur "
Locate 2 , 1
Suhu = Suhu * 0.8
Lcd "Suhu = " ; Fusing(suhu , "#.##") ; "'R "
Waitms 10
Elseif Kode = 3 Then
Locate 1 , 1
Lcd "Fahrenheit "
Locate 2 , 1
Suhu = Suhu * 1.8
Suhu = Suhu + 32
Lcd "Suhu = " ; Fusing(suhu , "#.##") ; "'F "
Waitms 10
End If
Loop
End
ide pemrograman :
dalam coding di atas, saya mengasumsikan bahwa nilai ADC 0 - 1023 mewakili pembacaan suhu dari 0 celcius - 100 celcius. maka rumus dasar menjadi
suhu = (nilai ADC (yang terbaca) / 1023) * 100
contoh :
nilai ADC yang terbaca 500
maka suhu yang terbaca adalah = 48.87 Celcius
semua pengukuran di ubah ke dalam satuan celcius,
setelah itu apabila ada push button yang di aktifkan (celcius,Kelvin,Reamur,Fahrenheit) maka kode satuan akan memiliki nilai sesuai dengan jenis satuan yang dipilih. pada pemrograman kali ini saya kodekan menjadi :
'kode 0 = celcius
'kode 1 = Kelvin
'Kode 2 = Reamur
'kode 3 = Fahrenheit
proses konversi satuan menggunakan rumus :
Celcius ==> Kelvin = Celcius + 237.15
Celcius ==> Reamur = Celcius * 0.8
Celcius ==> Fahrenheit = ( Celcius * 1.8 ) + 32
download project dan simulasi disini
mas minta filenya boleh
ReplyDeletene email saya mubinrizki16@gmail.com