View
6
Download
0
Category
Preview:
Citation preview
T.C.
KARADENİZ TEKNİK ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ
ULTRASONİK MESAFE ÖLÇER
BİTİRME ÇALIŞMASI
Mehmet İstemi KARAÖMER Sefer HOROZ
179954 179959
2011
TRABZON
T.C.
KARADENİZ TEKNİK ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ
ULTRASONİK MESAFE ÖLÇER
BİTİRME ÇALIŞMASI
Mehmet İstemi KARAÖMER Sefer HOROZ
179954 179959
TEZ DANIŞMANI
PROF. DR. SEFA AKPINAR
2011
TRABZON
i
ÖNSÖZ
Lisans eğitimimiz boyunca aldığımız derslerin, yaptığımız projelerin ve araĢtırmaların
kazandırdığı bilgi ve deneyimlerden faydalanarak bu araĢtırmayı gerçekleĢtirdik. Projenin
yapım aĢamasında kazandığımız bilgi ve deneyimlerin meslek hayatımızda proje oluĢturma ve
geliĢtirme, takım halinde çalıĢma ve karĢılaĢılan problemlere akılcı çözümler bulma yetilerini
kazandırdığı kanaatindeyiz. Alınan veriler doğrultusunda ya pılan bu çalıĢmanın tüm
araĢtırmacılara yardımcı olmasını dileriz.
Bu tez çalıĢmamızda yardımlarından dolayı, her zaman anlayıĢlı olan ve tez konumuzun
danıĢmanlığını yapan Prof Dr. Sefa AKPINAR hocamıza , çevirilerde bize yardımcı olan
ağabeyim ÖMER KARAÖMER ‘e, bize her türlü maddi ve manevi desteği veren arkadaĢla-
rımıza ve ailelerimize teĢekkürlerimizi sunarız.
MEHMET ĠSTEMĠ KARAÖMER
SEFER HOROZ
2011
TRABZON
ii
İÇİNDEKİLER
1.GĠRĠġ ...................................................................................................................................... 1
2. UZAKLIK ÖLÇME TEKNĠKLERĠ ...................................................................................... 2
2.1 ULTRASONĠK MESAFE ÖLÇER ................................................................................ 3
2.2.DEĞĠġMEZ (SABĠT ) BULMA ..................................................................................... 4
3.DONANIM AÇIKLAMASI ................................................................................................... 5
3.1.ALICI DEVRESĠ ........................................................................................................... 5
3.1.1. SĠNYAL YÜKSELTEÇ DEVRESĠ ....................................................................... 5
3.1.2. SĠNYAL DOĞRULTMA DEVRESĠ ..................................................................... 6
3.1.3.KARġILAġTIRICI DEVRE ................................................................................... 7
3.1.4. SĠNYAL TUTMA DEVRESĠ ................................................................................ 8
3.2. VERĠCĠ DEVRESĠ ......................................................................................................... 8
3.3.DĠSPLAY ........................................................................................................................ 9
3.4 MĠKRO DENETLEYĠCĠ .............................................................................................. 10
4.YAZILIM AÇIKLAMASI ................................................................................................... 11
4.1ASSEMBLY PROGRAMI ............................................................................................ 11
4.2.KURULUM AġAMASI ................................................................................................ 12
4.2.1. PORT KURULUMU ............................................................................................ 12
4.2.2.ULTRASONĠK AKTARIM PERĠYODU (TMRO) ............................................. 12
4.2.3. YAKALAMA MODU KURULUMU ................................................................. 13
4.2.4.ÇEVĠRĠCĠ KURULUMU ..................................................................................... 13
4.2.5. LED (TMR2) ZAMANLAYICI PERĠYODU ..................................................... 13
4.2.6.KESME BAġLANGICI ........................................................................................ 13
4.3.KESME AġAMASI ...................................................................................................... 13
4.4.KESME SONA ERDĠRME AġAMASI ....................................................................... 14
4.5.ULTRASONĠK DALGA GÖSTERĠM AġAMASI ...................................................... 14
iii
4.5.1.AÇIK KESME GÖSTERĠMĠ ................................................................................ 14
4.5.2.ALGILAMA HATALARINI KONTROL ETME ................................................ 14
4.5.3.YANSIYAN DALGA ALICISINI DURDURMA ............................................... 14
4.5.4.YAKALAMAYI BAġLATMA ............................................................................ 14
4.5.5.40KHZ DALGA GÖNDERME ............................................................................ 14
4.5.6.YENĠLENMĠġ BĠLGĠ EKRANININ ALIMI ....................................................... 15
4.5.7. HATA BULMA ................................................................................................... 15
4.5.8.YANSITILMIġ DALGA ÖLÇÜMÜNÜN BAġLANGICI .................................. 15
4.6. YAKALAMA KESME AġAMALARI ......................................................................... 15
4.6.1.KESME EKRANINI TEMĠZLEME ..................................................................... 15
4.6.2.MESAFE ÇEVRĠM AġAMASI ............................................................................ 15
4.6.3.EKRAN (GÖRÜNÜM) AġAMASI ...................................................................... 16
5.PROJENĠN GELĠġĠMĠ ......................................................................................................... 17
5.1.SĠNYAL ÜRETĠMĠ ....................................................................................................... 17
5.2.ALICI DEVRESĠ GÜCÜNÜN KARġILANMASI ...................................................... 17
5.3.ĠLETĠM DALGASI UZUNLUĞU ................................................................................ 17
6.TESTLER VE SONUÇLAR ................................................................................................. 18
6.1.ÖLÇÜM UZAKLIĞI .................................................................................................... 18
6.2.MESAFE ÖLÇERĠN PERFORMANSI ....................................................................... 18
7.SONUÇ ................................................................................................................................. 19
KAYNAKLAR ......................................................................................................................... 20
EK-A Ultrasonik Mesafe Ölçümü için PIC Kaynak Kodları ................................................... 21
EK-B ġEKĠL B.1 DEVRE ÇĠZĠMĠ .......................................................................................... 29
EK-C MALĠYET ...................................................................................................................... 30
iv
ÖZET
Bu tezimizin amacı fiziksel temas olmadan nesnelerin uzaklığını ölçmektir. Bu ölçmeyi
yaparken çeĢitli teknikler kullanılır. Biz bu tezimizde ultrasonik dalgaları kullandık. Bunun
nedeni de daha ucuza gerçekleĢtirilmesidir. Projede kullandığımız elemanları ayrıntılı olarak
tanıttık. Yaptığımız iĢlemler sonucunda ölçtüğümüz mesafe de küçük hatalar oluĢtuğunu
tespit ettik bunun da nedenlerini açıkladık ve daha doğru ölçümler yapılabilmek için ne
yapılması gerektiğinden bahsettik.
1
1.GĠRĠġ
Bu projenin amacı, fiziksel temas olmadan objelerin uzaklığını ölçmektir. Yaratılan
sistem taşınabilir olmalıdır. Bitirme boyunca uyulan çalışma takvimi Tablo1.1‟de
gösterilmektedir.
Tablo 1.1 Bitirme çalışması takvimi
15-
20
Oca
k
12-25
ġuba
t
3-7
Mar
t
15-
25
Mar
t
25-
30
Mar
t
1-12
Nisa
n
12-20
Nisa
n
20-30
Nisa
n
1-8
Mayı
s
8-15
Mayı
s
15-30
Mayı
s
Bitirme
Konusu
Belirleme
X
Konu
Hakkında
AraĢtırma
X X
Tez ile ilgili
Doküman
Toplama
X X X
Malzeme
belirleme
ve
araĢtırma
X
Malzeme
Satın Alma
X
Mekanik
Kısım
ÇalıĢmalar
ı
X X
Elektriksel
Sistem
ÇalıĢmalar
ı
X X
Tez Yazma X X X X
2
2. UZAKLIK ÖLÇME TEKNĠKLERĠ
Bir çok oturmuş sistem dizaynlarında fiziksel temas olmadan objelerin ve sınırların
uzaklığını ayırt etmek önemli hale gelmiştir. Mesafeyi ölçmek için kullandığımız bazı
teknikler vardır.
Ultrasonik dalgalar
RF (elektromanyetik dalgalar)
Lazer
Tüm bu tekniklerde sinyal nesneye gönderilir ve yansıtılır. Biz bu yansıtılmış sinyali
mesafeyi ölçmek için kullanırız.
Lazer kullanımıyla mesafeyi daha keskin ve sağlam ölçebiliriz. Duman ve havadaki
bazı partiküller ölçümleri etkileyebilir. Lazer metrenin iki çeşidi vardır : ladar(lazerle
mesafe ölçme) ve lidar(ışıkla mesafe ölçme).
RF kullanıldığında frekans 10 MHz ile 100 MHz aralığında olmalıdır. Bu sistemin
lazerli olana göre daha kötü sonuçları vardır ama duman ve bazı partiküller tarafından
etkilenmezler. Kısa mesafelerde (100m-200m) bu sistemlerden iyi sonuçlar alabiliriz. Bu
sistemin diğerlerinden farkı ise yansıtılmış sinyal kullanmamamızdır. Sinyal almak ve RF
mesafe ölçere cevap vermek için mobil bir iletici kullanırız.
Ultrasonik mesafe ölçerleri düşük frekanslarda çalışır. Bu ultrasonik ölçerleri
diğerlerinden daha ucuz ve basit yapar. Diğer taraftan ultrasonik sinyaller uzaklaştıkça
zayıflar bu yüzden uzun mesafelerde kullanılmazlar.
Biz bu projemizde ultrasonik mesafe ölçer yaptık. Yaklaşık 2 m mesafeyi ölçmeyi
denedik. Bunu da PIC‟in yardımıyla yaptık.
3
2.1 ULTRASONĠK MESAFE ÖLÇER
Ultrasonik dalgalar frekansı 20 kHz‟ den daha yüksek olan ses dalgalarıdır. Ultrasonik
mesafe ölçerden bir sinyal göndereceğiz ve yansıtılanı geri alacağız. Bunu yapmamızın
amacı sinyalin uçuş süresini ölçmektir. Sinyalin uçuşu Şekil 2.1‟de gösterilmiştir.
Mesafeyi ölçmek için sahip olduğumuz tek bilgi ses dalgalarının ve hızıdır.
verici
alıcı
ses yansıtıcı obje
ġekil 2.1- Sinyalin hareketi
İlk olarak ultrasonik sinyalleri tanıtmalıyız. Ultrasonik vericiler ultrasonik ses
sinyallerini göndermek için kullanılır ve sinyalleri geri almak için ultrasonik alıcıya
ihtiyacımız vardır. Verici ve alıcıların çalışma frekansı aynı olmalıdır. Resimde gösterilen
40kHz verici ve alıcı ikilisini kullandık.
Alıcı R40K
İletici T40K
ġekil 2.2-Ultrasonic alıcı ve verici
4
Bir örnekle açıklamak gerekirse, 65.5 ms zaman diliminde her 0.5 ms de sinyal
göndeririz. T1 zamanda, alıcı sinyalleri yakalar ve sonlandırır. Bu sırada uçuş süresini
sayan zamanlayıcı durur ve değeri kaydeder. Bu zamanlayıcı 65.5 ms yi saymalı ve
sıfırlamalıdır. Böylece „zaman ‟ hakkında bilgimiz olur ve bunu kullanarak mesafe
bilgimizi değiştiririz. Bunu yapmak için bir sabite ihtiyacımız vardır.
2.2.DEĞĠġMEZ (SABĠT ) BULMA
Ultrasonic dalgaları ses dalgalarıdır; bu nedenle sesin hızından yararlanabiliriz. Sesin
hızı sıcaklıkla değişebilir. Formülü denklem 2.1‟de gösterilmiştir.
(2.1)
Eğer T=20 derece (ev sıcaklığı ) alırsak:
Bunun anlamı ses 1 cm mesafeyi 29.15 mikrosaniyede alır.
= (2.2)
Zamanlayıcı zamanı saymak için kullanılır. O yüzden zamanlayıcının artış oranını
ayarlamamız gerekir. Örneğin 1 için zamanlayıcının artış oranını ayarlarsak
zamanlayıcının 3887 de durduğunu düşünelim. Sinyallerin geliş ve gidiş zamanlarını bir
birine eşittir bu nedenle sadece gidiş zamanına ihtiyacımız vardır. Bu sayıyı 2 ye böleriz:
Zaman bilgisini mesafe bilgisiyle değiştirmek için değişmez (sabit) kullanılır α ;
Ölçtüğümüz hassasiyeti yükseltmek için zamanlayıcı oranını yükseltmeliyiz ancak çok
fazla yükseltme yaparsak ölçebileceğimiz mesafe azalır.
5
3.DONANIM AÇIKLAMASI
Bu bölümde mesafe ölçerin donanımının nasıl çalıştığını açıklayacağız. Mesafe ölçerin
devre diyagramını açıklamak için donanımı bazı bölümlere ayırdık. Bu bölümler şekil 3.1
de görülebilir.
ġekil 3.1 Donanım kısımları
3.1.ALICI DEVRESĠ
Alıcı devresi mesafe ölçerin ana parçalarından biridir. Bu devre yansıtılmış sinyalleri
alır ve üzerinde bazı değişimler yapar. Bu bölümde alıcı devresindeki bölümleri ve
değişimleri anlattık.
3.1.1. SĠNYAL YÜKSELTEÇ DEVRESĠ
Bir ultrasonik alıcı ses dalgasını elektriksel bir sinyale dönüştürür. .Opamp devresi
Şekil 3.2 de görülmektedir.
6
ġekil 3.2 Sinyal yükselteç devresi
Filtreden geçen sinyal işlemsel kuvvetlendirici yardımıyla iki adımda yaklaşık 1000 kat
kuvvetlendirilmiştir. İlk adımda 100 ve diğer adımda 10 kat kuvvetlendirilmiştir. Genel
olarak işlemsel kuvvetlendiricilerde pozitif ve negatif besleme gerilimi birlikte uygulanır.
Buradaki devrede sadece pozitif 9V besleme gerilimi ile çalışmaktadır.Bu nedenle
işlemsel kuvvetlendiricinin pozitif girişi için besleme geriliminin yarısı bias gerilimi
uygulanır., ve kuvvetlendirilmiş değişken akım sinyalinin merkezi geriliminde 4,5V olarak
ayarlanır. İşlemsel kuvvetlendiriciyi negatif geri besleme ile kullandığımızda pozitif ve
negatif giriş terminallerinin gerilimleri yaklaşık olarak birbirine eşit olur. Bu yüzden bias
gerilimi yardımıyla değişken akım sinyalinin pozitif ve negatif tarafları eşit olarak
kuvvetlendirilir. Bu bias gerilimini kullandığımızda değişken akım sinyalinde distorsiyon
meydana gelir. Değişken akım sinyali kuvvetlendirildiğinde, bu yöntem işlemsel
kuvvetlendirici tek besleme gerilimiyle iki besleme gerilimi için çalışırken uygulanır. [1]
3.2.2. SĠNYAL DOĞRULTMA DEVRESĠ
Bu kısım yükselteç çıkışında alınana sinyali doğrultmak için kullanılmıştır. Burada
kullanılan diyotlar yüksek frekans karakteristikleri iyi olan shottky diyotlarıdır(şekil 3.3).
Bu devredeki kapasite üzerindeki gerilim çok iyi ayarlanmalıdır. Seçilecek kapasite değeri
bu konuda çok önemli bir rol oynamaktadır. Bu doğrultma işleminde kapasite değeri 10nF
olarak seçilmiştir. Devremizin bu çıkışı ultrasonik algılama yokken 5V,algılama varken 7V
civarındadır.
7
ġekil 3.3 Sinyal doğrultma devresi
3.2.3.KARġILAġTIRICI DEVRE
Doğrultucu çıkısından alınan sinyal şekil 3.4 deki devrenin A ucuna gelir ve burada
belirlenen bir Vrf referans gerilimi ile karşılaştırılır. Algılayıcı devremiz bir cisimle
karşılaşmadığı zaman doğrultucu çıkışında 4.8V bir engelle karşılaştığında ise 7.8V DC bir
işaret üretmektedir.Bu alınan sinyal karşılaştırıcı devresinde Vrf gerilimi ile
karşılaştırılarak B ucundan çıkış alınır.Vrf gerilimi ise Ra direnci ve Rb direnci yardımıyla
ayarlanır.İşlemsel yükseltecin negatif girişine gelir.
ġekil 3.4 KarĢılaĢtırıcı devre ve dalga Ģekilleri
Bu işlem yapılırken negatif besleme gerilimi 0V olarak ayarlanmıştır. Genel olarak
opampların kazanç faktörü 10.000 katı olur. Böylece pozitif girişler negatif girişlerden
birazcık fazla olduğunda fark çok artar ve çıkış gerilimi neredeyse +Vcc(+9V) besleme
gerilimi olur.Tersine pozitif giriş negatif girişten biraz daha az olduğunda fark çok
genişler ve çıkış gerilimi –Vcc(0V) olur.Burada Vrf değeri 0.4V olarak ayarlanmıştır.
8
3.1.4. SĠNYAL TUTMA DEVRESĠ
Karşılaştırıcıdan sonra lojik seviyeye indirilmiş sinyal tutma devresine uygulanır.Bu
devre basit olarak aşağıdaki şekilde gösterilmiştir.
ġekil 3.5 Sinyal tutma devresi [2]
Şekil 3.5de görülen A ve C pinleri D çıkışını kontrol etmek içindir.C pinin den lojik 1
geldiğinde A girişinden gelen sinyal çıkış pinine gönderilir.Bu işlem ultrasonik vericiden
sinyal gönderildiğinde ultrasonik alıcıdan gelen sinyalin hemen alıcı devresine ulaşmasını
engellemek için kullanılır.
3.2. VERĠCĠ DEVRESĠ
ġekil 3.6 Verici Devresi
Burada PIC ten gelen sinyal NAND kapısı ile terslenmekte NAND kapısı çıkışındaki
transistör2 ile not kapılarını sürmekte ve kapasite elemanı üzerinden ultrasonik elemanın +
pinine uygulanmaktadır. Elemanın – pinine ise PIC ten gelen sinyal transistör1 üzerinden
alttaki not kapılarını sürülmektedir.Sürüş tekniğinin daha ayrıntılı acıklamasıda tablo 3.1
de görülmektedir.
9
Tablo 3.1:Sürme gerilimleri
PIC çıkışı NAND
çıkışı
Q1.C Q2.C NoT1 NOT2 Verici +
ucu
Verici -
ucu
+5V 0V 0V +9V 0V +9V 0V +9V
0V +5V +9V 0V +9V 0V +9V 0V
C-MOS çeviricileri kullanıldığı için karşılaştırmalı olarak yüksek hızda açıp kapamak
mümkündür.
3.3.DĠSPLAY
3 tane 7 segmentli led 3 haneli dijital display için kullanılır.Bu ledlerin sırayla yanması
için PIC kullanılır. PIC terminali L seviyesinde olduğu zaman yaktık.Ortak anotlu led
kullanılır,ortak anotlu ledde anotlarlar içerden birbirine bağlıdır. Katodu toprakladığımızda
led yanar. Displayın devre diyagramı şekli 3.7 de gösterilmiştir. [2]
ġekil 3.7 Display devresi [2]
10
3.4 MĠKRO DENETLEYĠCĠ
PIC16F873
Elektronik kartın en önemli elemanı, mikrodenetleyici olan PIC16F873 entegresidir.
Kontrol ve kumandalar için gerekli PIC yazlımı yüklenerek algılayıcı ve kumandaların
yönetimini gerçekleştirir. PIC16F873 entegresinin bacak bağlantıları (Şekil 3.8), teknik
özellikleri (Çizelge 3.1) de gösterilmiştir. [3]
ġekil 3.8. PIC16F873 bacak bağlantıları
Tablo 3.1. PIC16F873 teknik özellikleri
Teknik özelliler PIC16F873 için
değeri
Çalışma Frekansı DC - 20 MHz
RESET POR, BOR (PWRT,
OST)
FLASH Hafıza Kapasitesi (14-bit) 4K
RAM Hafıza Kapasitesi (byte) 192
EEPROM Hafıza Kapasitesi (byte) 128
Kesme adedi 14
I/O Portları Ports A,B,C
Timer 3
Darbe Genişliği Modülasyonu
(PWM)
2
Seri İletişim MSSP, USART
10-bit Analog-Digital Dönüştürücü 5 giriş kanalı
Analog Karşılaştırıcı 2
Komut Seti 35 komut
28-pin PDIP
Paket tipi 28-pin SOIC
28-pin SSOP
28-pin QFN
11
4.YAZILIM AÇIKLAMASI
Mesafe ölçerin yazılım ile ilgili şekli, şekil 4.1‟de gösterilmiştir. Gerekli acçıklamalar
ve anlarımlar bu şekil üzerinde açıklanmıştır
ġekil 4.1.Yazılım Ģekli
4.1 ASSEMBLY PROGRAMI
PIC Assembly dili adı verilen ve toplam 35 komuttan oluşan programlama dilinin
tamamı burada verilmiştir. Bu komutları basit bir editörde yazabiliyoruz. Ancak,
İngilizce‟deki bazı kelimelerin kısaltmasından oluşan bu dilin komutlarını P1C‟in
anlayabileceği makine diline çeviren bir programa ihtiyacımız vardır. Bu programa
assembler adını veriyoruz. Text dosyası biçiminde kaydedilmiş olan assembly dili
komutlarını makine diline çeviren MPASM 'nin hem DOS altında hem de WINDOWS
altında çalışan versiyonu bulunmaktadır. Bu program Microchip firmasının internetteki
www.microchip.com adlı sitesinden parasız olarak yüklenilebiliyor. MPASM 'nin
kullanımı hakkında detaylı bilgiyi 2. bölümde bulacaksınız.
12
Microchip bir de içerisinde hem metin editörü hem MPASM assembler programını
bulunduran MPLAB programını PIC programlayıcılarının kullanımına sunmaktadır.
MPLAB ‟ın kurulumu ve kullanılmasıyla ilgili gerekli detay bilgiyi 2. bölümünde
bulacaksınız. [4]
Şekil 4.2 de MPASM nin WINDOWS sürümünün görünüşü verilmektedir.
ġekil.4.2. MPASM programının görünüşü.
4.2.KURULUM AġAMASI
Kurulumın yapıldığı aşamadır.
4.2.1. PORT KURULUMU
RAO/ANO portları A/D çeviricilerinin girişi için kullanıldığından giriş modunda
kurulur. Diğer A portları ise çıkış modunda kurulur. Tüm B portları çıkış modunda kurulur
çünkü LEDlerin kontrolleri için kullanılır. RC2/CCP1‟i giriş modunda kurulur çünkü
kavrama girişi için kullanılır.
4.2.2.ULTRASONĠK AKTARIM PERĠYODU (TMRO)
Ultrasoniğin aktarım periyodu zamanlayıcı 0 kullanılarak kontrol edilir. Çünkü
zamanlayıcı0 demek sayma değerinin 256 olduğu „bit‟ zamanlayıcısı demektir. Ama
ölçüyü 256 ya ayarlayarak 65535 sayısı elde edilir. (256*256:65535) bu defa osilatör için
13
4MHz kullanıldığından 1 sayı 1 mikrosaniyedir. . (1/(4 x 106))x4=10
-6 saniyedir.Yani
zamanlayıcı0 ın kesme zamanı 65ms dir.
4.2.3. YAKALAMA MODU KURULUMU
Zamanlayıcı 1 kavrama için kullanılır. Zamanlayıcı 1 kurulur. Kurulum sırasında yanlış
kontrolü önlemek için CCP1 kapalı konumdadır.
4.2.4.ÇEVĠRĠCĠ KURULUMU
Kanal 0 çevirici girişi olarak kullanılır. Çünkü bu zamanlayıcıda kullanılmak için olan
saat sinyali 4 MHz dir, fosc/8 ise A/D çevirici saat olarak ayarlanmıştır. Çünkü A/D nin
çevrilmiş sonuçlarının yüksek dizi tarafı kullanıldığından depolama sonuçları doğru
yargılama yapmak için kullanılır. (ADFM:0). Çünkü A portları LED in basamak
değerlerinin çıkışı için kullanıldığından RAO/ANO hariç portlar dijital özelliklerle yapılır.
4.2.5. LED (TMR2) ZAMANLAYICI PERĠYODU
7 parçalı LED in sunulan data çalışma alanı için hazırlandı. Sunumun başlangıcı „hata
kodu ‟ dur. Zamanlayıcı 2 „nin zamanı yaklaşık 10 ms dir.
4.2.6.KESME BAġLANGICI
Zamanlayıcı 0 kesmesi çevresel aygıt kesmesi, global kesmeleri mümkün yapar.
Kavrama kesmesi zamanlayıcı 2 nin çevresel aygıt kesmesi olmadığında ortaya çıkmaz.
Bu aşamayla kesme başlar. Kurulum aşaması bitince kesme için beklenir. Aynı şey
defalarca yapılır.
4.3.KESME AġAMASI
Kavrama kesmesi zamanlayıcı 2 ve zamanlayıcı 0 tarafından kontrol edilir. Her kesme
bayrağı tarafından kesme çeşitleri yargılanır. Bundan sonra uygun olan kesme aşamasına
geçilir. Kesme olduğunda aşama durdurulur. Döngüyle uygun olmayan kesmeyi
engellemek için döngü simülatörüne ihtiyaç vardır. Düzeltmenin yolu vardır ama
yükseltilemez çünkü tekrar düzeltilse bile aynısı olmaz. Global kesmenin sağladığı „bit‟
kesme olduğunda otomatik olarak açığa çıkar. Böylece kesme aşaması devam ederken
kesme meydana gelmez.
14
4.4.KESME SONA ERDĠRME AġAMASI
Donanım için tüm aşamalar kurulum aşaması hariç kesmeler tarafından yapılır. Ortak
kayıtlar kesme aşamalarında kullanılır (ana aşama). Böylece korumaya ve tekrar korumaya
gerek kalmamıştır. Kesmenin sona erme aşamasında kesmeyi sağlamak için RETFIE
bildirimiyle „GIE bit‟ kurulur.
4.5.ULTRASONĠK DALGA GÖSTERĠM AġAMASI
4.5.1.AÇIK KESME GÖSTERĠMĠ
TMRO nun kesme bayrağı açıktır. Bu bayrak net olmadığı zaman düzenli bir bitişi
beklemeden kesme aşaması sona erdirildiğinde kesme ortaya çıkar. Net bir operasyonla
zamanlayıcı 0‟n sayım alanı netleştirilmiştir.
4.5.2.ALGILAMA HATALARINI KONTROL ETME
Yansıtılmış dalgaların algılanması dalga gönderiminden bu zamana kadar
yapılmadığında ölçüm yapmak mümkün değildir. Bu aşamada yapılmadığında ve ölçümde
hatalar meydana geldiğinde önceki bilgiler yardımıyla ölçüm yapmak mümkün değildir.
4.5.3.YANSIYAN DALGA ALICISINI DURDURMA
Aniden verilen aktarma dalgasından dolayı alıcı devresinde bir etki meydana gelir buda
yanlış ölçüm yapılmasına neden olabilir. Bunu önlemek için yansıtılmış dalga arayıcı
durdurulur. Bu işlem için RA4 portu açık hale gelir bunun için dış dirence ihtiyaç vardır.
Bu yüzden RAS ‟ı kullandık.
4.5.4.YAKALAMAYI BAġLATMA
Zamanlayıcı 1‟in sayım alanı ve kavrama registörlerinin içeriği nettir. Yükselen şiddetle
algılama modu ve kavrama kesmesini sağlayan „bit‟ kurulur. Net bir operasyonla kesme
bayrağı netleştirilir.
4.5.5.40KHZ DALGA GÖNDERME
40kHz dalgası, bir döngüde kapalı zamanda 12.5 µ-saniye ve açık zamanda 12.5 µ-
saniye olan bir dalgadır. Bu döngüde 4MHz lik saat sinyali kullanıldığı için giriş yapma
zamanı 1 mikrosaniyedir. Bu yüzden gerçekte 40kHz gönderilemez.Kapalı konumda 12 µ -
15
saniye yerine 41.7kHz dir,açık konumda ise 13 µ -saniye yerine 38.5 kHz kullanılır. Darbe
gönderme aşamasında adım sayısının değişimiyle zaman ayarı yapılır. 20 darbe
gönderildiğinde 0.5 milisaniyedir. (20pulses
x 0.025milliseconds/pulse
)
4.5.6.YENĠLENMĠġ BĠLGĠ EKRANININ ALIMI
A/D çeviricisini yönetmek için ADCONO kaydının „GO‟ biti kurulur. A/D çeviricisinin
kanal girişi çevrildikten sonra yaklaşık 20 mikro saniye beklenmelidir. Giriş kanalı 0‟da
olduğu için bekleme zamanına gerek yoktur. A/D dönüşümünün tamamlanması „GO biti‟
ile kontrol edilir. „GO Bit‟i netleştiği zaman dönüşüm tamamlanır. Üst 3 bit toplanır ve
değişim değeri olarak eklenir.
4.5.7. HATA BULMA
Dalga gönderildikten sonra etki alıcıda sona erene kadar arayıcı durdurulur. Bu defa 1
mikro saniyeye ayarladık. Az etki oluştuğu zaman kısa dahi olsa iyi sonuç verir. Fazla etki
ortaya çıktığında süreyi daha uzun tutmak gereklidir.
4.5.8.YANSITILMIġ DALGA ÖLÇÜMÜNÜN BAġLANGICI
Hatalı ölçümün engellenme zamanı geçtikten sonra yansıtılmış dalga keşfinde yeterli
koşullar sağlanır.
4.6. YAKALAMA KESME AġAMALARI
Bu aşamalar aşağıdaki gibidir.
4.6.1.KESME EKRANINI TEMĠZLEME
Kavrama kesme bayrağı netleştirilmiştir.
4.6.2.MESAFE ÇEVRĠM AġAMASI
Kavrama operasyonu tarafından durdurulan zamanlayıcı 0‟ın sayı değeri ses dalgasının
çoğalmasıyla orantılıdır. Görünümü (ekranı) olduğu gibi kullanmak imkansızdır. Aşama
zamanında bazı değerler bölünmeyi gerçekleştirir ve uzaklık sayı değerlerine çevrilir.
16
Örneğin, 1 m uzaklıktan yansıtılmayı açıklayacağız. Ses dalgalarının gittiği ve 1 m‟den
geri döndüğü süre 20c „de 2m
/343m/san
=5831 mikro saniyedir. Yani zamanlayıcı0‟ın değeri
1msan/count olduğunda kavrama gerçekleştirildiğin de zamanlayıcı0‟ın değeri 5831‟dir.
Eğer ayrıştırıcı 100 değeri sergilemek için alınırsa o zaman doğru olur.(1 m‟yi sergiler).
A/D çeviricisinin aldığı değer ayrıştırıcılar için kullanılır. Yani sıcaklık değeri farklı
olduğunda eğer giriş voltajı A/D çevirisine dönüştürülürse sergileme revize edilebilir. Ama
dijitalde değiştirildiği için iyi bir uyarlama yapmak mümkün değildir.
4.6.3.EKRAN (GÖRÜNÜM) AġAMASI
Değiştirilen uzaklık değer çeşidi ikilik sayı tabanında olduğu için olduğu gibi LED‟de
sergilenemez. İki tabanındaki sayılar ondalık sayılara çevrilir ve displayde gösterilir.
17
5.PROJENĠN GELĠġĠMĠ
5.1.SĠNYAL ÜRETĠMĠ
İlk önce 555‟i kullanarak sinyal üretmeyi düşündük. 555‟le yankılanan frekansı ihtiyaç
duyulan frekansa ayarlamak kolaydır. Ama 555‟le yapılan bazı denemelerden sonra bunun
yeterli olmadığını gördük. 555‟le yapılan sinyal göndermeyi başardık ama yeterli değildi.
Transfer edilmiş sinyal enerjisini yükseltmek gerektiğini öğrendikten sonra sinyalleri PIC
mikro kontrolünden üretmek gerektiğini öğrendik. Yazılım ile 40kHz üretmek için testten
sonra bir test daha yapmamız gerekti.
5.2 ALICI DEVRESĠNĠN BESLEME GERĠLĠMĠ
Projede alıcı devresini ilk planladığımızda besleme gerilimi olarak 5V kullanmayı
düşündük. Fakat denemelerimizde gelen sinyali doğru bir şekilde alamadığımızı fark ettik.
Bunun yerine besleme gerilimini 9V‟a çıkardığımızda daha iyi sonuç aldık.
Besleme gerilimi olarak 9V kullandığımızda ise, sinyal tutucu devre ve PIC 5V ile
çalıştığı için dirençlerle sinyali %V a düşürdük.
İlk olarak demodülasyon devresini kullanmayacaktık. Yükseltici devreden çıkan
sinyalin karşılaştırıcı devreyi satüre ettireceğini ve bunun yeterli olduğunu düşündük.
Fakat beklediğimiz sonucu alamadık. Tavsiye üzerine demodülasyon devresini kullandım
ve sorun çözüldü.
5.3 ĠLETĠM DALGASININ UZUNLUĞU
Uzaklık ölçer projesinde gönderilecek sinyalin uzunluğun 5ms olarak ayarladık. Sinyal
ne kadar uzun olursa enerjisi o kadar çok olur gelen sinyali yakalamakta o kadar kolay
olur. Daha uzak mesafeleri ölçmekte mümkün olabilir. Fakat aynı zamanda sinyal
uzunluğunu arttırdığımızda gelen giden sinyallerin karışması da o kadar artar. Alıcı
devresini bir süre bekleterek sinyallerin karışmamasını sağladık. Bu süreyi 1.5ms olarak
belirledik. Bu mesafe ölçücünün 29cm den daha yakını ölçememesine neden oldu. Sinyal
süresi arttırıldığında bekleme süresi de arttırılmalıdır. Bu da ölçülebilen en kısa mesafeyi
azaltır.
18
6.TESTLER VE SONUÇLAR
6.1.ÖLÇÜM UZAKLIĞI
Bu uzaklık öçler ile çok fazla uzaklık ölçülemez .Çünkü gönderilen sinyalin uzunluğu
0.5ms dir.
Minimum uzaklık:29cm
Gelen ve giden sinyallerin karışmasını önlemek için devreye bekleme süresi
konulmuştur.Bu yüzden de 29cm den daha kısa ölçüm yapılamaz.
Maksimum uzaklık:2m
Daha uzak mesafeleri ölçebilmek için sinyal uzunluğu artırılmalıdır.Fakat buda
bekleme süresinin artırılmasını gerektirir.Buda minimum ölçülebilecek uzaklığın artmasına
neden olur.
6.2.MESAFE ÖLÇERĠN PERFORMANSI
Bazı etkenler mesafe ölçümlerini etkiler.Bunların başında sıcaklık gelir.Sıcaklık sesin
hızını değiştirmektedir.Bu hatayı önlemek için devreye kalibrasyon ayarı eklenmiştir. Bu
kalibrasyon ayarını bir pot yardımıyla gerçekleştirdik.
19
7.SONUÇ
Nasıl çalıştığını özetleyecek olursak taşınabilir mesafe ölçer sinyal gönderir ve sinyalin
gidiş dönüş süresini kaydeder. Raporda açıkladığımız gibi sinyal göndermek için bazı
genişletilmiş teknikler kullanılır. Uzun mesafedeki ölçümlerde bu genişletmeye ihtiyaç
vardır. Alıcıda bazı genişleticiler ve doğrultma devreleri kullanılır. Ultrasonik ileticinin
alıcı üzerindeki etkileri hakkında bir sorun vardı ve uzun zamanda mesafeyi 0 olarak
ölçtük. Bu problemi sinyal alıcılarını kısa zamana çevirerek kapatmayla çözdük. Buda
mesafe ölçerin ölçebileceği minimum mesafe ortaya çıkardı.
Bu projede projenin amaçlarını gerçekleştirdiğimizi düşünüyoruz. Portatif mesafe
ölçümünü başardık. Mesafe ölçerin bir kalibrasyonu olmasına rağmen ölçüm mesafesinde
her zaman hatalar olmuştur.Ve işte bu projemiz şekil 7.1de gerçek haliyle gösteriliyor.
Şekil 7.1 : Taşınabilir ultasonik mesafe ölçer
20
KAYNAKLAR
[1] USLU, R.(2005),” Mikrodenetleyicili Mesafe Ölçer”,Bitirme Tezi,YTÜ Elektronik ve
Haberleşme Mühendisliği Bölümü,İstanbul
[2] Japan, “ The Hobby Electronics From Japan [Online], http://www.hobby-
elec.org/e_pic6_6.htm
[3]MİCROCHIP,2001, PIC17F87X Data Sheet 28/40-Pin 8-Bit CMOS FLASH
Microcontrolers
[4] “MicroChip Technology Inc. is a Leading Provider of Microcontroller and
AnalogSemiconductors”,
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=64,
21
EK-A ULTRASONĠK MESAFE ÖLÇERĠ ĠÇĠN KAYNAK KODLARI
;********************************************************
list p=pic16f873
include p16f873.inc
__config _hs_osc & _wdt_off & _pwrte_on & _lvp_off
errorlevel -302 ;Bank uyarsını bastır
;**************** Etiket Tanımlama ********************
cblock h'20'
s_count ;Sinyal gönderim sayma adresi
s_adj ;Veri ayarlama adresi
s_adj_count ;Değer dönüşümü saklama adresi
s_digit ;Basamak sayma adresi
g_time1 ;Koruyucu zamanlayıcı adresi1
g_time2 ;Koruyucu zamanlayıcı adresi2
p_countl ;Propagasyon L sayıcı adresi
p_counth ;Propagasyon H sayıcı adresi
digit_cnt ;Basamak sayıcı ön adresi
disp_ha ;basamak ön adresi
disp_u ;1‟ler basamağı adresi
disp_t ;10‟lar basamağı adresi
disp_h ;100‟ler basamağı adresi
seg7_ha ;7 segLED adresi
seg70 ;Pattern 0 kurma adresi
seg71 ;Pattern 1 kurma adresi
seg72 ;Pattern 2 kurma adresi
seg73 ;Pattern 3 kurma adresi
seg74 ;Pattern 4 kurma adresi
seg75 ;Pattern 5 kurma adresi
seg76 ;Pattern 6 kurma adresi
seg77 ;Pattern 7 kurma adresi
seg78 ;Pattern 8 kurma adresi
seg79 ;Pattern 9 kurma adresi
seg7a ;Pattern A kurma adresi
seg7b ;Pattern B kurma adresi
endc
ra1 equ h'01' ;RA1 port belirtme
ra2 equ h'02' ;RA2 port belirtme
ra3 equ h'03' ;RA3 port belirtme
ra5 equ h'05' ;RA5 port belirtme
ccp1 equ h'02' ;CCP1(RC2) belirtme
seg7_0 equ b'01000000' ;-gfedcba Pattern 0
seg7_1 equ b'01111001' ; Pattern 1
seg7_2 equ b'00100100' ; Pattern 2
seg7_3 equ b'00110000' ; Pattern 3
seg7_4 equ b'00011001' ; Pattern 4
seg7_5 equ b'00010010' ; Pattern 5
seg7_6 equ b'00000010' ; Pattern 6
seg7_7 equ b'01111000' ; Pattern 7
22
seg7_8 equ b'00000000' ; Pattern 8
seg7_9 equ b'00010000' ; Pattern 9
seg7_a equ b'01111111' ; Bulma Hatası
seg7_b equ b'00100011' ; İllegal tamsayı
;**************** Program Start ***********************
org 0 ;Reset Vektörü
goto init
org 4 ;Kesme Vektörü
goto int
;**************** tekrarlama işlemi *********************
init
;*** Port initialization
bsf status,rp0 ;Bank1‟e değiştir
movlw b'00000001' ;AN0 giriş modu
movwf trisa ; TRISA‟yı hafızaya kur
clrf trisb ;RB portu çıkış modunda
movlw b'00000100' ;RC2/CCP1 giriş moduna
movwf trisc ;TRISC^yi ayarla
;*** Ultrasonik gönderme Süresini Başlangıç Durumuna getirme (Timer0)
movlw b'11010111' ;T0CS=0,PSA=0,PS=1:256
movwf option_reg ;OPTION_REG „yi hafızaya al
bcf status,rp0 ;Bank0‟a değiştir
clrf tmr0 ;TMR0 hafızasını temizle
;*** Yakalama Modunu Ayarlama (Timer1)
movlw b'00000001' ;Pre=1:1 TMR1=Int TMR1=ON
movwf t1con ;Set T1CON register
clrf ccp1con ;CCP1 off
;*** A/D dönüşümünü ayarlama
movlw b'01000001' ;ADCS=01 CHS=AN0 ADON=ON
movwf adcon0 ;ADCON0‟yı hazfızaya al
bsf status,rp0 ;Bank1‟e değiştir
movlw b'00001110' ;ADFM=0 PCFG=1110
movwf adcon1 ;ADCON1‟i hafızaya al
bcf status,rp0 ;Bank0‟a değiştir
;*** Leglerdeki görüntüyü ayarlama (Timer2)
movlw disp_u ;Basamağı ön adrese yükle
movwf disp_ha ;Ön adresteki basamağpı sakla
movlw h'0a' ; Hata Bilgisi
movwf disp_u ;1‟ler basamağını kur
movwf disp_t ;10‟lar basamağını kur
movwf disp_h ;100‟ler basamağını kur
movlw d'3' ;Basamak Sayıcı
movwf digit_cnt ;Basamak sayıcıyı kur
movlw seg70 ;7 segmentliyi ön adrese al
movwf seg7_ha ;7 segmentliyi ön adreste sakla
movlw seg7_0 ;7segment pattern 0‟a kur
movwf seg70 ;pattern 0 sakla
movlw seg7_1 ;7segment pattern 1‟e kur
23
movwf seg71 ; pattern 1 sakla
movlw seg7_2 ;7segment pattern 2‟ye kur
movwf seg72 ;pattern 2 sakla
movlw seg7_3 ;7segment pattern 3‟e kur
movwf seg73 ;pattern 3‟ü sakla
movlw seg7_4 ;7segment pattern 4‟ü kur
movwf seg74 ;pattern 4‟ü sakla
movlw seg7_5 ;7segment pattern 5‟ i kur
movwf seg75 ;pattern 5‟i sakla
movlw seg7_6 ;7segment pattern 6‟yı kur
movwf seg76 ;pattern 6‟yı sakla
movlw seg7_7 ;7segment pattern 7‟yi sakla
movwf seg77 ;pattern 7‟yi sakla
movlw seg7_8 ;7segment pattern 8‟i sakla
movwf seg78 ;pattern 8‟i sakla
movlw seg7_9 ;7segment pattern 9‟u kur
movwf seg79 ;pattern 9‟u sakla
movlw seg7_a ;7segment pattern A‟yı kur
movwf seg7a ;pattern A‟yı sakla
movlw seg7_b ;7segment pattern B‟yi kur
movwf seg7b ;pattern B‟yi sakla
movlw b'00011110' ;OPS=1:4,T2=ON,EPS=1:16
movwf t2con ;T2CON‟u hafızaya al
bsf status,rp0 ;Bank1‟e gec
movlw d'157' ;157x64=10048 ms
movwf pr2 ;PR2‟yi kur
bsf pie1,tmr2ie ;TMR2IE=ON
bcf status,rp0 ; Bank0‟a değiş
;*** Kesme Kontrol
movlw b'11100000' ;GIE=ON,PEIE=ON,T0IE=ON
movwf intcon ;INTCON‟u tanımla
wait
goto $ ;Kesme Bekleme
;*************** Kesme İşlemi *****************
int
movfw pir1 ;Read PIR1 register
btfsc pir1,ccp1if ;Yakalama odlumu?
goto capture ;Evet. "Yakalandı"
btfsc pir1,tmr2if ;TMR2 çalışıyo mu ?
goto led_cont ;Ewet. "LED display"
movfw intcon ;INTCON hafızasını oku
btfsc intcon,t0if ;TMR0 çalışıyomu ?
goto send ;Evet. "Darbe gönder"
;*************** Yasal Olmayan Kesme *****************
illegal
movlw h'0b' ;Illegal disp basamağını kur
addwf seg7_ha,w ;Seg7 ön adres+basamak
movwf fsr ;FSR hafızasını kur
movfw indf ; seg7‟deki veriyi oku
24
movwf portb ; LED verisini yaz
bcf porta,ra1 ;RA1=ON
bcf porta,ra2 ;RA2=ON
bcf porta,ra3 ;RA3=ON
goto $ ;DUR
;************ Kesme İşleminin Sonu **************
int_end
retfie
;*************** Darbe Gönderme İşlemi****************
send
bcf intcon,t0if ;Clear TMR0 int flag
clrf tmr0 ;Timer0‟ı temizle
;*** Alınan sinyal Kontrolü
movfw portc ;PORTC‟yi oku
btfsc portc,ccp1 ;herhangi bir şey var mı ?
goto detect_off ;Evet. Var
movlw h'0a' ;"Hata var" verisi
movwf disp_u ;1‟ler basamağını kur
movwf disp_t ;10‟lar basamağını kur
movwf disp_h ;100‟ler basamağını kur
;*** Alıcı dedektör kapalı
detect_off
bcf porta,ra5 ;Alıcıyı KAPALI konuma getir
;*** Capture start
clrf tmr1h ;TMR1H „i temizle
clrf tmr1l ; TMR1L‟i temizle
clrf ccpr1h ; CCPR1H „yi temizle
clrf ccpr1l ; CCPR1L „yi temizle
movlw b'00000101' ;CCP1M=0101(Yakalama)
movwf ccp1con ;CCP1CON‟u kur
bsf status,rp0 ;Bank1 „e değiş
bsf pie1,ccp1ie ;CCP1 kesmesi devrede
bcf status,rp0 ;Bank0‟ a geç
bcf pir1,ccp1if ;CCP1 int flag‟ temizle
;*** 40KHz sinyal gönderimi ( 0.5 ms )
movlw d'20' ;Gönderilen sinyalden say
movwf s_count ;sayıcıyı kur
s_loop
call pulse ;Sinyali cagir ve alta yolla
decfsz s_count,f ;Bitti mi?
goto s_loop ; Hayır. Devam
;*** Ayar verisini al
bsf adcon0,go ;A/D başlat
ad_check
btfsc adcon0,go ;A/D bitti mi ?
goto ad_check ;hayır. Tekrar
movfw adresh ;ADRESH‟yi oku
movwf s_adj ;Dönüştürülmüş veriyi sakla
movlw d'5' ;Dönüşüm değerini tanımla
25
movwf s_adj_count ;Dönüşüm değerini sakla
ad_rotate
rrf s_adj,f ;Doğru dönüşüm 1 bit
decfsz s_adj_count,f ;Bitti mi ?
goto ad_rotate ;Hayır. Devam
movfw s_adj ;Dönüşüm değerini oku
andlw b'00000111' ; 3 bit al
addlw d'54' ;(0 to 7) + 54 = 54 to 61
movwf s_adj ;Ayarlama verisini sakla
;*** Yakalama koruma zamanlayıcısı ( 1 milisaniye )
movlw d'2' ;Döngü için sayıcı counter1
movwf g_time1 ;döngü için sayıcı counter1 sakla
g_loop1 movlw d'124' ;Döngü için sayıcı counter2
movwf g_time2 ;Döngü için sayıcı counter2 sakla
g_loop2 nop ;Time adjust
decfsz g_time2,f ;g_time2 - 1 = 0 ?
goto g_loop2 ;Hayır. Devam
decfsz g_time1,f ;g_time1 - 1 = 0 ?
goto g_loop1 ;Hayır. Devam
;*** Receive pulse detector on
bsf porta,ra5 ;Detektörü ON konumuna getir.
goto int_end
;*************** Sinyal gönderme İşlemi ****************
pulse
movlw b'00010000' ;RC4=ON
movwf portc ; PORTC „yi hafızaya al
call t12us ; 12 ms zamanlayıcısını çağır
clrf portc ;RC4=OFF
goto $+1
goto $+1
nop
return
;*************** 12 Mikrosaniye zamanlayıcı *****************
t12us
goto $+1
goto $+1
goto $+1
goto $+1
nop
return
;****************** Yakalama İşlemi ********************
capture
bcf pir1,ccp1if ;Clear CCP1 int flag
clrf p_countl ; L sayıcısını temizle
clrf p_counth ;H sayıcısını temizle
clrf ccp1con ;CCP1 off
division
movfw s_adj ;Ayar verisini oku
subwf ccpr1l,f ;Yakalama - ayar
26
btfsc status,z ;Sonuç = 0 ?
goto division2 ;Evet. "R = 0"
btfsc status,c ;Sonuç < 0 ?
goto division1 ;Hayır. "R > 0"
goto division3 ;Evet."R < 0"
division1 ;( R > 0 )
movlw d'1' ;Artış değerini ayarla
addwf p_countl,f ;L artış sayma
btfss status,c ;Aşma var mı?
goto division ;Hayır. Devam
incf p_counth,f ;H artış sayma
goto division ;Sonraki ne geç
division2 ;( R = 0 )
movfw ccpr1h ; CCPR1H Oku
btfss status,z ;CCPR1H = 0 ?
goto division1 ;Hayır. Sonraki
movlw d'1' ;Artış değerini ayarla
addwf p_countl,f ;L artış sayma
btfss status,c ;Taşma varmı ?
goto digit_set ; digit_set e git
incf p_counth,f ;H artış sayma
goto digit_set ; digit_set e git
division3 ;( R < 0 )
movfw ccpr1h ; CCPR1H Oku
btfss status,z ;CCPR1H = 0 ?
goto division4 ;Hayır. Ödünç işlem al
goto digit_set ; digit_set e git
division4
decf ccpr1h,f ;CCPR1H - 1
movlw d'255' ;Değer al
addwf ccpr1l,f ;CCPR1L + 255
incf ccpr1l,f ;CCPR1L + 1
goto division1 ;sonraki
;**************** Basamak Bulma İşlemi ********************
digit_set
clrf disp_u ;1‟ler basamağını sıfırla
clrf disp_t ;10‟lar basamağını sıfırla
clrf disp_h ;100‟ler basamağını sıfırla
;*** 100‟ler basamağı
digit_h
movlw d'100' ;Değeri böl
subwf p_countl,f ;Basamak - bölüm
btfsc status,z ;Sonuç = 0 ?
goto digit_h2 ;Evet. "R = 0"
btfsc status,c ; Sonuç < 0 ?
goto digit_h1 ;hayır. "R > 0"
goto digit_h3 ;Evet."R < 0"
digit_h1 ;( R > 0 )
incf disp_h,f ;100‟ler saymadaki artış
27
goto digit_h ;sonraki ne geç
digit_h2 ;( R = 0 )
movfw p_counth ; H sayıcısını oku
btfss status,z ;H counter = 0 ?
goto digit_h1 ;Hayır. Sonraki
incf disp_h,f ;100‟ler saya artış
goto digit_t ;10‟ler basamağına geç
digit_h3 ;( R < 0 )
movfw p_counth ;H sayıcıyı oku
btfss status,z ;H counter = 0 ?
goto digit_h4 ;No. İşlem yedeği al
movlw d'100' ;Değeri böl
addwf p_countl,f ;Alt değerin üzerine dön
goto digit_t ;10‟ler basamağına dön
digit_h4
decf p_counth,f ;H counter - 1
movlw d'255' ;Değer al
addwf p_countl,f ;L counter + 255
incf p_countl,f ;L counter + 1
goto digit_h1 ;Sonraki
;*** 10th digit
digit_t
;*** Range over check
movfw disp_h ;100‟ler basamağını oku
sublw d'9' ;9 - (100‟ler basamağı)
btfsc status,z ;Sonuç = 0 ?
goto digit_t0 ;Evet. "R = 0"
btfsc status,c ;Sonuç < 0 ?
goto digit_t0 ;Hayır. "R > 0"
movlw h'0a' ;"Bulma Hatası" verisi
movwf disp_u ;1‟ler basamağını bas
movwf disp_t ;10‟lar basamağını bas
movwf disp_h ;100‟ler basamağını bas
goto int_end
digit_t0
movlw d'10' ;Değeri böl
subwf p_countl,f ;Digit - divide
btfsc status,z ;Sonuç = 0 ?
goto digit_t1 ;Evet. "R = 0"
btfsc status,c ;Sonuç < 0 ?
goto digit_t1 ;Hayır. "R > 0"
goto digit_t2 ;Evet."R < 0"
digit_t1 ;( R >= 0 )
incf disp_t,f ;10‟lar basamağı sayma
goto digit_t ;Sonrakine geç
digit_t2 ;( R < 0 )
movlw d'10' ;Değeri böl
addwf p_countl,f ;Alt değere geri dön
goto digit_u ;1‟ler basamağına geç
28
;*** 1st digit
digit_u
movfw p_countl ;Propagasyon sayıcıyı oku
movwf disp_u ;1. Saymayı sakla
goto int_end
;**************** LED display Kontrolü *****************
led_cont
bcf pir1,tmr2if ;TMR2 int flag „ı temizle
movfw digit_cnt ;Basamak sayıcıyı oku
movwf s_digit ;Basamak sayıcıdaki değeri sakla
decfsz s_digit,f ;1ler basamağı?
goto d_check1 ;Hayır. Devam
bsf porta,ra1 ;RA1=OFF
bsf porta,ra2 ;RA2=OFF
bcf porta,ra3 ;RA3=ON
goto c_digit ;Basamak sayıcıya zıpla
d_check1
decfsz s_digit,f ;10‟lar basamağı?
goto d_check2 ;hayır.100‟ler basamağı
bsf porta,ra1 ;RA1=OFF
bcf porta,ra2 ;RA2=ON
bsf porta,ra3 ;RA3=OFF
goto c_digit ;Basamak sayıcıya git
d_check2
bcf porta,ra1 ;RA1=ON
bsf porta,ra2 ;RA2=OFF
bsf porta,ra3 ;RA3=OFF
c_digit
decf digit_cnt,w ;Digit count - 1
addwf disp_ha,w ;Digit H.Adr + count
movwf fsr ;FSR‟yi kur
movfw indf ;Basamağı oku
addwf seg7_ha,w ;Seg7 H.Adr + digit
movwf fsr ; FSR „yi kur
movfw indf ; seg7 verisini oku
movwf portb ;LED verisini yaz
decfsz digit_cnt,f ;Digit count - 1
goto int_end ;Kesmenin sonuna zıpla
movlw d'3' ;Başlangıç değeri
movwf digit_cnt ;Başlangıç değerini tanımla
goto int_end ;kesmenin sonuna git
;********************************************************
; Ultrasonik Mesafe Ölçümünün Sonu
;********************************************************
End
29
EK-B ŞEKİL B.1 DEVREÇİZİMİ
30
EK-C
TABLO C.1 PROJE‟ NİN MALİYETİ
ELEMANLAR ADET ELEMANLARIN
ADET FĠYATI
PIC16F873 1 10.00TL
LM833N 1 2.50TL
4011 1 0.35TL
4049 1 0.50TL
7805 1 0.35TL
7809 1 0.25TL
1SS106 2 0.25TL
7SEGMENT 3 0.75TL
ULTRASONIC
VERİCİ
1 10.00TL
ULTRASONİK ALICI 1 10.00TL
4MHz RESONATOR 1 0.25TL
2SA1015 3 0.10TL
2SC1815 2 0.10TL
DİRENÇ 25 0.005TL
KAPASİTE 12 0.25TL
1K-POT 1 0.50
TOPLAM 40.85TL
Recommended