İÇİNDEKİLER Lisans Bitirme Projesi Onay Formu Önsöz İçindekiler Özet Şekiller Dizini V VII IX XI XIV 1. GİRİŞ ................................................................................................................................. 1 2.ANALOG DİJİTAL ÇEVİRİCİLER ................................................................................. 2 2.1. ADC Çalışma Prensibi ............................................................................................... 2 2.2.Paralel Tip ADC .......................................................................................................... 3 2.3.Sayma Yöntemiyle Analog-Dijital Çevirici ................................................................ 4 2.4.Analog-Dijital Çevirici Entegreleri ............................................................................. 5 3.İŞLEMSEL YÜKSELTEÇLER ......................................................................................... 7 3.1.İşlemsel Yükselteçlerin Genel Özellikleri ................................................................... 7 3.2. İşlemsel Yükselteçlerin Kullanım Alanları ................................................................ 9 4.DENEY DÜZENEĞİNDE KULLANILAN DİĞER ELEMANLAR ............................. 10 4.1.Diyotlar ...................................................................................................................... 10 4.2.555 Entegre Elemanı ................................................................................................. 11 4.3.PIC Hakkında ............................................................................................................ 12 5.SİSTEM TASARIM AŞAMALARI ................................................................................ 14 SONUÇ............................................................................................................................... 20 KAYNAKLAR EK-1 ÖZGEÇMİŞ IX ÖZET 20.yüzyılın son çeyreğinden itibaren sayısal ölçme tekniği sanayide sıklıkla kullanılmış. Ana sebeplerden biride seri üretimde otomasyonun önemli bir yer tutmasıdır. Son zamanlarda üretim, sanayi kuruluşlarında bilgisayarlı otomasyonla kontrol edilmektedir. Otomasyonun en önemli parametrelerinden biriside Analog-Dijital çeviricilerdir.Bu tez çalışmasında ise Analog-Dijital çevirici deney düzeneği elemanlarının kısa bir incelemesi yapılmış olup, Analog-Dijital çevirici deney düzeneğinin ara elemanlarından darbe sayıcı sistemin PIC16F84 işlemcisi kullanılarak tasarımı gerçeklenmiştir. Anahtar kelimeler: Analog-Dijital çevirici, PIC XI Şekiller Dizini Şekil 2.1. Analog-Dijital Dönüşüm Aşaması 2 Şekil 2.2. Analog-Dijital dönüşüm aşaması grafikleri 3 Şekil 2.3. Paralel Analog-Dijital çevirici 4 Şekil 2.4. Sayma Yöntemiyle Analog-Dijital Çevirici 5 Şekil 2.5. ADC0800 çevirici entegre devresi 6 Şekil 2.6. ADC0804 entegre devresi 6 Şekil 3.1. Temel İşlemsel Yükselteç Sembolü 7 Şekil 3.2. Offset gerilimi sıfırlama 8 Şekil 3.3. İşlemsel yükselteç ile gerçekleştirilen türev ve integral alıcı devre grafikleri 9 Şekil 4.1. Çeşitli diyot türleri 10 Şekil 4.2. 555 Zamanlayıcı entegresinin bacak bağlantısı 12 Şekil 4.3. PIC16F84 pin diyagramı 13 Şekil 5.1. DC gerilim ile testeredişi 14 Şekil 5.2. Zaman üzerinden dönüşüm devresi 15 Şekil 5.3. Tasarımı yapılan devre konumu 16 Şekil 5.4. Sayıcı devrenin şematiği 17 Şekil 5.5 Devrenin PCB çıktısı 18 Şekil 5.6. Sayıcı devre test aşaması 19 XIV 1. GİRİŞ 20.yüzyılın son çeyreğinden itibaren sayısal ölçme tekniği sanayide sıklıkla kullanılmış ve sürekli teşvik edilir bir hale gelmiştir. Ana sebeplerden biride seri üretimde otomasyonun önemli bir yer tutmasıdır. Son zamanlarda üretim, sanayi kuruluşlarında bilgisayarlı otomasyonla kontrol edilmektedir. Şayet birkaç örnek verecek olursak eğer, boya fabrikasında ısıtma kazanının sıcaklık ayarı otomatik bir şekilde yapılmaktadır. Bilgisayar derece ayarını yapabilmesi için kazanın ısısını sensörler vasıtasıyla ölçmesi gerekir. Sıcaklık ölçümü teknik olarak iki farklı yöntemle yapılır. a-Bir termistörün sıcaklıkla direncinin değişmesinden yararlanarak, b-Termokupler gibi elemanlar vasıtasıyla Termo elemanların vermiş olduğu gerilim veya termistörün direncindeki değişim değerleri birer analog büyüklüklerdir. Bu analog verilerin bilgisayara analog olarak gönderilmeleri hat boyunca meydana gelecek gerilim düşümleri ve dış etkenler sebebiyle sakıncalıdır. Değerler değişmiş olarak ana sisteme ulaşacaklarından sağlıklı sonuçlar elde edilemez ve bir takım aksaklıklar meydana gelebilir. Ayrıca sisteme gelen büyüklüklerin bilgisayar tarafından anlam ifade edebilmesi için analog büyüklüğün sayısal duruma dönüştürülmesi gereklidir. Dijital veriler gürültüden daha az etkilendiklerinden dolayı, analog verilere göre daha az hata oranı ile iletilirler. Bu sebepten dolayı ölçülen büyüklüklerin ilk ölçüldüğü yerden dijitale çevrilerek iletilmesi daha iyidir. Ölçülen büyüklüklerin bazıları direkt olarak dijital olarak ölçülmektedir.(Açı, uzunluk). Diğerleri ise dönüştürücüler yardımıyla ilk olarak akım veya gerilime dönüştürülürler(Sıcaklık, kuvvet). Elde edilen akım veya gerilimler Analog-Dijital çeviriciler aracılığıyla dijital forma getirilirler. Bu akım veya gerilim büyüklüklerinin analog formdan dijital forma çevrilmesi üç büyüklük üzerinden yapılmaktadır. (Genlik, Frekans, Zaman) 1 2.ANALOG DİGİTAL ÇEVİRİCİLER Bilgisayar ve dijital olarak çalışan sitemler lojik mantıkla(1 ve 0) çalışmaktadırlar. Binary sistemlerde 1’ler ve 0’lar analog sistemlerde herhangi bir anlam ifade etmezler. Analog sistemler geniş bir yelpaze sahiptirler, daha doğrusu gerilim çalışma aralıkları oldukça geniştir. Şayet örnek verecek olursak strain gauge kullanarak yapmış olduğumuz ölçümlerde veya sensör kullanarak yaptığımız ısı, ışık, sıcaklık ölçümlerinde, sensörler meydana gelen fiziksel değişiklikleri algılar ve bunları gerilim ve akım değerlerine dönüştürürler. Fakat bu değerlerin bizim için anlamlı olabilmesi için belirli referanslarda bir ölçü aleti ile tanımlanması gerekmektedir. Ölçü aleti kullandığımız vakit meydana gelen değişimleri anlamlı bir sayılar kümesine dönüştüren Analog-Dijital çeviriciler vasıtasıyla onları ikili olarak ifade edebiliriz. Bundan sonraki aşamada gerekli kodlayıcılar kullanılarak onluk sayı (decimal) sistemine çevirebiliriz. Isı, ışık sıcaklık gibi ortamın fiziksel değişiklerini ölçen transdüser, sensörler gerilim veya akım büyüklüklerini analog çıkış olarak vermektedirler. Analog çıkışlar ise bilgisayar için herhangi bir anlam ifade etmemektedir, bundan dolayı bu analog işaretleri dijital işaretlere dönüştürme işlemini yapan entegre devrelere ADC adı verilmektedir. 2.1. ADC Çalışma Prensibi Analog sinyal dijital sinyale dönüştürürken belli zaman aralıklarında örnekleme olmalıdır, herhangi bir referans gerilimi üzerinden örneklenen işaret için bir dijital kod atanır, sonrasındaysa kuantalayıcı ve kodlayıcıda kullanılarak işlemler tamamlanmış olmaktadır. [1] Aşağıdaki Şekil 2.1. de tamamıyla sistem, ana hatlarıyla ifade edilmektedir. ANALOG-İŞARET ÖRNEKLEYİCİ KUANTALAYICI KODLAYICI Şekil 2.1. Analog-Dijital Dönüşüm Aşaması 2 DİGİTAL-İŞARET Analog sinyaller sürekli sinyallerdir, dijitale dönüşüm yapabilmek için belli zaman aralıklarında örneklenmeleri, sonrasında kuantalanarak seviyelere ayrılmaları ve son olarak da ikili kodlara atanarak işlem tamamlanmış oluyor. Örneklenen işaretlerin genlikleri herhangi bir değere karşılık gelebilir, ancak işaretin dijitale dönüştürülmesi aşamasında kullanılacak seviye sayısının belirli olması gerekmektedir, belirlenen seviye bit sayısına bağlı olarak değişmektedir. Örnek verecek olursak eğer;5 bitlik kodlama yapılacaksa 2 5=32 seviye,7 bitlik kodlama yapılacaksa 27=128 seviye kullanılmaktadır. Seviye sayısının artması analog-dijital çevirme kalitesini etkiler. Bit sayısı her ne kadar artarsa kalitede bir o kadar artmaktadır. Şekil 2.2. aşamaları özetlemektedir. Şekil 2.2. Analog-Dijital dönüşüm aşaması grafikleri 2.2.Paralel Tip ADC Analog işaretlerin dijital sinyallere dönüştürülmesi aşamasında kullanılan en pratik çevirici paralel Analog-Dijital çeviricilerdir. Paralel tipli Analog-Dijital çeviricilerde işlemsel yükselteçli karşılaştırıcı devreler kullanılmaktadır. İşlemsel yükselteçli karşılaştırıcı devrelerinde işlemsek yükselteç geri-beslemesiz olarak kullanılmaktadır. Şekil 2.3. de sistemin kısa bir özeti yer almaktadır. Ayrıca işlemsel yükseltecin girişlerinden bir tanesi referans olarak alınır. Diğer girişin referans alınandan küçük veya büyük olması durumuna göre çıkış pozitif ya da negatif olur. 3 UREF=4V + R Uin V3 3V R V2 A3 D1 2 İkilik Çıkış A2 2V R V1 Kodlayıcı 1 3 A1 D0 1V R Şekil 2.3. Paralel Analog-Dijital çevirici 2.3.Sayma Yöntemiyle Analog-Dijital Çevirici Analog-Dijital çeviricisinde kullanılan başka bir yöntem ise; karşılaştırıcı, sayıcı ve doğrusal rampa kaynağından oluşan sayma yöntemli Analog-Dijital çeviricilerdir. Şekil 2.4.’te sistemin ana bloklarıyla yer almaktadır. Doğrusal rampa kaynağı ise, sabit eğimli referans geriliminin sağlanması için kullanılır. Çeviricinin ilk aşamasında sayıcı reset ile sıfırlanır, karşılaştırıcının pozitif girişine uygulanan giriş gerilimi referans gerilimden büyük olduğunda çıkış yükselen kenara çekilecektir. Bu durumdan sonra rampa kaynağı darbe üretmeye başlayacak ve AND kapısının çıkış kısmında tetikleme sinyaliyle beraber sayma işlemi başlamış olacaktır. Sayma işlemi üretilen darbenin analog giriş geriliminden büyük olmaya devam ettiği sürece ilerleyecektir. 4 Analog Girişi Tetikleme Girişi İkili Sayıcı Rampa Kaynağı Reset Zamanlayıcı Ve Kontrol Yetkilendirme Kaymalı Kaydedici Kod Çözücü Şekil 2.4. Sayma Yöntemiyle Analog-Dijital Çevirici 2.4.Analog-Dijital Çevirici Entegreleri Normalde çevirimin yapan devreler piyasada entegreler halinde satılmaktadır. Entegre Analog-Dijital çeviricilerin birkaç tanesinden kısaca bahsedecek olursak eğer; 2.4.1.ADC0800 8 bit çıkış verebilen analog-dijital çeviricidir.+5 Volt ile -5 Volt arasında analog girişte çalışır. Çıkışları ise kilitli tampon aracılığıyla vermektedir. Giriş ile çıkış arasındaki tepki süresi yaklaşık 50µs’dir. uygulanabilmektedir. Entegrenin iç Saat girişine 100-900 kHz arasında darbe kısmını incelersek eğer; analog switchler, karşılaştırıcı, 8 bit tamponlar, paralel dirençlerdir. ADC pin diyagramı şekil 2.5.’te yer almaktadır. 5 Şekil 2.5. ADC0800 çevirici entegre devresi [5] 2.4.2.ADC0804 Analog dijital çeviriciler içerisinde en yaygın olan entegredir. Özelliklerini sıralarsak, 8 bit çözünürlük, 100 ms dönüşüm süresi, 140 ns erişim süresi, 5 Voltluk besleme gerilimi, 0-5 Volt giriş gerilimi , sıfırlama gereksinimine ihtiyaç yoktur. ADC pin diyagramı ise şekil 2.6’da gösterilmektedir. Şekil 2.6. ADC0804 entegre devresi [5] 6 3.İŞLEMSEL YÜKELTEÇLER 3.1.İşlemsel Yükselteçlerin Genel Özellikleri 1960’lı yılların sonlarına doğru piyasaya sürülmüştür.741 ve 747 şeklinde entegre olarak üretilmiştir. Entegrelere dışarıdan eklenen devre elemanları kullanılarak geri beslemeli, yani kazancı kontrol edilebilmektedir bu sayede, genellikle işlemsel yükselteçler, çok yüksek bir kazanca sahip doğru akım yükselteci olarak da bilinirler. Şekil 3.1 basit bir işlemsel yükselteç sembolü verilmektedir. İşlemsel yükselteçlerin aşağıdaki özelliklerinden dolayı kullanım alanı bir o kadar fazladır; Çok yüksek kazanca sahip olabilirler Yüksek giriş empedansına sahiptirler Çıkış empedansı idealde sıfırdır Band genişliği oldukça fazladır Eviren Giriş Çıkış Evirmeyen Giriş Şekil 3.1. Temel İşlemsel Yükselteç Sembolü İşlemsel yükselteçler açık çevrim ve kapalı çevrim olmak üzere iki kazanca sahiptirler. Kapalı çevrim kazancı harici olarak devreye eklenen geri besleme (feedback) direnci ile hesaplanır. Açık çevrim kazancı ise işlemsel yükseltecin kendi kazancıdır. İşlemsel yükseltecin kazancı uygulanan gerilime bağlı olarak değişmektedir. Yani açık çevrim kazancını belirleyen etken besleme voltajıdır. İşlemsel giriş empedansının çok büyük olmasının avantajı ise bağlandığı işaret kaynağının ve bir önceki devreyi yüklememesi, çok küçük bir akım ile kumanda edilebilmesi gibi avantajları söz 7 konusundur, çıkış empedansının çok küçük olması hatta idealde sıfır olması ise, çıkış akımını yükselterek sistemin kısa devrelerden zarar görmesini engeller, bant genişliği ise ortalama 1MHz civarındadır, İşlemsel yükseltece uygulanan işaretin frekansı arttıkça kazanç ters orantılı olarak düşer. İşlemsel yükseltecin statik çalışması durumunda, yani giriş gerilimi 0 Volt iken çıkış gerilim 0 Volt olması beklenir. Ancak pratikte girişteki uçlar arasında küçükte olsa offset gerilimi oluşur, offset gerilimi işlemsel yükseltecin kazancıyla çarpılarak çıkışa aktarılır. Bu sebepten dolayı entegrelerde ofset sıfırlama uçları mevcuttur. Şekil 3.2 de ofset uçlarını sıfırlama açıkça gösterilmektedir. Şekil 3.2. Offset gerilimi sıfırlama İşlemsel Yükselteçlerin Kullanım Alanları Faz Çeviren Faz Çevirmeyen Gerilim İzleyici İntegral Alıcı Fark Alıcı Dalga Doğrultucu Karşılaştırıcı VCO (Gerilim kontrollü osilatör) olarak kullanılan devreler Toplayıcı 8 3.2. İşlemsel Yükselteçlerin Kullanım Alanları İşlemsel yükselteçlerin kullanım alanları şöyle bir gözden geçirecek olursak; medikal elektronikten tutunda elektroniğin her alanında çeşitli türleri kullanılmaktadır. Analog bilgisayar işlemleri; matematiksel dört işlem (toplama, çıkarma…), türev alma, integral alma trigonometrik fonksiyonlardır. Şekil 3.3’te türev alma ve integral alma işlemleri sonrasında işaretlerde meydana gelen değişiklikler gösterilmektedir. Yükselteç işlemleri, dalga şekillendirici; kırpıcı, kare-üçgen dalga dönüştürücü, sinüs-kare dalga, schmitt tetikleyici devreleri, tepe dedektörü, özel karşılaştırıcılar, kablolu veri transfer devreleri, sinyal analiz işlemleri, biyomedikal işaret yükselteci vb.[4] Şekil 3.3. İşlemsel yükselteç ile gerçekleştirilen türev ve integral alıcı devre grafikleri 9 4.DENEY DÜZENEĞİNDE KULLANILAN DİĞER ELEMANLAR 4.1.Diyotlar Diyotlar elektronik devre elemanlarının temel yapıtaşıdır. Transistörler, lojik kapılar entegre devreler diyotların birleşiminden meydana gelmektedir. Diyotlar tek yönde akım geçiren diğer yönde akım geçirmeyen elektronik devre elemanıdır. İletim yönündeki dirençleri önemsenmeyecek kadar küçük, tıkama yönündeki dirençleri ise çok büyük olan elemanlardır. Diyodun pozitif ucuna anot, negatif ucuna ise katot adı verilmektedir. Diyodun anoduna gerilim kaynağının pozitif kutbu, katoduna ise gerilim kaynağının negatif kutbu uygulandığı vakit, diyot iletime geçmektedir. Başlıca diyot çeşitleri; Kristal diyot Tünel diyot Işık yayan diyot (LED) Mikrodalga diyot Pin diyot Zener diyot Ayarlanabilir kapasiteli diyot (Varaktör) Şekil 4.1. Çeşitli diyot türleri.[5] 10 Diyotlar temel olarak üç ana gruba ayrılmaktadır; 1. Lamba diyotlar 2. Metal diyotlar 3. Yarı iletken diyotlar 4.2.555 Entegre Elemanı Elektronik dünyasının vazgeçilmez elemanlarından biridir. Aslında karmaşık olmasının yanı sıra sadece bir kare dalga üreticisidir.555 entegresi; darbe üreteci, darbe genişlik modülasyonu(PWM), darbe konum modülasyonu(PPM), zamanlayıcı vb. uygulamalarda kullanılmaktadır. 555 entegresinin 1 ve 8 numaralı uçları besleme, 2 numaralı ucu tetikleme, 3 numaralı ucu ise çıkış amacıyla kullanılmaktadır. Tetikleme sinyallerinde alçalan ve yükselen kenar olmak üzere iki kenar vardır. [2] Yükün bir ucu 3 numaralı çıkışa, diğer ucu ise Vcc’ye bağlanır. İdealde çıkış ucu sıfırdır ve şase potansiyelinde bulunmaktadır. 555 genel özelliklerinin sıralayacak olursak eğer; 1. +4.5 Volt ile +16 Volt arasında besleme gerilimi ile çalışmaktadır 2. Çıkışından yaklaşık olarak 200 mA akım çekilebilmektedir. 3. Zamanlama devrelerinde, periyot besleme gerilimine bağlı değildir. 4. Besleme akımı 3-6 mA arasındadır. 5. Güç harcaması 600 mW 6. Çalışma sıcaklığı 0-70 C derecedir. 11 Şekil 4.2. 555 Zamanlayıcı entegresinin bacak bağlantısı 4.3.PIC Hakkında 20.yüzyılın son yıllarında 16 ve 32 bitlik işlemcileri denetlemek ve işlem yükünü an aza indirgemek amacıyla Microchip firması tarafından geliştirilmeye başlanmıştır. Pic işlemcileri ilk olarak PIC16C54 olarak üretilmiştir. PIC işlemcileri ekstradan ek bellek olmaksızın veya giriş/çıkış elemanı olmadan yalnızca 2 adet kapasite, 1 adet direnç ve 1 adet kristal ile çalışabilmektedir. PIC ailesinin en çok proje yapılan ürünü PIC16F84’tür. PIC16F84 çok fazla kullanılır olmasının sebeplerinden biriside silinip yazılabilen E2PROM belleğe sahip olmasıdır. Seri olarak 4 kablo ile programlanabilir olması da önemli avantajlarından birisidir. PIC mikroişlemcilerinin tercih edilmelerindeki en önemli sebeplerden birkaçını sıralayacak olursak; 1. Ekonomik olması 2. Belleğe erişimin çok hızlı olması 12 3. Yüksek frekanslarda rahatlıkla çalışabilir olması 4. Stand-by halinde çok küçük akım çekmesi 5. Kod sıkıştırma sayesinde işlem çokluğu sağlayabilmesi 6. Data için ayrı yerleşik BUS kullanılması 7. Lojik uygulamalarında hızlı olması Şekil 4.3. PIC16F84 pin diyagramı.[3] 13 5.SİSTEM TASARIM AŞAMALARI Analog Dijital dönüştürücü deney düzeneğinde kullanılan elemanlar daha önceki bölümlerde ayrı başlıklar halinde tek tek incelendi. Bu aşamada zaman üzerinden yapılan dönüştürmeyle ilgili gerekli analizler yapılacaktır. Zaman üzerinden analog-dijital çevrimi yaparken analog DC gerilim bir testeredişi gerilim ile karşılaştırılır. (Şekil 5.1.). Şekil 5.1. DC gerilim ile testeredişi Testeredişi gerilim ile UA geriliminin başlangıç değerleri eşit olana kadar geçen T a zaman süresiyle ölçülecek gerilim arasında bir doğru orantı söz konusudur. Zamanın sayısal olarak ölçülmesi işlemi, periyodu (T) bilinen bir işaret üreticinin ürettiği darbeleri Ta süresine kadar sayıcıyla saymakla ölçüm yapılır. Analog-Dijital dönüşümünü zaman üzerinden yapan çevirici devre aşağıda verilmiştir. (şekil 5.2) 14 Şekil 5.2. Zaman üzerinden dönüşüm devresi Herhangi bir analog DC gerilimi Ux testeredişi gerilim ile karşılaştırıldıktan sonra, karşılaştırıcının çıkışı, elektronik anahtarda Tx süresi boyunca kare dalga üreticinin darbelerinin sayıcıya ulaşmasını sağlamaktadır. Sayıcıdan gözlemlenen sonuç ise ölçülmek istenen gerilim değeriyle orantılı olmaktadır. Tezde yapılan sayıcı devrenin, deney düzeneğindeki konumu aşağıdaki şekil 5.3. de gösterilmektedir. 15 Şekil 5.3. Tasarımı yapılan devre konumu Sayıcı sistemini tasarlayabilmek amacıyla PIC kullanılarak oluşturulan devreni şematiği şekil 5.4 görülmektedir. Kullanılan elemanlar gözönüne alındığında LCD ekran sözkonusuydu, direnç, kapasite, kristal osilatör kullanılarak devre gerçeklenmiş oldu. Darbe sayma işleminde ise periyodu T=4.4 µs olan kare dalgaları sayan sayıcı tasarlanmıştır. Gerekli C program kodları EK-1 de sunulmuştur. 16 Şekil 5.4. Sayıcı devrenin şematiği Devrenin simülasyonu yapıldıktan sonra eagle programı kullanılarak baskı devre aşamasına geçilmiştir. Ayrıca devre elemanlarının bir listesi de aşağıda yer almaktadır. Bu aşamadan sonra ise baskı devre veya PCB(şekil 5.5.) çizimi yapıldıktan sonra devre çalışma aşamasına gelmiştir. 17 Şekil 5.5 Devrenin PCB çıktısı Baskı devreden sonra sistemin çalışabilir hale gelmesi için gerekli lehimleme ve malzeme montajı işlemi yapıldıktan sonra sayıcı sistemin test edilme aşamasına gelinmiştir. Test aşamasında herhangi bir sorunla karşılaşılmadan aşağıdaki şekil 5.6 görüldüğü üzere darbe sayma işlemi sağlıklı bir şekilde yapılmıştır. 18 Şekil 5.6. Sayıcı devre test aşaması Son olarak da darbe sayıcı sistem tasarımında kullanılan devre elemanları ise; PIC16F84 kullanılmıştır 2X16 LCD ekran 6 adet 10 kΩ direnç 1 adet 1 kΩ direnç 1 adet 10 kΩ potansiyometre 4 adet buton 2 adet 22 pF kondansatör 1 adet 4 MHz kristal osilatör 19 SONUÇ Etrafımızdaki fiziksek büyüklükler analog formda yer almaktadır, bunları sayısal forma geçirebilmek amacıyla bir dizi işlemlere yapmak gerekmektedir. Bu işlemler silsilesinde önemli bir yer ihtiva eden darbe sayıcı sistemler ise sistemin belki de en pratik ve kullanışlı kısmını kapsamaktadır. Tezde tasarım aşaması olarak anlatılan; darbe sayıcı sistemin tasarımında kullanılan PIC16F84, az önce bahsettiğimiz gerekli pratiklik ve kolaylığı gerçekten sağlamaktadır. Yapılan darbe sayıcı sistem hemen hemen çoğu uygulamada yardımcı devre elemanlarıyla kullanılma amacı içerdiğinden, sürekli değiştirilebilir bir yapıya sahiptir. Sonuç itibariyle; Analog-Dijital çevirici deney düzeneğinin darbe sayıcı kısmının gerçeklenmesi, bir takım analizler ve uygulamalar neticesinde gerçeklenmiş olup, deney düzeneğinde çalışırken herhangi bir sorun gözlemlenmemiştir. Sistemde, herhangi bir periyoda sahip üretilen işaretin, darbelerini saymak için gerekli düzenlemeler, C programı üzerinden rahatlıkla yapılabilmektedir. Yani istenen periyoda sahip işaretin darbe sayıları veya sensör kullanılarak gerçekleştirilecek sayıcı işlemleri yapılabilmektedir. 20 KAYNAKLAR [1] Güleryüz Veysel, Dijital ve Analog Elektronik Devreleri, 1.Baskı, Birsen Yayınevi, İstanbul, 2009 [2] İbrahim Doğan , 555 Entegresi ile Zamanlama Devreleri, 2.baskı, Bileşim Yayınları, İstanbul, 2005 [3] Akpolat Çağatay, PIC Programlama, 1.Baskı, Pusula Yayıncılık, İstanbul, 2005 [4] Ciylan Bünyamin, İşlemsel Yükselteçler, 1.Baskı, Gazi Kitapevi, Ankara, 2003 [5] http://www.akademice.blogcu.com 21 EK-1 #include <htc.h> #include <pic.h> #include <delay.h> // Denetleyiciyi ayarla /////////////////////////////////////////////////////// __CONFIG(0X3F71); // Tanımlamalar /////////////////////////////////////////////////////////////// // Pin isimleri // Arayüz #define AY_D0 RA0 // Data0 #define AY_D1 RA1 // Data1 #define AY_D2 RA2 // Data2 #define AY_D3 RA3 // Data3 #define AY_D4 RA4 // Data4 #define AY_D5 RA5 // Data5 // Anahtarla #define SW1 RD4 // 1. anahtar #define SW2 RD5 // 2. anahtar #define SW3 RD6 // 3. anahtar #define SW4 RD7 // 4. anahtar // Alfanümerik LCD 2x16 karakter #define LCD_DB PORTC // 8 bitlik veri yolu #define LCD_RS RD0 // 0: Komut #define LCD_RW RD1 // 0: Yaz #define LCD_E RD2 #define LCD_BL RD3 1: Data 1: Oku // // 0: Kapalı 1: Açık // Sabitler #define KIS 10 // Komut işlem süresi uS // Sabit Diziler ////////////////////////////////////////////////////////////// const unsigned char YAZI[12] = {'D','A','R','B','E',' ','S','A','Y','I','S','I'}; 1 // Değişkenler /////////////////////////////////////////////////////////////// // uc unsigned char i; // Sayaç unsigned char j; // Sayaç unsigned char k; // Sayaç // ui unsigned short long int uiDarbe = 196700; // Darbe sayacı // Fonksiyonlar /////////////////////////////////////////////////////////////// void Init(void); void LCDEkraniTemizle(void); void LCDSayfaBasi(void); void LCDGotoxy(char ucx, char ucy); void LCDModAyarla(char cID, char cS); void LCDEkranKontrol(char cD, char cC, char cB); void LCDKaydir(char cSC, char cRL); void LCDFonksiyonAyarla(char cDL, char cN, char cF); void KarakterYaz( unsigned char ucSembol); // ANA PROGRAM /////////////////////////////////////////////////////////////// void main(void) { // Bekle DelayMs(100); Init(); LCDGotoxy(2,0); for ( i = 0; i < 12; i++ ) KarakterYaz( YAZI[i] ); while (1) { // Sayacı arttır uiDarbe++; LCDGotoxy(5,1); KarakterYaz(uiDarbe / 100000 + 48); KarakterYaz(uiDarbe / 10000 % 10 + 48); KarakterYaz(uiDarbe / 1000 % 10 + 48); 2 KarakterYaz(uiDarbe / 100 % 10 + 48); KarakterYaz(uiDarbe / 10 KarakterYaz(uiDarbe % 10 + 48); % 10 + 48); DelayMs(250); } } // BAŞLANGIÇ DEĞERLERİ /////////////////////////////////////////////////////// void Init(void) { // Portların verilerini belirle PORTA = 0x00; // A portunun içeriğini temizle PORTB = 0x00; // B portunun içeriğini temizle PORTC = 0x00; // C portunun içeriğini temizle PORTD = 0x00; // D portunun içeriğini temizle PORTE = 0x00; // E portunun içeriğini temizle // Portların yönlerini ayarla TRISA = 0b00001111; // A0..3: giriş, A4,5: çıkış TRISB = 0b11111111; // B portu giriş (kullanılmıyor) TRISC = 0b00000000; // C portu çıkış TRISD = 0b11110000; // D portu çıkış TRISE = 0b00000111; // E portu çıkış (kullanılmıyor) // LCD'yi ayarla LCDFonksiyonAyarla(1, 1, 0); // Veri yolu 8 bit, 2 satır, 8*5 nokta LCDEkranKontrol(1, 0, 0); // Ekran açık, Kur. kapalı, Kırpışma kapalı LCDModAyarla(1,0); // Soldan-sağa yaz, Ekranı kaydırma // Arka aydınlatmayı aç LCD_BL = 1; } // LCD EKRANI TEMİZLE ///////////////////////////////////////////////////////// void LCDEkraniTemizle(void) { // uc 3 unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; LCD_DB = 0b00000001; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayMs(5); } // LCD SAYFA BAŞI ///////////////////////////////////////////////////////////// void LCDSayfaBasi(void) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; LCD_DB = 0b00000010; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayMs(5); } // LCD GOTOXY ///////////////////////////////////////////////////////////// void LCDGotoxy(char cx, char cy) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; if ( cy == 0 ) i = 0b10000000; // 1. satır if ( cy == 1 ) i = 0b11000000; // 2. satır LCD_DB = i + cx; LCD_E = 1; 4 for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } // LCD GİRiŞ MODU AYARLA ////////////////////////////////////////////////////// void LCDModAyarla(char cID, char cS) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; i = 0b00000100; if ( cID == 1 ) i += 2; // 1: solda sağa yaz, 0: sağdan sola yaz if ( cS == 1 ) i += 1; // 1: Ekranı kaydır, 0: kürsörü kaydır LCD_DB = i; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } // LCD EKRAN KONTROL ////////////////////////////////////////////////////////// void LCDEkranKontrol(char cD, char cC, char cB) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; i = 0b00001000; if ( cD == 1 ) i += 4; // 1: ekran açık, 0: ekran kapalı if ( cC == 1 ) i += 2; // 1: kursör açık, 0: kursör kapalı if ( cB == 1 ) i += 1; // 1: yan-sön açık, 0: yan-sön kapalı LCD_DB = i; LCD_E = 1; 5 for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } // LCD KAYDIR ///////////////////////////////////////////////////////////////// void LCDKaydir(char cSC, char cRL) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; i = 0b00010000; if ( cSC == 1 ) i += 8; // 1: ekranı kaydır, if ( cRL == 1 ) i += 4; // 1: sağa kaydır, 0: kürsörü kaydır LCD_DB = i; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } // FONKSİYON AYARLA /////////////////////////////////////////////////////////// void LCDFonksiyonAyarla(char cDL, char cN, char cF) { // uc unsigned char i; // Sayaç LCD_RS = 0; LCD_RW = 0; i = 0b00100000; 6 0: sola kaydır if ( cDL == 1 ) i += 16; // Data bus 8 bit if ( cN == 1 ) i += 8; // LCD 2 satır if ( cF == 1 ) i += 4; // Karakterler 5*10 nokta LCD_DB = i; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } // KARAKTER YAZ /////////////////////////////////////////////////////////////// void KarakterYaz( unsigned char ucSembol) { // uc unsigned char i; // Sayaç LCD_RS = 1; LCD_RW = 0; LCD_DB = ucSembol; LCD_E = 1; for (i = 0; i < KIS; i++) {} LCD_E = 0; DelayUs(100); } 7 ÖZGEÇMİŞ Uygar Sezer, 23.01.1990 tarihinde Gaziantep’te doğmuştur.Gaziantep Şehit Şahin Lisesini bitirdikten sonra Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümüne girmiştir.İstanbul Anel Grup’ta ve Gaziantep Sanko Holding’de stajlarını tamamlamıştır. 1