MİKRODENETLEYİCİ - diyot.net nedir ?
Mikrodenetleyici Tanımı ve Yapısı
Mikrodenetleyici; CPU, bellek, ve G/Ç birimlerinin tek bir entegre üzerinde bulunduğu bir sistemdir. Bu, tasarımda zaman ve yer kazandırmakta, aynı zamanda çevre birimlerinin zamanlama ve uyumluluk problemlerini de azaltmaktadır. Ancak bazı durumlarda bellek boyutlarını ve G/Ç kapasitesini kısıtlayabilir.
PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal osilatör kısmı eklenerek çalıştırılabilmektedir. Tek çıkış portundan 20 mA akım çekilebilir ve bir LED’i kolaylıkla yakabilir. Entegrenin 4 Mhz osilatör frekansında çektiği akım çalışırken 2 mA, stand-by durumunda ise 20 µA kadardır.
Günümüzde piyasaya yeni çıkan ve oldukça tutulan PIC 16F628 olmasına rağmen hâlihazırda elektronikçiler arasında en çok tanınan mikrodenetleyici PIC16F84’tür.
PIC 16F84’ün bu kadar popüler olması onun çok iyi bir işlemci olmasından ziyade program belleğinin EEPROM (elektrikle silinip yazılabilen bellek) olmasından kaynaklanmaktadır. Seri olarak dört adet kabloyla programlanması da diğer önemli üstünlüğüdür. Bugüne kadar bir işlemciyle uğraşmış herkesin en büyük sıkıntısı, EPROM tabanlı işlemcileri programladıktan sonra ultraviyole ışık kaynağı ile silip tekrar programlanmaktır.
PIC16F84 elektronikçiler tarafından internette en bol programlayıcısı bulunan işlemcidir. EPROM silmek diye bir şey zaten söz konusu değil, zira EEPROM belleği programlayan programlayıcı devre, aynı belleği silebilmektedir. Bu özellik size çok hızlı ve defalarca deneyerek program geliştirme üstünlüğünü getirmektedir. Bu denemeleri yaparken işlemciyi devrenizden sökmeniz dahi gerekmez. Bir elektronikçi PIC16F84 ile program geliştirmek için aşağıdaki ekipmana ihtiyaç duyacaktır.
Görsel işletim sistemli bir PC
Editör (not defteri, word gibi)
MPASM Assembler derleyici
PIC16F84 mikrodenetleyicinin genel özellikleri şunlardır:
13 adet giriş/çıkış portu
Çalışma hızı DC-10 MHz
1Kx14 EEPROM program belleği
64 Byte EEPROM data belleği
4 adet kesme fonksiyonu (PB0,TMR0,RB Change, EEPROM Write)
Her bir pinden 20 mA’e kadar akım verebilme
Şekil 1.1’de mikrodenetleyicinin ayak bağlatıları verilmiştir.
PIC 16F84’te 13 adet giriş/çıkış (G/Ç) portu bulunmaktadır. Bunlardan 8 bitlik olanına PortB, 5 bitlik olanına da PortA’denir. PortA’nın 4 numaralı pini open kolektör olup G/Ç yapmak için bir direnç ile +5’e çekmek gerekmektedir. Diğer portlardan hiçbir ek elemana ihtiyaç duymadan G/Ç yapılabilir.
1.2. Mikrodenetleyicilere Program Yazma
Bir mikrodenetleyiciyi programlamak için üç basit adım vardır:
Kaynak kodu yazımı
Kaynak kodunun derlenerek makine diline çevrimi
Makine diline çevrilmiş programın PIC’e yüklenmesi
Kaynak kodu yazımı, PIC’e yüklenecek programın kodlarının not defteri vb. bir editör programı kullunılarak yazılmasıdır. Kaynak kodunun derlenmesi ise editor kullanılarak yazılan programın derleyici (compiler) yazılımları ile makine diline çevrimi işlemidir.
Derleyicilerden en çok kullanılanı MICROCHIP firmasının kendi mikrodenetleyicileri için ürettiği programlama dili olan MPASM’ dir. Bu dilin çok az komuttan (35-40) oluşması ve kolay öğrenebilmesi ve derleyicinin ücretsiz olarak verilmesi en büyük kolaylıklardandır. PIC assembly ile program yazmak için PIC içerisindeki kaydedicilerin yapısını bilmek ve hangi kaydedicilerde hangi işlemin ne sonuç verdiğini öğrenmek zorunluluğu, mikroişlemci yapısına yabancı olanlara zor gelmektedir. Bu sebepten dolayı PIC programlamayı hobi olarak öğrenmek isteyenler için PIC BASIC PRO ve PLC’lerde (programlanabilir lojik kontröler) görsel programlamaya yarayan PICBIT programları üretilmiştir. PICBIT programı, PLC kaynak kodunu derleyerek makine diline otomatik olarak çevirir. Elde edilen bu makine dili kodları, programlayıcı devreleri aracılığı ile ve programlayıcı yazılımları ile mikrodenetleyiciye yüklenir.
Mikrodenetleyiciler için program yazarken PLC simulasyonunu olan PICBIT programından yararlanacağız. PLC daha çok otomasyonda kullanılan ve sıralı işlemlerin lojik aileleri ile biraraya getirilerek yapıldığı bir sistemdir. Bu sistem, daha çok endüstriyel tesis otomasyonu için geliştirilmiş olup ilk yıllarında röleler ve mekanik zamanlama elemanları kullanılarak yapılırdı. Daha sonra işin içine mikroişlemciler girdi. Hayat bu noktadan sonra daha kolaylaştı. Günümüzde PLC imkânlarını kullanmayan endüstriyel tesis yoktur.
PLC ile PIC birleştiği zaman ortaya esnek ve ucuz bir yapı çıkmaktadır. PLC yapısında AND, OR, XOR, TIMER, NOT, IN, OUT, LATCH, IN, OUT gibi lojik gruplarını kullanırız. Bu grupları farklı kombinasyonlarda birleştirerek portlardan girdiğimiz TTL seviyesindeki sinyalleri kombinasyonun öngördüğü işlemlere tabi tutup, çıkış olarak seçtiğimiz porttan dışarı alırız. Buna örnek olarak basit bir test programını ele alalım: İş, bir akvaryum hava motorunu port RB0 ‘a bağlayıp 5 dakika START, 5 dakika STOP şeklinde çalıştırıp durdurmak olsun. Bu işlemi PLC sistemi olarak tasarlarsak, 1 adet TIMER ve 1 adet çıkış elemanına ihtiyaç duyarız. Timer elemanı, 5 dakikada bir açılıp kapanırken, sonucu çıkış elemanına iletmelidir. Çıkış elemanı, bizim programımızda RB0’dır. Bu programı yaparken grafik tabanlı bir PLC programlama yazılımı olan PICBIT yazılımından faydalanacağız.
PICBIT grafik editorü ile yazacağımız PLC programını aynı programdaki MPASM ile compiler edip elde ettiğimiz hex uzantılı dosyayı yükleyebiliriz, daha sonra bu programı çalıştırırız.
Yukarıda saydıklarımıza örnek olarak PICBIT’i test programımızı tekrar yazmakta kullanalım.
Amaç, 5 dakika aralıkla yanıp sönen port RB0’a bağlı bir adet röle ile akvaryum hava motorunu çalıştırmak. Bu devre, uzun süreli bir flaşör devresidir (şekil 1.2).
PICBIT programını DOS ortamında PICBIT yazarak çalıştırdığımızda karşımıza, ortasına Mouse ile gidip sol tuş ile tıkladığınızda programlama grafik editor ekranı gelir. Bu ekran üzerine istediğimiz elemanı (timer, out, in gibi) koyarız. Flaşör programı elemanları, aşağıdaki gibi yer alır. Bir adet TIMER ve bir adet OUT elemanı işlemi bitirir. Flaşör grafik PLC programı, yukarda görüldüğü gibi iki adet elemandan oluşmaktadır. IN elemanı, Timer T10 elemanının bir parçasıdır. T10 üstündeki 512,00 rakamı 512’ms karşılığıdır ve bir listeden sabit değerler arasından uygun olanı seçilir. OUT elemanı ise TIMER çıkışı ile Port RB0 arasındaki baglantıyı düzenleyen program parçasıdır.
Görüldüğü gibi PICBIT ile program yapmak assemblerden çok daha kolaydır. PICBIT PLC derleyicisi içerisindeki G/Ç elemanları ile mantık elemanlarının kullanılışını göreceğiz. PICBIT PLC derleyicisindeki elemanlar işlev olarak bir TTL veya CMOS lojik ailesindeki elemanlardan farklı değildir. Buradaki en önemli fark, birkaç entegre ile bir mantık sistemi kurmak yerine PICBIT bünyesindeki mantık yapı taşlarını kullanarak bir program yaratıp bunun PIC işlemci yardımıyla benzetimini (simülasyonunu) yapmaktır. PICBIT derleyicisinde bulunan lojik elemanlarından IN, IN NOT, OUT, OUT NOT, AND, AND NOT, OR, OR NOT, XOR, XOR NOT, NOT ve I/O NOT ‘ı teker teker ele alalım.
1.2.1.1. IN, IN NOT, OUT ve OUT NOT Elemanları
Şekil 1.3’te görüldüğü gibi IN elemanı, bir adet giriş bacağı ve bir adet de çıkış bacağı bulunan bir elemandır. PIC’e dış ortamdan giriş yapmamızı sağlayan bu eleman, girişindeki işlevini mantık devresinin diğer elemanları için hazırlar ve birleştirir. IN elemanı girişine RA ve RB portlarından herhangi biri (bu portlar PICBIT’te PA ve PB olarak anılır) ilişkilendirilebilir. Böylece PB veya PA portlarına uygulanan sinyal, IN elemanı sayesinde diğer elemanlara aktarılır. IN elemanı girişine portlardan başka MARKER dediğimiz ve M00 dan başlayıp M15’e kadar devam eden 16 adet geçici saklama elemanları bağlanabilir. MARKER’lar bir işlem sonucunun bir porttan değil de bir lojik sisteminden geldiği durumlarda sonuçları saklamak için kullanılan bellek birimleri olarak kabul edilebilir. IN girişine TIMER elemanı bağlanarak gecikmeler elde edilebilir. TIMER elemanı, ms şeklinde çeşitli zaman değerlerini içeren ve seçildiği zaman birimi süresince aktif kalan bir zamanlayıcıdır.
Bir COUNTER elemanı çıkışını IN girişine girerek COUNTER işleminin sonucunun giriş elemanını etkilemesi sağlanır. Bunlar dışında mantık sistemimize bir noktada sabit bir lojik seviyesi enjekte etmek ihtiyacı duyarsak 0 veya 1 sabitlerini kulanıp IN elemanı girişine verebiliriz. IN NOT elemanı IN elemanı ile aynı işlevlere sahiptir; fakat tek farkı, girişinde bulunan sinyali evirerek çıkışına vermesidir ki bir çeşit inverter gibi çalışmaktadır. OUT ve OUT NOT elemanı, IN ve IN NOT elemanları ile benzer, fakat ters işlevlere sahiptir. OUT elemanı, tasarladığımız mantık sisteminin sonucunun dış ortama; yani portlara veya markerlara ya da bir counter elemanına aktarılmasına yardımcı olur. OUT elemanı da IN elemanı gibi bir adet giriş ve bir adet çıkış bacağına sahiptir. OUT NOT elemanı, OUT ile aynı fonksiyonlara sahip inverted çıkış vermektedir.
1.2.1.2. AND, AND NOT, OR, OR NOT Elemanları
AND ve OR elemanları TTL veya CMOS serisi and veya or entegrelerinden işlev olarak farklı değillerdir. İki adet girişleri bulunur ve bu girişlere PA veya PB portları, M00’dan M15 ‘e kadar MARKER’lar, TIMER elemanı, Counter elemanı çıkışları ile sabit lojik elde etmek için 0 veya 1 elemanı bağlanabilir. AND NOT ve OR NOT elemanları eviren lojik kapılar gibi davranırlar ve giriş sinyalinin AND veya OR sonucunu evirerek çıkışa iletir (şekil 1.4).
1.2.1.3. XOR ve XOR NOT Elemanları
XOR elemanı, kullanım olarak TTL veya CMOS lojik ailesindeki XOR entegresiyle aynı özelliklere sahiptir. Kullanımı, and ve or elemanlarıyla benzerdir. XOR NOT girişteki sinyallerin işlem sonucunu evirerek çıkışına verir (şekil 1.5).
1.2.1.4. NOT ve I/O NOT Elemanları
NOT elemanı, IN ve OUT arasında kullanıldığında giren sinyali evirerek çıkışa vermek için kullanılır. NOT elemanı, sinyalin evirilmesi gereken her noktada kullanılabilir. I/O NOT elemanı, NOT elemanı ile aynı özelliklere sahiptir (şekil 1.6).
Şimdi PICBIT kullanımı üzerine eğilelim. PICBIT ile çalışırken herhangi bir elemanı sol Mouse tuşu ile sarı bölgeye koyabilirsiniz. Bir elemanı Mouse ile sağ tuş yardımıyla tutup oynatabilirsiniz. Bir elemanı sol tuş yardımıyla seçip üzerinde değişiklik yapabilir veya yok edebilirsiniz. Pop–up menülere sol tuş yardımıyla erişip sağ tuş yardımıyla bırakabilirsiniz. File menüsünde SAVE sizi UYARMADAN eski dosyanızın üstüne yazar.
1.2.1.5. PCBIT Menüleri
• TOOL menüsü
REDRAW : Ekranı yeniden çizer.
PACK : Elemanlar arası boşlukları yok eder.
PHOTO : Ekranın görüntüsünü PCX file olarak kaydeder.
EDITOR : List dosyası için editörü çalıştırır.
• COMPILE menüsü
Compile MPASM assemblerini çalıştırır ve hex file oluşturur.
Bu file PIC içine direkt programlanabilir.
Menu compile seçeneği yalnızca PLC dosyasını oluşturur.
Bu include tipi seçenekler için uygundur.
• HARDWARE menüsü
Bu menüdeki birçok seçenek, bize kullanım için uygun değildir; çünkü bizim kullandığımız programlayıcı PICBIT programlayıcıdan biraz basit ve farklıdır. Fakat buradaki XTAL seçeneği, 4MHz dışındaki kristal tipleri ile çalışırken timer fonksiyonlarındaki ayarlamaları yapmak için kullanılabilir. TIMER ile kullanılan mili saniye değerleri 4MHz kristal baz alınarak hesaplanmıştır. XTAL komutu kullanılmazsa başka tip kristallerde TIMER öngörülen mili saniye değerlerini sağlayamaz.
• ELEMENT menüsü
CHANGE : Eleman cinsini değiştirmek,
DELETE : Elemanı yok etmek,
INSERT : İki eleman arasına yeni bir eleman sokmak,
EDIT : Elemanın giriş veya çıkışlarını düzeltmek,
HILITE : Aynı giriş-çıkış özellikli elemanları işaretlermek,
REMARK : Elemanla ilgili bir açıklama yazmak için kullanılır.
Bu tip açıklamalar, program daha sonra listesi incelenirken büyük kolaylık sağlar.
Son bir nokta: Mouse bir eleman üzerindeyken F1 tuşuna basarsanız eleman ile ilgili açıklama alabilirsiniz.
PICBIT ile PLC lojik uygulamalarında; set, reset, latch, counter, D flip/flop, stepper (adımlama) kontrol elemanı, kaydıran kaydedicileri göreceğiz.
1.2.1.6. Set, Reset, Latch, D Flıp/Flop Modülleri
• SET modülü
SET (kur) modül girişine uygulanan lojik sinyal seviyesi High ise modül çıkışı SET; yani HIGH kalır. Aksi hâlde LOW durumunu korur.
• RESET modülü
RESET modülü SET modülünün işlevsel tersidir. Girişine uygulanan sinyal LOW ise SET, yani çıkışı HIGH olur. Girişe uygulanan sinyal HIGH ise çıkış reset, yani LOW’dur.
• LATCH modülü
Latch (mandal) modülü, klasik bir TTL veya CMOS serisi latch’den mantık olarak farklı değildir. LAT girişine HIGH bir sinyal verildiğinde LATCH şeffaf, yani girişine uygulanan sinyal seviyesini aynen çıkışına aktarır. LAT girişi LOW olduğunda ise girişindeki sinyalin lojik durumunu korur.
• INV-LATCH modülü
INV-LATCH modülü, LATCH modülü ile işlev olarak aynı görevi görmektedir. Tek farkı, girişten gelen lojik sinyali, çıkışta (invert) evirmesidir.
• D FLIP/FLOP modülü
D Flip-Flop modülü, DFF girişine HIGH lojik seviyesi uygulandığında girişi aynen çıkışa taşımaktadır. Böylece girişte bulunan lojik seviyesi çıkışta saklanır. D Flip-Floplar 8 adet olup, bunların ilk dört tanesi çıkıştaki sinyali aynen korurken, diğer 4 adeti çıkış sinyalini girişe göre evirerek saklar.
1.2.1.7. Sayıcı, Adımlayıcı ve Kaydıran Kaydedici Modülleri
Bu modüllerin işlevleri aşağıda tek tek ele alınmıştır. Şekil 1.8’de bağlanış şekilleri görülmektedir.
• Sayıcı modülü
Sayıcı (counter) modülü, iki adet giriş ve bir adet çıkıştan oluşmaktadır. CNT girişindeki sinyalin lojik olarak 0/1 şeklinde değişmesi counter, yani sayacın artmasına sebep olur. Diğer giriş ise sayacın sıfırlanması içindir. Counter modülü seçilip PICBIT sayfasına konulduğunda ortaya çıkan THUMB-WHEEL şeklindeki anahtarlar yardımıyla sayacın erişeceği maximum değer seçilir. Girişlere MARKER, PORT, TIMER ya da başka bir COUNTER’ın çıkışı verilebilir. Toplam 8 adet COUNTER modülü vardır ve bu modüller birbirinden bağımsız, aynı anda kullanılabilir.
• Adımlama modülü
PICBIT içinde iki adet adımlama modülü vardır. İlk modül, adım motoru çıkış olarak RB1, RB2, RB3 portlarını; ikinci modül ise çıkış olarak RB4, RB5, RB6, RB7 portlarını kullanmaktadır. Her adım kontrol modülü, iki adet giriş içerir. Bunlar DIR ve STEP girişleridir. DIR girişine LOW, yani 0 seviyesinde bir lojik sinyali uygulandığında adım motoru saat yönünün aksine; HIGH, yani 1 seviyesinde bir lojik sinyal ise motoru saat yönünde döndürür. Tabi adım girişine herhangi bir kare dalga veya değişken bir lojik sinyal uygulamazsak motorda herhangi bir hareket olmaz. STEP girişinde sinyal değişkenken DIR sinyali seviyesinin değiştirilmesi adım motoru sağa veya sola döndürür.
• Kaydıran kaydedici modülü
Kaydıran kaydedici (shift register) modülü, çıkış olarak PB portunu yani RB0…RB7′yi kullanmaktadır. Bu modülün iki adet girişi vardır. Bunlar SHIFT ve DIR girişleridir. Kaydırma girişine girilen lojik sinyal seviyesi değiştikçe PB çıkışı da bu sinyali PB0..PB7 arasında birisinden diğerine öteler. DIR girişine uygulanan lojik sinyalin 0/1 durumu ise bu ötelemeyi sağa veya sola yönlendirir. Bu modül, çalışma prensibi olarak herhangi bir TTL veya CMOS kaydıran kaydedicilerden farklı değildir.
1.3. Mikrodenetleyiciye Programın Yüklenmesi
Önceki konularda makine diline çevrilen programı mikrodenetleyiciye yüklemek için önce mikrodenetleyiciye uygun programlama devremizin olması gerektiğinden bahsedilmişti. Elektronik piyasasında en çok kullanılan PIC 16F84A ve PIC 16C84 için
Bunun yanında birçok PIC mikrodenetleyici, EPROM ve E2PROM’ların programlanması için kullanılan PROPIC’i şekil 1.10’da görülmektedir.
Programlama devremiz hazır olduktan ve bu devreki soket yerine programlama yapacağımız mikrodenetleyici taktıktan sonra bilgisayara bağlantısı yapılır. Bu aşamadan sonra mikrodenetleyiciye programı yükleyecek bilgisayar programına ihtiyaç vardır. İnternette çok kolay bulabileceğiniz ve ücretsiz olan IC-PROG programını kullanmaktayız.
1.3.1. IC-Prog Programlama Menüleri
Open File : Var olan bir dosyayı açmak için kullanılır.
Save File As : Açılmış olan bir dosyayı yeni ve farklı bir adla kaydetmek
Open Data File : Yeni bir veri dosyası açmak için kullanılır.
Recent Files : Yeni dosya açmak için kullanılır.
Print : Yazıcıdan çıktı almak için kullanılır.
Exit : Programdan çıkmak için kullanılır.
Sürücü seçmek için gerekli menüdür. Şekil 1.11’de görüldüğü gibi bu programlayıcı ile birçok mikrodenetleyici programlanabilmektedir. Bu bölümün Option (seçenekler) kısmından da önemli ayarlamalar yapabilirsiniz.
View kısmında programın hex görüntüsü, assemler görüntüsü sağlanır. Ayrıca Device Position kısmında programlayıcının hangi port üzerinde olduğu şekil 1.12’deki gibi gösterilir. Yine Device information bölümü de hangi sürücüyü kullandığımız ve portları hakkında bilgi verilir.
Mikrodenetleyici hakkında özel bilgi information kısmından alınmaktadır (şekil 1.13).
1.4. Mikrodenetleyicilerle Yapılan Uygulama ve Kumanda Devreleri
Ev otomasyon sisteminde mikrodenetleyiciler ve uzaktan kumanda devreleri kullanılarak bir çok konfigürasyonda otomasyon tasarımı yapabilirsiniz. Tasarım işi; kişisel hayal gücü, düşünce, tecrübe ve yeteneğe bağlıdır. Şimdi mikrodenetleyicilerle yapılan birkaç temel devre şeması vereceğiz. Bu devreleri geliştirmek ve çeşitli otomasyonlarda kullanmak sizlerin tecrübelerinize ve düşüncelerinize kalmıştır.
1.4.1. Şifreli KapıKilidi
PIC16F84 kullanılarak gerçekleştirilen bu uygulamada, 4 haneli bir şifre, önceden belirlenmiş ve tuş takımından bu şifre girildiğinde röleye bağlı bir yükün çalıştırılması amaçlanmıştır.
Devre şöyle çalışır: İlk enerji verildiğinde kırmızı LED yanıktır ve röle kapalıdır. Doğru şifre girilinceye kadar devre bu durumda bekler. Tuş takımından doğru şifre rakamları sıra ile tuşlanıp “BA” butonu (AÇ butonu) tuşlandığında, röle çeker ve YEŞİL LED yanar. Bu durumun ardından herhangi bir tuşa basıldığında, röle tekrar kapanır ve kırmızı LED yanar. Devre için belirlenen şifreyi istediğiniz bir şifre ile değiştirebilirsiniz.
1.4.2. Trafik Işıklarıİle Kavşak Denetimi
PIC16F84 ile değişik bir trafik ışıkları uygulamasıdır. Sabit zamanlı bir trafik ışığı algoritmasının yanı sıra, girişe bağlı kontrol algoritmalarını içermektedir. Bir yaya butonu girişi ve bir FLASH/NORMAL girişi ile sabit zamanlı program algoritması üç farklışekilde işletilmektedir. Devrenin temelinde bir otomobil sinyal vericisi ve bir yaya sinyal vericisi kumanda edilmiştir.
Şekil 1.15’teki devreye ilk enerji verildiğinde, enerji kontak gecikmelerinin çıkışa yansımaması amaçlanarak 5 sn. çıkışlar kapalı tutulur. Bunun ardında standart kavşak kontrol cihazlarında olduğu gibi bir dakika boyunca flash algoritması uygulanır. Flash girişi anahtarı kapalı değil ve yaya butonuna basılmamış ise sabit zamanlı trafik ışığı algoritması uygulanır. Bu algoritmanın sonunda yaya butonuna basılması için devre otomobil için yeşil yaparak beklemeye geçer. Yaya butonuna basılmasının ardından değişken bir bekleme süresi ile yaya yolu yeşil algoritması çalıştırılır. Herhangi bir zamanda flash anahtarı kapatıldığın da devre, anahtar tekrar açılıncaya kadar flash algoritmasını çalıştırır.
PIC16F84 ile kurulmuş olan devre kristalli olarak tasarlanmıştır ve zaman ayarları 4MHz kristal için döngüler ile kurulmuştur. Devre, RC osilatör ile veya farklı kristal değerleri ile çalıştırılabilir. Ancak RC osilatör kullanıldığında veya kristal değeri farklı seçildiğinde algoritma süreleri değişecektir.
Bu konuda sizzler, elektronik sektöründe en çok kullanılan PIC serisi mikrodenetleyicilerin özelliklerini öğreneceksiniz. PIC 16F84’ü daha önceki konuda geniş olarak anlatığımız için ikinci öncelikli en sık kullanılan PIC 16F877’nin özelliklerini de geniş olarak açıklıyoruz.
Mikrodenetleyicileri şeçerken şunlara dikkat etmeliyiz:
Kullanacağımz giriş/çikiş port sayisina
Program belleği kapasitesine
EEPROM belleği kapasitesine
2.1.1. PIC 16F877 Mikrodenetleyicisi
Çalışma hızı: DC-20Mhz
Program belleği: 8Kx14 word Flash ROM
EEPROM belleği: 256 byte
Kullanıcı RAM: 368 x 8 byte
Giriş / çıkış port sayısı: 33
Timer: Timer0, Timer1, Timer2
A / D çevirici: 8 kanal 10 bit
Capture / comp / PWM: 16 bit Capture, 16 bit Compare, 10 bit PWM çözünürlük
Seri çevresel arayüz: SPI (Master) ve I2C (Master / Slave) modunda SPI portu (senkron seri port)
Paralel slave port: 8 bit, harici RD,WR ve CS kontrollü
USART / SCI: 9 bit adresli
2.1.1.1. PIC16F877 Bacak Bağlantıları 2.1.1.2. PIC16F877’nin Özellikleri
PIC 16F877, belki en popüler PIC işlemcisi olan PIC16F84’ten sonra kullanıcılarına yeni ve gelişmiş imkânlar sunmasıyla hemen göze çarpmaktadır. Program belleği FLASH ROM olan PIC16F877’de, yüklenen program PIC16F84’te olduğu gibi elektriksel olarak silinip yeniden yüklenebilmektedir. Özellikle PIC16C6X ve PIC16C7X ailesinin tüm özelliklerini barındırması, PIC16F877’yi kod geliştirmede de ideal bir çözüm olarak gündeme getirmektedir. Konfigürasyon bitlerine dikkat etmek şartıyla C6X veya C7X ailesinden herhangi bir işlemci için geliştirilen kod, hemen hiçbir değişikliğe tabi tutulmadan F877’e yüklenebilir ve çalışmalarda denenebilir. Bunun yanı sıra PIC16F877, PIC16C74 ve PIC16C77 işlemcileriyle de birebir bacak uyumludur.
2.1.1.3. PIC16F877 Portlarının İşlevleri
• PORT A
Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 6 bit genişliğindedir (PICF84’te 5 bittir). RA0, RA1, RA2, RA3, RA4 ve RA5 bitleri analog / dijital çevirici olarak ayarlanabilmektedir. Buna ek olarak RA2 ve RA3 gerilim referansı olarak da ayarlanabilmektedir. (Bu durumda bu bitler aynı anda ADC olarak kullanılamamaktadır.) İlgili kaydediciler ve adresleri aşağıdaki gibidir.
PORTA : 0×05
TRISA ADCON1 : 0×85 (G/Ç belirleme kaydedicisi) : 0x9F (RA portlarının ADC, referans gerilimi veya dijital G/Ç olarak seçiminde kullanılmaktadır. İşlemciye ilk defa gerilim uygulandığında RA4 hariç diğer PORTA bitleri A/D çeviricidir. Eğer RA portunun bazı bitlerini sayısal G/Ç olarak kullanmak istersek ADCON1 kaydedicisinde değişiklik yapmamız gerekmektedir.)
• PORT B
Her bir biti bağımsız olarak dijital G/Ç olarak tanımlanabilen bu portun genişliği8 bittir. B portunun her bacağı, dahili bir dirençle VDD’ye bağlıdır (weak pull-up). Bu özellik varsayılan olarak etkin değildir. Ancak OPTION registerinin 7. bitini 0 yaparak B portunun bu özelliğini etkinleştirilebilir.
RB4-RB7 bacakları, aynı zamanda bacakların dijital durumlarında bir değişiklik olduğunda INTCON kaydedicisinin 0. bitini (RBIF bayrağını) 1 yaparak kesme oluşturmaktadır. Bu özelliği, işlemci SLEEP konumundayken devreye bağlı tuş takımının herhangi bir tuşa basıldığında işlemcinin yeniden etkinleşmesi için kullanabilir. Bütün bunların yanı sıra RB6 ve RB7 yüksek gerilim programlama, RB3 ise düşük gerilim programlama modlarında da kullanılmaktadır. İlgili kaydediciler ve adresleri aşağıdaki gibidir:
PORTA :0×06 TRISB : 0×86 (G/Ç belirleme kaydedicileri) OPTION_REG 0×81 , 0×181
• PORT C
Her bir biti bağımsız olarak dijital G/Ç giriş veya çıkış olarak tanımlanabilirken 8 bit genişliğindedir. Tüm port bacakları Schmitt Trigger girişlidir. TRISE registerının 4. biti olan PSPMODE bitini 1 yaparak “parallel slave mode” da kullanılabilir. Bu işlev aracılığıyla 8 bit genişliğindeki herhangi bir mikroişlemcinin veri yoluna bağlanabilir. İlgili kaydediciler ve adresleri aşağıdaki gibidir:
PORTC : 0×07
TRISC : 0×087 (G/Ç belirleme kaydedicileri)
• PORT D
Her bir biti bağımsız olarak dijital giriş veya çıkış olarak tanımlanabilirken 8 bit genişliğindedir. Tüm port bacakları Schmitt Trigger girişlidir. TRISE registerının 4.biti olan PSPMODE bitini 1 yaparak “parallel slave mode”da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki herhangi bir mikroişlemcinin veri yoluna bağlanabilir. Kaydedicileri ve adresleri aşağıdadır.
PORTD : 0×08 TRISD : 0×88 TRISE : 0×89
• PORT E
Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilirken 3 bit genişliğindedir. RE0, RE1 ve RE2 bacaklarında Schmitt Trigger giriş tamponları vardır. Her bir bacak ADC olarak ayarlanabilmektedir. Eğer PORTD paralel slave port olarak konfigüre edilirse RE0, RE1 ve RE2 bacakları PORTD’nin bağlandığı mikroişlemcinin veri yoluna sırasıyla READ, WRITE ve CHIP SELECT kontrol girişleri olarak kullanılabilmektedir. Bunun için TRISE uygun biçimde ayarlanmalıdır. İlgili kaydediciler ve adresleri aşağıdaki gibidir.
PORTE : 0×09 TRISE : 0×89 (G/Ç belirleme kaydedicileri) ADCON1 : 0x9F (RE portlarının A/D veya dijital giriş/çıkış olarak seçiminde
kullanılmaktadır. İşlemciye ilk defa gerilim uygulandığında üç PORTE biti de ADC’dir. Eğer RE portunun bazı bitleri dijital giriş / çıkış olarak kullanılmak istenirse ADCON1 kaydedicisinde değişiklik yapılması gerekecektir.)
2.2. Uzaktan Kumanda
Uzaktan kumandaları seçerken:
Uzaktan kumandaların fonksiyon sayılarına
Uzaktan kumandanın çalışma ortamına (IR, RF, GSM, GPRS …vb)
Portların çıkış gerilimine ve akımına
Hacimce büyüklüğü ve küçüklüğü
PIC 12C508 ile 5 kanal IR (kızıl ötesi) kumandayı inceleyelim. PIC12C508A ile gerçekleştirilen bu devre ile 5 adet röle ya da herhangi bir actuatör kontrol edilebilir. Önceden tanımlanmış SONY TV kumandasının 1 -5 tuşları ile çıkışlar toggle (terslemeli) olarak kontrol edilmektedir. Tüm çıkışlar birbirinden bağımsız çalışmaktadır. Örneğin 2 numaralı röle aktif edilmek istenirse SONY kumandasının 2 nulu butonuna basılır basılmaz çıkış aktif olur. Bu çıkış kapatılmak istenirse tekrar 2 tuşuna basılarak çıkış kapatılır. Flickering (sıçrama) etkisini gidermek için çıkış iki durum değişimi arasında yaklaşık 1 sn. lik gecikme konmuştur. Alıcı göz olarak piyasada bol miktarda bulunabilen TK19 alıcı gözü kullanılmıştır. Röleler transistör ile sürülmüştür. GPIO’nun her bir pininden (50,7)/4,7K)=0,91mA çekilecek şekilde dirençler seçilmiştir. Dolayısı ile tüm çıkışlar aktif olduğunda GPIO’dan toplam 8×0,9 mA=7,2 ma çekilmektedir. PIC12C508 için Microchip tarafından PORT için çekilebilecek toplam akım 100mA olarak verilmiştir. Transistörlerin kolektörüne bağlı röleler, doğrudan besleme kaynağından akım çekmektedirler. Burada sürücü transistörler yerine ULN2003 tarzı bir sürücü entegresi kullanılabilir. Ayrıca optik bir bağlaç ile triaklarda kontrol edilebilir. Rölelere ters paralel bağlanmış diyotlar, transistörlerin kapanma anında rölelerde oluşacak ters EMK’ya döngü yolu sağlamak için kullanılmıştır. Mikrodenetleyici kendi iç RC osilatörü ile 4MHz’de çalışmaktadır. Programda watchdog timer (program kilitlenme izleyicisi) ve MCLR kullanılmamış, sadece internal (dahili) 4MHz lik RC osilatörü kullanılmıştır. Böylelikle MCLR ile OSC1 ve OSC2 uçları da çıkış olarak kullanılabilmiştir. GP3 pini sadece input olarak ayarlanabildiği için bu pine TK19 alıcı gözü bağlanmıştır.