pcbway

16F84A ENTEGRESİYLE DİJİTAL TERMOMETRE YAPIMI

Başlatan Pc_KuRTu, 17 Nisan 2011, 20:15:28

Pc_KuRTu

Arkadaşlar pic 16f84A entegresiyle dijital termometre yapacağım.Devremde ds1820 sıcaklık sensörü 74HC595 led sürücü ve bargraf ledler olucak.ben pic basicte yeniyim bana bu devrenin isis ve hex dosyasında yardımcı olabilirmisiniz?????
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

devrende bargraf led yerine lcd ekran kullanmak gibi bir alternatifin var mı? basic konusunda elimden geldiği kadar yardımcı olabilirim.

Pc_KuRTu

hayır mutlaka bargraf led kullanmam lazım ama devre biraz acele   
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

ne aşamadasın peki PIC\'i hangi dille programlamayı düşünüyorsun.  Sıcaklık sensörü olarak ne kullanmayı planlıyorsun.  16f84\'ün 13 I-O pini olduğu için 10lu bargraf kullanabilirsin ancak. ama yazılım ve donanım konusunda bir kaç ekleme yapılarak (port çoğullama) gösterge sayısı arttırılabilir.

Pc_KuRTu

programlamada BASİC kullanacağım ama daha çok yeniyim  :( :( :( Sıcaklık sensörü DS1820 yi kullanacağım ve bu devre -10 dan 40a kadar gösterecek(5 tane bargraf kullanılarak yapacağım)
ve bu ledleri sürmek içinde 74HC595 entegresini kullanacağız.İSİS i hemen hemen bitti ama bir kaç eklenmesi gereken yada emin olmadığım yerler var....
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

neler eksik emin olamadığın noktalar neler....

Pc_KuRTu

düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

Pc_KuRTu

İşte yapmış olduğum devrenin isisi
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

gözüme ilk çarpan DS18b20 nin bağlantı şekli. sensörü şu şekilde bağla;

birde Ra4 bacağına neden direk besleme verdin? onu düzelt.

ondan sonra oturup pogramı yazmaya başla zaman kaybetmeden. D18B20 ile ilgili nette çok fazla döküman var. onları incele ilk etapta sensörden gelen bilgiyi okumaya çalış. programda takıldığın yerde yardımcı olalım sana.


Pc_KuRTu

19 Nisan 2011, 13:12:09 #9 Son düzenlenme: 19 Nisan 2011, 13:12:48 Pc_KuRTu
peki 74hc595 entegresinde ve 16F84 de gelen bağlantılarda yanlışlık varmı kontrol dermisin??????
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

çizimin çok karmaşık. neyin nerden geldiği anlaşılmıyor.

Pc_KuRTu

istersen ben sana özetliim:
    74HC595 deki MR leri birleştirip vdd ye
                       OE leri birleştirip gnd ye
                       SH_CP leri birleştirip PİC in 8. bacağına
                       ST_CP leri birleştirip PİC in bacağına
                       ve 1. entegrenin DS sini PİC in 17. bacağına bağladım
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

bağlantı doğru gibi..bir yanlışlık yoksa sorun olmaz. Sen yavaştan programı yazmaya başla. ilk etapta ledleri istediğin gibi kontrol etmeyi dene. ondan sonra sensörden sıcaklığı okumayı. en sonda ikisini birleştirirsin.

Pc_KuRTu

ben kodlarda biraz uğraşayım o zaman yardıma ihtiyaç olduğunda buraya yazarım herşey için sağol:D:D:D
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

Pc_KuRTu

subram bir kodu yazamadım yardım edermisin??????Bu termometre -10 dan 40a kadar gösterecek biraz kod yazdım ilk önce lcd taktım onun için kodun içinde lcd ile ilgili kodlarda var onları kafana takma 74hc 595in kodunu yazamadım onu bana gönderirmisin;

\'****************************************************************
\'*  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\"

   



TrisA=0
TrisB=0

PortA=0
PortB=0 

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

Comm_Pin1   VAR   PortB.0
dPin VAR PORTB.5
sPin VAR PORTB.6
cPin  VAR PORTB.7
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,\"**KULA EML**\"
LCDOUT $FE,$C0, \"*HOSGELDINIZ*\"
pause 2000
lcdout $FE,1 

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

Basla:

    gosub sensoroku1
   

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
    ISI=ISI+1
    lcdout $FE,$80,\"SICAKLIK\",1,\": \",Sign,DEC ISI,\".\",DEC1 (Float),0,\"C \" \'2. satırda ısı
   
   
   
    RETURN


End


düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

Pc_KuRTu

yaptığım devre bu buna göre yaparsan yazılımı sevinirim :DDDD
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...


Pc_KuRTu

onun benimkiyle alakası yokki.biraz yardımcı olurmusun
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

senin sorunun 74595 ile ilgili sanırım. verdiğim linkin altta taraflarında yin ds18b20 ile ilgili yapılmış ve 74595 kullanılmış bir örnek. buradan 74595 in kullanımı konusunda fikir sahibi olabilirsin. yapman gereken 74595 in nasıl çalıştığı konusunda bilgi sahibi olmak. biraz uğraş yine yapamazsan başka yol deneriz :)

Pc_KuRTu

ben baktım ona hiç bir şey anlamadım hem benim devrede -10 dan 40 a kadar sayacak ya işte ondan biraz daha kafam karışıyor lütfen çok acil yardım edermisin ödev verilecek
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

Pc_KuRTu

subram seni rahatsız ediyorum ama yapamadım yaaa  :\'( :\'( :\'( sen gönderirmisin bana ??????
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

Pc_KuRTu

subram sonunda yazmayı başardım ama hata var kodlarda galiba bakarmısın bi  :-\:-\:-\\ sadece port çoğaltma bölümünde sorun gösterior.

\'****************************************************************
\'*  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\"

   



TrisA=0
TrisB=0

PortA=0
PortB=0 

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

Comm_Pin1   VAR   PortB.0
dPin VAR PORTB.5
sPin VAR PORTB.6
cPin  VAR PORTB.7
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
x           VAR BYTE

\'***********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,\"**KULA EML**\"
LCDOUT $FE,$C0, \"*HOSGELDINIZ*\"
pause 2000
lcdout $FE,1 

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

Basla:

    gosub sensoroku1
   

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
    ISI=ISI+1
    lcdout $FE,$80,\"SICAKLIK\",1,\": \",Sign,DEC ISI,\".\",DEC1 (Float),0,\"C \" \'2. satırda ısı

\'***********PORT ÇOĞALTMA***********
PORTCOGALTMA:
     x  = \"ISI\"
     IF x > 0 THEN x = x+10
     SHIFTOUT PORTB.5,PORTB.7 \'Sayı değerini Shift Registere yaz
     HIGH PORTB.6:PAUSEUS 2:LOW P\'Sayı değerini Shift Registere yazORTB.6 \'Yazılan değeri çıkışa aktar
       IF X =< 0 THEN                               
       SHIFTOUT PORTB.5,PORTB.7   \'Sayı değerini Shift Registere yaz
     HIGH PORTB.6:PAUSEUS 2:LOW PORTB.6  \'Yazılan değeri çıkışa aktar  \'Yazılan değeri çıkışa aktar
     
    SHIFTOUT DTA,CLK,1,[%01010101] \'Veriyi dta,clk pinlerinden senkronize\'olacak şekilde gönder
    HIGH YAZ \'sPİN pini 5V
    PAUSEUS 2 \'Çok kısa bi süre bekle
    LOW YAZ \'sPİN pini 0V
 
GOTO basla   
   
    RETURN


End
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

kullandığın devreyide eklersen bakayım. resim olarak değil yalnız. proteus dosyasının kendisini ekle.

Pc_KuRTu

04 Mayıs 2011, 22:43:25 #23 Son düzenlenme: 04 Mayıs 2011, 22:44:00 Pc_KuRTu
Devre
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...

subram

şimdi ilk olarak \"programı yazdım\" demen çok yanlış. \"programın\" dünya kadar hata ile dolu. programda nerde hata yaptın diye bakayım dedim ama sen programı başka yerden \"kopyalayıp\" (üstelik kopyaladığın yerleri kendi programına göre düzenlemişin -bari zahmet edip bunu yapsaydın-) yapıştırdığın için çok yok  yanlış bir yola girdin. Sana daha öncede söyledim programı yazıp sana göndermem diye. ben sana yol gösteriyorum sen işin kurnazlığına kaçıp bizi kandırmaya çalışıyorsun. Sana 74595 i araştır dedim sen anladım diyip kestirip attın. anlamadığın noktaları öğrenmek istemedin. Tekrar söylüyorum 74595 in çalışma prensibini araştır anlamadığın yer varsa sor anlatayım.

Pc_KuRTu

şimdi onları çalışma prensibine göre yaptım.Ben önceden pascal görmüştüm mantığı ona uydurdum.ben daha hiç pic basic görmeden bunları yapmaya çalışıorum.Tabi hiç pic basic görmeyen birinin bu kadar hata yapması normaldir diye düşünüyorum.Hem programın diğer kısımlarının çoğunda öğretmenimiz yardım etti yani üst kısımlarda hata yoktur tek port çoğaltıcıda vardı hata.Tekrar söylüyorum bunu 2 günüdür araştırıyorum ve öyle yaptım tabi kopyalamada vardır içinde şimdi nereede hata var söylermisin????
düşler avucumdan kayıp

toz zerreler halinde yere döküldü...