Proton ds1820 arıza kontrollü termomete

Başlatan Murat Mert, 28 Nisan 2009, 17:59:20

Murat Mert

S.A.
Arkdaşlar 16628 ve 16f877 ile kullandığım termometre protonun help'inden alıp biraz değiştirerek kullandığım ve gayette güzel çalışan bir program.
Kolay gelsin.
       Device = 16F628    
        XTAL = 4 
        REMARKS = On 
        WATCHDOG = OFF 
        MACRO_PARAMS = On 

      LCD_DTPIN = PORTB.4    
      LCD_RSPIN = PORTB.3 
      LCD_ENPIN = PORTB.0 
      LCD_INTERFACE = 4    
      LCD_LINES = 2 
      LCD_TYPE = 0 
                                

        Symbol DQ = PORTA.0    
        Dim Temp As Word    
        Dim D As Byte 
        Dim C As Byte      
        Dim CPerD As Byte    
        Dim ISARET As Byte 
        Symbol AR = "+" 
        Symbol EK = "-" 
        Symbol SIF = " " 
        Print $FE,$40,$06,$09,$09,$06,$00,$00,$00,$00 '***DERECE İSARETİ ***
        Cls              
        ACILIS: 
        Print At 1,1, "     DS1820     " 
        Print At 2,1, "   TERMOMETRE   " 
        DelayMS 1000 
        Print At 1,1, "     Dizayn     " 
        Print At 2,1, "   muratmert4   " 
        DelayMS 1000 
        Cls 
        GoTo BASLA 
        BASLA:  
        '***DS OKUMA VE HESAPLAMA*** 
        OWrite DQ, 1, [$CC, $44]    
        Repeat 
        DelayMS 30      
        ORead DQ, 4, [C]      
        Until C <> 0    
        OWrite DQ, 1, [$CC, $BE]  
        ORead DQ, 2,[Temp.LowByte,Temp.HighByte, C, C, C, C, C, CPerD] 
        If C = 255 Then ARIZA  '***SENSOR KOPUK ISE*** 

        '***ISARET KISMI "-" VE "+"*** 

        If Temp=0 Then ISARET = SIF 
        If Temp>0 Then ISARET = AR 
        If Temp>500 Then  '***EGER DEGER EKSI ISE*** 
        Temp=65536-Temp 
        ISARET = EK 
        EndIf 
        
         '***EKRANA VE YAZILACAK DEGER HESAPLAMASI*** 
        
        Print At 1, 1, ISARET, Dec (Temp>>1), ".", Dec (Temp.0 * 5),0,"C  DERECE " 
       Print At 2, 1, "   muratmert4   " 
      GoTo BASLA 
        
        '***SENSOR ARIZA KISMI ARIZA*** 
        
        ARIZA: 

        Print At 1,1, "  DS1820 SENSOR  " 
        Print At 2,1, "BAGLANTI HATASI " 
        DelayMs 5000 
                Cls 
        GoTo BASLA '***SENSORU TEKRAR KONTROL ET***
mert07

askb

Selam.bende buna benzer bı devre tasarlamıstım.Sensor arızasını anlamak ıcın 255 degerıne bakıyordum.ancak sensor eksı olcume gectıgınde (sanırım -1 olacaktı),arıza uyarısı vermeye basladı.yanı eksı olcume gectıgınde 255 degerı gonderıyordu.bı deneme yapıp sonucu bıldırırsen menmun olurum.Kolay gelsın

Murat Mert

S.A. Arkadaşım devede (programda) ds1820 nin data ucundan bilgi gelmeyince yani kopunca 4,7 K lık dirençden geçen voltajı algılıyor ve arıza programını çalıştırıyor. devreyi isiste kur ve ds den gelen ucu sil ve izle. kolay gelsin.
mert07

Murat Mert

Kodun zunluğna bakmayın ds kımının kodu sadece bu:
       OWrite DQ, 1, [$CC, $44]    
        Repeat 
        DelayMS 30      
        ORead DQ, 4, [C]      
        Until C <> 0    
        OWrite DQ, 1, [$CC, $BE]  
        ORead DQ, 2,[Temp.LowByte,Temp.HighByte, C, C, C, C, C, CPerD] 
         
      


Bu kodu gerekirse hazır inc. dosyasınabile çevirirsiniz ve öylede kullanır sınız. Geriye sadece ek kodlar kalıyor. Kolay gelsin.
mert07

elektronikhobiler

Merhaba Arkadaşlar ben bu kodları biraz değişiklik yapıp 18f452 ile glcd sürmek istedim kodlarımda büyük bir olasılıkla hata var ama ben işin içinden çıkamadım yardımcı olursanız sevinirim

Device = 18F452
Config_Start                    
OSC = HSPLL
WDT = OFF
LVP = OFF
PWRT = On                    
Config_End
Xtal = 8
All_Digital= TRUE                  'ADC PORTLARININ TAMAMI DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCD_DTPort = PORTD                 'GLCD DATA PORTLARI PORTB'YE BAĞLI
LCD_RSPin = PORTC.5                'GLCD RS PİNİ PORTC.5 BAĞLI
LCD_ENPin = PORTC.1                'GLCD ENABLE PİNİ PORTC.1 BAĞLI
LCD_RWPin = PORTC.4                'GLCD RW PİNİ PORTC.4 BAĞLI
LCD_CS1Pin = PORTC.2               'GLCD CS1 PİNİ PORTC.2 BAĞLI
LCD_CS2Pin = PORTC.3               'GLCD CS2 PİNİ PORTC.3 BAĞLI
LCD_Type =  GRAPHIC                'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Internal_Font = On                 
Font_Addr = 0
GLCD_EXTERNAL_PRINT = PPRINT

;-------------- Termometre tanımlamaları ----------------
        Symbol DQ = PORTA.0    
        Dim Temp As Word    
        Dim D As Byte
        Dim C As Byte      
        Dim CPerD As Byte    
        Dim ISARET As Byte
        Symbol AR = "+"
        Symbol EK = "-"
        Symbol SIF = " "
        Print $FE,$40,$06,$09,$09,$06,$00,$00,$00,$00 '***DERECE İSARETİ ***
;---------------------------------------------------------


BASLA:

 Cls

        '***DS OKUMA VE HESAPLAMA***
        OWrite DQ, 1, [$CC, $44]    
        Repeat
        DelayMS 30      
        ORead DQ, 4, [C]      
        Until C <> 0    
        OWrite DQ, 1, [$CC, $BE]  
        ORead DQ, 2,[Temp.LowByte,Temp.HighByte, C, C, C, C, C, CPerD]
        If C = 255 Then ARIZA  '***SENSOR KOPUK ISE***

        '***ISARET KISMI "-" VE "+"***

        If Temp=0 Then ISARET = SIF
        If Temp>0 Then ISARET = AR
        If Temp>500 Then  '***EGER DEGER EKSI ISE***
        Temp=65536-Temp
        ISARET = EK
        EndIf
       
         '***EKRANA VE YAZILACAK DEGER HESAPLAMASI***
        Print At 0, 5, ISARET, Dec (Temp>>1), ".", Dec (Temp.0 * 5),0,"C  DERECE "
        GoTo BASLA
       
        '***SENSOR ARIZA KISMI ARIZA***
       
        ARIZA:

        Print At 0,5, "  DS1820 SENSOR  "
        Print At 20,5, "BAGLANTI HATASI "
        DelayMS 5000

        GoTo BASLA '***SENSORU TEKRAR KONTROL ET***


Devre şemasını veya resmini eklemeye gerek varmı ?


elektronikhobiler


Murat Mert

Alıntı yapılan: elektronikhobiler - 26 Temmuz 2010, 22:59:54
yardımcı olursanız çok sevineceğim
S.A.
Tamam Sn. Arkadaşım sana yardımcı olalım notunu daha yeni okudum. Kusura bakma.
Kolay gelsin.
mert07

elektronikhobiler

Sn. mert07 yardımlarınızı bekliyorum

Murat Mert

S.A.
Deneme kartında enedim ama tam sürüm değil. Bende 18f4520 vardı onunla denedim. Isis te olmadı ama normalde çalışıyor onu anlayamadım  >:(
derece kısmını test ettin geri kısmınıda siz denersiniz. Kolay gelsin.

     Device = 18F4520
   Xtal = 20

   LCD_DTPort = PORTB
   LCD_RSPin = PORTD.0
   LCD_ENPin = PORTD.2
   LCD_RWPin = PORTD.1
   LCD_CS1Pin = PORTD.4
   LCD_CS2Pin = PORTD.3
   LCD_Type = GRAPHIC
   Internal_Font = On
   Font_Addr = 0
   
All_Digital = TRUE
Dim Temp As   Word         ' Temperature storage
Dim Count_remain As Byte         ' Count remaining
Dim CPERD As Byte         ' Count per degree C
Dim Dum   As Byte   
Dim C As Byte   
Dim AC As Byte            ' Dummy variable to pad OWIN
Dim HAM As Word
Dim ISI As Word
Symbol DQ = PORTA.5   
'All_Digital = TRUE      
Cls
Print At 1,1, " GLCD DENEME"
DelayMS 1000
AC=0
'--------------------------------------------------
Cls
BASLA:
Inc AC
OWrite DQ, 1, [$CC, $44]     
Repeat
DelayMS 25                   
ORead DQ, 4, [C]             
Until C <> 2                 
OWrite DQ, 1, [$CC, $BE]     
ORead DQ, 2,[Temp.LowByte,Temp.HighByte, C, C, C, C, C, CPERD]
ISI = ((Temp*10) / 16)/10       
    Print At 1,1, "ISI:", Dec ISI,"C"
      Print At 2,1, "ac:", Dec AC,"C"          
GoTo BASLA
Include "FONT.INC"
mert07