denĠzcĠlĠk - megep.meb.gov.tr denetleyici... · programlama dilleri geliĢtirilmiĢtir....
TRANSCRIPT
Bu bireysel öğrenme materyali, mesleki ve teknik eğitim okul / kurumlarında
uygulanan çerçeve öğretim programlarında yer alan kazanımların
gerçekleĢtirilmesine yönelik öğrencilere rehberlik etmek amacıyla hazırlanmıĢtır.
Millî Eğitim Bakanlığınca ücretsiz olarak verilmiĢtir.
PARA ĠLE SATILMAZ.
i
AÇIKLAMALAR ................................................................................................................... iii GĠRĠġ ....................................................................................................................................... 5 ÖĞRENME FAALĠYETĠ–1 .................................................................................................... 7 1. MĠKRODENETLEYĠCĠ TEMELLERĠ ............................................................................... 7
1.1. Mikrodenetleyiciler Ġçin Temel Kavramlar .................................................................. 8 1.2. MikroiĢlemci ve Mikrodenetleyici Arasındaki Farklar ............................................... 14 1.3. Amaca Uygun Mikrodenetleyici Seçimi ..................................................................... 14 1.4. Mikrodenetleyici Yapısı .............................................................................................. 17
1.4.1. PIC16F84A‟nın Besleme Bağlantısı .................................................................... 18 1.4.2. PIC16F84A‟nın Reset Bağlantısı ........................................................................ 18 1.4.3. Saat Darbesi Düzeni ve Komut Süresi ................................................................. 19 1.4.4. Komut Örneği ve Bilgi ĠletiĢim Kanalı ............................................................... 19 1.4.5. I / O Port ( input / output) .................................................................................... 20 1.4.6. Mikrodenetleyicilerde Sink ve Source Akımları ................................................. 21 1.4.7. Osilatör Bağlantı Türleri ...................................................................................... 21 1.4.8. W Yazmacı (Egister) ........................................................................................... 23 1.4.9. Program Belleği (Flash ROM) ............................................................................. 24 1.4.10. Veri Belleği (Data Memory) .............................................................................. 24
DEĞERLER ETKĠNLĠĞĠ .................................................................................................. 26 UYGULAMA FAALĠYETĠ .............................................................................................. 27 ÖLÇME VE DEĞERLENDĠRME .................................................................................... 28
ÖĞRENME FAALĠYETĠ–2 .................................................................................................. 30 2. MĠKRODENETLEYĠCĠYE PROGRAM YÜKLEME ...................................................... 30
2.1. Kaynak Dosyanın (Hex Dosyası) Elde Edilmesi ........................................................ 30 2.2. Yükleme Programını Kullanma .................................................................................. 34 2.3. Assembly Program Yazımı ......................................................................................... 37
2.3.1. Sayıların Ġfade Edilmesi ...................................................................................... 38 2.3.2. Programın Temel Ġfade ġekli ............................................................................... 38
2.4. Basit Bir Programın Açıklanması ............................................................................... 43 2.4.1. AkıĢ Diyagramı ve Program Listesi .................................................................... 43 2.4.2. Yöntem ġartnamesi .............................................................................................. 46 2.4.3. Portun Kurulumu ................................................................................................. 47 2.4.4: Ledlerin Yakılması .............................................................................................. 50 2.4.5. BSF PORTB,0 (BSF H „06‟,0) ....................................................................... 50
2.5. Mikrodenetleyici Komutları ........................................................................................ 51 DEĞERLER ETKĠNLĠĞĠ .................................................................................................. 52 UYGULAMA FAALĠYETĠ .............................................................................................. 53 ÖLÇME VE DEĞERLENDĠRME .................................................................................... 54
ÖĞRENME FAALĠYETĠ–3 .................................................................................................. 56 3. ADIM MOTORLAR VE KONTROL SĠSTEMLERĠ ....................................................... 56
3.1. Adım Motorlar ............................................................................................................ 56 3.2 Adım Motorların Etiket Değerlerinin Okunması ......................................................... 59 3.3. Adım Motorların Sürülmesi ........................................................................................ 60 DEĞERLER ETKĠNLĠĞĠ .................................................................................................. 67 UYGULAMA FAALĠYETĠ .............................................................................................. 68
ĠÇĠNDEKĠLER
ii
ÖLÇME VE DEĞERLENDĠRME .................................................................................... 69 MODÜL DEĞERLENDĠRME .............................................................................................. 71 CEVAP ANAHTARLARI ..................................................................................................... 72 KAYNAKÇA ......................................................................................................................... 73
iii
AÇIKLAMALAR ALAN Denizcilik
DAL/MESLEK Gemi Elektroniği ve HaberleĢme
MODÜLÜN ADI Mikro Denetleyici Devreleri
SÜRE 80/48
MODÜLÜN AMACI Birey/öğrenciye mikroiĢlemci ve mikrodenetleyici
devrelerini kurma ile ilgili bilgi ve becerileri kazandırmaktır.
MODÜLÜN
ÖĞRENME
KAZANIMLARI
1. Kurulacak sisteme uygun mikrodenetleyici ve
donanımını seçebileceksiniz.
2. HazırlanmıĢ programı mikrodenetleyiciye
yükleyebileceksiniz.
3. Mikrodenetleyiciye uygun olan adım (step) motorunu
seçebileceksiniz.
4. ĠĢ sağlığı ve güvenliği tedbirlerini alarak seçilmiĢ olan
adım (step) motor sürücü devresini yapabileceksiniz.
EĞĠTĠM ÖĞRETĠM
ORTAMLARI VE
DONANIMLARI
Ortam: Mikrodenetleyiciler laboratuvarı.
Donanım: Mikrodenetleyici katalogları, mikrodenetleyici,
elektronik devre elemanları, elektronik malzeme katalogları,
multimetre, baskı devre ve lehimleme araç gereçleri,
mikrodenetleyici programlama editörü, program yükleme
donanımı ve bilgisayar.
ÖLÇME VE
DEĞERLENDĠRME
Materyal içinde yer alan ve her öğrenme faaliyetinden sonra
verilen ölçme araçları ile kendinizi değerlendirebileceksiniz.
AÇIKLAMALAR
5
GĠRĠġ
Sevgili Öğrencimiz,
Otomobillerden, ev aletlerine, denizcilikten uzay çalıĢmalarına kadar her alanda
karĢımıza çıkan, etrafımızı saran tam ve yarı otomatik insan arayüzü içeren elektronik
cihazlarda neredeyse en az bir mikrodenetleyici kullanılmaktadır. Mikrodenetleyiciler,
program kodu denilen yazılımlar yüklenerek ihtiyaca uygun programlanabilen elektronik
entegre devre bileĢenleridir. Zamana bağlı olarak çalıĢması ya da çeĢitli algılayıcılardan
gelen bilgiyi iĢleyerek belli çıktıları üretmesi istenen tüm ortamlarda mikrodenetleyicilerden
yararlanılır.
Günümüz kontrol teknolojilerinin neredeyse tamamı mikrodenetleyicili sistemlerle
çalıĢır. Mikrodenetleyicilerin yeterliklerini ve fiziksel özelliklerini bilmek, iĢe uygun
mikrodenetleyiciyi seçmek için önemlidir. Piyasada farklı markaların ürettiği çok sayıda ve
birbirinden farklı mikrodenetleyici ile karĢılaĢmak sizleri hangisinden baĢlanması gerektiği
konusunda ikileme sokabilir.
Bu materyalde, giriĢ seviyesi bir mikrodenetleyicinin temel düzeyde programlanması
ve adım motor kontrolü uygulanması anlatılmıĢtır. Bu amaçla microchip firmasının PIC
mikrodenetleyicileri ailesinden 16F84A modeli tercih edilmiĢtir. Kullanımı son derece kolay
ve ucuz olan PIC16F84A mikrodenetleyicisinin temel yeterliklerinin kazandırılması
suretiyle mikrodenetleyicilerin çalıĢma mantığının kavratılması hedeflenmiĢtir.
Mikrodenetleyicilerin programlanmasında “alt ve üst seviye” diye tabir edilen
programlama dilleri kullanılır. Bu kapsamda microchip® firmasının PIC16F serisi için
geliĢtirmiĢ olduğu alt seviye 33 komutluk Assembly dili kullanılacaktır. Yazılan kodların
mikrodenetleyiciye yüklenmesi için yine microchip® firmasınca üretilmiĢ olan PICkit2
program yükleme yazılımı ve donanımı kullanılacaktır.
GĠRĠġ
7
ÖĞRENME FAALĠYETĠ–1
MikroiĢlemcileri ve mikrodenetleyicilerin yapı ve çalıĢmasını öğrenecek,
mikroiĢlemci ve mikrodenetleyicileri özelliklerine göre karĢılaĢtırabilecek, istenilen özellikte
mikrodenetleyiciyi ve donanımını seçebileceksiniz.
Mikrodenetleyici bir kontrol arabirimidir. Fakat kontrol sistemleri farklılık
gösterebilir. Acaba kontrol nedir? Hangi tür kontrol sistemleri vardır,
birbirlerine göre avantaj ve dezavantajları nelerdir? Bu konu ile ilgili
yapacağınız araĢtırmayı sınıf arkadaĢlarınızla paylaĢınız.
1. MĠKRODENETLEYĠCĠ TEMELLERĠ
MikrodenetleyiciĠ; sahip olduğu bir dizi donanım sayesinde içine yazılan program
kodlarını çalıĢtıran, bu kodlara göre kapasite ve yeterlikleri doğrultusunda çeĢitli iĢlemleri
yerine getiren bir çeĢit bilgisayardır.
ġekil 1.1‟de microchip firmasınca üretilen, 8 bitlik PIC (Programmable Interface
Controller) mikrodenetleyicilerine göre hazırlanmıĢ genel bir mikrodenetleyici yapısı blok
Ģema olarak gösterilmiĢtir.
ÖĞRENME FAALĠYETĠ–1
ARAġTIRMA
ÖĞRENME KAZANIMI
8
ġekil 1.1: 8 bitlik PIC mikrodenetleyicileri için temel blok Ģeması
Microchip firmasının PIC mikrodenetleyicilerinde genel olarak program ve veri
belleği olmak üzere iki bellek alanı vardır. Program belleği kullanıcı tarafından yazılan,
denetleyicinin yeterlikleri kapsamında yapmak istediği iĢleme uygun kod yazan ve bu kodun
kalıcı olarak saklandığı yerdir. Denetleyici modeline bağlı olarak program belleğinin
kapasitesi değiĢir. PIC16 ailesi mikrodenetleyicilerinde program belleği 14 bitlik komutlar
içerir. Diğer bir ifadeyle her bir komutun uzunluğu 14 bittir ve her bir sözcük 'Word' olarak
adlandırılır. Örnek olarak PIC16F84A 1K, PIC16F628A ise 2K Word program belleği
kapasitesine sahiptir.
Veri belleği ise özel (Special Function Registers) ve genel amaçlı kütükler (General
Purpose Registers) olmak üzere iki „register‟ alanından oluĢur. Özel amaçlı kütükler ile cihaz
çalıĢması kontrol edilir. Örneğin; portların giriĢ mi, çıkıĢ mı olacağı; harici kesmenin söz
konusu olup plmadığı; cihazın güç yönetimi; matematiksel iĢlemler sonucunda oluĢan elde
değerlerinin izlenmesi gibi kontroller bu bellek alanında yer alan kütükler yardımıyla yapılır.
Genel amaçlı kütükler ise kullanıcı tarafından oluĢturulabilecek bir takım sabitlerin ve
kontrol değerlerinin tutulması için kullanılabilecek veri belleği alanıdır.
1.1. Mikrodenetleyiciler Ġçin Temel Kavramlar
Tüm mikrodenetleyici ve mikroiĢlemciler için ortak olan bazı temel kavramlar vardır.
Bunlar:
CPU: Her mikrodenetleyici bir merkezî iĢlem birimine (Central Processor Unit)
sahiptir. Merkezî iĢlem birimi, mikroiĢlemcinin bir diğer adıdır. CPU
mikrodenetleyici içindeki tüm birimlerin ve entegre devrelerin veri ve adres
yolları üzerinden haberleĢmesini sağlayan, matematiksel iĢlemlerin
9
yürütüldüğü, RAM-ROM belleklerdeki veri ve program kodlarını okuyup
çalıĢtıran, kısaca sistemin çalıĢmasını sağlayan en önemli elemandır.
ROM bellek: Salt okunur bellek (Read Only Memory) anlamına gelen bir
hafıza elemanıdır. ÇeĢitli türleri olmakla birlikte günümüz
mikrodenetleyicilerinin büyük çoğunluğunda elektrikle silinebilir ve yazılabilir
türü olan EEPROM modeli kullanılmaktadır. Mikrodenetleyicinin çalıĢması
sırasında değiĢtirilen verilerin saklanması için kullanılır. Elektrik kesilse bile
içindeki bilgi silinmez. Örneğin; kitabımızda yaygın olarak kullanılacak
PIC16F628A mikrodenetleyicisinde 128 Byte‟lık bir EEPROM veri belleği
bulunur.
RAM bellek: Rastgele eriĢimli bellek (Random Access Memory) anlamına
gelen hafıza elemanıdır. Geçici olarak saklanan bilgilerin tutulduğu ve ROM
belleğe göre daha hızlı çalıĢan bir bellek türüdür. Elektrik kesildiğinde içindeki
bilgiler kaybolur. Aslında tüm ROM bellek türleri de rastgele eriĢimlidir.
Rastgele eriĢim, Harddisk, CD/DVD ROM gibi manyetik ve optik disk
kaydedicilerden farklı olarak bilginin aynı hızda yazılıp silinebildiği bellek
teknolojisidir. Bu teknolojide bilginin belleğin hangi adres bölgesinde
olduğunun önemi yoktur.
Flash ROM: Günümüz mikrodenetleyicilerinin büyük çoğunluğu USB
belleklerin yapısına benzer Ģekilde bünyesinde Flash ROM bulundurur. Flash
ROM‟da elektrikle silinebilir ve kaydedilebilir kalıcı tip bellek türüdür.
EEPROM ile arasında tasarım yönünden farklılık bulunmaktadır. Bu durum
kullanım ömürleri açısından farklılık ortaya çıkarmaktadır. EEPROM 1.000.000
(bir milyon) yazma ömrüne sahipken Flash ROM 100.000 (yüz bin) yazma
ömrüne sahiptir. Bu nedenle kullanıcı programı Flash ROM için ayrılmıĢ
bölgeye yazılırken EEPROM daha çok program sırasında kullanılan sabit,
değiĢken ve program iĢleyiĢi sırasında değiĢen diğer veriler için kullanılır.
Mikrodenetleyici programlama kartları yardımıyla mikrodenetleyicinin içine
yüklenen program, bu belleğin içindeki program belleği alanına yazılır.
Mikrodenetleyicilerin Flash ROM belleklerinin programlanması, genellikle
yüksek voltaj programlaması (HVP) seviyesinde mikrodenetleyicinin VPP (ya da
) giriĢine 13V seviyesinde voltaj uygulanmasıyla gerçekleĢtirilir. DüĢük
voltaj programlaması (LVP) seviyesinde ise 3.3-5V arası bir voltaj verilmesiyle
gerçekleĢtirilir.
Osilatör (OSC): Her mikrodenetleyici ve mikroiĢlemci belli bir hızda çalıĢır.
Bu hız saat darbesi (Clock Pulse) olarak adlandırılır. Her bir saat darbesi için
geçen süreye bir çevrim (periyot) denir. RISC (Reduced Instruction Set
Computer) mimarisiyle tasarlanmıĢ mikrodenetleyici ve mikroiĢlemcilerde her
bir komut aynı bir çevrim süresinde iĢlem görür. Bu süre denetleyici veya
iĢlemcinin çalıĢtığı frekansla iliĢkilidir. Örneğin; PIC16F84A ve PIC16F628A
mikrodenetleyicileri 20MHz hızına kadar çalıĢabilir. Eğer bir mikrodenetleyici
1 MHz hızında çalıĢıyor ve bir komut çevrimi bir periyot sürüyorsa,
T = 1/F‟den 1 usn (mikro saniye) olarak elde edilir.
10
Bu mikrodenetleyicide her bir komutun 1 mikrosaniye sürdüğü anlaĢılır. ġekil
1.2‟de düĢen ve yükselen kenar zamanları kayıpsız olarak kabul edilmiĢ farklı
iki frekanstaki bir saat darbe sinyalinin Lojik-1, Lojik-0 süreleri ve periyot
iliĢkisi gösterilmiĢtir.
ġekil 1.2: Yükselen ve düĢen kenar sürelerinin 0 kabul edildiği farklı iki frekansta mükemmel
bir saat darbesi
Ġstenilen frekansta kare dalga sinyal üretilmesini sağlayan donanım osilatör olarak
adlandırılır ve farklı türleri mevcuttur. Dâhilî ve harici osilatör türleri vardır. Quartz kristal
ile yapılan osilatörler direnç ve kondansatör kullanılarak yapılanlara göre daha kararlı çalıĢır.
Mikrodenetleyicilerin bazı modellerinde harici ve dâhilî osilatör seçenekleri
mevcutken bazı modellerde yalnızca harici osilatör desteği vardır.
11
Tablo 1.1'de iki farklı PIC modeline göre osilatör seçenekleri sunulmuĢtur:
MĠKRODENETLEYĠCĠ 16F84A 16F628A
Maksimum frekans 20 MHz 20 MHz
Osilatör seçeneği sayısı 4 8
Osilatör modları LP: DüĢük güçlü kristal
osilatör seçeneği
XT: Kristal/rezonatör
seçeneği
HS: Yüksek hızlı kristal
rezonatör seçeneği
RC: Direnç/kondansatör
seçeneği
RC: Tek pinli ucuz
direnç/kondansatör seçeneği
LP: DüĢük güçlü kristal osilatör
seçeneği
XT: Standart kristal seçeneği
INTOSC: Ġki hızlı kararlı dâhilî
osilatör seçeneği. Bu modda
mikrodenetleyici iki farklı
frekansta çalıĢtırılabilir:
1- 48kHz
2- 4MHz
HS: Yüksek hızlı kristal modu
EC: Harici osilatör frekansı giriĢi
Sleep (uyku) modu: Güç
tasarrufu sunan bir moddur.
Kullanıcı mikrodenetleyiciyi
harici kesme, reset giriĢi ya da
dâhilî kesmelerle uyandırabilir.
Tablo 1.1: Örnek osilatör seçenekleri
Port: Mikrodenetleyicinin fiziki dünya ile iletiĢim kurmasını sağlayan bağlantı
noktalarıdır. ÇıkıĢ (Output-O) ya da giriĢ (Input – I) olarak kullanılabilir.
Veri ve adres yolları: Her bilginin saklandığı bellek bölgesinde belli bir yeri
vardır. Buraya eriĢebilmek için adresin bilinmesi gerekir. Bilgisayar
sistemlerinde adresleme olarak hekzadesimal sayı sistemi kullanılır. Ġlgili bellek
bölgesine eriĢebilmek için kullanılan yola adres yolu; adres yolu üzerinden
ulaĢılan bilginin ilgili yere taĢınması için kullanılan yola da veri yolu denir.
Adres ve veri yolları 8, 16, 32, 64bit gibi uzunluk bilgisiyle anılır.
Zamanlayıcılar (Timers): Mikrodenetleyicinin ya da dıĢ ortamdan baĢka bir
donanımın çalıĢma hızına bağlı olarak yürütülecek zamana bağlı iĢlemler için
kullanılan birimlerdir. Mikrodenetleyicinin özelliğine bağlı olarak en az 1 ya da
daha fazla sayıda Timer bulunur.
Programlama: Mikrodenetleyicilerin en önemli özelliği, makine dili dediğimiz
1 ve 0 sembolleriyle gösterilen kodların program belleği alanına uygun
donanımlar yoluyla yazılması sonucu istenilen iĢ ve iĢlemleri
gerçekleĢtirmelerinin sağlanmasıdır.
12
Tüm mikrodenetleyiciler belli voltajla çalıĢır. Genellikle Lojik-1 = 5V ve
Lojik-0=0V‟a karĢılık gelir. Makine dili biz insanların anlamakta güçlük çekeceği bir dil
olduğundan konuĢma dilimize yakın seviyede programlama dilleri geliĢtirilmiĢtir. Bu diller
içinde en alt seviye programlama dili Assembly dili olarak geçer. Assembly dili,
mikrodenetleyiciyi üreten firmanın geliĢtirdiği program kodlarıdır. INTEL, Microchip,
Motorola, Atmel, STM, Texas Instrument, vb. firmaların kullandıkları Assembly dilleri
farklılık gösterir.
Üretici firmaların aralarındaki bu farklılıkları ortadan kaldırmak ve kullanıcıların
farklı mikrodenetleyicilere ortak projeler ve programlar yazabilmeleri için daha üst seviye
programlama dilleri geliĢtirilmiĢtir. PIC-Basic, MikroC, JAL, vb. Üst seviye programlama
dilleri bunlara örnektir.
Örnek: (PIC Mikrodenetleyicisi için)
Assembly Makine Dili Açıklama
ADDWF 00 0111 dfff ffff W kütüğündeki (akümülatör) bilgiyi, 7 bitlik F dosya adres
kütüğü ile gösterilen dosya adresindeki bilgiyle toplar.
Sonucu d ile gösterilen yere yazar. Bilgi, d 0 ise W, 1 ise
f‟ye yazılır.
Byte-bit: Dijital donanım olan mikrodenetleyicilerde komutlar ve adresler ikilik
sayı kodlarıyla temsil edilir. Lojik-1 ve lojik-0 durumunun her birine bit denir.
8 bit 1 byte eder ve bilgisayar dünyasındaki anlamlı en küçük bilgi parçasıdır.
Kelime uzunluğu: MikroiĢlemcinin her saat darbesinde iĢlem yapabileceği bit
sayısına kelime uzunluğu (Word) denir. ĠĢlenen veriler iĢlemcinin özelliğine
göre 4, 8, 12, 14, 16, 24, 32 ve 64-bit uzunluğunda olabilir. Aynı mikroiĢlemci
ya da mikrodenetleyicinin; kelime, veri yolu, adres yolu uzunluğu farklılık
gösterebilmektedir. ġekil 1.3‟te farklı kelime uzunlukları gösterilmiĢtir.
ġekil 1.3: Farklı kelime uzunlukları
13
Akümülatör: Aritmetik ve mantık iĢlemlerinde bilginin geçici olarak
saklandığı kaydedicidir. ACC, W ya da A harfleriyle gösterilir.
Program sayıcı: MikroiĢlemcinin yürütmekte olduğu program komutlarının
adres bilgisini tuttuğu özel amaçlı bir kaydedicidir.
Durum kaydedicisi: Durum kaydedicisi 8-bitlik bir kaydedicidir. Bu
kaydedicinin her bir biti ayrı ayrı anlam ifade eder. MikroiĢlemci içinde veya
dıĢardan yapılan herhangi aritmetiksel, mantıksal veya kesmelerle ilgili
iĢlemlerin sonucuna göre bu bitler değer değiĢtirir.
ADC – Analog dijital çevirici (Analog Digital Converter): Zamana göre
sürekli değiĢen analog sinyalleri, 1 ve 0 dizilerinden oluĢan sayısal bilgiye
çevirir. Böylece iĢlenmesi zor analog sinyaller bilgisayarlar tarafından daha
rahat iĢlenebilir.
DAC – Dijital analog çevirici (Digital Analog Converter): Bazı durumlarda
dijital sinyallerin analog sinyallere çevrilmesi gerekir. Örneğin, elektrik motoru
gibi cihazların kumandasında bu çeviriciler kullanılabilir.
Komut seti: MikroiĢlemci ve mikrodenetleyiciler genel olarak iki farklı komut
mimarisi ile üretilir:
CISC – Complex Instruction Set Computer: KarmaĢık komut setini
kullanan mimarilerde, çok sayıda ve kelime uzunlukları değiĢen
dolayısıyla da çevrim hızları değiĢiklik gösteren bir komut dizisi
kullanılır. Birkaç komutun yapacağı bir iĢlemi tek bir komutla yapmak
mümkündür ancak komutların farklı hızlarda çalıĢmasınan dolayı
program iĢleme hızları değiĢiklik gösterir.
RISC – Reduced Instruction Set Computer: AzaltılmıĢ komut setini
kullanan mimarilerde daha az sayıda komut vardır ve komutların çevrim
hızları daha düĢüktür. Her komutun hızı genellikle aynı olduğu için bu
mimaride yazılan program hızlarını kestirmek de daha kolaydır.
Hafıza mimarisi: Genel olarak tercih edilen iki tür hafıza mimarisi vardır:
Harvard Memory Architecture Microcontroller: Bu mimaride veri ve
program bellekleri ayrılmıĢtır ve her ikisi için de ayrı iletiĢim yolları
kullanılmaktadır. Günümüz sistemlerinde kullanılan mimaridir.
Princeton (Von Neumann) Memory Architecture Microcontroller: Eski bir mimaridir. Günümüzde kullanılmamaktadır. Program ve veri
belleği ortaktır. Veri ve komut iĢlemleri aynı ortak iletiĢim yolunu
kullandığı için sistemin performansı düĢüktür.
14
ALU (Arithmetic Logic Unit): Aritmetik ve mantık birimi tüm mantıksal ve
aritmetiksel iĢlemlerin yürütüldüğü iĢlemci birimidir.
1.2. MikroiĢlemci ve Mikrodenetleyici Arasındaki Farklar
MikroiĢlemcili bir sistemde program belleği, çevre cihazlarla iletiĢim için gerekli
donanımlar, veri ve adres yolu denetleyicileri gibi pek çok donanım harici olarak bulunur.
Bu durum mikroiĢlemcili sistemlerin pahalı olmasına yol açar. Bellek; giriĢ çıkıĢ birimleri ve
iĢlemciden meydana gelen basit bir mikroiĢlemcili sistem, daha sonrasında adı geçen
elemanların tek bir entegre hâline getirilmesiyle mikrodenetleyici adını almıĢtır.
MikroiĢlemcili sistemi meydana getiren birimlerin kırpılmıĢ özellikleri mikrodenetleyici
sistemde kullanıldığından maliyet düĢmüĢ, programlanması kolay olmuĢ ve dolayısıyla
boyutları da küçülmüĢtür. Mikrodenetleyiciler sürekli geliĢtirilmekte, özellikleri ve
performansları arttırılmaktadır. Mikrodenetleyiciler bilindik kullanım yerlerinin dıĢında
endüstride ve günlük yaĢantımızda kendisine sürekli yeni kullanım alanları bulmaktadır.
MikroiĢlemcinin temel iĢlevi; iĢlenen ve kullanılan verileri birimler arasında iletmek,
iletilenleri iĢlemek, bir durumdan diğerine çevirmek ve saklamaktır. Mikrodenetleyicilerin
içĠNde mikroiĢlemci bulunmakla birlikte RAM, ROM, program belleği, sayıcılar, iletiĢim
modülü (UART-USART / Ethernet), PWM sinyal üretici, programlanabilir I/O portları,
salınım üretici 0-40 MHz, analog dijital dönüĢtürücü gibi çeĢitli donanımlar gömülü olarak
bulunur.
MikroiĢlemciler hafıza veya giriĢ çıkıĢ entegresi gibi çevre elemanlar ile birlikte
aritmetik iĢlemler yapabilen, karar verebilen entegrelerdir. Mikrodenetleyici ise
mikroiĢlemcinin yanı sıra kendi program hafızası ve giriĢ çıkıĢ özelliklerini içinde barındıran
entegrelerdir. Bu özellikleri sayesinde yüklü bir programı uygulamaya dönüĢtürerek bir
kontrol sistemi olarak kullanılabilir.
Mikrodenetleyiciler, mikroiĢlemcilere kıyasla daha spesifik uygulamalar için
hazırlanmıĢtır diyebiliriz. Çünkü gerekli elemanları kendi üzerinde barındırarak neredeyse
yalnız baĢına çalıĢabilmektedir. Oysa mikroiĢlemciler bilindiği üzere BUS (veri yolu), IO
(giriĢ çıkıĢ), RAM (bellek) vb. yapılara ihtiyaç duyar.
1.3. Amaca Uygun Mikrodenetleyici Seçimi
Mikrodenetleyiciler daha çok endüstriyel uygulamalara yönelik olarak amaca özel
geliĢtirilir. Bu sebeple piyasada hayli fazla çeĢit vardır ve bunlardan birini seçmek tamamen
yapılacak iĢ ile bağlantılıdır.
Günümüzde mikroiĢlemci ve mikrodenetleyiciler üreten irili ufaklı pek çok firma
bulunmaktadır. INTEL, MOTOROLA, AMD, PHILIPS, SIEMENS, TEXAS INS.,
DALLAS, ATMEL, MICROCHIP, HITACHI, MITSUBISHI, SGS-THOMSON, ANALOG
DEVICES, NATIONAL bublardan bazılarıdır. Bu firmaların bazıları sadece kendilerine
özgü iĢlemcileri piyasaya sürerken bazıları da ilk üretimi ve patenti bir baĢka firmaya ait
olmakla birlikte orijinal iĢlemci ile uyumlu fakat çeĢitli baĢka ek özelliklere de sahip türev
15
ürünler (derivatives) üretebilmektedir. Neredeyse her mikroiĢlemci (CPU) üreticisinin
ürettiği birkaç mikrodenetleyici bulunmaktadır. Her firma ürettiği ürününe isim ve parça
numarası verirken kendine özgü birtakım rakamlar ve karakterler kullanır. Bu rakam ve
karakterler, ürünler hakkında kısa bilgiler de verir.
Bir uygulamaya baĢlamadan önce hangi firmanın ürününün ve kaç numaralı
denetleyicinin kullanılacağına karar vermek gerekir. Bunun için mikrodenetleyici gerektiren
uygulamada hangi özelliklerin olması gerektiğinin önceden bilinmesi gerekir. Bu özellikler
Ģu Ģekilde sıralanır:
Programlanabilir dijital paralel giriĢ çıkıĢ
Programlanabilir analog giriĢ çıkıĢ
Seri giriĢ çıkıĢ (senkron, asenkron ve cihaz denetimi gibi)
Motor veya servo kontrol için pals sinyali çıkıĢı
Harici giriĢ vasıtasıyla kesme
Zamanlayıcı (Timer) vasıtası ile kesme
Harici bellek ara birimi
Harici bus ara birimi(PC ISA gibi)
Dâhilî bellek tipi seçenekleri(ROM, EPROM, PROM, EEPROM, Flash ROM)
Dâhilî RAM seçeneği
Kayan nokta hesaplaması
Ağırlıklı olarak bu materyade kullanılacak mikrodenetleyici, Microchip® firmasının
8-bit‟lik veri ve adres yoluna sahip, 14 bit‟lik program kodu olan PIC16F84A modeli
olacaktır.
Tablo 1.2‟de bazı mikrodenetleyiciler için teknik özellikler listelenmiĢtir. Bu
özelliklere göre ihtiyaca uygun mikrodenetleyici seçilebilir.
Teknik Özellikler PIC Ailesi
16F84A 16F628A 16F887 18F2450
Mimarisi 8-bit 8-bit 8-bit 8-bit
Program Belleği
Türü
Enhanced Flash
ROM
Enhanced Flash
ROM Enhanced Flash
ROM Enhanced Flash
ROM Komut Uzunluğu
14 bit 14 bit 14 bit 16 bit
Program Belleği
Kapasitesi 1 KWord 2 KWord 8 KWord 16 KByte – 8
KWord
EEPROM Veri
Belleği Kapasitesi 64 Byte 128 Byte 256 Byte -
SRAM Veri
Belleği Kapasitesi 68 Byte 224 Byte 368 Byte 768* Byte
I/O sayısı 13 16 35 23
ADC Bit
Uzunluğu Yok Yok 10 bit 10 bit
16
ADC Kanal Sayısı Yok Yok 14 10
Zamanlayıcı /
WDT 1 adet 8 bit
2 adet 8 bit
1 adet 16 bit
2 adet 8 bit,
1 adet 16 bit
2 adet 8 bit,
1 adet 16 bit
Seri HaberleĢme
- USART
EUSART
RS-485
RS-232
LIN 2.0
SPI ve I2C™
destekli MSSP
modülü
EUSART
LIN
USB
Kesme Kaynakları 4 10 13 13
ÇalıĢma Voltajı
Aralığı 2.0 – 5.0V 3.0 – 5.5V 2.0 – 5.5V 2.0 – 5.5V
KarĢılaĢtırıcılar Yok 2 2 2
Capture/Compare/
PWM Modülleri Yok 1 2 1
Maksimum
ÇalıĢma Frekansı 20 MHz 20 MHz 20 MHz 48 MHz
ICSP™ desteği Var Var Var Var
Paket Türleri 18 Pin DIP, SOIC
20 Pin SSOP
18 Pin DIP, SOIC
20 Pin SSOP
28 Pin QFN
40 Pin DIP
44 Pin QFN
44 Pin TQFP
28 Pin DIP
28 Pin SOIC
Tablo 1.2: Örnek osilatör seçenekleri
* 256 Byte‟lık kısmı USB modülüyle ortak olarak kullanılan çift yönlü eriĢim özelliklidir.
17
1.4. Mikrodenetleyici Yapısı
AĢağıda PIC 16F84A mikrodenetleyicisinin bacak yapısı görülmektedir.
ġekil 1.4: PIC16F84A’nın pin ve entegre görünüĢü
Bu bacakların (pinlerin) her birinin iĢlevi ve açıklaması kısaca aĢağıdaki gibidir:
Her bir ucun açıklanması:
OSC1/CLOCKIN : Osilatör giriĢi / External oscillator input
OSC2/CLKOUT : Osilatör çıkıĢı / OSC1 frekansının ¼ değerindeki çıkıĢ saat
darbesi ucu
MCLR ( inv ) : Reset giriĢi
RA0 – RA3 : GiriĢ çıkıĢ uçları
RA4/T0CKI : GiriĢ çıkıĢ ucu / TMR0 için saat darbesi giriĢ ucu
RB0/INT : GiriĢ çıkıĢ ucu / DıĢ kesmeler için giriĢ ucu
RB1-RB7 : GiriĢ çıkıĢ ucu
GND : Güç kaynağının eksi ( ) ucu
VCC : Güç kaynağının artı ( + ) ucu
PIC16F84A 18 uçlu 1 KWord flaĢ program belleği, 68 bayt RAM bellek, 64 bayt
EEPROM belleğe sahiptir. PIC16F84A‟ya program elektrik sinyalleri ile kolayca tekrar
tekrar yazılabilir veya silinebilir.
PIC RISC (Reduced Intruction Set Computer) denilen azaltılmıĢ komut sistemini
kullanmaktadır. Bu sistem sayesinde komutlar daha sade ve daha azdır. Bir PIC‟i
programlamak için 35 komut kullanılır. PIC‟de yöntem bir komutun genellikle bir clock ile
gerçekleĢtirilmesidir. Program belleği (memory) (ROM) ve data belleği (memory)
birbirinden bağımsızdır (Harward mimarisine göre). Bu hafıza yapısı ile her iki hafızada aynı
anda çalıĢtırılabilmekte ve böylece iĢletim çok daha hızlı olmaktadır.
PIC
16
F84
RA1RA2
RA0
RB7
RB6
RB5
RB4
RA3
RB0,INT
RB1
RB2
RB3
+Vcc
OSC1/CLOCKIN
OSC2/CLOCKOUT
GND
MCLR
RA4/T0CLKI
18
Data belleğinin geniĢliği yapıya göre değiĢiklik gösterir (Program belleği 14, veri
belleği 8 bit‟tir.). Çünkü 1 kelimenin makineye tanıtımı 14 bit ile gerçekleĢtirilir. Örneğin;
MOVLW B '01011111' komutunu makine 11000001011111 olarak tanır. Bunun 6 biti olan
110000 MOVLW komutunu ifade eder. 01011111 ise veri bölümünü tanımlar.
1.4.1. PIC16F84A’nın Besleme Bağlantısı
PIC‟in besleme gerilimleri 5 ve 14 numaralı pinlerden yapılır. Kullanılan osilatör
frekansına göre besleme gerilimi değiĢebilir. 4 Mhz‟lik osilatör kullanılmıĢsa besleme
gerilimi 2V - 5.5 V arasında uygulanabilir. Tüm frekanslar için en uygun besleme gerilim
değeri 5 V‟tur. 5 no.lu uç Vdd=+5V‟a, Vss ucu da Ģaseye bağlanır. PIC‟e ilk defa enerji
verildiğinde meydana gelebilecek gerilim dalgalanmalarını önlemek için Vdd ile Vss arasına
100 nF (0.1uF) değerinde dekuplaj kondansatörü bağlanmalıdır (Bkz. ġekil 5).
ġekil 1.5: PIC besleme gerilimi
1.4.2. PIC16F84A’nın Reset Bağlantısı
PIC16F84A‟nın reset ucu 4 no.lu pinde bulunan ayağıdır. PIC16F84A besleme
uçlarına gerilim uygulandığı anda “EEPROM” belleğindeki programın baĢlangıç adresinden
itibaren çalıĢmaya baĢlar. Programın herhangi bir anında 4 no.lu ucu, 0 V yapılınca
program baĢlangıç adresine geri döner. Mikrodenetleyicinin düzgün çalıĢması için
ayağına 10KΩ‟luk direnç bağlanmalıdır. Reset butonu bağlanmadığı zaman giriĢi
boĢta bırakılmamalıdır.
ġekil 1.6: PIC reset bağlantısı
19
Mikrodenetleyicilerin enerjisi kesildiğinde ve yeniden enerji verildiğinde program
baĢa döner. Buna Power-on Reset denir.
1.4.3. Saat Darbesi Düzeni ve Komut Süresi
PIC‟in program hafızasında bulunan komutların çalıĢması kare dalga (clock sinyali)
ile olur.
ġekil 1.7: PIC’in ÇalıĢabilmesi için OSC1 ucundan verilen kare dalga
OSC1 denilen 16 no.lu PIC16F84 bacağı kare dalganın uygulandığı yerdir. Bacak
yapısı görünüĢünde CLK IN olarak ifade edilmiĢtir. DıĢarıdan buraya uygulanacak kare
dalga OSC2/CLK OUT’tan dörde bölünmüĢ olarak (f/4) 15 numaralı bacaktan dıĢarı
alınabilir. Q1, Q2, Q3, Q4 olan bu bölümler de kare dalga Ģeklindedir. Program sayıcı (PC),
her Q bölümünde bir arttırılmakta ve komutlar program belleğinde iĢleme sokularak Q4‟te
sona ermektedir. Komutlar Q1‟den Q4‟e kadar çözülerek iĢlemin gerçekleĢmesi sağlanır.
Saat darbesi ve bunun düzeni ġekil 1.8‟de görülmektedir.
ġekil 1.8: Saat darbesi / komut örneği
1.4.4. Komut Örneği ve Bilgi ĠletiĢim Kanalı
4'e bölünmüĢ saat frekansının karĢılığı olan periyoda "instruction cycle" yani
komut süresi denir. Bu, bir komutun iĢlenmesi için gereken zamandır. 16F84A'da bu 4
Mhz‟de, 1 mikro saniye; 10 Mhz‟de ise 0,4 mikro saniyedir. Bu zaman, programlama
esnasında çok önemlidir ve komut sürelerinin toplamı ile zamanlar hesaplanır.
Bir komutun aktarılması ve iĢleyiĢi Ģu Ģekilde olmaktadır: Bir “komut döngüsü”
dört Q döngüsünden (Q1, Q2, Q3 ve Q4) oluĢmaktadır. Her bir komut etkin bir Ģekilde tek
döngüde gerçekleĢtirilmektedir. Eğer bir komut program sayacının değiĢmesine neden olursa
(Ör: GOTO komutu) bu durumda komutu tamamlamak için iki döngü gerekir.
20
ġekil 1.9: Bilgi iletiĢim kanalı (pipeline) yapısı
Bir alım döngüsü, Q1 dâhilinde artan program sayacı (PC) ile baĢlamaktadır.
GerçekleĢtirme döngüsünde, alınan komut, Q1 döngüsündeki “komut kaydı” içine
kapatılmaktadır. Bu komut daha sonra Q2, Q3 ve Q4 döngüleri esnasında çözülür ve
gerçekleĢtirilir. Veri hafızası Q2 esnasında okunur (bilgi okuması) ve Q4 esnasında yazılır
(yazılacak hedef).
1.4.5. I / O Port ( input / output)
I/O portları sinyalin giriĢ çıkıĢlarıdır. PIC16F84A‟ya ait I/O portlar ġekil 1.10‟da
görülmektedir. Buradan da anlaĢılacağı gibi PIC16F84A‟nın en fazla uçları I/O için ayrılmıĢ
olup program kontrolü için kullanılmaktadır.
ġekil 1.10: I/O portları
Execution
Clock
Clock
Fetch1 Execute1
Fetch2 Execute2
Fetch3 Execute3
Fetch4 Execute4
Fetch5
21
A portu 5 adettir (RA0, RA1, RA2, RA, RA4).
B portu 8 adettir (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7).
Toplam 13 adet giriĢ veya çıkıĢ olarak kullanılmak üzere uçları vardır.
1.4.6. Mikrodenetleyicilerde Sink ve Source Akımları
Mikrodenetleyici portlarına yük bağlantısında kullanılacak iki yöntem vardır. Bu
yöntemlerden biri çıkıĢ portu ile GND (devre Ģasesi) arasına yük bağlanmasıdır (Bkz. ġekil
1.11-a). Bu Ģekilde porttan çekilen akıma kaynak akımı (Source) denir. Kaynak akımı
20mA kadardır.
Diğer yöntemde ise yük, çıkıĢ portu ile VCC (genellikle +5V) arasına bağlanır (Bkz.
ġekil 1.11-b). Bu durumda kaynaktan porta ve oradan devre Ģasesine akım geçiĢi olur.
Besleme kaynağından çekilen bu akıma batarya akımı (Sink) denir ve 25mA kadardır.
ġekil 1.11: Mikrodenetleyici portlarında sink ve source akımları
Yaygın olarak ġekil 1.11-a‟da gösterilen bağlantı yöntemi kullanılmaktadır. Bu
durumda yükün aktif edilmesi için ilgili portun çıkıĢı lojik-1 yapılmalıdır. Diğer durumda ise
lojik-0 ile çıkıĢ aktif yapılır.
1.4.7. Osilatör Bağlantı Türleri
PIC16F84A dört değiĢik osilatör;
LP: DüĢük güç kristal ile (yaklaĢık 40KHz),
XT: Kristal / Rezanatör ile (0 – 10MHz),
HS: Yüksek hız kristali / Rezonatör (4 – 10MHz),
RC: Direnç / Kondansatör ile (0 – 4MHz) bağlantısıyla çalıĢabilir.
(a) (b)
Source
Akımı
Sink
Akımı
22
ġekil 1.12: Kristal çeĢitleri
XT, LP veya HS modeller kristal veya seramik rezanatör ile OSC1/CLKIN ve
OSC2/CLKOUT uçlarına bağlanır ki böylece osilatör sağlanmıĢ olur (ġekil 1.13).
ġekil 1.13. Rezanatör ve kristal bağlantıları
Mod Frekans OSC1 / C1 OSC2 / C2
LP 32kHz 68-100pF 68-100pF
200kHz 15-33pF 15-33pF
XT
100kHz 100-150pF 100-150pF
2.0MHz 15-33pF 15-33pF
4.0MHz 15-33pF 15-33pF
HS 4.0MHz 15-33pF 15-33pF
10.0MHz 15-33pF 15-33pF
Tablo 1.3: Kristal osilatör için kondansatör seçimi
Zamanın çok hassas olmadığı durumlarda RC osilatör kullanılarak maliyet düĢürülür.
RC osilatör frekansı gerilim kaynağının özelliği, direncin ve kondansatörün değeri ve iĢlem
ortamının sıcaklığına bağlıdır. ġekil 1.14‟te bu osilatör tipinin PIC16F84A‟ya nasıl
OSC1
OSC2
PIC rezanatör
OSC1
OSC2
XTAL
C1
C2
PIC
Seramik rezanatör Krist ilatör DüĢük güç kristali
23
bağlandığı görülmektedir. Direnç değeri 4k-ohm‟un altında olan osilatör iĢlemlerinde
osilasyon sabit olmayabilir veya tamamen durabilir. Çok yüksek değerde dirençler ise
(yaklaĢık 1M-ohm), gürültü, nem ve sızmaya çok hassaslaĢır. Bu nedenle direnç değeri 5 k-
ohm ve 100k-ohm arasında kullanılmalıdır.
ġekil 1.14: RC osilatör
Her ne kadar osilatör dıĢ bir kondansatörle çalıĢmıyor olsa bile gürültü ve sabitliliği
sağlamak için 20 pF değerinin üzerindeki değerde bir kondansatörün kullanılması tavsiye
edilir.
1.4.8. W Yazmacı (Egister)
W (working) yazmacı bilgilerin geçici olarak depolandığı ve bilgilerin aktarılmasında
kullanılan bir kısımdır. Direkt olarak ulaĢılamaz. PIC‟te yapılan tüm iĢlemler ve atamalar
bunun üzerinden yapılmak zorundadır.
ġekil 1.15: W Yazmacı (register)
Örneğin; M1‟deki data bilgileri M2‟ye aktarılmak istnirse önce M1‟deki bilgiler W
yazmacına (register), daha sonrada geçici alanda bulunan (w registeri) bu bilgiler M2
kısmına aktarılır. M1‟deki bilgiler M2‟ye direkt olarak aktarılamaz mutlaka W yazmacı
kullanılmak zorundadır.
memory
M1
M2
0 0 1 1 1 0 1 0
0 0 1 1 1 0 1 0
W register
OSC1
OSC2
PIC
Rext
Cext
VDD
Tavsiye edilen değerler
5k < Direnç < 100k
Kondansatör > 20pF
24
1.4.9. Program Belleği (Flash ROM)
Assembly de kullanılan komutlarla yazılmıĢ programın yüklendiği alandır. Bu alan
PIC16F84A‟da Flash ROM program yazıcısını kullanarak ROM‟a rahatlıkla program
yazılabilir çünkü elektrik dalgasıyla yazılıp silinebilme özelliği vardır. Mikrodenetleyici
uygulayacağı komutları ve iĢlem sırasını bunun ilgili adreslerine bakarak uygular. Ġlgili
adresler ise PC (Program Counter) program sayıcında saklanır (Program belleğinin geniĢliği
14 bittir. PIC16F84A program belleğinin 1024 (1K) alanı 000‟dan 3FF kadar olan adrestedir
ve 3FF‟de 1024 demektir.).
ġekil 1.16: ROM belleğin haritası
1.4.10. Veri Belleği (Data Memory)
Veri belleği genellikle kullanıcı tanımlı değiĢkenlerin ve verilerin saklandığı 64
byte‟lık EEPROM ve iki kısımdan meydana gelen 68 byte‟lık SRAM bölgesinden
oluĢmaktadır. SRAM‟in her bir kısmına bank adı verilir. Bunlar bank 0 ve bank 1‟dir. Bank
1 dediğimiz ilk bölüm özel fonksiyon (Special Function Register – SFR) yazmaç alanıdır.
Bank 0 ise ikinci bölümdür ve buna da genel amaçlı yazmaç (General Purpose Register –
GPR) denir. SFR özel fonksiyonları kontrol eden kayıtlara aittir. Bunların seçimleri için
kontrol bitleri gerekmektedir. ĠĢte bu kontrol bitleri STATUS yazmacında bulunmaktadır.
ġekil 1.17‟de veri belleğinin harita organizasyonu gösterilmiĢtir.
Veri belleğinin genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki bölümü
vardır. Bank0‟ı seçmek için RP0 bitini -ki bu STATUS‟un 5. biti oluyor- temizlemek
gerekir. Aynı bitin kurulması (set) ile de BANK 1 seçilmiĢ olur. Her iki bankın ilk on
ikisinin yerleĢimi özel fonksiyon kaydı için ayrılmıĢtır. Kalanı ise statik RAM olarak genel
amaçlı kayıtları yürütmektedir.
0
4
5
1023
Bellek adreslerinin
hexedecimal olarak
gösterilmesi
Bellek adreslerinin
decimal olarak
gösterilmesi
14 bit uzunluğundaki komutların
depolandığı alan
RESET 000
004
005
3FF
Program memory
INTERRUPT POINT
PROGRAM AREA
25
ġekil 1.17. PIC16F84A’nın kayıt dosya haritası
INDIRECT ADDR
TMR0
PCL
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
GPR Work memory
68 byte
INDIRECT ADDR
OPTION
PCL
STATUS
FSR
TRISA
TRISB
EECON1
EECON2
PCLATH
INTCON
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
4F
80
81
82
83
84
85
86
87
88
89
8A
8B
Bank 1 Bank 0
RP1 RP0
Bit7 Bit6 Bit5
STATUS register
Bit5 „0‟
Bit5 „1‟
26
DEĞERLER ETKĠNLĠĞĠ
“Geçmişten çok geleceği düşünmeliyiz çünkü orada yaşayacağız.”
Jackson BROWN
“Gelecek çalışkan olanlarındır.”
M. Kemal ATATÜRK
Yukarıdaki sözlerden hareketle “teknolojiyi insanlar ve ülke yararına kullanma”
konulu duygu ve düĢüncelerinizi anlatan bir kompozisyon yazınız.
DEĞERLER ETKĠNLĠĞĠ-1
27
UYGULAMA FAALĠYETĠ Mikrodenetleyicili bir kartın çalıĢması için gerekli minimum devre bağlantısının
gerçekleĢtiriniz.
DENEYĠN ADI PIC16F84A Mikrodenetleyicisinin program yazılarak
çalıĢtırılabilmesi için gerekli ön Ģartların sağlanması.
DENEYĠN AMACI Bir mikrodenetleyiciyi çalıĢır hâle getirebilmek için besleme,
reset, osilatör vb. devrelerini oluĢturmak.
ARAÇ GEREÇ Delikli pertinaks, PIC16F84A, kristal 4MHz, kondansatör
(2x22pF- 0,1μF), 18 bacaklı entegre soketi, iletken, lehim teli ve
havya.
ĠġLEM
BASAMAKLARI
1. 5x7 ebatlarında delikli pertinaks temin ediniz.
2. 18 bacaklı soketi pertinaksın uygun bir yerine monte ediniz.
3. Ġlk önce osilatör devre elemanlarını uygun Ģekilde
yerleĢtiriniz.
4. Daha sonra besleme kondansatörünü yerleĢtiriniz.
5. Kristal osilatörün PIC‟e yakın olmasına dikkat ediniz.
6. YerleĢtirilen elemanların yerleĢim Ģekline tümüyle bakınız.
Herhangi bir kusur yok ise elemanların bacaklarını bağlayınız.
7. Lehimleme yaparken lehimleme kurallarına dikkat ediniz.
ġEMA
VDD
PIC
MCLR
GND
OSC1
OSC2
PA0
PA1 PA2
PA3
PA4
Reset
10kΩ
PB7
PB6
PB5
PB4
PB0
PB1
PB2
PB3
VDD =5[V]
0,1[μF]
UYGULAMA FAALĠYETĠ
28
ÖLÇME VE DEĞERLENDĠRME AĢağıdaki soruları dikkatle okuyarak doğru seçeneği iĢaretleyiniz.
1. PIC16F84A mikrodenetleyicisinin kaç adet I/O portu vardır?
A) 8
B) 5
C) 24
D) 13
E) 18
2. PIC16F84A mikrodenetleyicisinin program bellek kapasitesi ne kadardır?
A) 1K Byte
B) 1K Word
C) 2K Byte
D) 2K Word
E) 8K Byte
3. PIC16F84A mikrodenetleyicisinde osilatör frekansı 4 [MHz] ise 1 clock süresi ne
kadardır?
A) 1ms
B) 4ms
C) 1us
D) 4us
E) 10ms
4. PIC16F84A mikrodenetleyicisi SRAM veri belleğinde, kaç adet bank vardır?
A) 1
B) 2
C) 3
D) 4
E) 5
5. PIC16F84A mikrodenetleyicisinde bulunan B portu kaç pinlidir?
A) 3
B) 5
C) 8
D) 16
E) 24
6. PIC16F84A mikrodenetleyicisinde bulunan A portu kaç pinlidir?
A) 5
B) 8
C) 12
D) 16
E) 24
ÖLÇME VE DEĞERLENDĠRME
29
7. PIC16F84A mikrodenetleyicisinde, çıkıĢ pinlerinden geçirilecek maksimum sink
akımı kaç mA‟dir?
A) 5
B) 10
C) 15
D) 20
E) 25
8. PIC16F84 mikrodenetleyicisinde, çıkıĢ pinlerinden geçirilecek maksimum source
akımı kaç mA‟dir?
A) 5
B) 10
C) 15
D) 20
E) 25
9. Status yazmacı Bank0 bölgesinde kaç numaralı adreste yer alır?
A) 0x02
B) 0x08
C) 0x03
D) 0x09
E) 0x83
10. PIC16F84A mikrodenetleyicisinde, besleme uçları hangi numaralı pinlerde doğru
olarak eĢleĢtirilmiĢtir?
A) 5 (GND)-14(VDD)
B) 5(VDD)-14(GND)
C) 4(GND)-13(VDD)
D) 15(GND)-16(VDD)
DEĞERLENDĠRME
Cevaplarınızı cevap anahtarıyla karĢılaĢtırınız. YanlıĢ cevap verdiğiniz ya da cevap
verirken tereddüt ettiğiniz sorularla ilgili konuları faaliyete geri dönerek tekrarlayınız.
Cevaplarınızın tümü doğru ise bir sonraki öğrenme faaliyetine geçiniz
30
ÖĞRENME FAALĠYETĠ–2
Mikrodenetleyiciyi programlayarak kullanılabilir hâle getirmek için gerekli adımları
öğreneceksiniz.
Asembly dilinde yazılmıĢ program kodlarının mikrodenetleyiciye yüklenmesine
kadar olan aĢamaları sıralayınız ve kullanılan programları inceleyerek
edindiğiniz bilgileri arkadaĢlarınızla tartıĢınız.
2. MĠKRODENETLEYĠCĠYE PROGRAM
YÜKLEME
Yazılan kodlar mikrodenetleyicilerin program belleğine hekzadesimal sayı biçiminde,
HEX denilen dosya türüyle kaydedilir. Assembly dili ya da üst seviye bir dilde yazılan
program kodlarının öncelikle ilgili mikrodenetleyicinin anlayacağı Ģekilde derlenmesi
gerekir. Derleme sonucunda .hex uzantılı dosya elde edilir. Bu süreç kısaca aĢağıda belirtilen
iĢlem adımları Ģeklinde gerçekleĢtirilir.
Program kod editörü (Ör: Notpad) Program.asm Derleyici (Compiler)
Program.hex Programlayıcıdan (HVP, LVP ya da ICSP tekniğiyle) PIC‟e
2.1. Kaynak Dosyanın (Hex Dosyası) Elde Edilmesi
Mikrodenetleyiciye assembly dilinde yazılmıĢ program kodlarının yüklenebilmesi için
önce program herhangi bir editörde yazılır. Yazılan programın çalıĢtığından emin olmak için
simülatör benzeri yazılımlarda denenir. Sonra uygun Ģekilde isim verilerek saklanır. ġekil
2.1‟de “Not Defteri”inde yazılan bir programın asm uzantılı olarak saklanması
görülmektedir.
ÖĞRENME FAALĠYETĠ–2
ARAġTIRMA
ÖĞRENME KAZANIMI
31
ġekil 2.1: Metin editöründe yazılan programın kaydedilmesi
Yazılan program Kaydet onay kutusu iĢaretlendiğinde C sabit diskinde YNPSNN.asm
dosyası olarak saklanır. Bu program doğrudan mikrodenetleyiciye yüklenemez. Assembly
diliyle yazılmıĢ programınızı makine diline (*.hex) çeviren assempler programının
kullanılması gerekir. Piyasada çok çeĢitli assembler programları mevcuttur. Kullanım
kolaylığından dolayı burada MPASM yazılımı tercih edilmiĢtir.
32
ġekil 2.2: Asembler programında çevrilecek programın bulunması
Makine diline çevrilecek YNPSNN.asm programı Browse düğmesinden dizin ve
dosya adı belirtilerek Source File Name kutucuğuna yazdırılır (ġekil 2.2).
ġekil 2.3: Assembler programının options ayarları
33
MPASM programının “Options – Tercihler” ayarları ġekil 2.3‟te görüldüğü gibi
seçildikten sonra “Assemble” (yeĢil çizgili) onay butonuna basılır. Eğer yazılmıĢ programda
herhangi bir hata yoksa ekranda yeĢil bantlı rapor penceresi çıkar (ġekil 2.3), kırmızı bantlı
rapor penceresi çıkmıĢ ise programda hata veya hatalar var demektir. Bu durumda tekrar
“Not Defteri”ne dönüp YNPSNN.asm programını yeniden açarak yazım hatalarının
düzeltilmesi gerekir.
“OK” onay düğmesi iĢaretlendiğinde MPASM assembleri, metin editöründe yazılmıĢ
YNPSNN.asm dosyasını makine diline çevirerek YNPSNN.hex dosyası ve çeĢitli rapor
dosyaları oluĢturur (ġekil 2.4).
ġekil 2.4: Assembler rapor penceresi
ġekil 2.5: Assembler programının oluĢturduğu dosyalar
34
Diğer rapor dosyalarından LST, program kodlarının bellekte yerleĢtikleri adresleri,
komutların hex kodları ve satır numaralarını, assembly dilinde yazılan programı listeler.
ERR rapor dosyası adından da anlaĢılacağı gibi hataların rapor edilmesinde kullanılır.
Hatalı satır numarası ve yapılan hatanın karĢılığı bu raporda sıralanır.
2.2. Yükleme Programını Kullanma
Mikrodenetleyicilerin programları farklı dillerde yazılabilir. YazılmıĢ program belli
derleme iĢlemlerinden geçirilerek entegreye yüklenir.
Mikrodenetleyiciye (16F84A) derlenmiĢ yani makine diline çevrilmiĢ program
kodlarını yüklemek için aracı program ve donanım kullanmak gerekir. Bu konuda firmaların
ürettiği Micropro, MPlab, PicEQ, Propic, ICProg, PICkit, vb. birçok program mevcuttur.
Bunlardan biri tercih edilerek kodlar mikrodenetleyiciye yüklenebilir. ġekil 2.6‟da
Microchip® firmasınca geliĢtirilen PICkit2 programlayıcısının donanımı için iki ayrı örnek
gösterilmiĢtir. Bu donanımlar USB arabirimi ile bilgisayara bağlanır.
(a) (b)
ġekil 2.6: Ġki farklı PICkit2 programlayıcı donanımı
ġekil 2.6-a‟daki programlayıcı farklı bacak sayılarında DIP paket türünde çeĢitli PIC
mikrodenetleyicilerini programlamak üzere geliĢtirilmiĢtir. Üzerinde ZIF soket vardır ve
programlanacak mikrodenetleyici bacak sayısına göre ZIF sokete uygun Ģekilde takılır.
Ayrıca üzerinde mikrodenetleyiciyi devreden çıkartmadan programlamayı sağlayan ICSP
(In-Circuit Software Programming – Devre Üzerinde Yazılım Programlama) soketi de
vardır. ġekil 2.6-b‟deki programlayıcı ise doğrudan ICSP programlama yapan pratik bir
programlayıcıdır. Kullanımı son derece kolaydır. Yalnızca programlanacak
mikrodenetleyicinin program yükleme bacaklarına uygun bağlantı yapmak gerekir.
35
ICSP ile PIC16F84A‟nın programlanması için gerekli bağlantı yolları ġekil 2.7‟de
gösterilmiĢtir.
(a) (b)
ġekil 2.7: PIC16F84A’nın ICSP ile programlanması için gerekli bağlantı
ICSP bağlantısının devre bordu üzerinde uygulaması ġekil 2.8‟de gösterilmiĢtir.
ġekil 2.8: PIC16F84A’nın ICSP yöntemiyle programlanması için gerekli bağlantı
Tercih edilen bağlantılardan biri yapıldıktan sonra PICkit2 programlayıcı yazılımı
yüklenir ve çalıĢtırılır. Windows iĢletim sistemiyle çalıĢıyorsanız kurulum sırasında .NET
Frame Work‟ün kurulumunu yapacak olan dotnetfx.exe dosyasını çalıĢtırmanız
36
gerekecektir. Internet bağlantılı bir bilgisayardan gerekli dosyalar indirilecektir. Ardından
PICkit2Setup.msi dosyasını çalıĢtırarak PICkit2 programlayıcı yazılımını kurabilirsiniz.
Uygun bağlantı yapıldıysa karĢınıza bağlantısını yaptığınız mikrodenetleyicinin gösterildiği
ekran gelir. Eğer mikrodenetleyici algılanamadıysa “Verify” butonuna tıklanarak algılanması
sağlanır. ġekil 2.9‟da gösterildiği üzere “Device” yazan kısımda PIC16F84A görülmektedir.
Programın File menüsünden yükleme yapacağınız .hex dosyası seçilir ve “Write” butonuna
tıklanarak mikrodenetleyiciye yazma iĢlemi gerçekleĢtirilir. Ġçinde yazılım olan bir
mikrodenetleyicinin içeriği “Erase” komutuyla temizlenir ve tüm Flash ROM program
adresleri “FF” bilgisiyle doldurulur.
ġekil 2.9: Microchip® firmasının PICkit2 programlayıcısının çalıĢtırılması
Bu program yardımıyla bir mikrodenetleyicinin içindeki programın alınması da
mümkündür. “Read Device + Export Hex File” butonu ile program belleğindeki bilgi dıĢarı
aktarılabilir. Ancak mikrodenetleyicilerde yazma koruması vardır. Eğer mikrodenetleyiciye
program yüklenirken yazma koruması aktfileĢtirilmiĢse içindeki program yazılım yoluyla
okunamaz.
37
2.3. Assembly Program Yazımı
Assembly dili, bir mikrodenetleyiciden beklenen veya denetleyicinin yapması istenen
iĢlemlerin belirli kurallara uygun olarak yazılmıĢ komutlar dizisidir. Assembly komutları
Ġngilizcedeki anlamlarının kısaltmalarından meydana gelmektedir. Bu komutlar genellikle
bir komutun yaptığı iĢi ifade eden Ġngilizce sözcüklerin baĢ harflerinden oluĢur. Örneğin,
BTFSC Bit Test F Skip if Clear [File kayıtçıdaki (kaydedici) bit‟i test et] anlamına
gelmektedir.
AĢağıda notepad editörü kullanılarak Assembly dilinde yazılmıĢ basit bir
program kodu görülmektedir.
INCLUDE “P16F84A.INC” ;Adresleri belirten dosyayı yükle (1)
LIST P=16F84A ;16F84A‟nın tanıtılması (2)
BSF STATUS,5 ;Bank 1‟e geç (3)
CLRF TRISB ;PORTB‟nin hepsini çıkıĢ yap (4)
BCF STATUS,5 ;Bank 0‟a geç (5)
CLRF PORTB ;PORTB‟nin bütün bitlerini 0 yap (6)
BSF PORTB,0 ;PORTB‟nin 0.bitini 1 yap(Led On) (7)
DEVAM GOTO DEVAM :Sonsuz döngü ile program sonlandırılır. (8)
END (9)
Bu program PORTB‟nin 0. bitini dolayısıyla B0 portunu lojik-1 yapar. Eğer bu pine
330 ohm direnç üzerinden bir LED bağlanırsa LED yanacaktır.
Bu programı daha ayrıntılı ĢaĢamaları aĢağıda verilmiĢtir:
PIC‟lerin RAM belleğindeki özel yazmaç adreslerinin tanımlamalarının
yapıldığı baĢlık dosyasıdır. Kullanılmaz ise programda her kullanılan özel isim
verilmiĢ yazmaç adreslerinin tanımlanması gerekir. BaĢlık dosyaları microchip
firması tarafından geliĢtirilmiĢtir ve “.INC” uzantılı olarak kullanılmaktadır.
Program yazarken en baĢa INCLUDE “P mikrodenetleyicinin kodu.INC yazmak
suretiyle tüm RAM bellekte bulunan adresleri tek satırda tanıtılabilir.
Hangi PIC çeĢidinin kullanılacağını tanımlar. LIST bir talimat dilidir ve
derleyici bildirisi olarak kullanılacak PIC özellikleri derleyiciye bildirilir.
Status özel yazmacının 5. bit‟i 1 yapılırsa Bank1‟e geçilir. Bank1‟de giriĢ çıkıĢ
portlarının tanımlamaları yapılır. BSF komutu ile STATUS‟un 5.bit‟i 1 yapılır.
Bank1‟deki özel yazmaç olan TRISB, 8 bit‟tir. Bu yazmacın her bir bit‟inin
içine 1 yazılırsa PORTB giriĢ, 0 yazılırsa çıkıĢ yapılır. Bir kısmı 1 ve diğerleri
0 yapılırsa 1 yapılanlar giriĢ, 0 yapılanlar da çıkıĢ olarak belirlenmiĢ olur. CLRF
komutu ile tümü 0 yapılır ve PORTB çıkıĢ yapılır. Böylece PORTB pinlerine
çıkıĢ elemanları bağlanabilir.
38
Programın çalıĢması Bank0‟da gerçekleĢir. Bank0‟a geçmek için yine STATUS
yazmacının 5.bit‟i 0 yapılmalıdır. BCF komutu ile bu yazmacın 5. bit‟i 0
yapılır.
Daha önceki çalıĢmalardan ya da bilgisayar portundan gelen bir sinyal ile
ledlerden biri yanık olabilir. CLRF komutu ile PORTB‟ye bağlı olan ledlerin
sönmesi sağlanır.
BSF komutu ile PORTB‟nin 0. bit‟ine bağlı olan led yanar konumuna getirilir.
GOTO komutu ile hedef etikete yönlendirilir. Böylece sonsuz bir döngü elde
edilir.
END komutu ile programın sonlandığı tanımlanır.
2.3.1. Sayıların Ġfade Edilmesi
Program yazarken kullanılacak sayı ve karakterleri ifade edebilmek için aĢağıya bir
tablo çıkarılmıĢtır. Bu tabloda desimal, hekzadesimal, oktal, binary ve ascii kodlarla ifade
biçimleri verilmiĢtir.
Kodlama Biçim Örnek
Desimal D „<digit>‟ D „125‟
Hekzadesimal H „<digit>‟
0x <digit>
H „9F‟
0x9F
Oktal O „<digit>‟ O „67‟
Binary B „<digit>‟ B „00111011‟
ASCII Kod A „<digit>‟ A „C‟
Tablo 2.1: MPASM için sayıların ifade edilmeleri
2.3.2. Programın Temel Ġfade ġekli
MPLAB editöründe assembly dili ile program yazarken uyulması gereken bazı
kurallar vardır. Bu kurallara dikkat edilirse program daha sonraki zamanlarda yazan kiĢi ya
da baĢka bir programcı tarafından incelendiğinde daha anlaĢılır ve açıklayıcı olacaktır.
Programın aĢağıda belirtilen biçimde 4 sütun olarak ve tab tuĢu ile ilerleyerek
yazılması tavsiye edilir.
Etiket Komut Adres, Veri Tanımlama
Etiket: Satırın en baĢında bulunur. Program bölümlerini birbirinden ayırmak için
kullanılabilir. Aynı zamanda GOTO komutu ile hedefte belirtilen etiketlere program
akıĢı yönlendirilebilir.
Komut: Belirtilen adresteki veriyi iĢler.
39
Adres, veri: Ram bellekteki özel fonksiyona sahip yazmaçlar ile programcının
kullanımına bırakılmıĢ yazmaçların adreslerinin yer aldığı sütundur. Aynı zamanda
yazmaçlara aktarılması istenilen verilerde bu sütunda bulunur. Adres, veri sütununa
yazılan etiket ismi, GOTO komutu ile aynı etiket isim satırına yönlendirilir.
Tanımlama: Tanımlama bölümüne hatırlatıcı açıklamaların yazıldığı bölümdür.
Hatırlatıcı açıklamaların olduğu bölüm “;” ile ayrılmalıdır.
Program yazarken dikkat edilmesi gereken noktalar aĢağıda verilmiĢtir:
Ġki alt çizgi ile baĢlamamalıdır.
Bir alt çizgi ve sonrasında rakam yazılmamalıdır (2 gibi).
Assembly dili komutları ve kullanıldığı kelimeler etiket olamaz.
Bir etiket en fazla 32 karakter olabilir.
Etiket yazımında büyük/küçük harf ayırımı vardır, büyük ve Türkçe olmayan
harflerin kullanılması tavsiye edilir.
Etiket yazılmayacağı zaman etiket sütunu boĢ bırakılmalıdır.
Açıklama yazılacağı zaman “;” den sonra yazılmalıdır.
Bir satırda en fazla 200 karakter olmalıdır.
Her paragraf bir veya daha fazla boĢlukla ayrılmalıdır.
Etiket Komut Adres, Veri Tanımlama
DEVAM
INCLUDE
LIST
BSF
CLRF
BCF
CLRF
BSF
GOTO
END
“P16F84A.INC
P=16F84A
STATUS,5
TRISB
STATUS,5
PORTB
PORTB,0
DEVAM
; Adresleri belirten dosyayı yükle
; 16F84‟ün tanıtımını yap
; Bank1‟e geç
; PORTB‟nin hepsini çıkıĢ yap
; Bank0‟a geç
; PORTB‟nin hepsini 0 yap
; PORTB‟nin 0. bitini1 yap(Led yak)
; Sonsuz döngü ile programı sonlandır
2.3.2.1. Noktalı virgül (;)
Noktalı virgül ile baĢlayan satırlar assembler derleyicisi tarafından derlenmez. Bu
satırlar programın baĢka programcılar tarafından da kolay bir Ģekilde anlaĢılmasını sağlar.
Program bölümlerini ayırmak için de kullanılabilir. Örneğin; baĢlık bölümü ile atama
bölümünü ayırmak istediğimizde satırın baĢına noktalı virgül yazarak ,“--------“ veya
“======” çizgileri ile ayırabiliriz.
40
2.3.2.2. Atama Ġfadesi (EQU)
EQU ifadesi Ġngilizcedeki “equal” kelimesinden türetilmiĢtir. Kullanılan
PIC16f84A‟nın RAM belleğindeki heksadesimal adresleri, belirlenen etiketlere atamak için
kullanılır.
Örnek:
STATUS EQU H „0003‟
2.3.2.3. Sabit Sayılar
PIC assembly dilinde sabit sayılar heksadesimal, decimal, binary ya da oktal olarak
ifade edilebilir. AĢağıda sabit sayıların nasıl ifade edileceği açıklanmıĢtır. Sabit sayılar
MOVLW, bazı mantıksal ve aritmetiksel iĢlemlerde kullanılır.
Örnek :
ADDLW B „00001111‟
2.3.2.4. ORG Ġfadesi
Ġngilizcedeki “origin” kelimesinden türetilmiĢ ve baĢlangıç noktası anlamına
gelmektedir. ORG ifadesi iki nedenle kullanılır;
Program komutlarının hangi adresten itibaren baĢladığını derleyiciye bildirmek için
kullanılır.
ORG 0x000
PIC 16F84A‟nın kesme (interrupt) alt programlarının baĢlangıç adresini belirlemede
kullanılır. Yani bir kesme olduğunda program döngüsünün belirtilen adresten itibaren
baĢlamasını bildirmek için kullanılır.
ORG 0x004
Kesme alt programlarının baĢlangıç
adresi
Ġlk program komutunun
bellek adresi
Binary sabit Komut
Etiket Heksadesimal
adres Atama
ifadesi
41
2.3.2.5. Sonlandırma
PIC 16F84A‟da duraklatma ya da aynı iĢlemi tekrar ettirme komutu yoktur. Program
istenilen bir satırda bekletilmek isteniyorsa o satırda program sonsuz bir döngüye sokulabilir.
Bunu yapabilmek için aĢağıdaki komut satırı kullanılabilir.
DEVAM GOTO DEVAM
END
Yukarıdaki sonsuz döngüde DEVAM etiketine assembler otomatik olarak bir adres
atar. GOTO DONGU komutu ile sürekli aynı adrese yönlendirme yapılarak sonsuz döngü
sağlanır. END ifadesi ise program komutlarının sona erdiğini derleyiciye bildirir. Her
program sonuna END ifadesi yazılarak bu satırdan sonra iĢlenecek komut bulunmadığı
belirtilmelidir. END ifadesi kullanılmadığında program derlenirken dosya sonunun
belirtilmediğini belirten bir hata mesajı verecektir.
2.3.2.5. Büyük/Küçük Harf Kullanımı
PIC assembly komutlarının büyük ya da küçük harfle yazılma zorunluluğu yoktur.
Programcı isterse büyük ya da küçük harf kullanabilir. Hatta programcı büyük/küçük harf
karıĢık olarak yazılmıĢ komutları da kullanabilir. Ancak bu etiketler için geçerli değildir.
2.3.2.6. PIC Assembly Komutlarının Yazım Formatı
PIC 16F84A‟nın programlanmasında toplam 35 adet komut kullanılabilir. Bu
komutların yazılıĢ biçimini dört gurup Ģeklinde ifade edilebilir.
Bayt iĢleyen komutlar
Bit iĢleyen komutlar
Sabitleri iĢleyen komutlar
Kontrol komutları
Assembly programlama komutları kullanılırken komutlarla beraber bazı semboller
kullanılacaktır.
Ġlgili sembolik değerler ve anlamları aĢağıda sıralanmıĢtır:
W : 8 bitlik çalıĢma saklayıcıyı (working register) belirtir.
F : Bellek haritasındaki özel veya genel amaçlı saklayıcıyı (file register) belirtir.
d :ĠĢlem sonucunun W saklayıcısına (d=0) mı, F saklayıcısına (d=1) mı
kaydedileceğini belirtir.
b : ĠĢlenecek F saklayıcısının ilgilenilen bit numarasını gösterir (3 bitlik ikili
sayıdır.).
k : 8 bitlik sabit değerleri ve dallanma ve alt programlar için 10 bitlik sabit
adresleri gösterir.
C : Elde bayrağını (toplama iĢleminden gelen elde ve çıkarma iĢleminden gelen
borç) belirtir.
42
DC : Ondalık elde bayrağı, düĢük anlamlı 4 bitten gelen elde ve borcu belirtir.
Z : Sıfır bayrağı, iĢlem sonucunun sıfır olduğunu gösterir.
Bayt iĢleyen komutlar
8 bit‟lik bir yazmaç üzerinde iĢlem yapan komutlardır. Yazmaç adı yerine bellek
adresi de kullanılabilir.
Örnek:
INCF 0x06, 0 ;0x06 adresindeki yazmaç içeriğini bir arttırır ve sonucu W
yazmacının içerisine kopyalar.
INCF PORTB, 0 ;PORTB yazmacının içeriğini bir arttırır ve sonucu W
yazmacına kopyalar.
INCF PORTB, 1 ;PORTB yazmacının içeriğini bir arttırır ve sonucu yine
kendi yazmacı içerisine kopyalar.
Bayt yönlendirmeli komutlarda hedef olarak belirtilen d ifadesi 0 ise W yazmacı, 1 ise
dosya yazmacı anlamını taĢımaktadır. Fakat d ifadesi yerine 0 ya da 1 yazmak akılda kalıcı
değildir. MPASM derleyicisi bu nedenle 0 yerine W,1 yerine de F ifadelerinin kullanımına
izin verir.
Bit iĢleyen komutlar
8 bit‟lik bir yazmacın sadece 1 bit‟i üzerinde iĢlem yapan komutlardır. f ifade yerine
heksadesimal adres ya da EQU komutu ile RAM bellekte tanımlanmıĢ adres kullanılır. b
ifade yerine 0–7 arasında heksadesimal bit değeri ya da EQU komutu ile tanımlanmıĢ adresi
olmalıdır.
Örnek:
BCF 0x03,5 ;Ram bellekteki 0x03 adresindeki yazmacın 5. bit‟ini
sıfırlar.
BSF STATUS, Bit5 ;Ram bellekteki STATUS etiketi ile EQU komutu
kullanılarak tanımlanmıĢ özel yazmacın yine bit 5 etiketi ile tanımlanmıĢ bit değerini 1
yapar.
Komut f, b
Dosya yazmacı 8 bit‟lik yazmaç adresi iĢaret edilir.
Bit tanımlama 0–7 arasında heksadesimal bir sayı ya da EQU ile tanımlı
etiket
Komut f, d
Dosya yazmacı 8 bit‟lik yazmac adresi iĢaret edilir.
Destination(Hedef) Komutun çalıĢtırılmasından sonra sonucun yazılacağı adres
d=0 => W yazmacına
d=1 => Dosya yazmacına
43
Sabit iĢleyen komutlar
8 bit ile ifade edilebilen sayılar üzerinde iĢlem yapan komutlardır.
Örnek :
ADDLW 0x0F ;W yazmacı ile 0x0F sabit heksadesimal sayısını
toplar.
MOVLW b „00001111‟ ;b „00001111‟ sabit binary sayısını W yazmacı içine
kopyalar.
Kontrol komutları
Örnek :
GOTO DEVAM ;Program akıĢı DEVAM isimli etikete yönlendirilir.
CALL TIMER ;Program akıĢı TIMER isimli etiketi ile belirlenen adresteki
alt programa yönlendirilir.
NOT: Program içerisinde yazılan etiketlere derleyicinin (assembler) otomatik adres
verdiğini unutmayınız. Bu nedenle etiket adreslerini program içerisinde tanımlamaya gerek
yoktur.
2.4. Basit Bir Programın Açıklanması
PIC programının içersinde akıĢ diyagramındaki görevleri yerine getirebilmesi için bazı
tanımlamaların ve yöntemlerin belirlenmesi gerekir. Buna göre aĢağıda bir programa ait
detaylar incelenecektir.
2.4.1. AkıĢ Diyagramı ve Program Listesi
Programın yazılımına geçmeden önce akıĢ diyagramının gereken iĢlemlere göre
tasarımı gerçekleĢtirilir. AkıĢ diyagramına göre program yazılır.
Komut k
Adres etiketi
Komut k
Sabit
0x0F, h „0F‟
b „00001111‟
d „15‟
44
2.4.1.1. AkıĢ Diyagramı
Genellikle program yazmadan önce akıĢ diyagramı çizmekte büyük yarar vardır. AkıĢ
diyagramları programcının ve daha sonra programı geliĢtirecek olanların anlayabileceği
tarzda olmalıdır. AĢağıda akıĢ diyagramı için kullanılan bazı standart semboller
verilmiĢtir.
AkıĢ diyagramı sembolleri
BaĢlangıç ve bitiĢ
ĠĢlem
Alt program
Karar
Hazırlık
Farklı akıĢ
diyagramlarına
bağlantı
45
Programın akıĢ diyagramı
ġekil 2.10: AkıĢ diyagramı
2.4.1.2. Program Listesi
AkıĢ diyagramına göre yazılmıĢ program aĢağıdadır.
INCLUDE ”P16F84.INC” ;Adresleri belirten dosyayı yükle (1)
LIST P=16F84 ;16F84 ün tanıtımını yap (2)
BSF STATUS,5 ;Bank 1‟ e geç (3)
CLRF TIRSB ;PORTB nin hepsini çıkıĢ yap (4)
BCF STATUS,5 ;Bank 0‟ a geç (5)
CLRF PORTB ;PORTB‟ nin hepsini 0 yap (6)
BSF PORTB,0 ;PortB‟ nin 0.bitini 1 yap ( LED yak ) (7)
DVM GOTO DVM ;Sonsuz döngü ile programı sonlandır (8)
END (9)
BAġLA
Adresleri yükle
PIC seçimi
Bank 1‟e geç
PORTB‟nin tümü
çıkıĢ
Bank 0‟a geç
PORTB‟nin
hepsi 0
Led yak
SON
INCLUDE
“P16F84A.INC”
LIST P=16F84A
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
CLRF PORTB
BSF PORTB,0
GOTO DEVAM
46
2.4.2. Yöntem ġartnamesi
Anlatılan örnek ve uygulamalarda kullanılan PIC tipi ya da kodu 16F84‟tür ayrıca
program yazılmaya baĢlanırken LIST ifadesi ile baĢlanmıĢtır.
LIST bir talimat dilidir ve LIST talimatı ile derleyiciye hangi PIC çeĢidini ve o PIC‟in
hangi özelliklerinin kullanılacağını bildirir ki derleyicide PIC‟ye uygun hex dosyası
oluĢturabilsin. LIST talimatı kullanımı aĢağıdaki biçimde olmalıdır.
List [<list_opsiyon>,…,<list_opsiyon>]
Örnek :
LIST P=16F84,F=INHX8M,R=DEC
2.4.2.1. List Talimatları
Program yazılırken bazı standartların programın en baĢında List komutu ile
beirlenmesi gerekir. Bu standartların özellikleri aĢağıdaki tabloda listelenmiĢtir.
Seçenek Varsayım Tanım
b=nnn 8 TAB boĢluk sayısının tanımı
c=nnn 132 Bir satırdaki karakter sayısının tanımı
f=<format> INHX8M Derleme sonrasında elde edilecek HEX uzantılı dosya
özellikleri
free FIXED Serbest form
fixed FIXED Sabit form
mm=ON|OFF ON Bellek haritasının listede belirlenmesi ON|OFF
n=nnn 60 Bir sayfadaki satır sayısının tanımı
p=<type> None ĠĢlemci tanımı ( Example: P=,16F84 )
r=<radix> HEX Numerik değer tipi <HEX,DEC,OCT>
st=ON|OFF ON Sembol tablosunun listeye yazılması ON|OFF
t=ON|OFF OFF Satır değiĢtirme < satır taĢması sonucu > ON|OFF
w=0|1|2 0 Assemblerin mesaj seviye tanımı
x=ON|OFF ON Makro kullanımı ON|OFF
Tablo 2.2: List opsiyonları
Not: „nnn‟ desimal sayılarla tanımlama eklenmesidir.
47
2.4.3. Portun Kurulumu
Mikrodenetleyicide bulunan portlar ihiyaca göre giriĢ ya da çıkıĢ olarak belirlenebilir.
Bu iĢlemlerin program içinde belirtilmesi gerekir.
2.4.3.1. Bank Seçimi
PIC‟i kullanmaya baĢlamadan önce portların kurulması (I/O belirlenmesi)
gerekmektedir.
ġekil 2.11: I/O Port’un kurulumu
ġekil 2.12: Bank seçimi
PIC‟in giriĢ/çıkıĢ (I/O) portlarının belirlendiği yazmaç (Special Function Register)
(Özel fonksiyon yazmacı) (TRISA(85h) ve TRISB (86h) olarak adlandırılır.
STATUS yazmacı
(Adres 03h)
INDIRCT ADDR
TMR0
PCL
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
GPR Work memory
68byte
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
4F
INDIRCT ADDR
TMR0
PCL
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
80
81
82
83
84
85
86
87
88
89
8A
8B
Bank 0 Bank 1
RP1 RP0
bit5= „1‟
bit7 bit6 bit5
bit5= „0‟
BAġLA
Bank 1 seçimi
PORT‟un
kurulumu
Bank 0 seçimi
SON
BSF STATUS,RP0
(BSF H „03‟,5)
Portlarının giriĢ ve çıkıĢ
olarak tanımlandığı alan
BCF STATUS,RP0
(BCF H „03‟,5)
48
TRIS yazmaçları Bank1‟dedir. Bank1‟e geçiĢ STATUS yardımı ile olur. Statusun
adresi de (03h)‟dir (Bkz. ġekil 2.12).
Örnek : PORTB nin hepsi çıkıĢ olursa
Form1 CLRF TRISB
(CLRF H „86‟
Form2 MOVLW H „00‟ ; W yazmacına << 00h
MOVWF TRISB ; TRISB << W yazmacı
(MOVWF H „86‟)
ġekil 2.13: PORTB’ nin hepsi çıkıĢ
Örnek : PORTB‟nin hepsi giriĢ
Form1 MOVLW H „FF‟ ; W yazmacı << FFh
MOVWF TRISB ; TRISB << W yazmacı
(MOVWF H „86‟)
Form2 MOVLW B „11111111‟ ; W yazmacı << FFh
MOVWF TRISB ; TRISB << W yazmacı
(MOVWF H „86‟)
ġekil 2.14: PORTB’ nin hepsi giriĢ
1 1 1 1 1 1 1 1
7 6 5 4 3 2 1 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
MSB LSB
IN IN IN IN IN IN IN IN
TRISB
H „86‟
PORTB
H „06‟
0 0 0 0 0 0 0 0
7 6 5 4 3 2 1 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
MSB LSB
OUT OUT OUT OUT OUT OUT OUT OUT
TRISB
H „86‟
PORTB
H „06‟
49
Örnek : PORTB bit0, bit2, bit4, bit5, bit6, bit7 >> ÇIKIġ
Bit1, bit3 >> GĠRĠġ
Form1 MOVLW H „0A‟ ; W yazmacı << 0Ah
MOVWF TRISB ; TRISB << W yazmacı
(MOVWF H „86‟)
Form2 MOVLW B „00001010‟ ; W yazmacı << 0Ah
MOVWF TRISB ; TRISB << W yazmacı
(MOVWF H „86‟)
ġekil 2.15: PORTB’ de farklı giriĢ çıkıĢlar
Örnek : PORTA‟nın hepsi giriĢ
Form1 MOVLW H „1F‟ ; W yazmacı << 1Fh
MOVWF TRISA ; TRISA << W yazmacı
(MOVWF H „85‟)
Form2 MOVLW B „11111‟ ; W yazmacı << 1Fh
MOVWF TRISB ; TRISA << W yazmacı
(MOVWF H „85‟)
ġekil 2.16: PORTA’ nın hepsi giriĢ
PICF84
Not available 1 1 1 1 1
4 3 2 1 0
PIC16F84
Not available
RA4 RA3 RA2 RA1 RA0
MSB LSB
IN IN IN IN IN
TRISA
H „85‟
PORTA
H „05‟
0 0 0 0 1 0 1 0
7 6 5 4 3 2 1 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
MSB LSB
OUT OUT OUT OUT IN OUT IN OUT
TRISB
H „86‟
PORTB
H „06‟
50
2.4.4: Ledlerin Yakılması
PORTB‟deki herhangi bir led‟in yakılmasına ait ana program aĢağıda verilmiĢtir.
Programın bu bölümüne ana program denir.
1 CLRF PORTB ; PORTB‟nin tamamı 0 >> Bütün Led‟ler sönük
2 BSF PORTB,0 ; PORTB‟nin 0.bitindeki Led yanar
3 (BSF H „06‟,0)
4 STOP GOTO STOP
5 END
2.4.4.1. CLRF PORTB
PORTB‟nin adresi 06h dir. CLRF komutu ile bu adresteki bilgiler 0 hâline getirilir.
ġekil 2.17: PORTB’ nin temizlenmesi
ġekil 2.18: PORTB >> 0 (Led sönük)
2.4.5. BSF PORTB,0 (BSF H ‘06’,0)
B portunun 0 çıkıĢının set edilmesi.
ġekil 2.19: Bit0’ın set (1) hâle getirilmesi
0 0 0 0 0 0 0 1
4 3 2 1 0 MSB LSB
PORTB
H „06‟
5 6 7
LED
ULN2803
300
'0' '1'
PORTB
+5V
PIC
16F
84
0 0 0 0 0 0 0 0
4 3 2 1 0 MSB LSB
PORTB
H „06‟
5 6 7
51
ġekil 2.19: PORTB >> 1 (Led yanık)
ġekil 2.18 ve19‟daki uygulamalarda port çıkıĢlarına ULN2803 tersleme iĢlemi
gerçekleĢtiren tampon entegresi bağlanmıĢtır.
2.5. Mikrodenetleyici Komutları
Mikrodeneteliyicide asembler komutları aĢaığıdaki tabloda listelenmiĢtir. Toplam 35
komutla bir çok iĢlemi gerçekleĢtirilebilir.
1 ADDLW 19 IORLW
2 ADDWF 20 IORWF
3 ANDLW 21 MOVF
4 ANDWF 22 MOVLW
5 BCF 23 MOVWF
6 BSF 24 NOP
7 BTFSC 25 RETFIE
8 BTFSS 26 RETLW k
9 CALL 27 RETURN
10 CLRF 28 RLF
11 CLRW 29 RRF
12 CLRWDT 30 SLEEP
13 COMF 31 SUBLW
14 DECF 32 SUBWF
15 DECFSZ 33 SWAPF
16 GOTO 34 XORLW
17 INCF 35 XORWF
18 INCFSZ
Tablo 2.3. PIC komutları
LED
ULN2803
300
'1' '0'
PORTB
+5V
PIC
16F
84
52
DEĞERLER ETKĠNLĠĞĠ
“Yalnız bugün için bir program olacak, her saat ne yapacağımı yazacağım, belki tamamiyle
tatbik edemeyeceksem bile yine program yapacağım, iki afetten beni kurtarır; acele ve
kararsızlık.”
Konfüçyüs
Acele ve kararsızlıktan kurtulmanın bize neler kazandıracağını sınıf
arkadaĢlarınız ile paylaĢınız.
DEĞERLER ETKĠNLĠĞĠ-2
53
UYGULAMA FAALĠYETĠ
Uygulama: Mikrodenetleyici programlamak için gerekli yazılımların kurulması.
ĠĢlem Basamakları Öneriler
MPLAB v7.30b programını
bilgisayarınıza kurunuz.
MPLAB programını kurulurken yeni
baĢlayanlar için complate (tamamı)
seçeneğini tercih etmelidir.
ġekil 2.10‟da gösterilen program
kodunu not defterinde yazınız.
Yazdığınız program dosyasını özel ve
Türkçe‟ye özgü karakterler kullanmadan
uzantısı “asm” olacak Ģekilde
kaydetmelisiniz.
Yazdığınız programı MPLAB v7.30‟u
kullanarak açınız ve derleme iĢlemini
yapınız.
Öncelikle MPLAB IDE programının
ConfigureSelect Device menüsünden
mikrodenetleyici modeli olarak
PIC16F84A‟yı seçmelisiniz.
Yazdığınız programı derleyerek hex
dosyanızı oluĢturnuz.
PICkit2 programlayıcı yazılımını
yükleyiniz.
PICkit2 donanımını USB kablosunu
kullanarak bilgisayarınıza
bağlamalısınız.
PIC16F84A‟yı elektronik devre boardu
üzerine takınız ve PICkit2
programlayıcı donanımının ICSP
bağlantısını gerçekleĢtiriniz.
Mikrodenetleyicinin PORTB.0 pinine
(RB6) direnç ve LED bağlayınız.
Direnç değeri 220-470 ohm arasında
seçebilirsiniz.
Derlemesi yapılmıĢ olan hex kodunu
PICkit2 programlayıcısıyla
mikrodenetleyiciye yükleyiniz.
UYGULAMA FAALĠYETĠ
54
ÖLÇME VE DEĞERLENDĠRME AĢağıdaki soruları dikkatle okuyarak doğru seçeneği iĢaretleyiniz.
1. Program içinde kullanılan özel fonksiyon yazmaç isimlerinin tanıtıldığı dosyayı
çağıran komut hangisidir?
A) List
B) Status
C) Include
D) Debug
E) Org
2. PIC16F84A mikrodenetleyicisinde bank 0‟dan bank 1‟e geçmek için kullanılabilecek
komut hangisidir?
A) bcf status,5
B) bsf status,5
C) bcf status,6
D) bsf trisa
E) bcf trisb
3. Portb‟nin tamamını çıkıĢ yapmak için hangi komut uygulanmalıdır?
A) clrf status,5
B) clrf trisb
C) clrf portb
D) bsf trisa
E) clrf trisa
4. ĠĢlemci tanıtımı, nümerik değer tipi gibi tanımlamaların yapıldığı bildirim hangisidir?
A) list
B) include
C) equ
D) org
E) ;
5. Yazdığınız programı derledikten sonra derleyicide özel yazmaçların tanıtılmadığını
belirtiyorsa ne tür bir hata yapılmıĢtır?
A) List talimatı yazılmamıĢtır.
B) GiriĢ çıkıĢ tanımlaması yapılmamıĢtır.
C) Ana program yazılmamıĢtır.
D) Include dosyası kullanılmamıĢtır.
E) Equ ile kütükler (yazmaçlar) tanımlanmamıĢtır.
ÖLÇME VE DEĞERLENDĠRME
55
6. Derleme iĢleminin sonunda elde edilen hekzadesimal dosya türü nedir?
A) Eror
B) Hex
C) Cod
D) Asm
E) LST
7. AĢağıdaki sembollerden sonra yazılan yazı, rakam, sembol ve komutlar derleyici
tarafından derlenmez?
A) ; B) : C) ! D) "
E) ?
8. AĢağıdakilerden hangisi bank değiĢtirmek için kullanılan yazmacın bitleridir?
A) Status 5,6
B) TrisA 5,6
C) Intcon 3,4
D) List 5,6
E) TrisB 5,6
9. Sabit bir sayıyı HAKAN etiketli bir yazmaca kopyalamak için kullanılan komut seti
hangisidir?
A) MOVF HAKAN, 0
B) MOVWF HAKAN
C) MOVLW D „…‟
D) GOTO HAKAN
E) MOV HAKAN, W
10. Kesme alt programlarının baĢlangıç adresini belirlemede kullanılan komut
hangisidir?
A) call
B) goto
C) org
D) clrf
E) list
DEĞERLENDĠRME
Cevaplarınızı cevap anahtarı ile karĢılaĢtırınız. Doğru cevap sayınızı belirleyerek
kendinizi değerlendiriniz. YanlıĢ cevap verdiğiniz ya da cevap verirken tereddüt yaĢadığınız
sorularla ilgili konuları faaliyete geri dönerek tekrar inceleyiniz.
56
ÖĞRENME FAALĠYETĠ–3
Mikrodenetleyici ile yaygın olarak gerçekleĢtirilen kontrol iĢlemlerinden olan adım
(step) motorlar, adım motor sürücüleri ve amaca uygun adım motor ekipmanı seçimini
yapabileceksiniz.
Çevrenizde mikrodenetleyiciler ile kontrol edilen adım motor uygulamalarını
araĢtırınız. Edindiğiniz bilgileri arkadaĢlarınız ile paylaĢınız.
3. ADIM MOTORLAR VE KONTROL
SĠSTEMLERĠ
Mikrodenetleyici ile motor sürme uygulamaları endüstriyel ve ticari alanda çok
yaygındır. Rotasyonel mekanik sistemlerin belli bir açıyla dönmesinin istendiği yerlerde
adım motorlar tercih edilir. Parayla çalıĢan otomatlarda, vurmalı yazıcılarda (Ör: Navtex
meteorolojik bilgilendirme yazıcısı), tarayıcılarda, tıbbi cihazlarda, mekanik zoom özellikli
görüntüleme aygıtlarında, sıvı pompalarında, 3D yazıcılarda ve mini CNC tezgâhlarında bu
motorlardan yararlanılmaktadır.
3.1. Adım Motorlar
Fırçasız DA motorları sınıfına giren adım motorları, bünyesinde barındırdığı sargılara
sinyal uygulandığında belli değerde hareket eden dolayısıyla elektrik sinyallerini mekanik
güce çeviren elektromekanik elektrik makineleridir. Ayrıca adım motoru fırçasız, tam bir
turunu eĢit adımlara bölen senkronize elektrik motorudur. Sisteme uygun güçte seçildiğinde
motor pozisyonu geri besleme mekanizmasına gerek duymadan tam kontrol edilebilir.
Normalde adım motorları DC motorlara göre daha karmaĢık bir yapıya sahiptir. Bu
nedenle hız ve adım kontrolü istenmeyen yerlerde DA motorlar kullanılabilir. Yapılacak
uygulama motor seçiminde çok önemlidir çünkü kullanılacak motor seçilirken bazı kriterleri
bilinmelidir. Bir adım motoru için her sinyal uygulanıĢında dönme açısının kaç olduğu veya
toplam kaç sinyalde turunu tamamlayacağı önemli göstergelerdir.
Dönme açıları motorların üzerinde yazılıdır. Üzerinde açı değerleri yazılı olmayan
motorların bir tam turu kaç adımda tamamladığı el ile sayılır. 360 derecelik açı, bir tam
turdaki adım sayısına bölünür ve her bir adımın kaç derece olduğu tespit edilir. Bu değer
küçüldükçe motorun hassasiyeti artar. Adım açısı motorun yapısına bağlı olarak 90, 45, 18,
7.5, 1.80 ya da daha farklı açılarda olabilir.
ÖĞRENME FAALĠYETĠ–3
ARAġTIRMA
ÖĞRENME KAZANIMI
57
ġekil 3.1: Adım motor ve iç yapısı
Adım motorlar ġekil 3.1‟de gösterildiği üzere 8 stator (endüktör) sargısından oluĢur.
Ancak Ģekildeki adım motorun stator kutup sayısı 4‟tür. Adım motorların stator ve rotorları
elektromagnet özelliklidir. ġekil 3.1‟deki adım motorun rotor kutup sayısı 6‟dır ve dönme
hareketini nasıl kazandığı ġekil 3.2‟de gösterilmiĢtir. Stator sargılarına uygulanan elektrik
yönüne göre sargıların N (North - Kuzey) ve S (South-Güney) yönleri değiĢtirilir.
ġekil 3.2: Adım motor rotorunun manyetiklenmesi ve 15olik açılı hareketin elde edilmesi
Bazı adım motorlarında 5 ya da 6 kablo bulunur. 5 ve 6. kablolar ortak uçtur. Ortak uç
ölçü aletinin direnç kademesi kullanılarak tespit edilebilir. Bunun için ölçü aletinin
problarından biri ortak uca bağlıyken diğer prob kalan uçlar arasında değiĢtirildiğinde aynı
Stator sargıları
Stator kutupları
Yatak yuvası
Manyetik Ģaft
Rotor (endüvi)
58
direncin okunması gerekir. Ortak uçlara beslemenin (+) kutbu bağlanır. Her iki çeĢit
kablolamada da çalıĢma sistemi aynıdır. Ortak kablonun dıĢında kalan diğer kablo uçlarına
uygun sıralamada lojik-0 uygulayarak çalıĢtırılır. Sıralama hatalı yapıldığında motorda
titreme meydana gelir. ġekil 3.2‟de çalıĢma ilkesi gösterilen adım motorda her bir adım açısı
15odir. 1, 2, 3 ve 4 sargı uçlarına Ģekilde gösterilen darbelerin uygulama sırasına göre
motor saat yönü ya da saat yönünün tersine döndürülür.
Dönme açısı motorların üzerinde yazılıdır. Üzerinde açı değerleri yazılı olmayan
motorların bir tam turu kaç adımda tamamladığı el ile sayılır. 360 derecelik açı, bir tam
turdaki adım sayısına bölünür ve her bir adımın kaç derece olduğu tespit edilir. Bu değer
küçüldükçe motorun hassasiyeti artar. 360olik dönme hareketi için gerekli adım miktarı
statora sarılan sargıların faz sayısına ve motorun çıkıntılı rotor kutup sayısına bağlıdır. Rotor
kutuplarının nasıl göründüğü ve manyetize edildiği ġekil 3.3 ve 4‟te gösterilmiĢtir.
ġekil 3.3: Adım motor rotorunda kutuplar ve manyetik yönler
ġekil 3.4: Adım motor rotorunda S (mavi renkli olan) ve N (kırmızı renkli olan) kutuplarının
pozisyonları
59
Adım motorun dönme açısı Formül 3.1‟de gösterildiği Ģekilde hesaplanır.
Formül 3.1
Burada;
s = Adım motorun hareket açısı,
Ns = Statorun faz sayısı,
Nr = Rotorun çıkıntılı kutup sayısını ifade eder.
Formül 3.2
Adım motorların dönme açısı üzerlerinde yazmaktadır. Formül 3.1 pratikte
kullanılmaz. Tam bir tur dönme açısına bölündüğünde adım motorun toplam adım sayısı
hesaplanmıĢ olur (Formül 3.2).
Burada S toplam adım sayısını ifade etmektedir. Step motorlar, yarım adım modunda
çalıĢtıkları zaman hassaslıkları daha fazla artar. Örneğin; 600 adım/tur değerindeki bir adım
motor, yarım adım modunda çalıĢırken her turda 1200 adım yapar. Bu da 0.60ye göre daha
hassas olan 0.30lik bir adım açısı anlamına gelir.
3.2 Adım Motorların Etiket Değerlerinin Okunması
Adım motorlarının etiket değerlerine dikkat ederek çalıĢma özellikleri belirlenebilir.
Etiketler üzerinde genellikle her bir tetiklemeden çektikleri akım, hareket açısı, çalıĢma
voltajı gibi dikkat edilmesi gereken değerler bulunmaktadır. ġekil 3.5‟te 0.48 Amperlik ve
1.8olik bir adım motorun değerleri etiketi üzerinde gösterilmiĢtir.
ġekil 3.5: 1.8olik ve 0.48A’lik bir adım motoru etiketi
60
ġekil 3.6‟da hareket açısı 0.9o ve çektiği akım 1.7A olan bir adım motoru
gösterilmiĢtir.
ġekil 3.6: 0.9olik ve 1.7A’lik bir adım motoru etiketi
ġekil 3.7‟de ise hareket açısı 1.80 olan, 0.30 Newton.metre torklu, 8.1V DC gerilimle
çalıĢan ve sargı akımları 0.6A olan bir adım motor etiketi gösterilmiĢtir.
ġekil 3.7: 1.8olik ve 0.6A’lik bir adım motoru etiketi
3.3. Adım Motorların Sürülmesi
Adım motorlar pratikte tek baĢına besleme kaynağına bağlanarak kullanılamaz. Sargı
uçlarının sıralı Ģekilde tetiklenerek dönme hareketinin sürekli hâle getirilmesi gerekir. Bunun
için adım motor dürücü (step motor driver) devreleri kullanılır. Yüksek akım çeken adım
motor uygulamalarında transistörlü sürücü devreleri tercih edilirken daha zayıf akımlı
uygulamalarda adım motor sürücü entegreleri kullanılır.
Fotoğraf 3.1‟de 6 kablolu ve 4 sargı uçlu bir adım motoru gösterilmiĢtir.
61
Fotoğraf 3.1: 6 kablolu 4 sargı uçlu adım motoru
Adım motorları çoğunlukla 1, 2 ya da 1-2 fazlı olarak sürülür. ġekil 3.5‟te gösterilen
adım motorunun 1 ve 2 fazlı olarak sürülmesi Tablo 3.1‟de gösterilmiĢtir. ġekilde gösterilen
adım motorun kablo renkleri kırmızı (K), sarı (S), mavi (M), turuncu (T) Ģeklindedir.
Tablodan görüldüğü üzere renk sıraları T-K-M-S Ģeklindedir. Motorun siyah ve beyaz
kabloları ortak uçtur. Tabloda dikkat edilirse motor sargılarının tetiklenmesi için lojik-1
uygulandığı görülmektedir. Aslında lojik-0 uygulanması gerektiği söylenmiĢti. Burada lojik-
1 uygulanıyor gözükmesinin sebebi sürücü devrelerinin çalıĢma ilkesindendir. Diğer bir
ifadeyle tabloda gözüken lojik-1 değerleri transistör baz tetikleme gerilimlerini ifade
etmektedir.
Kablo renkleri Hareket
yönü
Kablo renkleri Hareket
yönü T K M S T K M S
1 0 0 0
Saat
yönü
0 0 0 1
Saat
yönünün
tersi
0 1 0 0 0 0 1 0
0 0 1 0 0 1 0 0
0 0 0 1 1 0 0 0
Tek fazlı sürme Tek fazlı sürme
Hareket
yönü
Kablo Renkleri Hareket
yönü K T S M K T S M
1 0 0 1
Saat
yönü
0 0 1 1
Saat
yönünün
tersi
1 1 0 0 0 1 1 0
0 1 1 0 1 1 0 0
0 0 1 1 1 0 0 1
Çift fazlı sürme Çift fazlı sürme
Tablo 3.1: Adım motorun hareket yönüne göre 1 ve 2 fazlı olarak sürülmesi
62
Kullanılan adım motoruna bağlı olarak besleme sıralamaları değiĢiklik gösterebilir.
Bunun için ürün etiket bilgisine baĢvurulmalıdır. ġekil 3.8‟de adım motorun transistörlü bir
sürücü devresi yardımıyla mikrodenetleyici ile kontrol devresi gösterilmiĢtir.
Devre Labcenter Electronic™ firmasının Proteus-ISIS® elektronik devre çizimi ve
simülasyonu programında gerçekleĢtirilmiĢtir. Devrede dikkat edildiği üzere adım motorların
transistör ile sürülmesinde kolektör ve emetör ayakları arasına ters yönlü diyot
bağlanmaktadır. Adım motorların sargısı birer bobin olarak davranır ve DC gerilimin ilk
uygulanmasında ters EMK‟den dolayı transistörün zarar görmesi durumu söz konusudur.
Bunu engellemek için transistörün C-E arasına ters diyot bağlanır. Ayrıca elektrik
kesildiğinde oluĢan zıt yönlü akım bu diyot üzerinden dolaĢtırılır.
Adım motorların bobin sargılarının iç direnci düĢük olduğundan tetikleme anında
transistörden fazla akım geçer. Devrede BD153 transistörü kullanılmıĢtır. Bu transistörler
sırtlarına soğutma levhası bağlanarak soğutulabilir.
ġekil 3.8: Adım motorun transistörlü olarak mikrodenetleyici ile sürülmesi
ġekil 3.9‟da gösterilen devrede ise sürücü entegresi kullanılmıĢtır. ULN2003 yüksek
akımlı darlington bağlı transistör dizisinden oluĢan 7 kanallı bir sürücü entegresidir. Adım
motorların sürülmesinde yaygın olarak tercih edilir. ġekildeki devrede entegre çıkıĢlarına
farklı olarak LED diyotlar bağlanmıĢtır. Böylece aktif olan çıkıĢ anlık olarak
izlenebilmektedir.
63
ġekil 3.9: Adım motorun ULN2003 sürücü entegresi yardımıyla sürülmesi
Piyasada ULN2003 entegresi kullanılarak gerçekleĢtirilmiĢ çok sayıda hazır sürücü
modülü vardır. Fotoğraf 3.2‟de PIC mikrodenetleyicileri tarafından da rahatlıkla
kullanılabilecek ULN2003 entegreli bir sürücü modülü görülmektedir.
Fotoğraf 3.2: ULN2003 adım motor sürücü modülü
ġekil 3.8 ve 9‟daki devrelerin mikrodenetleyici ile kontrol edilmesinde
Mikroelektronika™ firmasının yazılım editörü olan MikroC® programından yararlanılmıĢtır.
MikroC programı program yazımı açısından son derece esnek bir ortam sunmaktadır. Kendi
editörünce yazılan programlar derlendiğinde (Build ya da Ctrl+F9 komutu) otomatik olarak
asm ve hex dosyaları elde edilir.
Tablo 3.2‟de gösterilen program yardımıyla adım motor, PIC16F84A‟nın RB0 harici
kesme giriĢindeki buton yardımıyla tetiklenmekte ve kendi etrafında 360 derecelik tam tur
hareket yaptıktan sonra saat yönünün tersinde dönerek baĢlangıç noktasına dönmektedir.
64
Program kodunda görüldüğü üzere baĢlangıçta adım motoru kontrol etmek için
kullanılan PORTA‟nın tüm pinleri 0xFF yapılmak suretiyle set edilmektedir (Lojik 1
yapılmaktadır). Adım motorların tüm giriĢlerine lojik-1 ya da lojik-0 uygulandığında adım
motoru hareketsiz durur. unsigned sure=200; // Adımlar arası 200 mili saniyelik gecikme
unsigned sayac=0;
unsigned n=0;
void main()
TRISA = 0X00; // PORT A çıkıĢ
TRISB = 0X01; // PORT B çıkıĢ ancak RB0 portu giriĢ
PORTA = 0XFF; // PORT A tüm pinleri set ediliyor.
PORTB = 0X00;
OPTION_REG.INTEDG = 1; // Harici kesme giriĢi yükselen kenarda tetikleniyor.
INTCON.GIE=1; // Evrensel kesme aktif yapılıyor.
INTCON.INTE=1; // Harici kesme aktif yapılıyor.
void adim_motor()
PORTA = 0X01; // PORTA ilk önce 00000001 değeriyle yükleniyor.
VDelay_ms(sure);
do
PORTA = 0X01<<1; // PORTA çıkıĢı 1‟er 1‟er sola kaydırılıyor.
n++;
sayac++;
VDelay_ms(sure);
if(n==3) n=0; // 4 kutup da tetiklendikten sonra baĢa sarılıyor.
while(sayac<=200); //1,8 derecelik adım motoru için tam tur değeri (200)
sayac=0;
n=1;
Delay_ms(500);
PORTA = 0X08; // Adım motorun ters dönmesi için PORTA çıkıĢı 00001000 yapılıyor.
VDelay_ms(sure);
do
PORTA = 0X08>>1; // PORTA çıkıĢı 1‟er 1‟er sağa kaydırılıyor.
n++;
sayac++;
VDelay_ms(sure);
if(n==3) n=0; // 4 kutup da tetiklendikten sonra baĢa sarılıyor.
while(sayac<=200);
sayac=0;
PORTA=0XFF;
void interrupt() // harici kesme rutini çağrılıyor.
adim_motor(); // harici kesme oluĢtuğunda adim_motor() rutini çağrılıyor.
INTCON.INTF=0; // harici kesme bayrağı sıfırlanıyor.
Delay_ms(20);
Tablo 3.2: Adım motora 360 derece sağa ve sola doğru tek fazlı olarak hareket yaptıran
program kodu
65
Tablo 3.2‟deki uygulamada dikkat edildiği üzere adım motor kutupları tek fazlı olarak
tetiklenmektedir.
Tablo 3.3‟de MikroC program editöründe yazılmıĢ ve iki fazlı olarak tetikleme yapan
program kodu görülmektedir. Motor 180 derece sağa döndükten sonra 180 derece sola
döndürülmektedir. unsigned sure=100, sure2=50;
unsigned sayac=0;
unsigned n=0;
void main() TRISA = 0X00;
TRISB = 0X01;
PORTA = 0XFF;
PORTB = 0X00;
OPTION_REG.INTEDG = 1;
INTCON.GIE=1;
INTCON.INTE=1;
void mendil()
do
PORTA = 0X09;
sayac++;
VDelay_ms(sure2);
PORTA = 0X0C;
sayac++;
VDelay_ms(sure2);
PORTA = 0X06;
sayac++;
VDelay_ms(sure2);
PORTA = 0X03;
sayac++;
VDelay_ms(sure2);
while(sayac<100);
sayac=0;
Delay_ms(500);
PORTA=0XFF;
do
PORTA = 0X03<<n;
n++;
sayac++;
VDelay_ms(sure);
if(n==3)PORTA = 0X09;
if(n>=4) n=0;
while(sayac<100);
sayac=0;
Delay_ms(500);
PORTA=0XFF;
void interrupt()
mendil();
INTCON.INTF=0;
Delay_ms(20);
Tablo 3.3: Adım motora 180 derece sağa ve sola doğru çift fazlı olarak hareket yaptıran
program kodu
66
ġekil 3.10’da transistörlü adım motor devresinin PROTEUS-ARES®‟de
gerçekleĢtirilmiĢ baskı devresi gösterilmektedir.
ġekil 3.10: Transistörlü adım motor kontrol ve sürücü devresinin baskı Ģeması
Baskı Ģemadan anlaĢılacağı üzere transistör sırtları, soğutucu bağlanabilmesi için
dıĢarı yöne gelecek Ģekilde yerleĢtirilmiĢtir. Devre yaklaĢık 5x6 cm ebatlarına sığacak
Ģekilde tek katmanlı olarak tasarlanmıĢtır.
ġekil 3.11‟de devre elemanlarının montajlanmıĢ görüntüsü gösterilmektedir.
Fotoğraf 3.3: Transistörlü adım motor kontrol ve sürücü devresinin montajlı görüntüsü
Adım motor
kutup bağlantıları
Adım motor
(+) beslemesi (ortak
uç bağlantıları)
Mikrodenetleyici
+5V bağlantısı
67
DEĞERLER ETKĠNLĠĞĠ
“Her bakış bir gözlem, her gözlem bir düşünce, her düşünce bir bağlantı ve ilişki
doğurur, öyle ki her dikkatli bakışımızda, bir teori kurduğumuzu söyleyebiliriz.”
Wolfgang Van Goethe
Yukarıdaki sözden hareketle çevrenizi gözlemleyiniz ve oluĢan düĢünceleri
sınıf ortamında paylaĢınız.
DEĞERLER ETKĠNLĠĞĠ-3
68
UYGULAMA FAALĠYETĠ ġekil 3.8‟deki transistörlü adım motor sürücüsünün baskı devresini hazırlayarak
montajını gerçekleĢtiriniz
ĠĢlem Basamakları Öneriler
Devreyi besleme hatlarına dikkat ederek
Ģematik çizim ve simülasyon
programında çiziniz.
PROTEUS-ISIS programını
kullanabilirsiniz.
Çizdiğiniz devrenin aynı programda
5x10cm boyutlarını taĢmayacak baskı
devresini hazırlayınız.
Hazırladığınız baskı devrenin çıktısını
alıp 5x10cm boyutlarındaki bakır
plakete geçiriniz.
Baskı devre çıktısını parlak kâğıda
almalı ve bakır plakete kuru olarak
ütülemelisiniz.
Devre elemanlarını plakete
montajlayınız.
Mikrodenetleyiciyi doğrudan
lehimlemeyiniz. BaĢka uygulamalarda da
kullanılabileceğinden 18 bacaklı DIP
soket kullanabilirsiniz.
Adım motoru sırasına uygun Ģekilde
kart üzerinde gösterilen yerlere
montajlayınız.
Fotoğraf 3.1‟deki gibi 6 kutuplu bir adım
motor kullanıyorsanız adım motoru T-K-
M-S renk sırasında bağlamalısınız.
Kabloda soket varsa çıkartmalısınız.
Ortak uç olan siyah ve beyaz kabloları
ġekil 3.10‟da örneklendirilen devre kartı
üzerindeki adım motor (+) besleme
giriĢlerine bağlamalısınız.
UYGULAMA FAALĠYETĠ
69
ÖLÇME VE DEĞERLENDĠRME AĢağıdaki soruları dikkatle okuyarak doğru seçeneği iĢaretleyiniz.
1. Adım açısı 1.8o olan bir adım motorunun tam bir turda adım sayısı kaçtır?
A) 100
B) 150
C) 200
D) 250
E) 300
2. Tam bir turda adım sayısı 300 olan bir adım motorunun adım açısı kaç derecedir?
A) 1.2o
B) 2.4o
C) 3,6o
D) 4,8o
E) 6o
3. AĢağıdaki entegre devre paketlerinden hangisi adım motor sürmek için kullanılır?
A) TTL7408
B) ULN2003
C) DS18B20
D) UA741
E) TTL7400
4. Rotor kutup sayısı 50 ve stator faz sayısı 4 olan bir adım motorda adım açısı kaç
derecedir?
A) 0.30o
B) 0.60
C) 0.90
D) 1.8
E) 2.70
5. Etiketi üzerinde 1.7A ve 0.90 gözüken bir adım motorda aĢağıdakilerden hangisi ifade
edilmektedir?
A) Her bir sargıdan çekilen akım maksimum 0.9 Amper, adım açısı 1.7 derecedir.
B) Her bir sargıdan çekilen akım maksimum 17 Amper, adım açısı 9 derecedir.
C) Aynı anda aktif olan tüm sargılardan çekilebilen maksimum akım 1.7A, adım açısı
0.9 derecedir.
D) Aynı anda aktif olan tüm sargılardan çekilebilen maksimum akım 0.9 Amper, adım
açısı 1.7 derecedir.
E) Her bir sargıdan çekilen akım maksimum 1.7 Amper, adım açısı 0.9 derecedir.
ÖLÇME VE DEĞERLENDĠRME
70
DEĞERLENDĠRME
Cevaplarınızı cevap anahtarı ile karĢılaĢtırınız. Doğru cevap sayınızı belirleyerek
kendinizi değerlendiriniz. YanlıĢ cevap verdiğiniz ya da cevap verirken tereddüt yaĢadığınız
sorularla ilgili konuları faaliyete geri dönerek tekrar inceleyiniz. ġimdi Modül
Değerlendirme‟ye geçiniz.
71
MODÜL DEĞERLENDĠRME
KONTROL LĠSTESĠ
Bu faaliyet kapsamında aĢağıda listelenen davranıĢlardan kazandığınız becerileri
“Evet” ve “Hayır” kutucuklarına ( X ) iĢareti koyarak kontrol ediniz.
Değerlendirme Ölçütleri Evet Hayır
1. MikroiĢlemci ile mikrodenetleyici arasındaki farklılıkları
kavrayabildiniz mi?
2. PIC16F84A mikrodenetleyicisinin çalıĢma mantığını
kavrayabildiniz mi?
3. Mikrodenetleyici seçiminin nasıl yapılması gerektiğini
anlayabildiniz mi?
4. PIC16F84A mikrodenetleyicisinin temel özelliklerini
kavrayabildiniz mi?
5. PIC16F84A mikrodenetleyicisinin programlanabilmesi için
hangi koĢulların oluĢturulması gerektiğini anlayabildiniz mi?
6. MPLAB IDE ve PICkit2 programlarını bilgisayarınıza
yükleyebildiniz mi?
7. MPLAB IDE ve PICkit2 programlarını kullanarak
PIC16F84A‟ya program yükleyebildiniz mi?
8. Adım motorların yapısı ve çalıĢma ilkesini kavrayabildiniz mi?
9. Mikrodenetleyiciyi adım motor kontrolü yapacak Ģekilde
programlayabildiniz mi?
10. PIC16F84A kontrollü transistörlü adım motor sürücü devresi
kurabildiniz mi?
DEĞERLENDĠRME
Değerlendirme sonunda “Hayır” Ģeklindeki cevaplarınızı bir daha gözden geçiriniz.
Kendinizi yeterli görmüyorsanız öğrenme faaliyetlerini tekrar ediniz. Bir sonraki materyale
geçmek için öğretmeninize baĢvurunuz.
MODÜL DEĞERLENDĠRME
72
CEVAP ANAHTARLARI
ÖĞRENME FAALĠYETĠ–1’ĠN CEVAP ANAHTARI
1 D
2 B
3 C
4 B
5 C
6 A
7 E
8 D
9 C
10 A
ÖĞRENME FAALĠYETĠ–2’NĠN CEVAP ANAHTARI
1 C
2 B
3 B
4 A
5 D
6 B
7 A
8 A
9 B
10 C
ÖĞRENME FAALĠYETĠ–3’ÜN CEVAP ANAHTARI
1 C
2 A
3 B
4 D
5 E
CEVAP ANAHTARI