lm35 termometreye hassasiyet kazandırmak

Başlatan ybaldemir, 24 Mayıs 2009, 01:04:01

ybaldemir

merhaba arkadaslar ben bir devre yapıyorum jal dilini kullanıyorum ve yeni ögrenmeye çalısıyorum devre söyle pic 16f877 lm35 ile termometre yapmak istiyorum lm35 ten sıcaklık bilgisini ölçüp rf ile diger pic devresine veriyorum ordanda seri porttan bilgisayara göndermek istiyorum sıcaklık degerlerini bu devreleri gerçeklestirdim fakat söyle bir sorun var lm35 için picin 10 bitlik adc sini kullandım lm35 10 mv ta 1 C sıcaklık veriyor yani termometre 1 derecelik hassasiyetle çalısıyor benim sorunum bu hassasiyeti arrtırmak 0.3 veya 0.5 derecelik hassasiyetli bir termometre yapmak istiyorum bu konuda yardımlarınızı bekliyorum yardımcı olacak arkadaslara simdiden tesekkürler (devremim kodlarını asağiya yazıyorum)
verici kodları

include 16f877_4
include jlib
include adc
include h_rs232
include rf
include hd447804

var byte x0, x1 ,x2
hd44780_clear
pin_c6_direction = output
pin_c7_direction = input
port_d_direction = all_output
serial_setup ( 24 )

forever loop
hd44780_line1
adc_10 (0x00,0x05,x0,x1)
h_asynch = "s" h_asynch ="i"   h_asynch = "c"  h_asynch = "a" h_asynch = "k"
h_asynch = "l" h_asynch = "i"  h_asynch = "k"  h_asynch = "="


x2 = x1 / 2

hd44780 = "s" hd44780 = "i" hd44780 = "c" hd44780 = "a" hd44780 = "k"
hd44780 = "l" hd44780 = "i" hd44780 = "k" hd44780 = " " hd44780 = "="  hd44780 = " "
print_decimal_3 (hd44780,x2,"0")
rf_trans = "s"  rf_trans = "i"  rf_trans = "c"  rf_trans = ":"
print_decimal_3 (rf_trans,x2," ") rf_trans = " " rf_trans = "C" rf_trans = " "
end loop


alıcı kodları

include 16f877_4
include jlib
include adc
include hd447804
include rf
include h_rs232

disable_a_d_functions

pin_c6_direction = output
pin_c7_direction = input

serial_setup ( 24 )

var byte  d 
port_d_direction = all_output


forever loop

  if rf_recv ( d ) then   h_asynch = d
  end if
end loop
[/URL] [/img][/URL] [/img]

emrahmrcn

Merhabalar, LM35 datasheet inden okuduğum kadarı ile 0,5C hassasiyeti garanti etmişler. 1C de 10mV veriyorsa , 0,5C 5mV verir. 10bit ADC de en küçük birim 4,88mV olduğuna göre sen bu hassasiyeti ölçebilirsin. Fakat Ref. voltajların sağlam olmalı. İyi Çalışmalar
Benim yaradılışımda bir ayrıcalık varsa o da TÜRK olmamdır. M.K ATATÜRK

ybaldemir

kastettiğim o değil söyle lm35 den aldığım bilgiyiyi virgullü olarak yazdırıp göndermek istiyorum mesela 0.015 volt için 1.5 C olarak lcd de gösterip bunu rf le göndermek kastettiğim jal programıyla bunu yapabilmek benim yaptığım devrede 1 C de bir sıcaklık veriyor yani ara değerleri vermiyor 1 C 2 C 3 C ... diye yani benim istediğim 0.5 C 1 C 1.5 C ... böyle olmasını istiyorum

hatmeto

çok fazla JAL dilinden anlamam ama degeri LCD ye yazarlen 1 bit olarak yazmışsın Okuma ve bite degişken atarken yine bir bit kullanılıyor. JAL ın hazır kütüphanelerini biraz değiştirmen gerekiyor sanırım. :?  :?
Bir admin ataasözü derki: "biliyorsan paylaş mod yapsınlar. bilmiyorsan sus banlamasınlar"

bigbey

Jal bilmiyorum. Ben Assembly de 10bit ölçüm yapıyorum. Low byte registerindeki sıfırıncı bit 1 ise virgül hanesine 0.5 ilave ediyorum. eğer sıfırncı bit 0 ise virgül hanesine 0.0 ilave ediyorum.

Bu aşamadan sonra cary bitini sıfırlayıp Highbyte registeri bir sağa kaydırıyorum ve lowbyte registeride bir sağa kaydırıyorum. elde edilen değeri direkt derece ifadesi olarak kullanıyorum.
(Bu işlem sayı değerini 2 ye bölmek için)


(ölçme hassasiyetim  4.88 yaklaşık olarak 5 kabul ediyorum)
0-320 derece arası değer görüyorum.
TA6R

zakbay

Resimler çok küçük ayrıntıyı göremedim.

Daha hassas bir ölçüm yapmak için öncelikle Analog ölçüm için 5V referans değil AN3 den girdiğin 1 voltluk bir referansı kullanmalısın.

Bunu da ADCON1 den ayarlamalısın



hatırladığım kadarıyla lm35 ile yaklaşık 125 dereceye kadar ölçüm yapabilirsin ve oldukça hassas.

referansın 1000mV
lm35 de 100 derecede 1000mv veriyor.
böylece bu şartlar altında 10 bitlik bir ölçümde yaklaşık olarak

100 derecede 1023
50 derecede  512
25 derecede 255
10 derecede 102  --> bu sonuc değerinine 10.2 C olarak gösterebilirsin

gibi değerler alırsın
hiç bir hesaplama yapmadan bile bu değerleri direkt olarak kullanabilirsin
Tek dostum çalışmak...

ybaldemir

arkadaslar assebly dilini hiç bilmiyorum jalıda yeni ögremeye basladım jal bilen bir arkadas yardımcı olursa çok sevineceğim amacım programla termometreye 0.5 C hassasiyet kazandırmak yardımlarınızı bekliyorum