Elektronik / Mikrodenetleyici Projeleri/

DS18B20 PIC16F628 araç içi dışı termometre picbasic

Sponsorlu Bağlantılar

DS18B20 PIC16F628 termometre devresi Arabanızda kullanabileceğiniz iç ve dış sıcaklığı lcd üzerinde gösteren bir devre termometre devresinin proteus isis simülasyon ares pcb ve kaynak picbasic pbp ve hex yazılımları bulunmakta

arac-ic-dis-termometre-picbasic-pro

araba-isis-termometre

car-tehermometer-circuit-lcd

isis-olcumu-termometre

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2007 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 19.03.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   : RB1=Enable                                        *
'*            RB2=R/W                                           *
'*            RB3=RS                                            *
'*            RB4=D4                                            *
'*            RB5=D5                                            *
'*            RB6=D6                                            *
'*            RB7=D7                                            *
'*            RA0=Sensör1                                       *
'*            RA1=Sensör2                                       *                 *
'*                                                              *
'****************************************************************

'***********Seri İletişim Dosyası***********

Include "MODEDEFS.BAS"

CMCON=7

'***********LCD Tanımlamaları***********

DEFINE LCD_DREG		PORTB	
DEFINE LCD_DBIT			4		
DEFINE LCD_EREG		PORTB	
DEFINE LCD_EBIT  		1			
DEFINE LCD_RWREG    PORTB	
DEFINE LCD_RWBIT     	2		
DEFINE LCD_RSREG	PORTB	
DEFINE LCD_RSBIT		3				
DEFINE LCD_BITS			4		
DEFINE LCD_LINES		2		

'***********Özel Karakter Tanımlamaları
LCDOUT $FE,$40, 6, 9, 9, 6, 0, 0, 0, 0 'Derece İşareti
LCDOUT $FE,$48, 4, 14, 4, 4, 4, 4,14,0 'İ Harfi
LCDOUT $FE,$50, 14, 17, 16, 16,16,17,14,4 'Ç Harfi
LCDOUT $FE,$58, 14, 17, 16, 14,1, 17,14,4 'Ş Harfi

'***********Port Ayarları***********

TrisA=0
TrisB=0

PortA=0
PortB=0  

'***********Sensör Tanımlamaları***********

Comm_Pin1   VAR	PortA.0
Comm_Pin2   var PortA.1 
Busy        VAR BIT
HAM         VAR	WORD
ISI         VAR WORD
SIGN        VAR BYTE
SIGN_BITI   VAR HAM.Bit11
NEGAT_ISI   CON 1
TEMP        VAR BYTE
Float       VAR WORD

'***********LCD yi Kullanıma Hazır Hale Getir***********

LOW PORTB.2 'RW bacağı ekrana yazmaya imkan vermek için LOW yapıldı.

lcdout $FE,1 
PAUSE 200   ' LCD nin kullanıma hazır hale gelebilmesi için gerekli süre
lcdout $FE,1 

LCDOUT $FE,$80,"**HOS GELDINIZ**"             	
LCDOUT $FE,$C0, "*MUSTAFA  BILKE*"
pause 2000
lcdout $FE,1  

'***********Program Başlangıcı***********

Basla:


    gosub sensoroku1
    gosub SENSOROKU2
    
Goto Basla

'***********1. Sensörü Oku***********

SENSOROKU1: 
           
           OWOUT   Comm_Pin1, 1, [$CC, $44]' ISI değerini oku
Bekle1:
           OWIN    Comm_Pin1, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle1  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin1, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin1, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla1
           RETURN
    
Hesapla1:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
       temp=($ffff-ham+1)*625
       ISI  = DIV32 10 
       GOTO GEC1   
    endif
    TEMP = 625 * (HAM+1)        ' 
    ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC1:
    FLOAT = (ISI //1000)/100
    ISI=(ISI/1000)-1
    
    
    lcdout $FE,$80,1,2,"ER",1,": ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı
    if ISI=65535 then 
        
        lcdout $FE,$80,"                "
        lcdout $FE,$80,"1. SENSORU TAKIN"
    
    endif
    
    RETURN

'***********2. Sensörü Oku***********

SENSOROKU2: 
           
           OWOUT   Comm_Pin2, 1, [$CC, $44]' ISI değerini oku
Bekle2:
           OWIN    Comm_Pin2, 4, [Busy]    ' Busy değerini oku
           IF      Busy = 0 THEN Bekle2  ' hala meşgulmü? , evet ise goto Bekle..!
           OWOUT   Comm_Pin2, 1, [$CC, $BE]' scratchpad memory oku
           OWIN    Comm_Pin2, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.
           GOSUB   Hesapla2
           RETURN
    
Hesapla2:                 ' Ham değerden Santigrat derece hesabı
    Sign  = "+"
    IF SIGN_BITI = NEGAT_ISI THEN
       Sign   = "-"  
       temp=($ffff-ham+1)*625
       ISI  = DIV32 10 
       GOTO GEC2   
    endif
    TEMP = 625 * (HAM+1)        ' 
    ISI = DIV32 10          ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz.
GEC2:
    FLOAT = (ISI //1000)/100
    ISI=(ISI/1000)-1
    
     
    lcdout $FE,$C0,"DI",3,"ARI: ",Sign,DEC ISI,".",DEC1 (Float),0,"C " '2. satırda ısı
    
    if ISI=65535 then 
        
      
        lcdout $FE,$C0,"                "
        lcdout $FE,$C0,"2. SENSORU TAKIN"
    
    endif
    
    RETURN





End

Projeye ait isis ve picbasic pro kpod dosyaları: DS18B20 PIC16F628 araç içi dışı termometre picbasic

Dosya indirme LINK listesi (HTML formatında) link-5558.zip şifre-pass: 320volt.com

  • AYKUT

    selam paylaşmış olduğunuz devre için teşekkürler tam istedeğim bir devre malzemelerini almıştım ama DS18B20 prosedürünü bilmediğimden şaunlık ara vermiştim ama sayenizde öğrendim…

    siz bu devrede 2 sensör kullanmışsınız sormak istedeğim sensör sayısı artırılabilirmi? mesela yapmak istedğim 4sensör olsun herbir sensör ayrı odalarda olacak

    projeniz için tekrar teşekkürler

  • Eren

    Evet Aykut bey. 1-wire protokolüyle çalışan bu sensörden aynı hat üzerine yüzlerce sensör bağlayabiliyorsunuz. Hepsinin ayrı rom adresleri var. önemli olan bunları bilerek programlama yapmak.

  • mert

    merhabalar, böyle bir termometre arıyorum aracım için sizden nasıl temin edebiliriz ?

  • Fatih

    Hocam merhabalar ben bunu farklı bir amaç olarak kullanıcam araç için değil. Yalnız dosyaları indirdim kusura bakmayın biraz acemiyim sadece DS18B20 ve PIC16F628A bu parçaları anlayabildim baskı devre üzerinde bulunan R1,R2,R3,R4 dirençleri U4 nelerdir? Display ekranı elektronikciye ne söyleyip alabilirim modeli nedir? Birde devreyi kaç volt ile beslemem gerekli?

  • Fatih

    Hocam birde hex kodunda bir problem olabilir mi çalıştıramadım devreyi hex’i yazdım yalnız xtal kullanılmış hex kodunu öyle tanımladı yalnız devrede xtal göremedim bu yüzden olabilir mi?

  • ibrahim

    sayın arkadaşım devreni ve pogramını inceledim gayet mantıklı ares te hiç sorun olmadan çalışıyor ancak devreyi baskı devresiyle yaptım 5,5 volt ile sabit besliyorum sadece lcd üst satırında kare şeklinde karakterler görünüyor başkada birşey yok olayı çözemedim bir püf noktası varsa söylermisiniz

  • doktor_kadir20

    hocam programlamada bir sıkıntın olmalı programlamada kullandıgın fuse değerlerini yazarsan yardımcı olmaya çalışabiliriz

  • ibrahim

    fuse degerlerim şu şekilde jdm programmer kullanıyorum winpic800 ile programlıyorum osc=xt ,cp=1f00h-1ffffh ve WDTE,PWRTE,BODEN,WRT işaretli.

    gözüme takılan noktalardan biri picin 4.ayagı mclr ayagı baglı degil ve osilator kullanılmamış acaba 628 in dahili osilatorunumu kullanıyor
    ilğinize çok teşekkür ederim.

  • mustafa

    merhaba arkadaşlar ben bu devreyi yapmak istiyorum fakat dış sıcaklık ve motor sıcaklığının olmasını istiyorum. devre çalıştığında 65 dereceye kadar ölcüyor. 18b20 ölcüm aralığı daha fazla 127 derece olması gerekiyor. ölcüm aralığını programda nasıl değiştirebiliriz? yardımlarınızı ebkliyorum

  • TFN

    Devreyi yapıp çalıştıramayanlar (örnek : LCD’de üst satırda sadece karelerin görünmesi gibi)

    Include “MODEDEFS.BAS” satırının üzerine aşağıdaki kodları ekleyip derlerseniz devreniz çalışır. MicroCode Studio ile derlerken MPASM ile ilgili hata alırsanız View > Compile and Program Options’tan Assembler tabında “Use MPASM” kutucuğunda ki işareti kaldırıp tekrar derlemeye denerseniz hex dosyanız oluşacaktır.

    @ DEVICE pic16F628A
    @ DEVICE pic16F628A, WDT_ON
    @ DEVICE pic16F628A, PWRT_ON
    @ DEVICE pic16F628A, PROTECT_OFF
    @ DEVICE pic16F628A, MCLR_OFF
    @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT