Member baru? Bingung? Perlu bantuan? Silakan baca panduan singkat untuk ikut berdiskusi.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 04:34:44 AM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 127
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 125
Total: 125

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

TANYA AKUISI DATA BUAT LM 35 SAYA PAKE AVR 8535

Dimulai oleh ad1346us, Juni 17, 2009, 03:03:19 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

ad1346us

Saya lagi bkin TA alat pengering tapi saya bingung buat nampilin suhu di ruang pengering saya sensornya  saya

pake LM35Dz dan saya pake BASCOM AVR ni contoh programnya :$regfile = "m8535.dat"
$crystal = 12000000
'$sim
$lib "lcd4.lbx"




Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7
Config Lcd = 16 * 2


Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim Lm As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte
Led Alias Portc


Do

Cls
Lm = Getadc(0)
  Volt = Lm * 256
  'Volt_d = Volt Mod 10
  Volt = Volt / 1023
  Volt = Volt
  Locate 1 , 1 : Lcd "temperatur"
  Locate 2 , 1 : Lcd Volt ; " C"
  Gosub Lampu
   Waitms 1000

Loop

Lampu:
If Volt > 39 Then
    Led = &B00000000
Else
If Volt < 33 Then
    Led = &B11111111
End If
End If
Return
End



saya masih bingung soalnya suhu yang nampil ngak sesuai dengan suhu sebenarnya



tolong bagi yang ngeh dengan problem saya soalnya sidang TA udah kurang 2 minggu
trima kasih sebelumnya

wijana

karna pake AVR 8535, jadi ADC-nya itu 10 bit...


kalo menurut saya,,listing programnya kayak gini untuk ADC:    (ini pernah d kasih tau sama mas insan sains)

Lm = Getadc(0)
Volt=Lm/1024
'Volt_d=Volt Mod 10
Volt = Volt*Vreff
Volt=Volt*100

coba dulu aja program ini,,ada perubahan ga,,soalnya program saya juga gini,,klo masih eror ntar kabari,,barangkali ada yang bisa bantu...

insan sains

Siapa tahu belum ada yang "ngeh" dengan rumus konversinya. Saya coba jelaskan sedikit.

Seperti kita tahu bahwa LM35, sensor suhu yg memiliki output yang linear sebesar 10mV/oCelcius. Jadi tiap kenaikkan 10mV, maka suhu bertambah 1 oC. Dengan tingkat akurasi 0.5 oC. Memiliki range pengukuran antara -55 s/d 150 oC.

Dengan menggunakan rangkaian dasar, atau yang disebut Basic Centigrade Temperature Sensor, maka si LM35 memiliki range pengukuran 0mV - 10mV/oC. Jika dibuatkan kesetaraaan antara voltage dengan suhu, maka akan terlihat sbb :
0V = 0 oC
10mv = 1 oC
100mV = 10 oC
1000mV = 100 oC
1500mV = 150 oC

Jika menggunakan rangkaian Full-Range Centigrade Temperature Sensor, lain lagi range pengukurannya.

Dengan melihat karakteristik tersebut, maka dengan teknik ADC (Analog to Digital Convertion) kita bisa melakukan konversi dari tegangan ke suhu.

Karena yang didiskusikan kali ini menggunakan mikrokontroler ATMEGA8535. Maka secara internal dia sudah memiliki ADC yang berjumlah 8 channel 10 bit. Range voltage dari 0 s/d volt_max sama dengan nilai 0 s/d 1024 (n10).

Secara internal, si uC menggunakan rumus sebagai berikut untuk mengeluarkan output ADC :

Hasil Konversi ADC = (Vin * 1024) / Vref           Dimana Vin adalah output LM35.

Jika Vref diberi tegangan 5 V (5000 mV). Dan LM35 tidak mengeluarkan tegangan, maka

0 * 1024 / 5000 = 0

Jika LM35 mengeluarkan tegangan sebesar 1 mV, maka uC akan mengeluarkan angka digital:

1 * 1024 / 5000 = 0.2048 => 0

Jika LM35 mengeluarkan tegangan sebesar 10 mV, maka uC akan mengeluarkan angka digital :

10 * 1024 / 5000 = 2.048 => 2

Jika LM35 mengeluarkan tegangan sebesar 1 V (1000 mV), maka uC akan mengeluarkan angka digital

1000 * 1024 / 5000 = 204.8 => 205

Sekarang cara membacanya dibalik. Setiap kita mendapatkan output digital dari uC, berapa hasil konversinya dalam bentuk tegangan?. Dari pertanyaan tersebut dihasilkan kesimpulan, bahwa setiap satu digit LSB yang dikeluarkan ADC uC akan bernilai sebesar :

1 LSB = Vref / (2n - 1)

Jika Vref adalah 5000 mV, maka : 1 LSB-nya kurang lebih = 4.9 mV (pembulatan)

Sehingga rumus konversinya adalah :

SUHU = Ouput_ADC * Kenaikan_satu_LSB / Volt_per_Celcius

dimana :
Output_ADC = adalah hasil pembacaan ADC uC
Kenaikan_satu_LSB = 4.9 (jika Vref = 5V)
Volt_per_celcius = 10 (karakteristik LM35, 10mV/oC)
Menuju Indonesia sebagai THE COUNTRY MASTER OF TECHNOLOGY, 2030

Too Payz

Kutip dari: insan sains pada Juni 18, 2009, 01:15:55 PM
Seperti kita tahu bahwa LM35, sensor suhu yg memiliki output yang linear sebesar 10mV/oCelcius. Jadi tiap kenaikkan 10mV, maka suhu bertambah 1 oC.

Maap kebalik setiap kenaikan 1 0 Celcius tegangan output bertambah 10 mV.

;)

kuin

ada yang punya tutorial AVR pake baskom gak? soalnya saya terbiasa pakai ECLIPSE dan Code Vision AVR

dancyber

teman2, ane mw tanya???
Benar gak kalau tumus keluaran suhunya ane tulis gini?
suhu =  (Vin LM 35 /1024) * 5000 * 100

oy 1024 itu angka untuk apanya?
   
--------------------------------------_____________________

ikhwanpcr

#6
@dancyber  = kalau pakai atmega adc nya 10 bit jadi 2^10 = 1024.

kalau menurut saya:

$regfile = "m8535.dat"
$crystal = 12000000

config portc = output

Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Postb.7

Config Adc = Single , Prescaler = Auto , Reference = Avcc
config sub sensor ()

led alias portc

Start Adc

Dim Lm As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte



Do
call sensor()
Locate 1 , 1
 Lcd "temperatur"
 Locate 2 , 1
Lcd Volt ; " C"
         If Volt > 39 Then
         reset Led
         Else If Volt < 33 Then
         set led
       End If
      Loop
end

sub sensor()
 Lm = Getadc(0)
 Volt=Lm/1024
 Volt = Volt*Vreff
 Volt=Volt*100
end sub