Arkadaşlar merhaba.
Çok mühim bir projem için sizden yardım istiyorum. Şimdiden teşekkür ederim.
Pic16f877 ve ds1621 ile termometre yapacağım, sıcaklık belli bir değerin üzerine çıktığında led yanacak, sonrada o ledin olduğu kısmı pervana vs bağlayacağım. Şimdilik çalıştığını görmek için takılı.
Simülasyonda pic'i programladım, kodu derledim ve pic'e attım. Simülasyonda çalıştı. Program tamam.
Ancak devre şemasından emin değilim.
Sizden ricam, dikkatli biçimde inceleyip bana doğru/yanlış kısımları söyler misiniz, baskı devre aşamasındayım.
Simülasyonda (proteus) bazı kısımlar gösterilmiyor ya, osilatör, artı-eksi vs. Bir kontrol etmenizi rica ediyorum. En gerçek ve baskı devreye geçilecek haliyle çizdim.
(http://s27.postimg.cc/gjolc2m4v/tez_devre_emas.jpg) (http://postimg.cc/image/gjolc2m4v/)
Şemanı proteus da çizersen daha iyi olur.
Hata takibi kolaylaşır. Pcb çizerken de proteus sana kolaylık sağlar.
Hocam proteusta bazı uçlar gözükmüyor. Örneğin sensörün kısa devre edilip topraklanan bacakları, besleme uçları vs. Ayrıca proteusta çizdiğim devrenin baskı devre halini almayı bilmiyorum aresle. Ben her uç belli olsun, eksik veya olmayan bir şey olmasın diye bu şekilde çizdim.
Hata var mı sizce, veya eksik/yanlış dediğiniz bir yer?
LCD şöyle bağlarsan daha kolay olur.
Başka hata göremedim.
(https://dl.dropboxusercontent.com/u/20087162/Resimler/DS18b20_LCD.BMP)
1) LCD'ye bağlı 2 tane 330ohm var, backlight için tek uca bağlaman yeter.
2) D0,D1,D2,D3'ü kullanmayacaksan toprağa çek
3) fan sürmek için sink/source kullanımını değiştirmen gerekebilir http://generichid.sourceforge.net/ledsourcesink.png (http://generichid.sourceforge.net/ledsourcesink.png)
onun dışında standart gibi duruyor.
1: tamam hocam, 15'e 100 ohm bağlayıp 5v vereyim.
2: lcd'nin 7. ucundan 14. ucuna kadar olan tüm uçlar pic'e gidiyor. kullanmış olmuyor muyum? yani topraklayacak mıyım yine de?
3: gösterdiğiniz sistemi biraz daha açıklayabilir misin zahmet olmazsa?
1) Ben 5V'da 330ohm tercih ediyorum.
2) LCD'deki 7-8-9-10. bacaklarara da ground bağlayın demek istemiştim :)
3) Kullandığın microcontroller'ın çıkışlarının sink ve source akımlarının maksimum değerleri bellidir. Kullangığın PIC'te sanırım birisi daha yüksekti, fan vs kontrol etmek için çıkış katı tasarlaman gerektiğinde dikkate alman gerekecek bunları.
Alıntı yapılan: phil - 25 Nisan 2014, 16:36:36
1: tamam hocam, 15'e 100 ohm bağlayıp 5v vereyim.
2: lcd'nin 7. ucundan 14. ucuna kadar olan tüm uçlar pic'e gidiyor. kullanmış olmuyor muyum? yani topraklayacak mıyım yine de?
3: gösterdiğiniz sistemi biraz daha açıklayabilir misin zahmet olmazsa?
LCD'nin 8 data ucunun tamamı da kullanılabilir.
Fakat 4 uc yeterli olduğu için genellikle 4 uç kullanılır.
Sende 4 uç kullan diye öyle şema verdim.
Değer set ediğidiğinde, röle çalıştırılarak istenilen voltajda fan çalıştırılabilir.
devreyi borda kurdum ve çalışmadı.
sadece lcd'nin ışığı yanıyor. çok moralim bozuldu. aklına sebep gelen var mı?
Alıntı yapılan: phil - 26 Nisan 2014, 18:34:14
devreyi borda kurdum ve çalışmadı.
sadece lcd'nin ışığı yanıyor. çok moralim bozuldu. aklına sebep gelen var mı?
Programı da verirsen yorum yapabiliriz.
kurduğun devrede hata var,
işlemciyi programlayamadın,
program işlemciye göre değil,
sigorta ayarlarını yapamadın,
trimpotu ayarlamadın,
işlemci bozuk,
ekran bozuk,
regülatör devren bozuk,
besleme yetersiz.
Devreye basit bir led yak söndür programı yükle ve işlemcinin çalıştığından emin ol.
Genç arkadaşım kolay gelsin,öğrenmek için en iyi yol denemektir.Ancak Amerikayı yeniden keşfetmek gereksiz.Bak aynı konuda sayın ETE hocamızın özenle hazırladığı yazılımıyla beraber sunduğu çok benzer
devreler var .Röle yardımıyla istediğini de yaptırabilirsin hepsi hazır.Onu çizemezsen yardımcı oluruz yazılımıda gayet başarılı çalışıyor...Saygılarla...
Programım:
LIST P=16f877
include P16F877.INC
#define SDA PORTC,4
#define SCL PORTC,3
#define DATA 0x2C
CBLOCK 20h
SAYAC1,SAYAC2,OLCUM1H,OLCUM1L,DEGER,SAYAC,TERM
ENDC
ORG 0x0000
GOTO KURULUM
TABLO
ADDWF PCL,F
DT 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19
DT 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
DT 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
DT 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
DT 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
DT 00,01,02,03,04,05,06,07,08,09
KURULUM
movlw 0x0f
movwf PORTD
bsf STATUS,RP0
clrf TRISC
clrf TRISD
CLRF TRISA
CLRF TRISB
CLRF TRISE
movlw b'10001111'
movwf ADCON1
bcf STATUS,RP0
CALL KUR000
CALL LCDKURULUM
CALL SCYAZ
CALL GECIKME
;*****************************
BASLA
MOVLW H'C0'
CALL KOMUTYAZ
CALL OKU000
CALL TERMOSTAT
CALL GOSTER
CALL C0YAZ
CALL GECIKME
GOTO BASLA
;*****************************
TERMOSTAT
BTFSS OLCUM1H,7
GOTO ARTI1
BCF PORTC,0 ;eksili bir değer olduğundan ledi söndür
RETURN
ARTI1
MOVF OLCUM1H,W
MOVWF TERM
BTFSS OLCUM1L,7 ;0,5 ONDALIK var mı?
GOTO TAMAM1
MOVLW H'01' ;varsa değeri bir artiriyoruz
ADDWF TERM,F
TAMAM1 MOVF TERM,W
SUBLW D'21' ;21 ile karsilastiriyoruz
BTFSS STATUS,C
GOTO UST
ALT
BCF PORTC,0 ;LEDi yak
RETURN
UST
BSF PORTC,0 ;Ledi söndür
RETURN
C0YAZ
MOVLW A' '
CALL VERIYAZ
MOVLW A'D'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A'r'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A'c'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A':'
CALL VERIYAZ
RETURN
SCYAZ
MOVLW H'80'
CALL KOMUTYAZ
MOVLW A'S'
CALL VERIYAZ
MOVLW A'I'
CALL VERIYAZ
MOVLW A'C'
CALL VERIYAZ
MOVLW A'A'
CALL VERIYAZ
MOVLW A'K'
CALL VERIYAZ
MOVLW A'L'
CALL VERIYAZ
MOVLW A'I'
CALL VERIYAZ
MOVLW A'K'
CALL VERIYAZ
MOVLW A':'
CALL VERIYAZ
RETURN
GOSTER
BTFSS OLCUM1H,7
GOTO ARTI
EKSI MOVLW A'-'
CALL VERIYAZ
COMF OLCUM1H,W
ADDLW .1
GOTO TAMAM
ARTI MOVLW A'+'
CALL VERIYAZ
MOVF OLCUM1H,W
TAMAM CALL TABLO
MOVWF OLCUM1H
SWAPF OLCUM1H,W
ANDLW H'0F'
ADDLW H'30'
CALL VERIYAZ
MOVF OLCUM1H,W
ANDLW H'0F'
ADDLW H'30'
CALL VERIYAZ
MOVLW A'.'
CALL VERIYAZ
BTFSS OLCUM1L,7
GOTO SIFIR
BES MOVLW A'5'
CALL VERIYAZ
RETURN
SIFIR MOVLW A'0'
CALL VERIYAZ
RETURN
LCDKURULUM
BSF PORTE,0
BSF PORTE,1
MOVLW H'0F'
CALL KOMUTYAZ
MOVLW H'01'
CALL KOMUTYAZ
MOVLW H'0C'
CALL KOMUTYAZ
MOVLW H'38'
CALL KOMUTYAZ
RETURN
KOMUTYAZ
BCF PORTE,1
MOVWF PORTB
BCF PORTE,0
CALL TIMER1
BSF PORTE,0
RETURN
VERIYAZ
BSF PORTE,1
MOVWF PORTB
BCF PORTE,0
CALL TIMER1
BSF PORTE,0
RETURN
KUR000
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'00100010'
CALL GONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101100'
CALL GONDER
MOVLW B'10011001'
CALL GONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'11101110'
CALL GONDER
CALL PGONDER
RETURN
OKU000
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101100'
CALL GONDER
CALL SGONDER
MOVLW B'10010001'
CALL GONDER
CALL OKU
CALL NGONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101010'
CALL GONDER
CALL SGONDER
MOVLW B'10010001'
CALL GONDER
CALL OKU
MOVF DEGER,W
MOVWF OLCUM1H
CALL AGONDER
CALL OKU
MOVF DEGER,W
MOVWF OLCUM1L
CALL NGONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'11101110'
CALL GONDER
CALL PGONDER
RETURN
AGONDER
BSF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BSF PORTC , 03
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
RETURN
PGONDER BSF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BSF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF STATUS , RP0
RETURN
SGONDER
BCF STATUS , RP0
BCF STATUS , RP1
BSF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BCF PORTC , 03
BCF STATUS , RP0
RETURN
NGONDER
BSF STATUS , RP0
BCF STATUS , RP1
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF PORTC , 03
BCF STATUS , RP0
RETURN
OKU
BCF STATUS , RP0
BCF STATUS , RP1
CLRF DEGER
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF STATUS,0
MOVLW B'10000000'
MOVWF SAYAC
DEVAM
BTFSS PORTC , 04
GOTO SIFIR0
MOVF SAYAC,W
ADDWF DEGER,F
SIFIR0 BCF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 03
BTFSS SAYAC,0
BSF PORTC , 03
RRF SAYAC,F
BTFSS STATUS,0
GOTO DEVAM
MOVF DEGER , W
BCF STATUS , RP1
BCF STATUS , RP0
;BCF PORTC , 03
RETURN
GONDER
MOVWF DATA
BCF STATUS , RP1
BCF STATUS , RP0
MOVLW .8
MOVWF SAYAC
GTEKRAR
BCF PORTC , 03
BTFSC DATA , 7
GOTO YEDI11
BSF STATUS , RP0
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
GOTO $+3
YEDI11 BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
RLF DATA,F
DECFSZ SAYAC,F
GOTO GTEKRAR
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
MOVLW 0x00
BTFSC PORTC , 04
MOVLW 0x01
SUBLW 0x01
MOVWF DEGER
BCF PORTC , 03
MOVF DEGER , W
BCF STATUS , RP1
BCF STATUS , RP0
RETURN
GECIKME
MOVLW H'2F'
MOVWF SAYAC1
GECIKME1
MOVLW H'FF'
MOVWF SAYAC2
GECIKME2
DECFSZ SAYAC2,F
GOTO GECIKME2
DECFSZ SAYAC1,F
GOTO GECIKME1
RETURN
TIMER1
MOVLW H'3F'
MOVWF SAYAC1
DONGU1
MOVLW H'1F'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
------------------------------------------------
Simülasyon hali:
http://i59.tinypic.com/2llem4g.png (http://i59.tinypic.com/2llem4g.png)
------------------------------------
buna göre çizdiğim devre şeması:
http://tinypic.com/view.php?pic=op2uy1&s=8#.U1y-rVfZb9k (http://tinypic.com/view.php?pic=op2uy1&s=8#.U1y-rVfZb9k)
(burada lcd-6'dan pic-8'e gidecek, onu yanlış çizmişim.) gerçi iki türlü de bir şey fark etmedi.
---------------------------
kontrollerim neticesinde:
1: Programı attırdım yazıcıoğlunda hocam.
2: Doğru besleme yaptım.
3: Kristal bağlı, kondansatörler 22pf.
4: MCLR direnci 10k. 1'de 5v var.
5: Pic'in besleme uçları hariç (veya doğrudan 5v gelen uçları hariç) hiç bir uçta bir gerilim göremiyorum. Aynı şekilde sensörde de. Aynı şekilde lcdde de.
6: Simülasyonda pic 16f877, ben 16f877A almışım. Aralarında fark yok neredeyse. Bu acaba çalışmamasına yol açar mı?
7: Assembly dilinde kodum. Simülasyonda falan 16f877 ile yaptığımdan koda da LIST P=16f877
include P16F877.INC ile başlamışım. sizce sorun bu da olabilir mi?
Pic mi çalışmıyor acaba. Ama daha yeni ve programı dün attırdım.
------------------
Gerçekten yardımlarınızı bekliyorum arkadaşlar.
Alıntı yapılan: ambar7 - 26 Nisan 2014, 22:06:12
kurduğun devrede hata var,
işlemciyi programlayamadın,
program işlemciye göre değil,
sigorta ayarlarını yapamadın,
trimpotu ayarlamadın,
işlemci bozuk,
ekran bozuk,
regülatör devren bozuk,
besleme yetersiz.
Devreye basit bir led yak söndür programı yükle ve işlemcinin çalıştığından emin ol.
Sigorta ayarları nedir?
İşlemci ve ekranın bozuk olup olmadığını bilmiyorum durumu üstteki postta elimden geldiğince açıklamaya çalıştım.
Regülatör devrem yok ki.
Pici n lcd nin beslemesi nereden geliyor? Kac volt?
Regulesiz yerden geliyorsa pic belki yanmıştır. Enfazla 5volt olmasi gerek