Download as pdf or txt
Download as pdf or txt
You are on page 1of 134

RFPIC M KRODENETLEY C VE UYGULAMALARI

Mustafa Burak VEZ

YKSEK L SANS TEZ ELEKTR K ELEKTRON K MHEND SL

GAZ N VERS TES FEN B L MLER ENST TS

EK M 2007 ANKARA

ii

Kabul ve onay sayfas rnei Mustafa Burak VEZ tarafndan hazrlanan RFPIC M KRODENETLEY C S ve UYGULAMALARI adl bu tezin Yksek Lisans tezi olarak uygun olduunu onaylarm.

Yrd.Do.Dr. Fadl EL KKOL Tez Danman, Elektrik Elektronik Mh.

Bu alma, jrimiz tarafndan oy birlii ile Elektrik Elektronik Mhendislii Anabilim Dalnda Yksek Lisans tezi olarak kabul edilmitir. Prof. Dr. enol BAKAYA Makine Mh., Gazi niversitesi Yrd.Do.Dr. Timur AYDEM R Elektrik Elektronik Mh., Gazi niversitesi Yrd.Do.Dr. Fadl EL KKOL Elektrik Elektronik Mh., Gazi niversitesi . . .

Tarih****:

17/10/2007

Bu tez ile G.. Fen Bilimleri Enstits Ynetim Kurulu Yksek Lisans / Doktora derecesini onamtr. Prof. Dr. Nermin ERTAN Fen Bilimleri Enstits Mdr
* Eer ikinci danman var ise ayn tez danman gibi doldurulacaktr. ** Jri Bakannn ad yazlmaldr. *** Tez danmann ad yazlmaldr. **** Savunma tarihi yazlacak.

iii

TEZ B LD R M Tez iindeki btn bilgilerin etik davran ve akademik kurallar erevesinde elde edilerek sunulduunu, ayrca tez yazm kurallarna uygun olarak hazrlanan bu almada orijinal olmayan her trl kaynaa eksiksiz atf yapldn bildiririm.

Mustafa Burak VEZ

iv

RFPIC M KRODENETLEY C ve UYGULAMALARI (Yksek Lisans Tezi) Mustafa Burak VEZ GAZ N VERS TES FEN B L MLER ENST TS Ekim 2007 ZET Bu almada mikrodenetleyicilerin, genel olarak zelliklede sonra PIC PIC

Mikrodenetleyicilerin

incelenmesinden

Mikrodenetleyici ailesinin kronolojik gelimesi ve son yelerinden RFPIC, RFPIC alc ve verici modlleri ile RFPIC Gelitirme ve Uygulama Takm detayl olarak incelenmitir. ncelenen rnlerin salad faydalar, kullanm alanlar, getirdii yenilikler ve kolaylklar anlatlmtr. Bu rnlerin pratik uygulamasna rnek tekil etmesi iin 3 adet adm motorunun uzaktan, kablosuz olarak kontrol edilebilirlii gsterilmitir. Kontroln salanabilmesi iin gerekli yazlm gelitirilmi ve RFPIC zerine yklenmitir. Sz konusu kontrol, motor seimi ile saa ve sola dn kontroln kapsamaktadr. Bu pratik uygulamada incelenen RFPIC, RFPIC alc ve verici modlleri, RFPIC Gelitirme ve Uygulama Takm ile adm motorlarnn her birinin kullanm baarl bir ekilde gerekletirilmitir. Ayn zamanda bu motor kontrolnn kullanm alanna rnek olabilmesi iin kullanlan motor kontrol ve srme devrelerine ek olarak kamera kontrol devresi dizayn edilmi, bu devre aracl ile motorlarn zerine yerletirilen kameralarn farkl alanlar takip etmesi uzaktan kumanda ile kontrol edilmitir. Btn devreler birbiri ile uyumlu alr hale getirilmitir. Tm sistem alrken motorlar ayr ayr seilebilmekte, seilen motorun saa ve sola yn kontrol yaplabilmekte ve ayn zamanda seilen motorun zerindeki

kamerann ald grntnn monitrden izlenebilmesi salanmaktadr. almann zerindeki lme ve deneyler sonucunda yaplan almann baarl olduu grlmtr. Yaplan almalar ile ilgili

nemli hususlara sonu ve nerilerde deinilmitir.

Bilim Kodu :905.1.035 Anahtar Kelimeler :RFPIC, RFPIC12F675, RFPIC Uygulama Takm, adm motor kontrol, kamera kontrol Sayfa Adedi :120 Tez Yneticisi :Yrd.Do.Dr.Fadl EL KKOL

vi

RFPIC MICROCONTROLLER AND APPLICATIONS (M.Sc. Thesis) Mustafa Burak VEZ GAZI UNIVERSITY INSTITUTE OF SCIENCE AND TECHNOLOGY October 2007 ABSTRACT In this thesis microcontrollers and specially PIC controller and its chronologic progress have been examined. In the practical study the latest versions RFPIC, RFPIC receiver and transmitter modules and RFPIC development and application kit are presented in detail. The uses, novelty and simplicity were given. In the application three stepper motorsa re remotely wireless controlled. For realising the control, a software is prepared and loaded. The control covers the selection of wanted motor and their rightwise and leftwise rotation. In this work RFPIC receiver and transmitter modules and use of each motor are succesfully achieved. At the same time to model the place of the use and remote control of the motor, a camera control system is designed and used to observe the area swept by the cameras placed on the monitor bodies. The operational harmony is managed among the units used. The successful operation of the work observed using a series of tests and measurements. The important points dealing with the work conducted were also given in the Results and Suggestions.

Science Code Key Words Page Number Adviser

: 905.1.035 : RFPIC, RFPIC12F675, RFPIC development kit, stepper motor control, camera control :120 : Assoc.Prof.Dr. Fadl EL KKOL

vii

TEEKKR Bu almada bana katklarn esirgemeyen Sayn Hocam Yrd.Do. Dr. Fadl EL KKOL a, beni bugnlere getiren ve her zaman yanmda olan sevgili aileme, ok sevdiim deerli arkadam Tark KIRA a , teekkr bir bor bilirim. Yksek lisans programnda iki yl boyunca danmanlm yapan ve beklenmedik bir ekilde aramzdan ayrlan merhum Prof.Dr. Veysel S L ND R e Allahtan rahmet dilerim.

viii

NDEK LER Sayfa ZET ............................................................................................................. iv ABSTRACT ...vi TEEKKR ................................................................................................. vvi NDEK LER .............................................................................................vviii ZELGELER N L STES ............................................................................... xi EK LLER N L STES .................................................................................xixii RES MLER N L STES ................................................................................xxiii S MGELER VE KISALTMALAR................................................................... xiv 1. G R ..........................................................................................................1 2. M KRODENETLEY C LER..........................................................................3 2.1. PIC Mikrodenetleyicilerin Tercih Sebepleri ..........................................4 2.2. PIC in Kullanm in Gerekli Aamalar.. .. 4 3. RFPIC12F675 M KRODENETLEY C .........................................................7 3.1. Rfpic12f675 Mikrodenetleyicinin zellikleri..........................................7 3.2. Rfpic12f675 Mikrodenetleyicinin Baz Kullanm Alanlar ....................8 4. RFPIC DEVELOPMENT KIT 1 (RFPIC GEL T RME TAKIMI 1)...............9 4.1. Rfpic Gelitirme Takm erii ...........................................................10 4.2. Rfrxd0420 Alc Modl..................................................................... 10 4.2.1. Alc modl zellikleri . .................. 10 4.3. Rfpic12f675 Verici Modl...... .. 14
. .

4.3.1. Verici modl g beslemesi....... 15

ix

Sayfa 5. ALICI VE VER C MODLLER N UYGULAMAYA HAZIRLANMASI..... 17 5.1. Verici Modln Uygulamaya Hazrlanmas........ 17
..

5.2. Alc Modln Uygulamaya Hazrlanmas...... 18


..

6. ADIM KONTROLL MOTORLAR.... 20 6.1. Adm Motoru eitleri. 21


..

6.1.1. Deiken relktansl (dr) adm motoru.... 21


.

6.1.2. Sabit mknatsl (sm) adm motoru... 22 6.1.3. Kark yapl (hybrd) adm motoru........ 22
bb

6.1.4. Unpolar ve bpolar adm motorlar....... 23


..

6.2. Adm Motorlarna Ait nemli Parametreler... 23


. ..

6.2.1. znrlk.. 23
..

6.2.2. Doruluk..... 23
.....

6.2.3. Tek adm tepkisi.. 24


..

6.3. Adm Motorlarn Uyartm......... 24


..

6.3.1. Tek faz uyartm...... 24


...

6.3.2. ki faz uyartm...... 24


..

6.3.3. Yarm adm uyartm....... 24 6.4. Unpolar Adm Motoru Srme Teknii. 25 6.5. Adet Adm Motoru Seici Ve Src Devre Tasarm.......28 7. KAMERA SE C DEVRE TASARIMI.... 31
..

8. S STEM N B RLET R LMES .... 33


.

9. SONU VE NER LER.35 KAYNAKLAR... 37

Sayfa 38 EKLER.... EK-1. Uln 2003a transstor dizisi veri yapra.... 39 EK-2. MAX454 Grnt seici tmdevre veri yapra... 45 EK-3. RFPIC12F675 PIN balant tanmlar... 48 EK-4. RfRXd0420 pin balant tanmlar..49 EK-5. Alc ksm program kodlar.....52 EK-6. Verici ksm program kodlar...92
.

ZGEM 120

xi

ZELGELER N L STES izelge Sayfa

izelge 5.1. Alc Modl Anten Seim Tablosu .18 izelge 6.1. Adm Motoru Hareket Darbe Tablosu25

xii

EK LLER N L STES Sayfa

ekil

ekil 3.1. Rfpic12f675 pin gsterimi..7 ekil 4.1. Rfpic gelitirme takm....9 ekil 4.2. Rfrxd0420 alc modl.11 ekil 4.3. Alc modl devre emas.....12 ekil 4.4. Alc modl devre kart tasarm......13 ekil 4.5. Verici modl n ve arka yz grnm..14 ekil 4.6. Verici modl15 ekil 4.7. Verici modl devre emas...16 ekil 5.1. Verici modln pckt takmna taklmas17 ekil 5.2. Alc modln pckt takmna taklmas..19 ekil 6.1. Adm motorun blmleri20 ekil 6.2. Adm motorun i yaps.20 ekil 6.3. Unipolar adm motoru sr devresi...26 ekil 6.4. ULN2003 transistor dizisi..26 ekil 6.5. Adm motor hareket gsterimi..27 ekil 6.6. adet adm motoru src devre kart...28 ekil 7.1. Grnt seici devre emas31 ekil 8.1. Sistemin genel alma algoritmas.34

xiii

RES MLER N L STES Resim Sayfa

Resim 6.1. Adet Adm Motoru Src Devre Kart.... 29 Resim 6.2. Proteus Programnda Src Kart Tasarm... 30
...

Resim 7.1. Grnt Seici Devre Kart....32 Resim 8.1. Sistemin Birletirilmi Ve Kutulanm Durumu ......33

xiv

S MGELER VE KISALTMALAR Ksaltmalar ASK ASSEMBLER CPU DATA DEVELOPMENT KIT EEPROM FLASH MEMORY FSK ICE I/O MAX454 MPLAB PIC RAM RF RFPIC12F675 RFRXD0420 ROTOR STANDBY ULN2003 UHF 74LS08 Aklama Genlik Kaydrmal Modlasyon Programlama Dili Merkezi lem nitesi Veri Uygulama Takm Tekrar Yazlp Silinebilen Hafza Tekrar Yazlp Silinebilen Hafza Frekans Kaydrmal Modlasyon Devre Takipisi Giri / k Grnt Seici Tmdevresi PIC Yazlm ve Simlasyon Program evresel Birimler Kontrolcs Rasgele Eriimli Bellek Radyo Frekans Radyo Frekansl Verici Radyo Frekansl Alc Motorun Dnen Mil Blm Bekleme Transistor Dizisi Tmdevresi ok Yksek Frekans VE Kaps Dizisi Tmdevresi

1. G R Son yllarda teknolojinin gelimesi ile birlikte daha nceleri karmak ve yksek masrafl sistemler ile salanan kontrol ilemleri artk yerini daha basit ve ucuz sistemlere brakmtr. Bugn birok kontrol sisteminde mikrodenetleyiciler ihtiya duyulan ynetim ve kontrol ilemini salamaktadr. Mikrodenetleyiciler bir bilgisayar erisinde bulunmas gereken temel bileenlerden RAM, I/O nitelerinin tek bir tmdevre ierisinde retilmi biimidir. Bilgisayar teknolojisi gerektiren uygulamalarda kullanlmak zere tasarlanm olan mikrodenetleyiciler, mikroilemcilere gre ok daha basit ve ucuzdur. Gnmz mikrodenetleyicileri otomobillerde, kameralarda, cep telefonlarnda, oyuncaklarda, gvenlik sistemlerinde ve saylamayacak kadar ok alanda kullanlmaktadr. Gnmz mikrodenetleyicileri birok tmdevre reticisi tarafndan retilmektedir. Her firma rettii tmdevrelere farkl isimler vermektedir. rnein MICROCHIP firmas rettiklerine PIC adn verirken, Intel in rettii ve 1980lerin banda piyasaya srd denetleyiciye 8051 veya MCS-51 ad verilmiti [1]. Ayn zamanda retici firmalar rettikleri mikrodenetleyiciler iin kullanm alanlarnn geniletilmesini ve yaygnlatrlmasn salamak amacyla gelitirme ve deneme takmlar ve bunlara ait eitli yazlm programlar da gelitirerek kullanclara sunmutur. Bir uygulamaya balamadan nce hangi firmann rnnn kullanlacana daha sonrada hangi zellikteki mikrodenetleyicinin kullanlacana karar vermek gerekir. Bu kararn doru verilebilmesi iin uygulamann ihtiyalar doru bir ekilde tespit edilmeli ve buna gre seim yaplmaldr. Elbette kullanlacak mikrodenetleyicinin kolay bulunabilirlii ve fiyat da seimi etkileyen unsurlarn banda gelmektedir. Mikrodenetleyicilerin geliim srecinin son yllarnda ise, en ok tannan mikrodenetleyicilerden, PIC ailesinin, RFPIC mikrodenetleyicisi, MICROCHIP firmas tarafndan kullanclara sunulmutur. Yaplan bu alma iin MICROCHIP firmasndan RFPIC Development Kit 1 isimli gelitirme ve uygulama takm sipari edilmitir. RFPIC12F675 mikrodenetleyicisi ile birlikte retici firma MICROCHIP in bu mikrodenetleyici iin rettii RFPIC Development Kit 1

takmnn

incelenmesi ve bu birimlerin kullanmna ait incelemeler

yaplmtr. Yaplan incelemeler sonras RFPIC12F675 mikrodenetleyicisi ve RFPIC Development Kit 1 in kullanm alanlarna rnek tekil edebilmesi iin adm motor kontrol yaplmtr. Adm motorlar ile ilgili inceleme ve adm motoru sr teknii incelenmitir. Hazrlanan kontrol devresi ile adm motorunun kablosuz alc ve verici aracl ile hareket kontrol salanmtr. Motorlarn hareket ettirecei son eleman olarak ise kameralar kullanlmtr. Dizayn edilen kamera kontrol devresi ile motor kontrol devreleri birletirilmi ve kameral gvenlik sistemi modeli kullanm alanlarna rnek tekil edebilmesi iin oluturulmutur.

2. M KRODENETLEY C LER Neredeyse her mikroilemci reticisinin rettii birka mikrodenetleyicisi bulunmaktadr. Bu denetleyicilerin mimarileri arasnda ok kk farklar olmakla beraber aa yukar ayn ilemleri yapabilmektedirler. Her firma rettii tmdevreye bir isim ve zelliklerini birbirinden ayrmak iin de para numaras vermektedir. Buna rnek olarak bu almada kullanlacak olan PIC ailesinin adn ve para numaras olarak ta 12C508, 16F84, 12F675 gibi numaralar verebiliriz. Mikrodenetleyicilerin, mikroilemcilere gre baz avantajlar vardr. rnein mikroilemci kullanlan bir sistemde baz dier birimlere de ihtiya vardr, bunlar: CPU(MERKEZ LEM N TES ) , I/O (G R -IKI) birimi, BELLEK olarak rneklenebilir. Mikrodenetleyicili bir sistemde ise ihtiya duyulan birimler sadece bir mikrodenetleyici ve osilatr devresidir [2]. Dier ihtiya duyulan n bellek, giri-k birimleri mikrodenetleyicinin iinde bulunmaktadr. Mikrodenetleyiciler bir yazlm olmadan hibir ie yaramayan tmdevre dir. Mikrodenetleyiciyi kontrol eden bir yazlm olduunda ise kullanm alanlarn belirlemek hayal gcnze kalr. Bilgisayar denetimi gerektiren bir uygulamay gelitirirken seilecek mikrodenetleicinin tm istekleri yerine getirip getiremeyeceine ve maliyet hesabna dikkat etmek gerekir. Ayrca yaplacak uygulamann devresini oluturmadan yaplp nce seilen da ok mikrodenetleyicinin simlasyonunun yaplamayaca

nemlidir. Bu zellikleri dikkate aldmzda MICROCHIP firmasnn rettii PIC ailesini kullanmak aklc bir yol olarak ne kmaktadr. PIC ailesi mikrodenetleyiciler adn ngilizce, Peripheral Interface Controller cmlesindeki kelimelerin ba harflerinden alr. PIC in Trke alm: evresel Birimleri Denetleyen Arabirimdir [3]. Burada bahsedilen evresel

birimler bizim kontrol etmek istediimiz, motor, rle, lamba, sensr ve bunun gibi elemanlardr.

2.1. PIC Mikrodenetleyicilerin Tercih Sebepleri

Saysal uygulamalarnn hzl olmas Fiyatnn ucuz olmas ve kolay temin edilebilmesi Veri ve bellee hzl ulalabilmesi Herhangi bir ek bellek veya I/O birime ihtiya duymamas almas iin osilatr dnda bir ihtiyacnn olmamas Yksek frekanslarda alabilmesi Zor alma artlarna dayanabilmesi

2.2. PIC in Kullanm in Gerekli Aamalar Giri/k: Mikrodenetleyicinin d dnya ile ilikisini salayan, giri ve k eklinde ayarlanabilen balant pin' leridir. kontrol Giri/k etmesine ounlukla veya bilgi mikrodenetleyicinin okumasna izin verir. Yazlm: Mikrodenetleyicinin almasn ve iletilmesini salayan bilgidir. Baarl bir uygulama iin yazlm hatasz olmaldr. Yazlm C, Pascal veya Assembler gibi eitli dillerde veya ikilik say sisteminde yazlabilir. Donanm: Mikrodenetleyici, bellek, arabirim bileenleri, g kaynaklar, sinyal dzenleyici devreler, bunlar altrmak ve arabirim grevini stlenmek iin bu cihazlara balanan tm bileenlerdir. iletiim kurmasna,

Simlatr: PC zerinde alan ve mikrodenetleyicinin iindeki ilemleri simle eden yazlm paketidir. Simlatr, programlar adm adm izleyerek hatalardan arndrma olana salar. Bu alma yaplrken faydalanlan simlatr Microchip firmasnn MPLAB programdr. MPLAB program reticinin piyasaya kard yeni mikrodenetleyicilerinde yazlm yklenmesine olanak salanabilmesi iin srekli gncellenen bir programdr. Hazrlanan yazlm program yardm ile kontrol edilir ve olas hatalar nceden tespit edilmi olur. MPLAB program kullanlrken ncelikle program iindeki yeni yazlm oluturma blmnden bir sayfa alr ve algoritmaya gre yazlm hazrlanr. Hazrlanan yazlm kurgulanan .asm uzants ile

kaydedilir. Bu uzant assembly dilinde yazlm yazlmlarn sahip olduu ve programn yazlm tanmasn salayan dosya uzantsdr. Bundan sonra yazlmda hata yok ise ayn program ve PIC programlama kart ile hazrlanan yazlm tmdevreye yklenir. Baarya ulalana kadar PIC zerindeki yazlm defalarca silinip yazlabilir. ICE: (In Circuit Emulator / Devre Takipisi) PC ve mikrodenetleyicinin yer alaca soket arasna balanm yararl bir geretir. Bu gere, yazlm PC de alrken devre kart zerinde bir mikrodenetleyici gibi davranr. ICE, bir programa girilmesini, mikrodenetleyici iinde neler olduunu ve onun dier bal olduu aygtlarla nasl iletiim kurduunun izlenmesini mmkn klar. Programlayc: Yazlmn mikrodenetleyici belleinde programlanmasn ve bylece ICEn yardm olmadan almasn salayan bir birimdir. Programlayc MPLAB program ile hazrlanan yazlmn 16lk say sistemine evrilmi eklini mikrodenetleyicinin belleine yazmaya yarar ve bu yazlan veri sayesinde mikrodenetleyiciler tek bana alabilecek duruma gelir. Kaynak Dosyas: Hem Assembler in hem de tasarmcsnn anlayabilecei dilde yazlm bir programdr. Kaynak dosyasnn mikrodenetleyici tarafndan anlalabilmesi iin nceden assemble edilmi olmas gerekir.

Assembler: Kaynak dosyay bir nesne dosyaya dntren yazlm paketidir. Hata aratrma bu paketin yerleik bir zelliidir. Bu zellik sayesinde programdaki hatalarn ortadan kaldrlmasn salar.

3. RFPIC12F675 M KRODENETLEY C

ekil 3.1. RFPIC12F675 pin gsterimi RFPIC12F675 ok eitli kullanm alanlarna hitap eden, dk maliyetli, yksek performansl ve kolay kullanma sahip bir mikrodenetleyicidir. 20 bacakl bir tmdevre dir. RFPIC12F675 mikrodenetleyicisinin bu almada kullanlmasnn sebeplerini anlamak iin ncelikle onun zelliklerinden bahsetmek gerekir [5] . 3.1. RFPIC12F675 Mikrodenetleyicinin zellikleri - RFPIC12F675 i kullanabilmek iin yalnzca 35 tane komut bilgisine ihtiya duyulur. - retici tarafndan kalibre edilmi dahili 4 MHz osilatr vardr. - Harici osilatr giriine olanak verir. - Kesme (Interrupt) zellii vardr. - 1024 x 14 kelime FLASH program hafzas vardr. - 128 x 8 byte EEPROM veri hafzas vardr. - 64 x 8 byte SRAM veri hafzas vardr. - 100 000 kez yazlp, silinebilen FLASH dayankll vardr. - 1 000 000 kez yazlp, silinebilen EEPROM dayankll vardr.

- FLASH ve EEPROM hafzada tutma mr 40 yldan fazladr. - Programlanabilir kod korumas vardr. - 6 adet giri-k pin balants vardr. - LED srebilen yksek akm gcne sahiptir. - Analog comparator a sahiptir. - 10 bit, 4 kanal analog-dijital eviriciye sahiptir. - VDD=3V iken 5s uyanma(wake-up) hzna sahiptir. - Dk g tketimine sahiptir. (VDD=3V) - 4 MHz dahili osilatr kullanmnda 500A akm eker. - Uyuma (SLEEP) modunda 0.6A akm eker. - Bekleme (STANDBY) modunda 0.1A akm eker. - 2.0 5.5V alma voltaj aralna sahiptir. - Geni alma ss aralna sahiptir. - Dahili UHF ASK/FSK vericiye sahiptir. - ASK veri iletim hz: 0 40 Kbps - FSK veri iletim hz: 0 40 Kbps - Ayarlanabilir verici g tketimi 3.2. RFPIC12F675 Mikrodenetleyicilerin Baz Kullanm Alanlar Otomotiv sektrnde uzaktan, kablosuz ama-kapama sistemleri [4]. Otomotiv alarm sistemleri. Ortak gei ve garaj kap sistemleri. Hrsz alarm sistemleri. Bina giri sistemleri. Dk g uzaktan lm sistemleri. Mesafe lm. Lastik basn sensrleri. Kablosuz sensrler. Uzaktan makine ve motor kontrol.

4. RFPIC DEVELOPMENT KIT 1 (RFPIC GEL T RME TAKIMI 1) RFPIC gelitirme takm, bir uygulama ve gelitirme aracdr. Ara RFPIC12F675 markal mikrodenetleyicilerle birlikte UHF ASK/FSK vericiler ve rfRXD0420 UHF ASK/FSK alclardan oluur [6]. Alc ve verici modller PIC TAKIMI zerine kolayca taklp karlabilir ekilde dizayn edilmitir ve dk maliyetli bir gelitirme ve uygulama arac oluturulmutur. Alc ve verici birimlerinin dnda kalan gelitirme kart zerindeki ledler yardm ile tasarlanan yazlmn ilk kontrolleri yaplarak doru alp almad incelenebilmektedir. Ayn zamanda gelitirme takm verici iin gerekli yazlmn RFPIC zerine yklenmesinde de araclk yapar. Bunlarn dnda alcnn ald verilerin k olarak izlenebilmesini salayan 16F676 tmdevresini de zerinde bulundurur.

ekil 4.1. RFPIC Gelitirme Takm

10

4.1. RFPIC Gelitirme Takm erii 315 MHz verici modl 433.92 MHz verici modl 315 MHz alc modl 433.92 MHz alc modl PIC 16F676 RFPIC Gelitirme Takm Balang Ynergesi PICKit 1 FLASH Starter Takm devre kart Usb Kablo Tantm ve yazlm CD-ROMlar MPLAB IDE CD-ROM u

4.2. rfRXD0420 Alc Modl rfRxD0420 alc modl dk maliyetli, yksek performansl UHF ksa mesafe ASK alcsdr [7]. Modln kullanm alanlar kablosuz uzaktan kumanda ve kontrol, uzaktan anahtarsz giri uygulamalar, gvenlik sistemleri, dk gl uzaktan lm sistemleri ve bunun gibi uygulamalardr. Alc modl tek bana alabilmektedir. Bu zellii ile bir ok uygulamaya adapte edilebilir ve proje gelitirme almalarnda kullanlabilir. Yaplan gelitirme almalarnda baar salandnda devre dizayn reticinin verdii bilgiler dorultusunda zgn olarak yaplabilir. Bu almada da alc modln uygulama takmndan ayr tek bana alabilmesi iin 13. balant bacana dardan +5V gerilim uygulanm ve tek bana almas salanmtr. Vericiden gelen bilgiyi veri k bacandan almak suretiyle istenen ynetim kablosuz olarak salanabilmitir. 4.2.1. Alc Modl zellikleri Tek kanal, sabit frekansta 315 ve 433.92 MHz de alr. ASK modlasyonludur.

11

Yksek frekansta kararl alma Is farkllklarnda ve geni voltaj aralnda alabilme Geni alanl sinyal yakalama zellii ok dk bekleme akm Dk grltl ykselte

ekil 4.2. RFRXD0420 Alc Modl Alc modl anten boyutu frekansa gre belirlenir. retici gerekli olan zelliklerdeki anteni kullanclara paket ierisinde gndermektedir, ancak yeni bir antene ihtiya duyulduunda u formle gre anten retilir : Anten uzunluu (inch) = 2952.8 / f (Hertz)

12

ekil 4.3. Alc modl devre emas

13

ekil 4.4. Alc modl devre kart tasarm (retici firmann dizayndr.)

14

4.3. RFPIC12F675 Verici Modl RFPIC12F675 dk maliyetli, yksek performansl, UHF ksa mesafe ASK vericidir. 12F675K 315 MHz ve 12F675F 433.92 MHz frekansta veri iletimi salar. RFPIC12F675 eitli kullanm alanlarna hitap eden ve tek bana alabilen bir verici modldr [8]. RFPIC Gelitirme Takm ile birlikte kullanlabilen verici modl ile ok eitli uygulamalar yapmak mmkndr. Verici modl zerinde iki adet dme bulunur. Bu dmeler GP3 ve GP4 klarna baldr. Verici modl zerinde iki adet potansiyometre mevcuttur. Bunlar ise GP0 ve GP1 klarna baldr. GP5 knda RF ENABLE balants vardr. GP2 knda DATA ASK balants vardr. Modln kullanm alanlar kablosuz uzaktan kumanda ve kontrol, uzaktan anahtarsz giri uygulamalar, gvenlik sistemleri, dk gl uzaktan lm sistemleri ve bunun gibi uygulamalardr.

ekil 4.5. Verici modl n ve arka yz grnm

15

ekil 4.6. Verici modl 4.3.1. Verici modl g beslemesi ekil 4.3.1 de grlen P1 g seicisi vericinin ihtiya duyduu enerjinin kaynan semeye yarar. Seici pin1 ve pin2 ksa devre olacak duruma getirildiinde vericinin g beslemesi pin 13 den yaplr, bu durumda verici modl PIC Gelitirme Takm zerinde olmal veya kullanc manuel olarak pin13 e ihtiya duyulan gerilimi vermelidir. P1 seicisi pin2 ve pin3 ksa devre olacak ekilde balandnda, verici zerinde bulunan pil tarafndan beslenmeye balar. Bu pozisyonda verici hareketli ortamlarda kullanlabilme imkan tanr.

16

ekil 4.7. Verici modl devre emas

17

5. ALICI VE VER C MODLLER N UYGULAMALARA HAZIRLANMASI 5.1 Verici Modln Uygulamaya Hazrlanmas Verici modller retim sonras retici firma tarafndan verici uygulama program yklenerek kullanclara sunulmaktadr. PIC16F676 ise alc uygulama program ykl olarak gnderilmektedir. Bu programl alc ve verici modller ile hemen uygulamaya geilebilmektedir. Bu uygulama basit bir ON/OFF (A/KAPA) kontrol uygulamasdr. Bu uygulamay kullanabilmek iin verici modl u ekilde hazrlanr. ADIM 1: modl seilir. ADIM 2: Verici modl zerindeki g anahtar pil konumuna getirilir ve verici Kullanlmak istenen alc modlnn frekansna uygun verici

verici modl uygulamaya hazr hale gelir. Uygulama basit bir ON/OFF (A/KAPA) kontrol uygulamasdr, alc modl hazrlandktan sonra yanar. modldeki GP3 dmesine baslmas ile PICKIT Takm zerindeki D0 LED i

ekil 5.1. Verici modln pckt takmna taklmas

18

5.2. Alc Modln Uygulamaya Hazrlanmas ADIM 1: DS40051 kodlu PICKIT Takm kullanc ynergesi ve notlar incelenerek almaya balanr. PICKIT Takmna hakim olmak iin bu ynerge detayl bir ekilde incelenmelidir. Ynerge ierisinde PICKIT Takmnn ierii ile ilgili bilgi ve dokumanlar, yazlm programlar ile ilgili bilgiler, MPLAB IDE programnn kullanm bilgileri ve karlalabilecek baz sorunlara rnek zmler gsterilmitir. ADIM 2: kesilir. ADIM 3: PIC16F676 PICKIT Takm zerindeki yerine taklr. ADIM 4: J3 balantsna alc modllerden (315 veya 433.92 MHz) bir tanesi taklr. Balantnn yn ve doruluu kontrol edilir. ADIM 5: Alc modle uygun olan anten balantsna taklr. Alcya uygun anten boyutu alc frekansna gre u tablo yardm ile seilebilir. izelge 5.1. Alc modl anten seim tablosu PICKIT Takm zerindeki g balants USB kablo karlarak

ADIM 6: PICKIT ile USB balants yaplr ve USB kabloya bilgisayar zerinden g verilir. Alc modl uygulamaya hazrdr.

19

ekil 5.2. Alc modln pckt takmna taklmas Alc modl Pckt takmna taklrken balant ynne dikkat etmek gerekir. Doru ynde balantnn yaplabilmesi iin balant yuvas ve modl zerindeki pin numaralarndan faydalanlr.

20

6. ADIM KONTROLL MOTORLAR

ekil 6.1. Adm motorun blmleri

ekil 6.2. Adm motorun i yaps Asal konumu admlar halinde deitiren, ok hassas sinyallerle srlen motorlara adm motorlar denir [9]. Adndan da anlalaca gibi adm motorlar belirli admlarla hareket ederler. Bu admlar, motorun sarglarna uygun sinyaller gnderilerek kontrol edilir. Adm motorlar manyetik alanlarn karlkl etkileimi (itme-ekme) prensibiyle alrlar. Src durumdaki manyetik alan stratejik olarak yerletirilmi bobin gruplarnn enerjilendirilip ardndan enerjinin kesilmesi yoluyla dner. Bu dnen manyetik alan adm

21

motorun sabit mknatsl mil rotorunu da beraber ekerek dndrr ve hareket oluur. Eer bobinleri enerjilerken belirli bir sraya uyarsak motor dner aksi takdirde motorda vzldayan ve yerinde duran bir rotor mili elde ederiz. Herhangi bir uyartmda, motorun yapaca hareketin ne kadar olaca, motorun adm asna baldr. Adm as motorun yapsna bal olarak 90 , 45 18 7.5 1.8 veya daha deiik alarda olabilir [10]. Motora , , , uygulanacak sinyallerin frekans deitirilerek motorun hz kontrol edilebilir. Adm motorlarnn dn yn uygulanan sinyallerin sras deitirilerek saat ibresi yn veya saat ibresinin tersi ynnde olabilir. Adm motorlarnn hangi yne doru dnecei, devir says, dn hz gibi deerler mikrodenetleyici veya bilgisayar yardm ile kontrol edilebilir. Sonu olarak adm motorlarnn hz, dn yn ve konumu her zaman bilinmektedir. Bu zelliklerinden dolay adm motorlar ok hassas konum kontrol istenen yerlerde ok kullanlrlar. Adm motorlarnn kullanldklar yerlere rnek olarak, endstriyel kontrol teknolojisi ierisinde bulunan baz sistemler, robot sistemleri, takm tezgahlarnn ayarlama ve lmeleri verilebilir. Ayrca, adm motorlar konumlandrma sistemlerinde ve bro makinalarnda da kullanlmaktadr. 6.1. Adm Motoru eitleri Kullanmda olan birok elektrik motorunda olduu gibi adm motorlar da makinenin yapsna ve almasna gre snflandrlabilir. 6.1.1. Deiken relktansl (DR) adm motoru Deiken relktansl adm motoru en temel adm motoru tipidir. Bu -fazl motorun 6 adet stator kutbu vardr. Birbirine 180 al olan herhangi iki stator kutbu ayn faz altndadr. Bunun anlam, karlkl kutuplarn zerindeki sarglarn seri veya paralel olmas demektir. Rotor 4 adet kutba sahiptir. Stator ve rotor nveleri genellikle ince tabakal silisli elikten yaplrlar. Dk

22

manyetomotor kuvveti uygulansa bile, stator ve rotor malzemeleri yksek geirgenlikli ve ilerinden yksek magnetik ak geicek kapasitede olmaldr. 6.1.2. Sabit mknatsl (SM) adm motorlar Basit bir sabit mknats adm motoru, en az drt kutuplu stator iinde dnen, iki kutuplu sabit mknats yapya sahip rotordan oluur. Bu tip motorlar, dk dnme gcne sahip olduklarndan yksek hz istenen uygulamalarda kullanlmazlar 6.1.3. Kark yapl (Hybrid) adm motoru Rotorunda sabit mknats bulunan bir dier adm motoru da kark yapl adm motorudur. Hybrid kelimesi motorun sabit mknatsl ve deiken relktansl motorlarn prensiplerinin birlemesinden dolay verilmitir. Gnmzde ok geni bir kullanm alanna sahip olan Hybrid adm motorun statorunun nve yaps deiken relktansl adm motorunun ayns veya ok benzeridir. Fakat sarglarn balants deiken relktansl motorunkinden farkldr. Deiken relktansl adm motorunda bir kutupta bir fazn iki sargsndan sadece bir tanesi sarlm iken, 4 fazl kark yapl adm motorunda iki farkl fazn sarglar ayn kutupta sarlmtr. Bundan dolay bir kutup sadece bir fazn altnda deildir. Kark yapl adm motorlarnda moment, di yaplarndaki hava aralklarnn manyetik alanlarnn etkileimi ile oluturulur. Bu tip motorlarda srekli mknats, src kuvveti oluturmak iin nemli rol oynamaktadr. Fakat kark yapl adm motorundaki rotor ve stator dilerinin kk adm alar elde etmek iin dizayn edildii bilinmelidir.

23

6.1.4. Unipolar ve bipolar adm motorlar Endstri uygulamalarnda genellikle unipolar ve bipolar olmak zere iki eit adm motor kullanlr. ok hassas almalarda ise daha fazla kutup saysna sahip adm motorlar kullanlr. Unipolar adm motorlarda 5,6 veya daha fazla bobin ucu darya karlr. Genellikle 5 veya 6 ulu unipolar adm motorlar kullanlr. 5 ulu unipolar adm motorlarn 6 ulu adm motorlardan fark, 5 ulu adm motorda ortak u tek iken, 6 ulu adm motorlarda ayr ayrdr. Bununla birlikte her iki motorun da alma prensibi ayndr. Tm unipolar adm motorlar ortak uca gre dier bobin ularna uygun sralamada darbeler uygulanarak altrlrlar.Bipolar adm motorlarda ise ortak u bulunmaz. 6.2. Adm Motorlarna Ait nemli Parametreler 6.2.1 znrlk znrlk; bir devirdeki adm says veya dnen motorlar iin adm as (derece), lineer motorlar iin ise adm uzunluu (mm) olarak tanmlanr. Bu sabit deer, retim srasnda tespit edilen bir byklktr. Bir adm motorunun adm bykl, eitli kontrol dzenleri ile deitirilebilir. Yarm adm almada adm bykl normal deerinin (znrlnn) yarsna indirilir. 6.2.2. Doruluk Bir adm motorunun adm konumu, tasarm ve retim srasnda bir araya getirilen birok parann boyutlar ile belirlenir. Bu paralarn boyutlarndaki toleranslar ve dahili srtnmeler admlarn nominal denge konumlarnda da toleranslara neden olurlar. Bu durum adm motorunun doruluu olarak isimlendirilir ve belli bir konumdaki maksimum asal hatann nominal tek adm deerinin yzdesi olarak ifade edilmi halidir. Klasik adm motorlarnda bu hata % 1 ile % 5 arasnda deimektedir. Srtnme momenti veya kuvveti nedeniyle oluan konum hatalar bu dorulukla ilgisi olmayan, daha

24

az veya ok olabilen rasgele hatalardr. Ancak her iki tip hata toplanarak sistemin toplam hatas elde edilir. 6.2.3. Tek adm tepkisi Motor fazlarndan biri uyarlm durumdaysa motor kararl bir adm konumundadr. Bu fazn uyartm kesilip yeni bir faz uyartlrsa motor bir adm atacaktr. Rotor konumunun zamana gre bu deiimi tek adm tepkisi olarak tanmlanr. Tek adm tepkisi, motorun adm hareketinin hzn, tepkinin am ve salnm miktarn, adm asnn hassasln veren nemli bir karakteristiktir. Adm motorlarndan maksimum performans elde edebilmek iin tek adm tepkisindeki am ve salnmlarn azaltlmas ve yerleme zamannn ksaltlmas gerekmektedir. Bu nedenle tek adm tepkisinin iyiletirilmesi adm motorlarnn kontrolnde ok byk neme sahiptir 6.3. Adm Motorlarn Uyartm 6.3.1 Tek faz uyartm (Single Coil) Motor sarglarnn sadece birisinin uyarld uyartm cinsine tek-faz (Single Coil) uyartm denir. Uyartm saat yn iin 1000,0100,0010,0001 eklinde saat ynnn tersi iin 0001,0010,0100,1000 eklinde olmaldr.

6.3.2. ki faz uyartm (Double Coil) Motor sarglarnn ikisinin sra ile ayn anda uyarld uyartm ekline denir. ki faz uyartmda rotorun geici durum tepkisi tek-faz uyartma gre daha hzldr ancak burada g kaynandan ekilen g iki katna kmtr. 6.3.3. Yarm adm uyartm (Half Step) Bu uyartm modunda tek faz ve iki faz artarda uygulanr. Burada rotor her bir uyartm sinyali iin yarm admlk bir hareket yapmaktadr. Bu uyartm modu sayesinde rnein fabrika k 2 derece olan bir motorun adm asn 1

25

dereceye drm oluruz. Bu almada adm asnn drlerek daha hassas bir kontrol yapabilmek iin yarm adm uyartm teknii kullanlmtr. 6.4. Unipolar Adm Motoru Srme Teknii: Unipolar adm motorun yarm adm tekniine gre bobin srme admlar tablodaki gibi olmaldr. Eer tablodaki darbe sralamas yukardan aa gerekletirilirse motor ileri doru dner, eer sray aadan yukar doru uygulanrsa motor ters ynde dnmeye balar, darbeleri uygulama hz ise motorun dnme hzn etkiler. Herhangi bir darbe annda dier darbeyi yollamaz ve en son uygulanan darbe sekans korunursa motorun artc bir kararllkla fren yapt ve konumunu koruduu grlr. Bu fren zellii adm motorlarn DC motorlara gre en nemli avantajdr. izelge 6.1. Adm Motoru Hareket Darbe Tablosu
adm 1 2 3 4 5 6 7 8 S0 1 1 1 0 0 0 0 0 S1 0 0 0 0 1 1 1 0 S2 1 0 0 0 0 0 1 1 S3 0 0 1 1 1 0 0 0

Mikrodenetleyici, adm motor kontrolnde her bir adm iin 4 bitlik adm bilgisi retir, bu 4 bitlik bilgiler adm motor bobinlerini sren transistor lere "A-KAPA" bilgisi olarak iletilir ve bu ekilde bobinlerin enerjisi kontrol edilir.

26

ekil 6.3. Unipolar adm motoru sr devresi

Aadaki emadan da grlecei gibi adm motorun bobinlerini srmek iin ULN 2003 transistr dizisini kullanyoruz. Bylece toplam kullanacamz 4 transistrn yerine 1 adet ULN2003 tmdevresi ile sistem daha az karmak bir duruma getirilir. ekil 6.4.de ULN2003 tmdevresine ait balant pinlerini grlmektedir.

ekil 6.4. ULN2003 transistor dizisi

27

Aadaki ekil 6.5. de hareket tablosu bobinlerin uygulanan akma verdii tepkiyi ve bu tepkiden kaynaklanan rotor dnn gsterilmektedir. Unipolar motorda her bobinin karsndaki bobin, ters akmdan dolay ters kutuplanr.

ekil 6.5. Adm motor hareket gsterimi

28

6.5. Adet Adm Motoru Seici Ve Src Devre Tasarm

ekil 6.6. adet adm motoru src devre kart

29

Tasarlanan devrede iki ayr birimden veri girii yaplmaktadr. Bunlar motorlarn hareket iin ihtiya duyduu adm darbeleri, dieri ise hangi motorun alacan belirleyen motor seim bilgisidir. Adm darbeleri vericinin saa veya sola dn bilgisini alcya gndermesi ile birlikte 4 bitlik veri halinde src devreye uygulanr. Bu bilgi ilk olarak tm motorlara ait transistr dizilerine bal olan 74LS08 kodlu AND (VE) kaplarna ular. Bu andan itibaren hangi motorun alacann seilmi olmas gerekir. Seilen motora ait VE kaplarnn tamamna 1 bilgisi ulamtr ve artk seilen motorun transistr dizisine gerekli adm darbeleri ulaacaktr. Adm darbeleri tm motorlara ayn ekilde gnderilir ancak bu darbe bilgisi yalnzca seilen motorlarn transistorlarna ular. Bu durumda yalnzca seilen motorun almas salanm olur. Tasarlanan devre ekil 6.6. da grlmektedir.

Resim 6.1. Adet Adm Motoru Src Devre Kart

30

Resim 6.2. Proteus Programnda Src Kart Tasarm Hazrlanan src kart Proteus Ares program kullanlarak dizayn edilmitir. Programa ait ekran grnts Resim 6.3 de gsterilmitir. Proteus Ares program kullanm kolay ve devre kart tasarmnda kolaylklar salayan bir programdr. Program kullanrken gerekli olan devre elemanlar programn iindeki ktphanelerden bulunabilmekte ve doru llerde devre kart retimi iin gereken tasarm yaplabilmektedir.

31

7. KAMERA SE C DEVRE TASARIMI Kamera seici devresinin kalbini MAX454 tmdevresi oluturmaktadr. MAX454 4 adet video grnt girii olan ve seilen grntnn ktan alnmasna olanak salayan bir tmdevredir [11]. Bu projede 4 kamera giriinden 3 tanesi kullanlmtr. Hangi kamerann seildii ledler yardm ile takip edilebilmektedir. MAX454 hangi kamerann seilmesi gerektii bilgisini vericiden gnderilen motor seim bilgisine gre alr. 3 adet motordan hangisi seildi ise o motora bal kamerann k grnts olarak seilmesi bu ekilde otomatik olarak salanm olur. Kamera seici devresi seici tmdevreye gelen 2 bitlik veri bilgisine gre seim yapar. Bu 2 bitlik veri motor seiminde kullanlan seim bilgisi ile ortak baldr. Bu bilgiye gre 00 iin 1. kamera, 01 iin 2. kamera, 10 iin 3. kamera ve 11 iin 4. kamera kta izlenir. Tasarlanan devre ekil 7.1.de grlmektedir.

ekil 7.1. Grnt seici devre emas

32

Resim 7.1. Grnt seici devre kart Resim 7.1.de Kameralara ait grntnn kullanc tarafndan seilmesini

salayan devre kartnn tamamlanm halinin resmi grlmektedir. Daha sonra bu rsimde grlen seici kart, sistemin dier kontrol kartlar ile birletirilecektir.

33

8. S STEM N B RLET R LMES Sistemin en son alan haline gelebilmesi iin tasarlanan ve retilen birimlerin bir araya getirilerek uyumlu ekilde almas gzlenmitir. Motor src devresi, alc modl, grnt seici devresi, adm motorlar ve kameralar ile verici modlden oluan sistem elemanlarnn istenilen komutlara uyum salad gzlenmitir. Birletirilen devre kartlar dardan gzlenebilecek ancak zarar grmemesi salanacak bir ekilde Resim 8.1 de grld gibi kutulanmtr.

Resim 8.1. Sistemin Birletirilmi ve Kutulanm Durumu Birletirilen sistem birimlerinin birlikte almalarn zetleyen alma algoritmas ekil 8.1 de gsterilmitir. Bu ekilde daha nce bireysel zellikleri anlatlan birimlerin sistem iindeki alma ekilleri grlmektedir.

34

ekil 8.1. Sistemin genel alma algoritmas

35

9. SONU VE NER LER Bu almada mikrodenetleyiciler ailesinin son teknolojik bireylerinden radyo frekansl mikrodenetleyicilerin zellikleri ve uygulama alanlar anlatld. RFPIC takmnn birimleri ve nasl kullanld uygulamalar ile kontrol edildi. Bu uygulama alanlarna rnek tekil etmesi iin kablosuz olarak 3 adet adm motorunun kontrol saland. Kontrol ilemi motor seimi ve motorlarn saasola dn hareketlerinin gerekletirilmesi ile yapld. Kontrol ilemi iin gerekli olan yazlm derlendi ve programlayc devre aracl ile RFPIC zerine yklendi. Uygulama alanlarnda karlalacak problemlere rnek tekil etmesi iin uygulama ekilleri adm adm anlatld. Motor sr devresinde ilk karlalan problem alc tarafndaki PIC16F676 tmdevresinin adm motorunu dorudan srebilir dncesi ile motora transistor olmakszn balanmas ve sz konusu 16F676 tmdevresinin yanmasdr. Bundan sonra gerekli tmdevre ve yedekleri tekrar temin edilmitir ve motorlarn ihtiya duyaca akmn salanabilmesi iinde gerekli olan transistor (ULN2003) temin edilerek sisteme uygulanmtr. Bu mikrodenetleyiciler kullanlrken cihazlar ile ilgili tm dokmanlar incelenmelidir. Bu sayede uygulama srasnda meydana gelebilecek bozulma ve zarar grme durumlarndan uzaklalm olacaktr. yaplmtr. Motorlarn dzenli bir ekilde almas baar ile salandktan sonra kontrol edilecek olan kameralar ile ilgili aratrma Aratrma sonucunda piyasada bulunan ok eitli gvenlik kameralarndan 3 farkl kamera seilmitir. Bu kameralarn grnt seimini yapacak olan MAX454 tmdevresi retici firma olan MAXIM firmasndan getirtilmi ve retici firmann rnek gsterdii devre zerinde birtakm deiiklikler yaplarak motor seici devre ile birlikte alabilir hale getirilmitir. Bu iki bamsz devrenin beraber alabilir duruma getirilmesi ayn zamanda RFPIC lerin kontrol gerektiren birok devrede ve sistemde baar ile kullanlabileceini ispatlamtr. Gerekletirilen bu sistem hem kablosuz kontroln kolayln ve gvenilirliini bize gstermektedir hem de gerek duyulduunda kablolu bir kontrol ile ayn zamanda kullanlarak sistemin her trl alma artnda kontrol alternatifinin olmasn salar. Bu

36

almada anlatlan cihazlarn kullanm alanlarndan bahsedilmi olsa da kablosuz kontrol sz konusu olduundan yeni kullanm alanlarnn ihtiyalar dorultusunda bulunaca aktr. Bu sisteme benzer olabilecek uzaktan vin konrol, akll ev otomasyonlar, gvenlik sistemleri, biyomedikal alannda uzaktan lm ve kontrol sistemleri ayn devre elemanlarna basit deiiklikler ve yazlm destei ile gerekletirilebilecektir.

37

KAYNAKLAR Altnbaak O. , Mikrodenetleyiciler ve PIC Programlama , Alta Basm Yaym, stanbul, 13-14 (2002). Altnbaak O. , Mikrodenetleyiciler ve PIC Programlama , Alta Basm Yaym, stanbul, 11-12 (2002). Uney M., PIC kontroll uzaktan kumanda uygulamas Yksek Lisans Tezi, Sakarya niversitesi Fen Bilimleri Enstits, 2-3 (2002). Microchip Technology Inc., RFPIC12F675 DATASHEET DS70091A , 1-2 (2004). Microchip Technology Inc., RFPIC12F675 DATASHEET DS70091A , 1-2 (2004). Microchip Technology Inc., RFPIC12F675 DATASHEET DS40051D, 27 (2004). Microchip Technology Inc., rFRXD0420 RECEIVER DATASHEET DS70090A, 1 (2004). Microchip Technology Inc., Transmitter Module DATASHEET TB069 , 1 (2004). Kvrak S., PIC serisi mikrodenetleyiciler kullanarak bilgisayar ile ift adm motor kontrol, Yksek Lisans Tezi, Pamukkale niversitesi Fen Bilimleri Enstits, 8-9 (2000). nternet : Teknomerkez makaleler Adm Motorlar, aya B., http://www.teknomerkez.net/makale.asp?konu=92, (2005). MAXIM Integrated Products, MAX454 DATASHEET , 2 (1998).

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

38

EKLER

39

EK-1. ULN2003A Transistr dizisi veri yapra

40

EK-1. (Devam) ULN2003A Transistr dizisi veri yapra

41

EK-1. (Devam) ULN2003A Transistr dizisi veri yapra

42

EK-1. (Devam) ULN2003A Transistr dizisi veri yapra

43

EK-1. (Devam) ULN2003A Transistr dizisi veri yapra

44

EK-1. (Devam) ULN2003A Transistr dizisi veri yapra

45

EK-2. MAX454 Grnt seici tmdevre veri yapra

46

EK-2. (Devam) MAX454 Grnt seici tmdevre veri yapra

47

EK-2. (Devam) MAX454 Grnt seici tmdevre veri yapra

48

EK-3. RFPIC12F675 PIN balant tanmlar

49

EK-4. rfRXd0420 pin balant tanmlar

50

EK-5. Alc ksm program kodlar ;---------------------------------------------------------------------; Author: Mustafa Burak UVEZ ; Filename: ; ; Files required: ; ; ; ;---------------------------------------------------------------------; ;---------------------------------------------------------------------list p=16f676 ; list directive to define processor p16f676.inc alc_program_adim_motor ;----------------------------------------------------------------------

#include

<p16f676.inc> ; processor specific variable definitions ; suppress message 302 from list file

errorlevel -302

; --------------------------------------------------------------------; Configuration Bits (Section 9.1 Configuration Bits) ; --------------------------------------------------------------------; ; Data Memory Code Protection bit: ; _CPD_ON = Enabled ; _CPD_OFF = Disabled ; ; Program Memory Code protection: ; _CP_ON = Enabled ; _CP_OFF = : Disabled ;

51

EK-5. (Devam) Alc ksm program kodlar ; Brown-out Detection Enable bit: ; _BODEN_ON = Enabled ; _BODEN_OFF = Disabled ; ; GP3/MCLR pin function select: ; _MCLRE_ON = GP3/MCLR pin function is /MCLR ; _MCLRE_OFF = GP3/MCLR pin function is digital I/O, ; ; ; Power-up Timer Enable bit: ; _PWRTE_ON = Enabled ; _PWRTE_OFF = Disabled ; ; Watchdog Timer Enable bit: ; _WDT_ON = Enabled ; _WDT_OFF = Disabled ; ; Oscillator Selction bits: ; _EXTRC_OSC_NOCLKOUT = CLKOUT function on GP4 pin, RC on GP5 pin. ; _EXTRC_OSC_CLKOUT = I/O function on GP4 pin, RC on GP5 pin. ; _INTRC_OSC_CLKOUT = Internal oscillator, CLKOUT function on GP4 pin, ; I/O function on GP5 pin. ; _INTRC_OSC_NOCLKOUT = Internal oscillator, I/O function on GP4 and GP5 pins. ; _EC_OSC = I/O function on GP4 pin, CLKIN on GP5 pin. ; _HS_OSC = High speed crystal/resonator on GP4 and GP5 pins. ; _XT_OSC = Crystal/resonator on GP4 and GP5 pins. ; _LP_OSC = Low power crystal on GP4 and GP5 pins. /MCLR internally tied to Vdd

52

EK-5. (Devam) Alc ksm program kodlar ; ; --------------------------------------------------------------------__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF

& _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;---------------------------------------------------------------------; Variables (Section 2.2 Data Memory Organization) ;---------------------------------------------------------------------; Data Memory Organization (Section 2.2) ; ; Register locations 0x20 to 0x5F (64 bytes) are General Purpose ; registers, implemented as static RAM and are mapped across both ; banks. cblock 0x20 w_temp status_temp adim TEMP DATA0 DATA1 DATA2 DATA3 ORIGIN TMRLOW SX1TMR SX2TMR ; LED timer (low order) ; LED timer (high order) ; General Purpose Temp register ; 1st byte of received data ; 2nd byte of received data ; 3rd byte of received data ; 4th byte of received data ; a reference used to increment ; used for context saving ; used for context saving

53

EK-5. (Devam) Alc ksm program kodlar TMRLOW TMRHIGH HIGHWDTH LOWWDTH STATECNTR BITCNTR FLAGS COUNTR MOTREG sayac sayac1 LEDREG LEDREGBUF LEDSTATE endc ;---------------------------------------------------------------------; Defines ;---------------------------------------------------------------------;-------------------; PORTA (Section 3.1) ;-------------------; PORTA is an 6-bit wide, bi-directional port. The corresponding data ; direction register is TRISA. Setting a TRISA bit (= 1) will make ; the corresponding PORTA pin and input. Clearing a TRISA bit (= 0) ; will make the corresponding PORTA pin an output. The exception is ; RA3, which is input only and its TRIS bit will always read as a '1'. ; ; LED Array Register ; LED Array Register Buffer ; LED Array State Counter ; flags ; misc. counter ; pulse width timer (low order) ; pulse width timer (high order) ; high pulse width ; low pulse width ; program state counter ; data stream bit counter

54

EK-5. (Devam) Alc ksm program kodlar ; Function of PORTA pins depend on: ; Configuration Bits (CONFIG) (Section 9.1) ; Weak Pull-up Register (WPU) (Section 3.2.1) ; Interrupt-on-change Register (IOCB) (Section 3.2.2) ; Option Register (OPTION_REG) (Register 4-1) ; TIMER1 Control Register (T1CON) (Register 5-1) ; Comparator Control Register (CMCON) (Section 6.0) ; A/D Control Register (ADCON0) (Section 7.0) (PIC16F676 Only) #define RA0 RP1 #define RXDATA D6, D7 #define RA2 D4, D5, D6, D7 #define LRNPB Button SW1 #define RA4 D2, D3 #define RA5 D4, D5 ; Define for TRISA Register (Section 3.1) ; PORTA Pins = xx543210 ;#define PORTATRIS b'00111111' #define PORTATRIS b'00001010' ellemedik digerleri cks ;-------------------; PORTC (Section 3.3) ; RA3 learn butonu onun icin PORTA, 5 ; (Digital Input/Output) LEDs D0, D1, PORTA, 4 ; (Digital Input/Output) LEDs D0, D1, PORTA, 3 ; (Digital Input Only) Push PORTA, 2 ; (Digital Input/Output) LEDs D2, D3, PORTA, 1 ; (Digital Input/Output) LEDs PORTA, 0 ; (Analog Input) Potentiometer

55

EK-5. (Devam) Alc ksm program kodlar ; -------------------; PORTC is a general purpose I/O port consisting of 6 bi-directional ; pins. The pins can be configured for either digital I/O or analog ; input to A/D converter. For specific information about individual ; functions such as the comparator or the A/D. #define RC0 #define RC1 #define RC2 #define RC3 #define RC4 #define RC5 PORTC, 0 PORTC, 1 PORTC, 2 PORTC, 3 PORTC, 4 PORTC, 5 ; (Digital Input/Output) ; (Digital Input/Output) ; (Digital Input/Output) ; (Digital Input/Output) ; (Digital Input/Output) ; (Digital Input) Receive Data

; PORTC Pins = xx543210 #define PORTCTRIS b'00000000' ;---------------------------------------; Program Defines ;---------------------------------------; Status Counter #define #define #define #define #define #define #define #define BEGN 0x00 BEGN1 HEADR HEADR1 HIGHP LOWP RECRD WAIT 0x07 0x01 0x02 0x03 0x04 0x05 0x06

56

EK-5. (Devam) Alc ksm program kodlar #define #define ; Flags #define LRNFLG FLAGS, 0 #define TOGFLG FLAGS, 1 #define HLFLG FLAGS, 2 ; LEDs ; this flag is set when in learn mode ; toggle flag ; high-low flag VALID IMPLMNT 0x08 0x09

#define LED3

LEDREG, 3

#define LRNLED LED3

;---------------------------------------------------------------------; Program Memory ;---------------------------------------------------------------------; Program Memory Organization (Section 2.1) ORG nop goto RESET 0x000 ; RESET Vector ; for ICD use

57

EK-5. (Devam) Alc ksm program kodlar ORG 0x004 ; Interrupt Vector ; save W register ; swap status to be saved into W ; ---- Select Bank 0 ----; save STATUS register

movwf w_temp swapf STATUS, W bcf STATUS, RP0 movwf status_temp ;----------------------------------------

; Interrupt Service Routine (ISR) (Section 9.4) ; ; Description: This program does not use interrupts ; ;---------------------------------------swapf status_temp, W original state movwf STATUS swapf w_temp, F swapf w_temp, W retfie ; restore W register ; restore STATUS register ; swap status_temp into W, sets bank to

;---------------------------------------------------------------------; Subroutine DATA_EEPROM_READ ; ; Description: To read an EEPROM data memory location, the address is ; written to the EEADR register and set control bit RD (EECON1<0>) to ; initiate a read. Data is available in the EEDATA register the next

58

EK-5. (Devam) Alc ksm program kodlar ; clock cycle. ; ; Constants: none ; ; Global Variables: none ; ; Initialization: W contains EEPROM address to be read ; ; Output: W contains EEPROM data ; ;---------------------------------------------------------------------DATA_EEPROM_READ bsf bsf movf bcf STATUS, RP0 EECON1, RD EEDATA, W STATUS, RP0 ; ---- Select Bank 1 ----; move EEPROM address in W to EEADR ; initiate EEPROM read ; move data to W ; ---- Select Bank 0 -----

movwf EEADR

return

;---------------------------------------------------------------------; Subroutine DATA_EEPROM_WRITE ; ; Description: To write an EEPROM data memory location, the address is ; written to the EEADR register, data to the EEDATA register, then ; execute a required sequence of instructions.

59

EK-5. (Devam) Alc ksm program kodlar ; CAUTION: Interrupts are disable during this subroutine ; ; Constants: none ; ; Global Variables: none ; ; Initialization: Address = EEADR, Data = EEDATA ; ; Output: none ; ;---------------------------------------------------------------------DATA_EEPROM_WRITE bsf bsf cycles bcf INTCON, GIE ; disable global interrupts ; *** required sequence, do not alter *** movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1, WR ; initiate EEPROM write ; *** end required sequence *** btfsc EECON1, WR goto $-1 ; has write completed? STATUS, RP0 EECON1, WREN ; ---- Select Bank 1 ----; EEPROM Write Enable: allow write

60

EK-5. (Devam) Alc ksm program kodlar ; bsf bcf cycles bcf STATUS, RP0 ; ---- Select Bank 0 ----INTCON, GIE EECON1, WREN ; enable global interrupts ; EEPROM Write Enable: inhibit write

return

;---------------------------------------------------------------------; Initialize PICmicro (PIC12F675) ;---------------------------------------------------------------------INITIAL ; Disable global interrupts during initialization bcf INTCON, GIE ; disable global interrupts

;---------------------------------------; Calibrating the Internal Oscillator (Section 9.2.5.1) ; Oscillator Calibration Register (OSCCAL) (Section 2.2.2.7) ; ; A calibration instruction is programmed into the last location of ; program memory. This instruction is a RETLW XX, where the literal is ; the calibration value. The literal is placed in the OSCCAL register ; to set the calibration of the internal oscillator. bsf STATUS, RP0 ; ---- Select Bank 1 -----

61

EK-5. (Devam) Alc ksm program kodlar call 0x3FF ; retrieve factory calibration value ; update register with factory cal value ;---- Select Bank 0 -----

movwf OSCCAL bcf STATUS, RP0

;---------------------------------------; PORTS A AND C (Section 3.0) ; ; Store GPTRIS value defined above into the TRISIO direction register bsf STATUS, RP0 ; ---- Select Bank 1 -----

movlw PORTATRIS movwf TRISA movlw PORTCTRIS movwf TRISC bcf STATUS, RP0 ; Write to TRISC register ;---- Select Bank 0 ----; Write to TRISA register

;---------------------------------------; Comparator Module (Section 6.0) ; ; The PIC16F630/676 devices have one analog comparator. The inputs to ; the comparator are multiplexed with the RA0 and RA1 pins. There is ; an on-chip Comparator Voltage Reference that can also be applied to ; an input of the comparator. In addition, RA2 can be configured as

62

EK-5. (Devam) Alc ksm program kodlar ; the comparator output. The Comparator Control Register (CMCON) ; contains bits to control the comparator. The Voltage Reference ; Control Register (VRCON) controls the voltage reference module. ; Comparator Configuration (Figure 6-2) ; ; ; bcf bcf bcf CMCON, CINV CMCON, COUT CMCON, CIS ; Comparator Output Inversion: not ; Comparator Output bit: Vin+ < Vin; Comparator Input Switch: Vininverted

connectos to Cin; CM2:CM0 = 111 - Comparator Off (lowest power) bsf bsf bsf CMCON, CM2 CMCON, CM1 CMCON, CM0 ; Comparator Mode bit 2 ; Comparator Mode bit 1 ; Comparator Mode bit 0

; VRCON (Register 6-2) bsf bcf drain ; ; ; ; ; bcf bcf bcf bcf bcf bcf VRCON, VRR VRCON, VR3 VRCON, VR2 VRCON, VR1 VRCON, VR0 STATUS, RP0 ; CVref Range Selection: High Range ; CVref value selection bit 3 ; CVref value selection bit 2 ; CVref value selection bit 1 ; CVref value selection bit 0 ;---- Select Bank 0 ----STATUS, RP0 VRCON, VREN ; ---- Select Bank 1 ----; CVref circuit: powered down, no Idd

63

EK-5. (Devam) Alc ksm program kodlar ;---------------------------------------; Analog-to-Digital Converter (A/D) Module (Section 7.0) (PIC16F676 Only) ; ; The analog-to-digital converter (A/D) allows conversion of an analog ; input signal to a 10-bit binary representation of that signal. The ; PIC16F676 has eight analog inputs multiplexed into one sample and hold ; circuit. There are two registers to control the functions of the A/D ; module: ; A/D Control Register 0 (ADCON0) ; A/D Control Register 1 (ADCON1) ; Analog Select Register (ANSEL) ; ; Note: When using PORTA or PORTC pins as analog inputs, ensure the ; TRISA or TRISC register bits are set (= 1) for input. bcf bcf bcf ADCON0, ADFM ADCON0, VCFG ADCON0, ADON ; A/D Result Formed: left justified ; Voltage Reference: Vdd ; ADC is shut-off and consumes no

operating current bsf STATUS, RP0 ; ---- Select Bank 1 -----

; select A/D Conversion Clock Source: Fosc/8 bcf bcf bsf ADCON1, ADCS2 ADCON1, ADCS1 ADCON1, ADCS0 ; A/D Conversion Clock Select bit 2 ; A/D Conversion Clock Select bit 1 ; A/D Conversion Clock Select bit 0

64

EK-5. (Devam) Alc ksm program kodlar ; select GPIO pins that will be analog inputs: RA0/AN0 bcf bcf bcf bcf bcf bcf bcf bsf bcf ANSEL, ANS7 ANSEL, ANS6 ANSEL, ANS5 ANSEL, ANS4 ANSEL, ANS3 ANSEL, ANS2 ANSEL, ANS1 ANSEL, ANS0 STATUS, RP0 ; Analog Select RC3/AN7: digital I/O ; Analog Select RC2/AN6: digital I/O ; Analog Select RC1/AN5: digital I/O ; Analog Select RC0/AN4: digital I/O ; Analog Select RA3/AN3: digital I/O ; Analog Select RA2/AN2: digital I/O ; Analog Select RA1/AN1/Vref: digital I/O ; Analog Select RA0/AN0: analog input ;---- Select Bank 0 -----

;---------------------------------------; TIMER1 Module with Gate Control (Section 5.0) ; ; The TIMER1 Control Register (T1CON) is used to enable/disable TIMER1 ; and select various features of the TIMER1 module. bcf bcf T1CON, TMR1ON T1CON, TMR1CS ; TIMER1: stopped ; TIMER1 Clock Source Select: Internal

Clock (Fosc/4) bcf T1CON, NOT_T1SYNC ; TIMER1 External Clock Input Sync

Control: Syncronize external clock input ; T1OSCEN only if INTOSC without CLKOUT oscillator is active, else ignored

65

EK-5. (Devam) Alc ksm program kodlar bcf T1CON, T1OSCEN ; LP Oscillator Enable Control: LP

oscillator off ; TIMER1 Input Prescale Select: 1:1 bcf bit 1 bcf bit 0 ; TMR1GE only if TMR1ON = 1, else ignored bcf T1CON, TMR1GE ; TIMER1 Gate Enable: on T1CON, T1CKPS0 ; TIMER1 Input Clock Prescale Select T1CON, T1CKPS1 ; TIMER1 Input Clock Prescale Select

;---------------------------------------; PORTA Weak Pull-up Register (WPUA) (Section 3.2.1) ; ; Each of the PORTA pins, except RA3, has an individually configurable ; weak internal pull-up. Control bits WPUAx enable or disable each ; pull-up. Refer to Register 3-1. Each weak pull-up is automatically ; turned off when the port pin is configured as an output. The pull-ups ; are disabled on a Power-on Reset by the /RAPU bit (see OPTION Register ; below). bsf ; STATUS, RP0 ; ---- Select Bank 1 -----

PORTA Pins = xx54x210 movlw B'00000000' movwf WPUA ; no pull-ups enabled

66

EK-5. (Devam) Alc ksm program kodlar bcf STATUS, RP0 ;---- Select Bank 0 -----

;---------------------------------------; OPTION Register (OPTION_REG) (Section 2.2.2.2) ; TIMER0 Module (Section 4.0) ; ; The OPTION_REG contains control bits to configure: ; Weak pull-ups on GPIO (see also WPU Register above) ; External RA2/INT interrupt ; TMR0 ; TMR0/WDT prescaler bsf bsf bsf STATUS, RP0 ; ---- Select Bank 1 -----

OPTION_REG, NOT_GPPU ; GPIO pull-ups: disabled OPTION_REG, INTEDG ; Interrupt Edge: on rising edge of

RA2/INT pin bcf bcf OPTION_REG, T0CS OPTION_REG, T0SE ; TMR0 Clock Source: internal ; TMR0 Source Edge: increment low-

instruction cycle (CLKOUT) to-high transition on GP2/T0CKI pin bcf TIMER0 ; TMR0 Prescaler Rate: 1:4 bcf bcf OPTION_REG, PS2 OPTION_REG, PS1 ; Prescaler Rate Select bit 2 ; Prescaler Rate Select bit 1 OPTION_REG, PSA ; Prescaler Assignment: assigned to

67

EK-5. (Devam) Alc ksm program kodlar bsf bcf OPTION_REG, PS0 STATUS, RP0 ; Prescaler Rate Select bit 0 ;---- Select Bank 0 -----

;---------------------------------------; PORTA Interrupt-on-Change Register (IOCA) (Section 3.2.2) ; ; Each of the PORTA pins is individually configurable as an interrupt; on-change pin. Control bits IOCAx enable or disable the interrupt ; function for each pin. Refer to Register 3-4. The interrupt-on-change ; is disabled on a Power-on Reset. ; ; Note: Global interrupt enables (GIE and GPIE) must be enabled for ; individual interrupts to be recognized. bsf clrf bcf STATUS, RP0 IOCA STATUS, RP0 ; ---- Select Bank 1 ----; Interrupt-on-change disabled ;---- Select Bank 0 -----

;---------------------------------------; Peripheral Interrupt Enable Register (PIE1) (Section 2.2.2.4) ; ; The PIE1 register contains peripheral interrupt enable bits. ; ; Note: The PEIE bit (INTCON<6>) must be set to enable any ; peripheral interrupt.

68

EK-5. (Devam) Alc ksm program kodlar bsf bcf bcf disabled bcf bcf bcf PIE1, CMIE PIE1, TMR1IE STATUS, RP0 ; Comparator Interrupt: disabled ; TMR1 Overflow Interrupt: disabled ;---- Select Bank 0 ----STATUS, RP0 PIE1, EEIE PIE1, ADIE ; ---- Select Bank 1 ----; EE Write Complete Interrupt: disabled ; A/D Converter Interrupt (PIC12F675 Only):

;---------------------------------------; Interrupt Control Register (INTCON) (Section 2.2.2.3) ; ; The INTCON register contains enable and disable flag bits for TMR0 ; register overflow, GPIO port change and external GP2/INT pin ; interrupts. bcf bcf bit bcf Enable bit bcf bcf INTCON, RAIE INTCON, GIE ; disable Port Change Interrupt Enable bit ; disable global interrupts INTCON, INTE ; disable GP2/INT External Interrupt INTCON, PEIE INTCON, T0IE ; disable Peripheral Interrupt Enable bit ; disable TMR0 Overflow Interrupt Enable

retlw 0

; exit INITIAL

69

EK-5. (Devam) Alc ksm program kodlar ;---------------------------------------------------------------------; Subroutine: TIMER ; ; Description: Continually updates two higher order timers (SX1TMR and ; SX2TMR) for use in LED timing. ; ; Constants: none ; ; Global Variables: SX1TMR, SX2TMR ; ; Initialization: none ; ; Output: SX1TMR, SX2TMR ; ;---------------------------------------------------------------------TIMER btfss TOGFLG goto TIMER1 movlw B'01111111' addwf TMR0, W btfss STATUS, C retlw 0 bcf TOGFLG ; SX1TMR resolution ~= 1ms ; SX1TMR overflow ~= 0.25sec (2^8*1ms) ; TOGGLE toggles back and forth to a ; one the rate TMR0 overflows. ; TMR0 overflow ~= 1ms (2^8*4us) ; TOGGLE forces this routine to spend ; 1/2 of TMR0 in TIMER and 1/2 in TIMER1.

incfsz SX1TMR, F retlw 0

70

EK-5. (Devam) Alc ksm program kodlar incf SX2TMR, F ; SX2TMR resolution ~= 0.25sec ; SX2TMR overflw ~= 1min (2^8*0.23sec)

retlw 0 TIMER1

movlw B'01111111' addwf TMR0, W btfsc STATUS, C retlw 0 bsf TOGFLG

; Timer routine spends half its time ; in TIMER1 waiting to set TOGGLE ; to one again

retlw 0 adimtbl ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW ; Subroutine: CLOCK ; ; Description: Continually updates TMRLOW and TMRHIGH. ; ; Constants: none ; ; Global Variables: ORIGIN PCL,F b'00000001' b'00001001' b'00001000' b'00001010' b'00000010' b'00000110' b'00000100' b'00000101'

;----------------------------------------------------------------------

71

EK-5. (Devam) Alc ksm program kodlar ; Initialization: ORIGIN ; ; Output: TMRLOW, TMRHIGH ; ;---------------------------------------------------------------------CLOCK movf ORIGIN, W ; TMRLOW is updated based on time ; TMRLOW resolution ~= 4us (like TMR0) ; TMRLOW overflow ~= 1ms (2^8*4ms) ; TMRHIGH resolution ~= 1ms ; TMRHIGH overflow ~= 0.24sec (2^8*1ms) ; NOP and subtraction commands ensure ; ORIGIN equals TMR0 as called upon ; in line 2 of CLOCK. passed since ORIGIN was set. subwf TMR0, W addwf TMRLOW, F btfsc STATUS, C incf TMRHIGH, F nop nop nop movlw 2 subwf TMR0, W movwf ORIGIN value ; of TMR0 at time of operation with ORIGIN.) retlw 0 ; (ORIGIN must be updated to equal the

;----------------------------------------------------------------------

72

EK-5. (Devam) Alc ksm program kodlar ; Subroutine: SETWATCH ; ; Description: Initialize the pulse width timer registers. ; ; Constants: ; ; Global Variables: ; ; Initialization: none ; ; Output: ORIGIN ; ;---------------------------------------------------------------------SETWATCH movf clrf clrf retlw TMR0, W TMRLOW TMRHIGH 0 ; record TMR0's value in ORIGIN ; clear the low and high order timers movwf ORIGIN

;---------------------------------------------------------------------; Subroutine: SXON ; ; Description: Turns off all LEDs when they timeout. When SX1TMR ; overflows, SX2TMR will increment to 1. Recall this will occur at ; 0.25 seconds (2^8*1ms) after SX1TMR is initiated. ;

73

EK-5. (Devam) Alc ksm program kodlar ; Constants: none ; ; Global Variables: LEDREG ; ; Initialization: SX2TMR ; ; Output: none ; ;---------------------------------------------------------------------SXON btfss SX2TMR, 0 retlw 0 clrf LEDREG ; turn LEDs off

retlw 0

;---------------------------------------------------------------------; Subroutine: Display ; ; Description: Displays Value Stored In LEDREGBUF On LED Array ; 1 bit is displayed during each call ; LEDREGBUF is reloaded with LEDREG after 8 calls of DISPLAY() ; D7..D4 LED'S show most significant nibble ; D3..D0 LED'S show least significant nibble ;

74

EK-5. (Devam) Alc ksm program kodlar ; Constants: ; ; Global Variables: LEDREG, LEDREGBUF ; ; Initialization: ; ; Output: ; ;---------------------------------------------------------------------;stepmotor dongusu iin gelen bilgilerin porta2dan gsterlmesi ;input: ;output: LEDREG PORTA

;---------------------------------------------------; LEDREG xxxx00xx = motor 3 secili H'00' => porta,4 = 0 , porta,5 = 0 ; =0 ; porta,5 = 1 ; porta,5 = 1 ; ; ; ; ; ; ; (0) kahverengi = portc,3 siyah turuncu = portc,2 = portc,1 xxxxxxx1 = motor sag tarafa xxxxxx1x = motor sol tarafa doner xxxx11xx = motor 0 secili H'0C' => porta,4 = 1 , xxxx10xx = motor 1 secili H'08' => porta,4 = 0 , xxxx01xx = motor 2 secili H'04' => porta,4 = 1 , porta,5

75

EK-5. (Devam) Alc ksm program kodlar ; ; ;----------------------------------------------------DISPLAY1 motorsecimi movlw H'00' subwf MOTREG,W btfss STATUS,Z goto motor1secili bcf bsf bcf goto sol motor1secili movlw H'04' subwf MOTREG,W btfss STATUS,Z goto motor2secili bcf bcf bsf goto sol motor2secili movlw H'08' subwf MOTREG,W btfss STATUS,Z goto motor3secili bcf PORTA,4 PORTA,2 PORTA,4 PORTA,5 PORTA,2 PORTA,4 PORTA,5 sar = portc,0

76

EK-5. (Devam) Alc ksm program kodlar bcf bsf goto sol motor3secili movlw H'0C' subwf MOTREG,W btfss STATUS,Z goto cksyok ; ; bcf bcf clrf sol btfss LEDREG,0 goto sag incf adim,f goto sol PORTA,4 PORTA,5 PORTA PORTA,5 PORTA,2

movf adim,w andlw b'00000111' call adimtbl PORTC andlw b'00001111' movwf call clrf call return sag btfss LEDREG,1 goto cksyok gecikme LEDREG gecikme

77

EK-5. (Devam) Alc ksm program kodlar decf adim,f movf adim,w andlw b'00000111' call adimtbl PORTC andlw b'00001111' movwf call clrf call return cksyok ; ; clrf bsf return ;---------------------------------------------------------------------;---------------------------------------------------------------------; Main Program ;---------------------------------------------------------------------;---------------------------------------------------------------------RESET clrf clrf clrf clrf clrf clrf FLAGS PORTA PORTC LEDREG LEDSTATE LEDREGBUF ; setup the state counter to call BEGIN ; clear flags ; initialize PORTA inputs and outputs ; initialize PORTC inputs and outputs LEDREG PORTA,5 ;display1'in cagrldg dongu'ye gider gecikme LEDREG gecikme

movlw BEGN movwf STATECNTR

78

EK-5. (Devam) Alc ksm program kodlar call INITIAL movlw movwf MAIN call call ; TIMER CLOCK call DISPLAY1 H'ff' adim

movlw HIGH STATEM movwf PCLATH movf STATECNTR, W ; Mask out the high order bits of ; STATECNTR (a noise guard) ; The program clock (PCL) is incre; mented by STATECNTR in order ; to go to the appropiate routine andlw B'00001111' addwf PCL, F STATEM goto goto goto goto goto goto goto goto goto goto BEGIN BEGIN1 HEADER HEADER1 HIGHPLSE LOWPULSE RECORD WAIT4END VALIDATE IMPLEMNT

79

EK-5. (Devam) Alc ksm program kodlar goto goto goto goto goto goto RESET RESET RESET RESET RESET RESET ; These RESET commands correct ; erroneous values of STATECNTR ; not caught by the mask above.

;---------------------------------------------------------------------; RECEIVE SEQUENCE ;---------------------------------------------------------------------;*********************** CODE WORD FORMAT **************************** ; _ _ _ _ _ __ _ | ||| __ _ | _ ; |||||||| ; ; || | ||| / / TIME

; | |_| |_| |_| |_____________| |__| |_| |_/ /_| |_| |_________| ; |--PREAMBLE---|---HEADER----|---------DATA------------|--GUARD--| ;********************************************************************* ;******************** RECEIVED DATA BREAKDOWN ************************ ; ;bytes | DATA1 | DATA0 | | ;bits | 7| 6| 5| 4| 3| 2| 1| 0| 7| 6| 5| 4| 3| 2| 1| 0| ;desc. |S2|S1|S0|S3| 0| 0| ; ;bytes | ;desc. | DATA3 | DATA2 | | ;bits | 7| 6| 5| 4| 3| 2| 1| 0| 7| 6| 5| 4| 3| 2| 1| 0| COUNTER SERIAL NUMBER 3

80

EK-5. (Devam) Alc ksm program kodlar ;* S3 Not used ; ;********************************************************************* ;---------------------------------------; BEGIN ; ; ; ; ; ; BEGIN btfsc RXDATA incf STATECNTR, F goto BEGIN1 btfsc RXDATA goto MAIN call incf goto SETWATCH STATECNTR, F MAIN ; Make state HEADER MAIN ; Make state BEGIN1 Input Variables: RXDATA Output Variables: none This function looks for a possible start to the data stream.

;---------------------------------------; HEADER

81

EK-5. (Devam) Alc ksm program kodlar ; ; ; ; ; ; HEADER btfsc RXDATA goto RESTART btfss TMRHIGH, 0 goto MAIN movlw D'64' andwf TMRLOW, W btfsc STATUS, Z goto MAIN incf goto HEADER1 movlw D'6' subwf TMRHIGH, W btfss STATUS, C goto goto HEADER2 RESTART ; If the data goes high before 6ms ; then the header is valid, else ; restart. ; TMRHIGH = 6 = 6*1ms = 6ms STATECNTR, F MAIN ; Make state HEADER1 ; The program loops here until 1.25ms ; passes and if the data is still ; low. If both hold true -> HEADER1. ; 1.25ms occurs when: ; TMRHIGH = 1 ~= 2^8*4us = 1ms ; TMRLOW = 64 ~= 64*4us = 0.25ms Input Variables: RXDATA Output Variables: none Detects a valid header.

82

EK-5. (Devam) Alc ksm program kodlar HEADER2 btfss RXDATA goto MAIN call SETWATCH ; Initiate BITCNTR to 32 in order to ; receive 32 bits of the data stream. ; Make state HIGHPLSE

movlw D'32' movwf BITCNTR incf goto STATECNTR, F MAIN

;---------------------------------------; HIGHPLSE ; ; ; ; ; ; Input Variables: RXDATA Output Variables: none Times the width of high pulses.

HIGHPLSE btfsc TMRHIGH, 0 goto RESTART btfsc RXDATA goto MAIN movf TMRLOW, W ; Move the pulse width value to ; If TMRLOW overflows then RESTART

83

EK-5. (Devam) Alc ksm program kodlar movwf HIGHWDTH call incf goto SETWATCH STATECNTR, F MAIN ; Make state LOWPULSE ; HIGHWDTH for later calculations.

;---------------------------------------; LOWPULSE ; ; ; ; ; ; Input Variables: none Output Variables: none Times the width of low pulses.

LOWPULSE btfsc TMRHIGH, 0 goto LOW2 btfss RXDATA goto MAIN movf call incf goto TMRLOW, W SETWATCH STATECNTR, F MAIN ; Make state RECORD ; Move the pulse width value to ; LOWWDTH for later calculations. ; If TMRLOW overflows then make ; state HEADER.

movwf LOWWDTH

84

EK-5. (Devam) Alc ksm program kodlar LOW2 movlw HEADR movwf STATECNTR goto MAIN ; Make state HEADER if lowpulse is ; too long.

;---------------------------------------; RECORD ; ; ; ; ; ; ; ; ; RECORD movf rrf rrf rrf rrf HIGHWDTH, W ; The state of the carry bit after DATA3, F DATA2, F DATA1, F DATA0, F ; this operation reflects the data ; logic. This is then rotated ; into the storage bytes. subwf LOWWDTH, W Input Variables: RXDATA Output Variables: DATA0 DATA1 DATA2 DATA3 Records each bit as it comes in from the data stream.

movlw HIGHP movwf STATECNTR decfsz BITCNTR, F goto MAIN

85

EK-5. (Devam) Alc ksm program kodlar movlw D'4' movwf COUNTR movlw DATA0 movwf FSR RECORD1 movlw 0xFF xorwf INDF, W btfss STATUS, Z goto RECORD2 incf FSR, F ; Use indirect referencing to point to ; DATA0 -- DATA3 on subsequent loops ; in RECORD1. ; Starting here and including RECORD1 ; a check is made to make sure that ; the data is not composed entirely ; of 1s.

decfsz COUNTR, F goto RECORD1 goto RECORD2 movlw WAIT movwf STATECNTR goto MAIN ; Make state WAIT4END RESTART

;---------------------------------------; WAIT4END ; ; ; Wait for the guard time at the end of the code word before attempting to receive another code word.

86

EK-5. (Devam) Alc ksm program kodlar ; ; ; ; Input Variables: RXDATA Output Variables: none

WAIT4END btfsc HLFLG goto WAIT1 btfsc RXDATA goto MAIN call bsf WAIT1 btfss RXDATA goto WAIT2 bcf goto WAIT2 btfss TMRHIGH, 3 goto MAIN bcf incf HLFLG STATECNTR, F ; If the low period is greater than ; 8ms (2^3*1ms) then the guard time ; has been reached. ; Make state VALIDATE HLFLG MAIN SETWATCH HLFLG ; HIGHLOW is set to indicate that the ; data has transitioned from a high ; to a low.

87

EK-5. (Devam) Alc ksm program kodlar goto MAIN

;---------------------------------------; VALIDATE ; ; ; ; ; ; ; ; Input Variables: DATA0 DATA1 Output Variables: none Checks that the transmission received is from the valid transmitter.

VALIDATE movlw 0x00 call ; EEPROM Address = 0x00 ; Get stored DATA0, EEDATA -> W DATA_EEPROM_READ

xorwf DATA0, W btfss STATUS, Z goto RESTART movlw 0x01 call

; compare with received DATA0 ; If first byte checks out then ; continue, else restart ; EEPROM Address = 0x01 ; Get stored DATA1, EEDATA -> W

DATA_EEPROM_READ

movwf TEMP bsf movf bcf STATUS, RP0 EEDATA, W STATUS, RP0

; move received DATA1 -> TEMP ; ---- Select Bank 1 ----; ---- Select Bank 0 -----

88

EK-5. (Devam) Alc ksm program kodlar xorwf TEMP, F btfsc TEMP, 0 goto RESTART btfsc TEMP, 1 goto RESTART incf goto STATECNTR, F MAIN ; Make state IMPLEMENT ; compare with received DATA1 ; Do bits 8 and 9 of Serial Number 3 ; check out?

;---------------------------------------; IMPLEMNT ; ; ; ; ; ; ; ; Input Variables: DATA1 Output Variables: S0 S1 S2 Implements the outputs specified by the received code word.

IMPLEMNT

movfw DATA3 movwf LEDREG

; read received analog value ; save to LEDREG

89

EK-5. (Devam) Alc ksm program kodlar movwf movlw clrf clrf goto SX1TMR SX2TMR RESTART MOTREG H'0C' ; initialize the timers for the ; outputs

andwf MOTREG,F

;---------------------------------------; RESTART ; ; ; ; ; ; ; Input Variables: none Output Variables: none Sets the State Counter to BEGIN so that the receive sequence is restarted.

RESTART movlw BEGN movwf STATECNTR call goto MAIN DISPLAY1 ; restart receive sequence and return ; to MAIN

;---------------------------------------------------------------------;gecikme dngs ;***************** gecikme movlw H'ff'

90

EK-5. (Devam) Alc ksm program kodlar movwf dongu movlw movwf dongu1 decfsz sayac,f goto dongu1 decfsz return ;---------------------------------------------------------------------; Data EEPROM Memory (Section 8.0) ; ; PIC12F629/675 devices have 128 bytes of data EEPROM with address ; range 0x00 to 0x7F. ; Initialize Data EEPROM Memory locations ORG DE 0x2100 0x73, 0x43, 0x02, 0x03 sayac1,f H'ff' sayac sayac1

goto dongu

;---------------------------------------------------------------------; Calibrating the Internal Oscillator (Section 9.2.5.1) ; Oscillator Calibration Register (OSCCAL) (Section 2.2.2.7) ; ; The below statements are placed here so that the program can be ; simulated with MPLAB SIM or emulated with the ICD2 or ICE-2000. ; ; The programmer (PICkit or PROMATE II) will save the actual OSCCAL

91

EK-5. (Devam) Alc ksm program kodlar ; value in the device and restore it. The value below WILL NOT be ; programmed into the device. org retlw 0x3ff 0x40

;---------------------------------------------------------------------end ; end of program directive ;----------------------------------------------------------------------

92

EK-6. Verici ksm program kodlar ;---------------------------------------------------------------------; ; Filename: ; ; ; Author: ; ;---------------------------------------------------------------------; ; Files required: ; ; ;---------------------------------------------------------------------list p=12f675 ; list directive to define processor p12f675.inc Mustafa Burak UVEZ; verici_program_adim_motor

#include

<p12f675.inc> ; processor specific variable definitions ; suppress message 302 from list file

errorlevel -302

; --------------------------------------------------------------------; Configuration Bits (Section 9.1 Configuration Bits) ; --------------------------------------------------------------------; ; Data Memory Code Protection bit: ; _CPD_ON = Enabled ; _CPD_OFF = Disabled ; ; Program Memory Code protection: ; _CP_ON = Enabled ; _CP_OFF = : Disabled ;

93

EK-6. (Devam) Verici ksm program kodlar ; Brown-out Detection Enable bit: ; _BODEN_ON = Enabled ; _BODEN_OFF = Disabled ; ; GP3/MCLR pin function select: ; _MCLRE_ON = GP3/MCLR pin function is /MCLR ; _MCLRE_OFF = GP3/MCLR pin function is digital I/O, ; ; ; Power-up Timer Enable bit: ; _PWRTE_ON = Enabled ; _PWRTE_OFF = Disabled ; ; Watchdog Timer Enable bit: ; _WDT_ON = Enabled ; _WDT_OFF = Disabled ; ; Oscillator Selction bits: ; _EXTRC_OSC_NOCLKOUT = CLKOUT function on GP4 pin, RC on GP5 pin. ; _EXTRC_OSC_CLKOUT = I/O function on GP4 pin, RC on GP5 pin. ; _INTRC_OSC_CLKOUT = Internal oscillator, CLKOUT function on GP4 pin, ; I/O function on GP5 pin. ; _INTRC_OSC_NOCLKOUT = Internal oscillator, I/O function on GP4 and GP5 pins. ; _EC_OSC = I/O function on GP4 pin, CLKIN on GP5 pin. ; _HS_OSC = High speed crystal/resonator on GP4 and GP5 pins. ; _XT_OSC = Crystal/resonator on GP4 and GP5 pins. ; _LP_OSC = Low power crystal on GP4 and GP5 pins. /MCLR internally tied to Vdd

94

EK-6. (Devam) Verici ksm program kodlar ; ; --------------------------------------------------------------------__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF

& _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;---------------------------------------------------------------------; Variables (Section 2.2 Data Memory Organization) ;---------------------------------------------------------------------; Data Memory Organization (Section 2.2) ; ; Register locations 0x20 to 0x5F (64 bytes) are General Purpose ; registers, implemented as static RAM and are mapped across both ; banks. cblock 0x20 w_temp status_temp TEMP CSR0 CSR1 CSR2 CSR3 CSR4 CSR5 CSR6 ; used for context saving ; used for context saving ; General Purpose Temporary register ; TX buffer shift register

95

EK-6. (Devam) Verici ksm program kodlar CSR7 CSR8 Count Count2 BitCount TimeHi TimeLo DEGER1 FuncBits endc ;---------------------------------------------------------------------; Defines ;---------------------------------------------------------------------; Set up GPIO Port (Section 3.0) ; Function of GPIO pins depend on: ; Configuration Bits (CONFIG) (Section 9.1) ; Weak Pull-up Register (WPU) (Section 3.2.1) ; Interrupt-on-change GPIO Register (IOCB) (Section 3.2.2) ; Option Register (OPTION_REG) (Register 4-1) ; TIMER1 Control Register (T1CON) (Register 5-1) ; Comparator Control Register (CMCON) (Section 6.0) ; A/D Control Register (ADCON0) (Section 7.0) (PIC12F675 Only) #define POT0 #define POT1 #define TXD GPIO, 0 GPIO, 1 GPIO, 2 ; (Analog Input) Potentiometer GP0 ; (Analog Input) Potentiometer GP1 ; (Output) Transmit Data ; Function Bits

96

EK-6. (Devam) Verici ksm program kodlar #define PB3 #define PB4 GPIO, 3 GPIO, 4 ; (Input Only) Push button switch GP3 ; (Input) Push button switch GP4 ; (Output) RF Enable

#define RFENA GPIO, 5

; Define for TRISIO Register (Section 3.1) ; ; GPIO is an 6-bit wide, bi-directional port. The corresponding data ; direction register is TRISIO. Setting a TRISIO bit (= 1) will make ; the corresponding GPIO pin and input. Clearing a TRISIO bit (= 0) ; will make the corresponding GPIO pin an output. The exception is ; GP3, which is input only and its TRIS bit will always read as a '1'. ; GPIO Pins = xx543210 #define GPTRIS B'00011011' ; delays/timings #define TGUARD D'46' #define PREAMB D'16' ; 46 X TE ; Preamble length = 16 pulses

;---------------------------------------------------------------------; Program Memory ;---------------------------------------------------------------------; Program Memory Organization (Section 2.1) ORG nop 0x000 ; RESET Vector ; for ICD use

97

EK-6. (Devam) Verici ksm program kodlar goto INITALIZE ; goto INITALIZE

ORG

0x004

; Interrupt Vector ; save W register ; swap status to be saved into W ; ---- Select Bank 0 ----; save STATUS register

movwf w_temp swapf STATUS, W bcf STATUS, RP0 movwf status_temp ;----------------------------------------

; Interrupt Service Routine (ISR) ; ; Description: ; ;---------------------------------------; Interrupt-on-change (Section 3.2.2 and 9.4.3) ; ; An input change on GPIO change sets the GPIF bit. The interrupt can ; be enabled/disabled be setting/clearing the GPIE bit. Individual pins ; are configured through the IOC register (see INITIALIZATION below). ; ; Clear the IOC interrupt by: ; a) Any read or write of GPIO. This will end the mismatch condition. ; b) Clear the flag bit GPIF movfw GPIO bcf INTCON, GPIF ; read GPIO

98

EK-6. (Devam) Verici ksm program kodlar ;---------------------------------------swapf status_temp, W original state movwf STATUS swapf w_temp, F swapf w_temp, W retfie ; restore W register ; restore STATUS register ; swap status_temp into W, sets bank to

;---------------------------------------------------------------------; Subroutine DATA_EEPROM_READ ; ; Description: To read an EEPROM data memory location, the address is ; written to the EEADR register and set control bit RD (EECON1<0>) to ; initiate a read. Data is available in the EEDATA register the next ; clock cycle. ; ; Constants: none ; ; Global Variables: none ; ; Initialization: W contains EEPROM address to be read ; ; Output: W contains EEPROM data ; ;----------------------------------------------------------------------

99

EK-6. (Devam) Verici ksm program kodlar DATA_EEPROM_READ bsf STATUS, RP0 ; ---- Select Bank 1 ----; move EEPROM address in W to EEADR ; initiate EEPROM read ; move data to W ; ---- Select Bank 0 -----

movwf EEADR bsf movf bcf EECON1, RD EEDATA, W STATUS, RP0

return

;---------------------------------------------------------------------; Subroutine DATA_EEPROM_WRITE ; ; Description: To write an EEPROM data memory location, the address is ; written to the EEADR register, data to the EEDATA register, then ; execute a required sequence of instructions. ; ; CAUTION: Interrupts are disable during this subroutine ; ; Constants: none ; ; Global Variables: none ; ; Initialization: Address = EEADR, Data = EEDATA ; ; Output: none

100

EK-6. (Devam) Verici ksm program kodlar ;---------------------------------------------------------------------DATA_EEPROM_WRITE bsf bsf cycles bcf INTCON, GIE ; disable global interrupts ; *** required sequence, do not alter *** movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf bsf bcf cycles bcf STATUS, RP0 ; ---- Select Bank 0 ----EECON1, WR INTCON, GIE EECON1, WREN ; initiate EEPROM write ; enable global interrupts ; EEPROM Write Enable: inhibit write ; *** end required sequence *** STATUS, RP0 EECON1, WREN ; ---- Select Bank 1 ----; EEPROM Write Enable: allow write

return

;---------------------------------------------------------------------; Subroutine READ_ANALOG_AN0; READ_ANALOG_AN1 ; ; Description: Read analog channel 0 (AN0) or 1 (AN1). ;

101

EK-6. (Devam) Verici ksm program kodlar ; Constants: none ; ; Global Variables: none ; ; Initialization: none ; ; Output: ADRESH and ADRESL contain 10-bit A/D result justified ; according to ADCON0, ADFM bit. ; ;---------------------------------------------------------------------READ_ANALOG_AN0 bcf bcf goto ADCON0, CHS1 ADCON0, CHS0 READ_ANALOG ; select analog channel AN0

READ_ANALOG_AN1 bcf bsf ADCON0, CHS1 ADCON0, CHS0 ; select analog channel AN1

READ_ANALOG bsf ADCON0, ADON ; Turn on ADC module

; After selecting a new channel, allow for sufficent sample time. ; The amount of sample time depends on the charging time of the ; internal charge holding capacitor (Section 7.2).

102

EK-6. (Devam) Verici ksm program kodlar movlw D'6' movwf TEMP decfsz TEMP, F goto bsf $-1 ADCON0, GO ; start A/D conversion ; has A/D conversion completed? ; At 4 MHz, a 22us delay ; (22us = 2us + 6 * 3us + 1us)

btfsc ADCON0, GO goto bcf $-1 ADCON0, ADON

; Turn off ADC module (consumes no

operating current) return

;---------------------------------------------------------------------; Subroutine: WaitxTE ; ; Description: ; ; Constants: ; ; Global Variables: ; ; Initialization: W x 400us length of delay required ; ; Output: Count, Count2 as decrementing counters ; ;----------------------------------------------------------------------

103

EK-6. (Devam) Verici ksm program kodlar WaitxTE movwf Count2 waitxlp movlw D'79' movwf Count wait400lp nop nop goto ; ; ; [1] ; [1] ; [1] wait400lp ; [2] -------79 x 5 = 395us decfsz Count2,F goto waitxlp ; [1] ; [2] ; [1] ; [1] ; [1]

decfsz Count,F

retlw 0 ; ; ;

; [2] total 2 (call) + W x (395 + 5) + 2 (return) w = 1 -> 406us @4MHz w = 2 -> 806us @4MHz

;---------------------------------------------------------------------; Initialize PICmicro (PIC12F675) ;---------------------------------------------------------------------INITALIZE

104

EK-6. (Devam) Verici ksm program kodlar ; Disable global interrupts during initialization bcf INTCON, GIE ; disable global interrupts

;---------------------------------------; Calibrating the Internal Oscillator (Section 9.2.5.1) ; Oscillator Calibration Register (Section 2.2.2.7) ; ; A calibration instruction is programmed into the last location of ; program memory. This instruction is a RETLW XX, where the literal is ; the calibration value. The literal is placed in the OSCCAL register ; to set the calibration of the internal oscillator. bsf call STATUS, RP0 0x3FF ; ---- Select Bank 1 ----; retrieve factory calibration value ; update register with factory cal value ; ---- Select Bank 0 -----

movwf OSCCAL bcf STATUS, RP0

;---------------------------------------; GPIO Port (Section 3.0) ; ; Store GPTRIS value defined above into the TRISIO direction register bsf STATUS, RP0 ; ---- Select Bank 1 -----

movlw GPTRIS

105

EK-6. (Devam) Verici ksm program kodlar movwf TRISIO bcf STATUS, RP0 ; Write to TRISIO register ; ---- Select Bank 0 -----

;---------------------------------------; Comparator Module (Section 6.0) ; ; The PIC12F629/675 devices have one analog comparator. The inputs to ; the comparator are multiplexed with the GP0 and GP1 pins. There is ; an on-chip Comparator Voltage Reference that can also be applied to ; an input of the comparator. In addition, GP2 can be configured as ; the comparator output. The Comparator Control Register (CMCON) ; contains bits to control the comparator. The Voltage Reference ; Control Register (VRCON) controls the voltage reference module.

; Comparator Configuration (Figure 6-2) ; ; ; bcf bcf bcf CMCON, CINV CMCON, COUT CMCON, CIS ; Comparator Output Inversion: not ; Comparator Output bit: Vin+ < Vin; Comparator Input Switch: Vininverted

connectos to Cin; CM2:CM0 = 111 - Comparator Off (lowest power) bsf bsf bsf CMCON, CM2 CMCON, CM1 CMCON, CM0 ; Comparator Mode bit 2 ; Comparator Mode bit 1 ; Comparator Mode bit 0

106

EK-6. (Devam) Verici ksm program kodlar ; VRCON (Register 6-2) bsf bcf drain ; ; ; ; ; bcf bcf bcf bcf bcf bcf VRCON, VRR VRCON, VR3 VRCON, VR2 VRCON, VR1 VRCON, VR0 STATUS, RP0 ; CVref Range Selection: High Range ; CVref value selection bit 3 ; CVref value selection bit 2 ; CVref value selection bit 1 ; CVref value selection bit 0 ; ---- Select Bank 0 ----STATUS, RP0 VRCON, VREN ; ---- Select Bank 1 ----; CVref circuit: powered down, no Idd

;---------------------------------------; Analog-to-Digital Converter (A/D) Module (Section 7.0) (PIC12F675 Only) ; ; The analog-to-digital converter (A/D) allows conversion of an analog ; input signal to a 10-bit binary representation of that signal. The ; PIC12F675 has four analog inputs multiplexed into one sample and hold ; circuit. There are two registers to control the functions of the A/D ; module: ; A/D Control Register (ADCON0) ; Analog Select Register (ANSEL) ;

107

EK-6. (Devam) Verici ksm program kodlar ; Note: When using GPIO pins as analog inputs, ensure the TRISIO register ; bits are set (= 1) for input. bcf bcf bcf ADCON0, ADFM ADCON0, VCFG ADCON0, ADON ; A/D Result Formed: left justified ; Voltage Reference: Vdd ; ADC is shut-off and consumes no

operating current bsf STATUS, RP0 ; ---- Select Bank 1 -----

; select A/D Conversion Clock Source: Fosc/8 bcf bcf bsf ANSEL, ADCS2 ANSEL, ADCS1 ANSEL, ADCS0 ; A/D Conversion Clock Select bit 2 ; A/D Conversion Clock Select bit 1 ; A/D Conversion Clock Select bit 0

; select GPIO pins that will be analog inputs: GP0/AN0, GP1/AN1 bcf bcf ; trk bcf input bcf bcf ANSEL, ANS0 STATUS, RP0 ; Analog Select GP0/AN0: analog input ; ---- Select Bank 0 ----ANSEL, ANS1 ; Analog Select GP1/AN1: analog ANSEL, ANS3 ANSEL, ANS2 ; Analog Select GP4/AN3: digital I/O ; Analog Select GP2/AN2: digital I/O

;---------------------------------------; TIMER1 Module with Gate Control (Section 5.0) ;

108

EK-6. (Devam) Verici ksm program kodlar ; The TIMER1 Control Register (T1CON) is used to enable/disable TIMER1 ; and select various features of the TIMER1 module. bcf bcf T1CON, TMR1ON T1CON, TMR1CS ; TIMER1: stopped ; TIMER1 Clock Source Select: Internal

Clock (Fosc/4) bcf T1CON, NOT_T1SYNC ; TIMER1 External Clock Input Sync

Control: Syncronize external clock input ; T1OSCEN only if INTOSC without CLKOUT oscillator is active, else ignored bcf T1CON, T1OSCEN ; LP Oscillator Enable Control: LP oscillator off ; TIMER1 Input Prescale Select: 1:1 bcf bit 1 bcf bit 0 ; TMR1GE only if TMR1ON = 1, else ignored bcf T1CON, TMR1GE ; TIMER1 Gate Enable: on T1CON, T1CKPS0 ; TIMER1 Input Clock Prescale Select T1CON, T1CKPS1 ; TIMER1 Input Clock Prescale Select

;---------------------------------------; Weak Pull-up Register (WPU) (Section 3.2.1) ;

109

EK-6. (Devam) Verici ksm program kodlar ; Each of the GPIO pins, except GP3, has an individually configurable ; weak internal pull-up. Control bits WPUx enable or disable each ; pull-up. Refer to Register 3-1. Each weak pull-up is automatically ; turned off when the port pin is configured as an output. The pull-ups ; are disabled on a Power-on Reset by the NOT_GPPU bit (see OPTION_REG below). bsf ; STATUS, RP0 ; ---- Select Bank 1 -----

GPIO Pins = xx54x210 movlw B'00010000' movwf WPU bcf STATUS, RP0 ; ---- Select Bank 0 ----; GP4 pull-up enabled

;---------------------------------------; OPTION Register (OPTION_REG) (Section 2.2.2.2) ; TIMER0 Module (Section 4.0) ; ; The OPTION_REG contains control bits to configure: ; Weak pull-ups on GPIO (see also WPU Register above) ; External GP2/INT interrupt ; TMR0 ; TMR0/WDT prescaler bsf bcf STATUS, RP0 ; ---- Select Bank 1 -----

OPTION_REG, NOT_GPPU ; GPIO pull-ups: enabled

110

EK-6. (Devam) Verici ksm program kodlar bsf OPTION_REG, INTEDG ; Interrupt Edge: on rising edge of

GP2/INT pin bcf bcf OPTION_REG, T0CS OPTION_REG, T0SE ; TMR0 Clock Source: internal ; TMR0 Source Edge: increment low-

instruction cycle (CLKOUT) to-high transition on GP2/T0CKI pin bcf TIMER0 ; TMR0 Prescaler Rate: 1:2 bcf bcf bcf bcf OPTION_REG, PS2 OPTION_REG, PS1 OPTION_REG, PS0 STATUS, RP0 ; Prescaler Rate Select bit 2 ; Prescaler Rate Select bit 1 ; Prescaler Rate Select bit 0 ; ---- Select Bank 0 ----OPTION_REG, PSA ; Prescaler Assignment: assigned to

;---------------------------------------; Interrupt-on-Change Register (IOCB) (Section 3.2.2) ; ; Each of the GPIO pins is individually configurable as an interrupt; on-change pin. Control bits IOCBx enable or disable the interrupt ; function for each pin. Refer to Register 3-2. The interrupt-on-change ; is disabled on a Power-on Reset. ; ; Note: Global interrupt enables (GIE and GPIE) must be enabled for ; individual interrupts to be recognized.

111

EK-6. (Devam) Verici ksm program kodlar bsf STATUS, RP0 ; ---- Select Bank 1 -----

; GPIO Pins = xx543210 movlw b'00011000' movwf IOCB bcf STATUS, RP0 ; Interrupt-on-change enabled: GP3, GP4 ; ---- Select Bank 0 -----

;---------------------------------------; Peripheral Interrupt Enable Register (PIE1) (Section 2.2.2.4) ; ; The PIE1 register contains peripheral interrupt enable bits. ; ; Note: The PEIE bit (INTCON<6>) must be set to enable any ; peripheral interrupt. bsf bcf bcf disabled bcf bcf bcf PIE1, CMIE PIE1, TMR1IE STATUS, RP0 ; Comparator Interrupt: disabled ; TMR1 Overflow Interrupt: disabled ; ---- Select Bank 0 ----STATUS, RP0 PIE1, EEIE PIE1, ADIE ; ---- Select Bank 1 ----; EE Write Complete Interrupt: disabled ; A/D Converter Interrupt (PIC12F675 Only):

;---------------------------------------; Interrupt Control Register (INTCON) (Section 2.2.2.3)

112

EK-6. (Devam) Verici ksm program kodlar ; The INTCON register contains enable and disable flag bits for TMR0 ; register overflow, GPIO port change and external GP2/INT pin ; interrupts. bcf bcf bit bcf Enable bit bsf ; bcf INTCON, GPIE INTCON, GIE ; enable Port Change Interrupt Enable bit ; disable global interrupts INTCON, INTE ; disable GP2/INT External Interrupt INTCON, PEIE INTCON, T0IE ; disable Peripheral Interrupt Enable bit ; disable TMR0 Overflow Interrupt Enable

;---------------------------------------------------------------------;---------------------------------------------------------------------; Main Program ;---------------------------------------------------------------------;---------------------------------------------------------------------MAIN bcf bcf RFENA INTCON, GIE ; Disable Transmitter ; enable global interrupts

;---------------------------------; Scan push buttons ;---------------------------------SCANPB

113

EK-6. (Devam) Verici ksm program kodlar ; clrf bcf movwf FuncBits btfsc POT1 pot0=1 motor1secili goto pot1bak motor2secili, pot0=1 motor3secili btfsc POT0 goto motor1sec ;1 ;0 ; DEGER1 = xxxx00xx => bcf bcf DEGER1,2 DEGER1,3 goto motor0sec motor0sec motor0secili ;pot1=1 => pot0=0 DEGER1 RFENA ; load zero into W ; clear Function Bits register ;pot1=0 => pot0=0 motor0secili,

movlw 0x00

goto sag_sol motor1sec motor1secili bsf bcf DEGER1,2 DEGER1,3 ; DEGER1 = xxxx01xx =>

goto sag_sol motor2sec motor2secili bcf bsf DEGER1,2 DEGER1,3 ; DEGER1 = xxxx10xx =>

goto sag_sol

114

EK-6. (Devam) Verici ksm program kodlar motor3sec motor3secili bsf bsf DEGER1,2 DEGER1,3 ; DEGER1 = xxxx11xx =>

goto sag_sol pot1bak btfsc POT0 goto motor3sec goto motor2sec sag_sol btfsc PB3 goto ; ; SPB1 movlw movwf bcf bsf goto XMIT SPB1 btfsc PB4 ; goto ; ; SCANPB goto sag_sol movlw movwf bsf bcf goto XMIT B'00000010' DEGER1 DEGER1,1 DEGER1,0 ; Yes, transmit buffer ; Push Button GP4 depressed? ; no, jump over B'00000001' DEGER1 DEGER1,1 DEGER1,0 ; Push Button GP3 pressed?

115

EK-6. (Devam) Verici ksm program kodlar ;---------------------------------; fill in transmission buffer ;---------------------------------XMIT bsf RFENA ; Enable Transmitter ; send Serial number

movlw 0x73 movwf CSR0

movfw FuncBits movwf CSR1

; send Function Bits

; send 16-bit Counter ; ; send analog value (this is modified from the fixed ; KeeLoq(r) protocol; these two fields are normally ; used for 16-bit counter value)

; bsf ; bcf

STATUS, RP0 STATUS, RP0 movwf CSR2

; ----- Select Bank 1 ----; ADRESL Result ; ----- Select Bank 0 -----

; movfw ADRESL movlw H'00'

movfw DEGER1 movwf CSR3

; ADRESH Result

116

EK-6. (Devam) Verici ksm program kodlar movlw 0x56 receiver) movwf CSR4 movlw 0x34 movwf CSR5 movlw 0x12 movwf CSR6 movlw 0x20 movwf CSR7 movlw 0x55 movwf CSR8 ; send Flags ; send 32-bit serial number 1 (ignored by

;---------------------------------; Transmission Loop ;---------------------------------TXLoop ; send preamble (50% duty cycle) Preamble movlw PREAMB movwf BitCount PreL ; init number of preamble bits

117

EK-6. (Devam) Verici ksm program kodlar bsf call bcf call TXD WaitxTE TXD WaitxTE ; ON ; delay ; OFF ; delay ; loop

movlw 1

movlw 1

decfsz BitCount,F goto PreL

; sync pause TXloop movlw D'10' call WaitxTE ; Theader = 10 x Te

; send 72 bit pattern movlw CSR0 movwf FSR TXNextByte movlw D'8' movwf BitCount TXNextBit rrf rrf BC ZERO INDF,W INDF,F ONE ; 8 bit rotate ; Carry contain lsb ; lsb first

118

EK-6. (Devam) Verici ksm program kodlar movlw 2 movwf TimeHi movlw 1 movwf TimeLo goto ONE movlw 1 movwf TimeHi movlw 2 movwf TimeLo Trasm_BIT bsf movf call bcf movf call TXD TimeHi,W WaitxTE TXD TimeLo,W WaitxTE ; OFF ; ON ; ; +---+ ; | | ; | Te 2Te | | +-Trasm_BIT ; ; +---+---+ +-; | | | ;---+ +---+ ; | 2Te Te |

;---+ +---+---+

decfsz BitCount,F goto incf TXNextBit FSR,F ; check if finished ; loop on bits

movlw CSR8+1 xorwf FSR,W andlw 0x1F BNZ TXNextByte

119

EK-6. (Devam) Verici ksm program kodlar ; guard time movlw TGUARD call goto WaitxTE SCANPB ; go back and scan for push button presses

;---------------------------------------------------------------------; Data EEPROM Memory (Section 8.0) ; ; PIC12F629/675 devices have 128 bytes of data EEPROM with address ; range 0x00 to 0x7F. ; Initialize Data EEPROM Memory locations ; ; ORG 0x2100 DE 0x00, 0x01, 0x02, 0x03

;---------------------------------------------------------------------; Calibrating the Internal Oscillator (Section 9.2.5.1) ; Oscillator Calibration Register (OSCCAL) (Section 2.2.2.7) ; org retlw end 0x3ff 0x80 ; end of program directive

;---------------------------------------------------------------------;----------------------------------------------------------------------

120

ZGEM

Kiisel Bilgiler Soyad, ad Uyruu Doum tarihi ve yeri Medeni hali Telefon Faks Gsm e-mail : VEZ Mustafa Burak : T.C. : 21.10.1980 , ANKARA : Bekar : 0 (312) 361 89 68 : 0 (312) 360 03 90 : 0 (532) 252 95 90 : 19914534@mail.baskent.edu.tr

Eitim Derece Lisans Lise Deneyimi Yl 2004 Yabanc Dil ngilizce Hobiler Fotoraf, Beikta, Bilgisayar Teknolojileri. Yer Renpar Sigorta LTD T Grev irket Mdr Eitim Birimi Mezuniyet tarihi 2004 1998

Bakent niversitesi / Elekt. Elektronik Mh. Ar Fen Lisesi Ankara

You might also like