lm35 sorunu

Başlatan hamzahaluk, 11 Nisan 2015, 16:14:01

hamzahaluk

Arkadaşlar LM35 ile sıcaklık bilgisi LCD'ye aktaran bir program ve devre oluşturdum. LM35 ile ilgili kullanım bilgisine ve voltaj-sıcaklık dönüştürme işlemini Serdar ÇİÇEK'in CCS C ile PIC Programalam kitabından faydalanarak yaptım. PIC 16f877 ve 10  bitlik ADC kullandım. Kitaptaki hesap;
voltaj=(0.004828125*okunan adc degeri)*1000;
sicaklik=voltaj/10;
LM35'in ölçme aralığının -50 ve +150 arasında  olması için devrede gördüğünüz R2 direncini bağlayıp -5V uyguladım ama LCD ekranda negatif sıcaklık okuyamadım.0 dereceden daha aşağı inmiyor. Sorunu nasıl çözebilirim?




Device 16F877
XTAL 4

Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.2
Declare LCD_RSPIN PORTB.0
Declare LCD_INTERFACE 4
Declare LCD_LINES 2

ADCON1 =%10000000
TRISA = %00000001
Dim Sicaklik As Word
Dim hesap1 As Float 
Dim hesap2 As Float

DelayMS 250
Cls

basla:
Sicaklik=ADIn 0
DelayUS 50
hesap1=(0.0048828125*Sicaklik)*1000
hesap2=(hesap1/10)
Print At 1,1, "SICAKLIK:"
Print At 1,10,DEC1 hesap2," C "
DelayMS 1000
GoTo basla:

rodyum

ADC girişleri negatif voltajı ölçemez. LM35 için şöyle bir bağlantı yapmalısın:


hamzahaluk

#2
Bağlantıyı ve programı dediğiniz şekilde düzelttim. Negatif sıcaklıklarda gözükmeye başladı. Programı da inceler misiniz bir daha herhangi bir hata var mı? Gerçek hayatta stabil ve doğru olarak çalışır mı bu şekliyle yoksa eklenti yapmak gerekli mi?




Device 16F877
XTAL 4

Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.2
Declare LCD_RSPIN PORTB.0
Declare LCD_INTERFACE 4
Declare LCD_LINES 2

ADCON1 =%11000000
TRISA = %00000011
Dim Sicaklik As Word
Dim nsicaklik As Word
Dim hesap1 As Float 
Dim hesap2 As Float
Dim hesap3 As Float
Dim hesap4 As Float
Dim sonuc As Float

DelayMS 250
Cls

basla:
Sicaklik=ADIn 0
DelayUS 50
hesap1=(0.0048828125*Sicaklik)*1000
hesap2=(hesap1/10)
nsicaklik=ADIn 1
DelayUS 50
hesap3=(0.0048828125*nsicaklik)*1000
hesap4=(hesap3/10)
sonuc= hesap2-hesap4
Print At 1,1, "SICAKLIK:"
Print At 1,10,DEC1 sonuc," C "
DelayMS 1000
GoTo basla:

MS_59

bana kalırsa hiç lm35 ile uğraşma tak bi DS18B20 olsun bitsin bununla ilgili forumda yüzlerce örnek var
mehmet

hamzahaluk

Yukarıda ki kodlara bir de motor ekledim portc.0 pinine şöyle bir kod yazdım ama hata alıyorum neden olabilir?

If 20<sonuc<30 Then
PORTC.0=1
Else
PORTC.0=0
EndIf

Powered by EzPortal