16f628 ile ultra sonic range meter lcd sorunu_?

Başlatan mustafa_cmbz, 26 Mart 2009, 08:37:20

mustafa_cmbz

arkadaşlar elimizde bilim tekniğin bir sayısında yayınlanan bir devre var bilim teknik sadece analog kısmı yayınlamış picli kısmın sadece kodlarını vermiş ve bırakmış bizde buradan yola çıkarak 16f628 ile bir devre tasarladık ama devre isiste çalışıyor real'de çalışmıyor...aslında çalışıyor da daha önce çicek sulama devresindeki gibi yapıyor devre lcd dışında yapması gereken işleri yapıyor buzer'i öttürüyor vs. ama lcd'de karakter oluşturamıyor....bozuk olma ihtimali çok düşük çünki bu devre için sıfır lcd aldım...

kodlar:

@ device pic16F628A, intrc_osc_noclkout, wdt_on, pwrt_on, protect_off, mclr_off, lvp_off 
DEFINE LCD_DREG	 PORTB	'LCD data bacakları hangi Porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG	 PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
define LCD RWREG PORTA   	'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    0       		'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	0		'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor
CMCON=7
PAUSE 250
TRISB = %00100000
SURE VAR WORD ;DE..fiKENLER TANIMLANIYOR
VERICI VAR PORTB.1
ALICI VAR PORTB.2
LCDOUT $FE,1,"MUSTAFA_CMBZ" ;EKRANI TEMIZLE
T1CON = %00000001 ;TIMER1 OLCEKLEME 1/1
PIE1.0=1 ;TIMER1f. ETK.NLEfiT.R
PIR1.0=0 ; TIMER1 TAfiMASINI TEM.ZLE
INTCON = %11000000 ;DIfi KESMELERI ETK.NLEfiT.R
 HIGH PORTA.2 'buzer
ANADONGU:
PAUSE 50 ;FARKLI OLCUMLER ARASINDAK. BEKLEME
SURE = 0
PIR1.0 = 0
HIGH VERICI ;40 KHZ L.K S.NYAL. GONDER
PAUSEUS 250
LOW VERICI
TMR1L = 0 ;TIMER1f. SIFIRLA
TMR1H = 0
WHILE 1=1 ;YANSIMAYI D.NLE
IF ALICI = 0 THEN
SURE.LOWBYTE = TMR1L ;YANSIMA ALINIRSA O ANK. TIMER DE.ER.N. TUT
SURE.HIGHBYTE = TMR1H
GOTO GOSTER
ENDIF

IF PIR1.0=1 THEN ANADONGU
WEND
GOTO ANADONGU
GOSTER:
LCDOUT $FE,1,"UZAKLIK" ;OLCULEN UZAKLI.I EKRANA YAZ
LCDOUT $FE,$C0,#((SURE)/58), " cm"
PAUSE 25
GOTO ANADONGU
end


yardımlarınızı bekliyorum arkadaşlar...ben sorununun configlerden olacağını düşndüm pcb ye kristal eklemedim 16f628'in kendi kristalini kullanırım dedim onuda beceremedim,bu kristalide nasıl aktif ederiz oda lazım...iyi çalışmalar....

digi_micro

@ device pic16F628A, intrc_osc_noclkout, wdt_on, pwrt_on, protect_off, mclr_off, lvp_off
bu komutla zaten dahili osilatörle yani kristalle çalışacağını tanımlamışsın

eğer lcd dışında çalışmadığını düşünüyorsan programın LCD ile ilgili Define komutlarını gözden geçir şema olmadığı için doğru yanlış bir şey diyemeyeceğim kolay gelsin

ferit06

ISIS de çalışıyor diyorsunuz.

Programlarken ayarların tam doğru olduğunu kontrol ederseniz iyi olur. BBu sorun Büyük bir ihtimal ile dahili osilator kullanımı ve T1OS0 ve T1OS1 yani RB6, RB7 ler ile ilgili olabilir. Mümkünse RB6 ve RB7 yi LCD'ye giden pin olarak kullanmayın ve öyle deneyin.

(Ben bir proteus7.4 ISIS denememde TMR1 kullandığımda dahili osilator registerı T1CON hangi değeri verirsem vereyim  ISIS da "LCD1 busy" mesajı alıyordum.)

Cenk_Unur

Bu sorunun 2 nedeni olabilir.

1- LCD nin kontsartın  ayarsız  olması.  :D

2- Pic osc frekansından kaynaklanabilir. Ben bunun neden olduğunu anlamadım ama kendi lcd ekranım 4mhz kristal ile çalıştırabiliyorum. :)

mustafa_cmbz

hocam lcd dediğiniz gibi yanlış bağlantıdan dolayı çalışmıyormuş...onu hallettim şimdi ise sorunum ekranda mesafe 0 olarak çıkıyor ve devamlı öyle kalıyor...devre bilim teknik dergisinden alıntı...adamlar analog kısmını tasarlamışlar vermişler picli kısımlar için sadece kod vermişler ben 16f628 için uyarladım oldu ama rx sensöründen gelen mesafe değerini ekranda göremiyorum değer olarak sadece 0 cm olarak ekrana basıyor...devre aşağıdaki linkteki gibi

http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/diger/ultrasonik.pdf

tx te hiç bir sorun yok 3. ayağa led bağlıyorum osilatör çıkış yapıyor...

rx sensörununde 2 ayağını ölçtüğüme 2.64 civarı bir voltaj okuyorum...

acaba diyorum tx katından çıkan kare dalganın frekansı 40khz dan yüksek veya düşükse bu benim yaşadığım sorunun sebebi olabilirmi_?

tx katındaki 4k yerine 4k7 takıyorum...

EDİT: kullandığımız sensörler siyah plastik klıflı sensörler birde bu sensörlerin 2'si de aynı kodlu sensörler rx tx veya +/- fark ediyormu_?

iyi çalışmalar...