denĠzcĠlĠk - megep.meb.gov.tr denetleyici... · programlama dilleri geliĢtirilmiĢtir....

75
T.C. MĠLLÎ EĞĠTĠM BAKANLIĞI DENĠZCĠLĠK MĠKRODENETLEYĠCĠ DEVRELERĠ Ankara, 2017

Upload: others

Post on 28-Oct-2019

30 views

Category:

Documents


0 download

TRANSCRIPT

T.C.

MĠLLÎ EĞĠTĠM BAKANLIĞI

DENĠZCĠLĠK

MĠKRODENETLEYĠCĠ DEVRELERĠ

Ankara, 2017

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

iv

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Ġġ

6

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

73

KAYNAKÇA

Teramoto Koshi, ĠĢbilen Turgay, GüneĢ Mustafa, PIC 16F84 Mikrodenetleyici

Temel Bilgileri, Programlanması ve Uygulamaları JICA 2.Baskı, Ġzmir,

2004.

AltınbaĢak Orhan, Mikrodenetleyiciler ve PIC programlama Eylül Ġstanbul,

2000.

KAYNAKÇA