Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

lm35 için yardım

Başlatan wonder, 24 Mart 2007, 17:26:41

wonder

arkadaşlar 16f73 kullanıyorum 8 bit a/d var. lm 35le sıcaklık ölçmem lazım. aşağıdaki linklere bakarak bu kodları yazdım. hesaplama için şöyle düşündüm:
ref girişinden (ra3) 1.5v verdim. 150 C de 255 elde etmek için, 150/255=0.588 bunu 256 ile çarpınca 150.5 çıkıyo. bunu aşağıdaki gibi yazdım programa ama olmadı 74C çıkıyo. çözemedim ben bu hesaplama olayını, bide ondalık gösterimini de yapamadım haliyle. nası yapacam bu matematiksel hesabı

http://picproje.org/main/modules.php?name=News&file=article&sid=54
https://www.picproje.org/index.php/topic,13945&highlight=lm35

DEFINE ADC_BITS 8 ' Sonuç kaç bitlik olsun?
DEFINE ADC_CLOCK 3 ' Pals kaynağı seçimi (3=rc)
DEFINE ADC_SAMPLEUS 50 ' Örnekleme zamanı seçimi uS

TrisA=%11111111
TrisB=%00000000
TrisC=%11111111
adcon1=5  'ra3 ref, an0 ve an1 analog giriş

PISI    VAR WORD
ISI     var word

PAUSE   500

basla:
   GOSUB ADCEV
   lcdout $fe,1,DEC ISI,223,"C"
   GOTO basla  
 
ADCEV:
   adcin 0 ,PISI
   BAK:  IF ADCON0.2=1 THEN BAK 'Çevirme işlemi tamamlanınca Adcon0.2=0 olacak.      
   ISI=((PISI) */ 150)
               
   rETURN  
END

wonder

https://www.picproje.org/index.php/topic,13443&highlight=lm35
bu adreste de arkadaş 10 bit olarak uygulamış ve ondalık kısmını da bulmuş,
bu hesap kısmını kendiminkine çeviremedim.

'Isı değerini hassas şekilde ölç -----------------------------------------------                
adcin 0,HAM          
BAK:  
IF ADCON0.2=1 THEN BAK
dummy=(HAM*5000)
ISI=div32 1024    
ONDA=ISI//10
ISI=ISI/10

'Hava sıcaklığını göster -------------------------------------------------------
lcdout $fe,1                        
LCDOUT "SICAKLIK : "
LCDOUT $FE,$C0,#ISI,",",DEC1 ONDA," 'C"
pause 500
goto BASLA

ftsahin

DEFINE ADC_BITS 8 ' Sonuç kaç bitlik olsun? 
DEFINE ADC_CLOCK 3 ' Pals kaynağı seçimi (3=rc) 
DEFINE ADC_SAMPLEUS 50 ' Örnekleme zamanı seçimi uS 

Define  LCD_DREG        PORTB
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTB
Define  LCD_RSBIT       2
Define  LCD_EREG        PORTB
Define  LCD_EBIT        3

TrisA=%11111111 


'ADCON1 = %10000100 (10 bitlik 16F877 için)
adcon1=5 'ra3 ref, an0 ve an1 analog giriş 

onda VAR WORD 
ISI var word 
ham var word
dummy var word

PAUSE 500 
basla:
'Isı değerini hassas şekilde ölç ----------------------------------------------- 
adcin 0,HAM 

dummy=(HAM*5000) 
ISI=div32 256 
ONDA=ISI//10 
ISI=ISI/10 

'Sıcaklığı göster ------------------------------------------------------- 
LCDOUT $fe,1,"SICAKLIK :    "
LCDOUT $FE,$C0,#ISI,",",DEC1 ONDA," ",223,"C"
pause 500 
goto BASLA


PIC 16F73 bendeki proteusta yok bu yüzden deneyemedim. Onun yerine bu kodu 10 bit ADC'si olan PIC16F877 için denedim ve çalışıyor. LCD PORTB'ye bağlı. ADCON1 parametreleriyle oynayarak sonuç alabilirsin. ADCIN komutunda okunan HAM değerinin öncelikle doğru okunması gerekir. Burayı doğru okumazsa bundan sonrası doğru olmaz. Deneme sırasında LCD'nin 1. satırında sadece HAM değerini gösterebilirsin.
Kolay gelsin.