buradan - Electrobotic

Transkript

buradan - Electrobotic
İçindekiler
TEŞEKKÜR .......................................................................................................................................ii
ÖZET ..............................................................................................................................................iii
1. GİRİŞ .......................................................................................................................................... 4
1.1 Robot Kavramının Tarihsel Gelişimi .................................................................................... 4
1.1.1 Robotların yapısal çeşitleri ........................................................................................... 6
1.2 Robotiğe Giriş ...................................................................................................................... 7
2. SERVO MOTORLAR .................................................................................................................... 9
2.1. Temel Prensip..................................................................................................................... 9
2.2 Standart Konfügirasyon....................................................................................................... 9
2.3 Servo Motor Çeşitleri ........................................................................................................ 10
2.4 Servo Motor Karakteristikleri ............................................................................................ 10
2.5 Güç Sağlayıcı (Power Supply) Voltajı ................................................................................. 11
2.6 Akım .................................................................................................................................. 11
2.7 Uygulama Hızı.................................................................................................................... 11
2.8 Tork ................................................................................................................................... 11
2.9 Kontrol Palsi ...................................................................................................................... 11
3. ROBOTUN ELEKTRONİK AKSAMI ............................................................................................. 11
3.1 USB Seri Haberleşme Kiti................................................................................................... 12
3.2 Servo Motor Kontrol Kartı ................................................................................................. 13
3.2.1 PIC16F877 Mikrodenetleyicisi .................................................................................... 15
3.2.2 7805 Gerilim Regülatörü ............................................................................................ 40
4. ROBOTUN YAZILIMI ................................................................................................................. 42
4.1 PIC Mikrodenetleyici Yazılımı ................................................ Error! Bookmark not defined.
4.2 Visual Basic Bilgisayar Arayüz Yazılımı .............................................................................. 42
4.2.1 Programdaki Açısal Hesaplamalar .............................................................................. 42
4.2.2 Programın Çalışması ................................................................................................... 42
5. ROBOTUN MEKANİK AKSAMI .................................................................................................. 44
5.1 Kullanılan Malzemeler....................................................................................................... 44
5.2 Plan Ve Yapım Aşamaları ................................................................................................... 46
KAYNAKLAR ................................................................................................................................. 61
i
TEŞEKKÜR
Bu tezin hazırlanma sürecinde bize yol gösteren ve kaynak temininde yardımcı
olan danışman hocamız Yrd. Doç. Dr. Kemal MAZANOĞLU’na, bilgisayar programını
oluşturmada yardımcı olan Devrim ÇAMOĞLU’ na teşekkürü borç biliriz.
ii
ÖZET
Bu projedeki amaç 5 eksenli hareket kabiliyetine sahip robotun bilgisayardan
kontrolünü sağlamaktır. Bu projede otonom ve insan kontrollü bir robot kolun elektrik
devreleri, mekanik yapıları ve PIC programları yer almaktadır. Proje prototip bir
çalışma olup bilgisayardan girilen açısal pozisyonlara göre motorları konumlandırarak
robot kolu hareket ettirmek üzere gerçekleştirilmiştir. Robotun mekanik aksamında
gövde imalatında hafif olan forex – dekota malzeme ve servo motorun kendi aparatları
kullanılmıştır. Robotun tasarımında kullanılan parçaların teknik resimleri ve ölçüleri
projede yer almaktadır. Robotun elektronik kartı ve bilgisayar arayüzünü oluşturan
yazılımda projede bulunmaktadır.
iii
1. GİRİŞ
1.1 Robot Kavramının Tarihsel Gelişimi
Sayısal kontrol ve Uzaktan kumanda kavramların gelişmesiyle robotik çalışmalarında
önemli gelimseler ortaya çıkmıştır. John Parson tarafından uzaktan kumandalı olarak yapılan
makine 1940 yıllarında Amerika Birleşik Devletleri Hava Kuvvetleri tarafından ardından da
Atom Enerjisi Komisyonu tarafından kullanılmaya başlandı. Radyoaktif maddeler üzerine
yapılan çalışmalarda önemli işlemlerde kullanıldı. Bu sistem endüstri alanında kullanılmaya
başladı. Cyril Walter Kenward birlikte 1954 ün Mart ayında patenti alındılar. Böylece ilk
endüstriyel robot denilebilecek bir sistem tasarlandı.
Belli başlı gelişmelerden birini de Joseph F. Engelberger (Fizik Müh.) ile George
C.Devol tarafından gerçekleştirildi. Robotların Babası olarak adlandırılan parça aktarım
robotu yaptılar. Bilgileri magnetik ortamlarda saklamaktı önemli gelişme çünkü artik daha
fazla veri daha küçük alanlarda rahatlıkla istenildiği zaman değiştirilebilecek şekilde
saklanabildi. Ve çalışmaları sonucunda "Unimate " adli firmayı kurdular 1949, bu firma ilk
robotik üzerine kurulan firmadır.
Bu tarihten sonra dünya üzerinde özellikle Amerika, Avrupa ve Japonya’da pek çok
firma robotik üzerine çalışmaya başladılar. Ve bu ilgi gelişmeyi de beraberinde artırdı. Bu
gelişmeler arasında göze çarpan ilk robot uygulama dili olan " WAVE" Stanford Akademisi
tarafından geliştirildi ve robotik bilimine kazandırıldı. 1974 de "AL " ve ticari amaçlı olan "
VAL " yapıldı. Val Ultimate tarafından geliştirilmişti ve buna bağlı olarak "PUMA
(Programmable Universal Machine for Assembly)" geliştirilerek üzerinde uygulandı.
Nispetten kısa eklemli bir robottu fakat temel olarak General Motors firmasının montaj hattı
temel alınmıştı. 1979 yılında Yamanashi Üniversitesi tarafından montaj amaçlı olan "SCARA
(Selective Compliance Arm for Robotic Assembly)" geliştirildi. Bu sistem ticari olarak 1981
piyasaya sürüldü.
4
Scara Hakkında kaynak bilgiler ve örnekler için
Şekil 1: Unimate'in puma robotu.
90 yıllara gelindiğinde robotlar artik çok çeşitli alanlarda ve özellikle insanların
rahatlıkla yapamayacağı isleri kusursuz yaparak İnsanoğlu’nun yasam sürecinde yerlerini
aldılar. Aşağıdaki örneklerde insanoğlunun inemediği derin sularda araştırma yapabilen,
Hiçbir mola vermeden yıllarca çalışabilen montaj robotları, Cerrahların hata yapmasını
engelleyen hatta cerrahlık mesleğini ortadan kaldıracak kadar ıddalı olan ameliyat robotları,
insan kolunun yerine takılabilen yapay kol sanırım bu gelişmelere en iyi örneklerdir.
Şekil 2: İnsan koluna takılan yapay kol
Fakat asil gelişme Sony firması tarafından evlerimize kadar sokulan robot köpek "Aibo"
olmalıdır. Yapılan robotta algılama karar verme ve de komut doğrultusunda uygulama yetileri mevcut
olmakla beraber geniş açılı bir hafıza ile sahibini tanımlama kadar birçok özellik yer almaktadır:(1998)
5
Şekil 3: Robot köpek ‘ Aibo ’
Sonuç olarak Robotik teknolojisindeki çalışmalar artik büyük oranda bilgisayar
teknolojisindeki gelişmelere dayanıyor. Robotik endüstrisi doğduğunda bilgisayarlar mevcut
olmasına rağmen 1970'lerin sonuna kadar boyutları nedeniyle robot kontrolünde kullanmaya
elverişli değildi. Bugün pazardaki tüm robotlar bilgisayar kontrolü kullanılmaktadır. Fakat
halen Robotik biliminin alanının makine ve de bilgisayar bilimlerini kapsadığı kesindir.
1.1.1 Robotların yapısal çeşitleri
Temel olarak robotlar kapsam ve yetenekleriyle sınıflandırılabilirler ama bence asil
olarak yapısal yeteneklerine göre sınıflandırılabilir:
Kartezyen Robotlar: X,Y,Z koordinat düzleminde her kol bir öncekine göre dik açıyla
kayar. Dikdörtgen sekline bir çalışma alanları vardır.
Silindirik Robotlar: Çalışma alanları silindiriktir. Kolun bir bölümü dikey, diğer bölümü ise
yatay hareket eder.
Polar Robotlar: Kol taban etrafında dönebilir. Kolun bir parçası içeri dışarı öteleme hareketi
yapabilir. Bir bölümü de aşağı yukarı dönebilir.
Revolüt Robotlar: Dönel veya küresel eklemlere sahiptir. Taban eklemine bağlı olan kol
taban etrafında döner ve diğer iki kısmı taşır. Dönel eklemler yatay ve dikey olarak
birleştirilmiştir. Yarım küre şeklinde bir çalışma alanları vardır.
6
Şekil 4: Revolüt Robotlar
1.2 Robotiğe Giriş
Robotik, Makine Mühendisliği, Elektrik ve Elektronik Mühendisliği ve Bilgisayar
Mühendisliği disiplinlerinin ortak çalışma alanıdır. Robotlar bir yazılım aracılığı ile yönetilen
ve yararlı bir amaç için iş ve değer üreten karmaşık makinelerdir. Robot fikri insanoğlu için
binlerce yıldır varolmakla birlikte asıl atılımını 1900’lü yıllarda yapmıştır.“Robot” terimi, ilk
olarak Çek yazar Karel Capek tarafından 1920 yılında kaleme alınan ve “R.U.R” veya
“Rossum's Universal Robots” (Rossum’un evrensel robotları) isimli tiyatro oyununda
kullanılmıştır. (Özsoy 2002)
Robot,
programlanarak,
taşıma
veya
yer
ve
yön
değiştirme
işlemlerini
gerçekleştirebilen bir sistemdir. Taşıma görevi, gövde boyutlarına kıyasla uzak bir mesafeye
hareket olarak tanımlanır.
Manipülasyon ise, gövdenin pozisyonunda meydana gelen değişikliktir. Manipülatör,
bir küme eklemin birbirine bağlandığı bir küme rijit kol içerir. Eklemlere motorlar takılmıştır.
Böylece mekanizma verilen bir görevi gerçekleştirmek için kontrol edilebilir. Robotun
7
analizi; matematik, mekanik ve elektronik gibi pek çok bilim dalına ait bilgi gerektirmektedir.
Robotlar, endüstride, tıpta, haberleşmede ve daha birçok alanda kullanılmaktadır. Ayrıca,
askeri uygulamalarda da robot kullanımı yaygındır. Robotları, kullanılan kontrol tekniğine ve
içerdikleri eklem türlerine göre iki farklı şekilde sınıflandırabiliriz. Kontrol tekniğine göre
robotlar: Adaptif olmayan robotlar, adaptif robotlar ve akıllı robotlardır. Akıllı robotlarda,
adaptif robotlarda bulunan sensör donanımına ek olarak geniş bir bellek ve çevrenin ayrıntılı
bir modeli bulunmaktadır.
Robotlar da; döner, prizmatik, silindirik, küresel, düzlemsel veya helisel eklemlerden
biri kullanılır ve robot, bu eklem türüne göre de sınıflandırılır. Döner ve prizmatik eklemler
robotikte en çok kullanılan eklem türleridir. Bir robot, mekanik bölümler, hareketlendiriciler
ve kontrol birimlerinden oluşmaktadır. Robotun mekanik bölümleri; yapısal parçalar, güç
ileten parçalar, (rot, dişliler vs.), taşıyıcılar ve akuplaj bölümleri olarak sayılabilir. Mekanik
bölümler, temel yapı parçaları ve servis parçaları olarak ikiye ayrılabilir. El veya diğer
gereçler (kaynak, boyama, öğütme, sıkıştırma araçları) mekaniğin servis parçalarını oluşturur.
Modern robotların hareketlendiricileri, çoğunlukla elektrikseldir (DC sürücüler). Endüstride
kullanılan robotlar olarak bahsettiğimiz robot kollar, bugün birçok uygulama için yeterli hız,
kararlılık ve kolaylığa erişmiş durumdalar. Şu an bu robot kollar için en zayıf parça, el: uç
noktada bulunan el sıklıkla pnömatik, 2-pozisyonlu pense şeklindedir. Bu yapı,
uygulamalarda farklı parçaları tutmaya ve yönlendirmeye fazla izin vermemektedir. Bu
konudaki çalışmalar gelecekteki önemli bir uğraş alanı olarak görünmektedir. Bir robot Temel
olarak beş kısımdan oluşur.
Aşağıda verilen kısımlar robotu oluşturan temel unsurlardır, robotun işlevini yerine
getirmesi ve sınıflandırması bu beş aşamaya göre yapılır:
1. Mekanik Kısmı: Robotun iskelet Kısmını oluşturur.
2.
Tutaç: ( End Effector) :Bu eleman gerçek işi yapan kısımdır, robotun en uç noktasıdır ve
uygulamada aktif olarak yer alır.
3. Motorlar: Eklemleri ve tutacı hareket ettirmek için kullanılır, en çok kullanılanları servo ve
hidrolik motorlardır.
4.
Kontroller: Girişi isleyip robotun yapması gereken görevini gerçekleştirir.
5.
Sensörler: Kontrollere bağlıdır, robotun görevini yapması için robota geri dönüş ve giriş
verisi sağlarlar. Her zaman gerekli değillerdir.
8
2. SERVO MOTORLAR
Servo motorlar gönderilen kodlanmış sinyaller ile şaftları özel bir açısal pozisyonda
döndürülebilen motorlardır. Kodlanmış sinyal servo motorun girişine uygulandığı sürece
servo motor şaftın açısal pozisyonunu korur. Kodlanmış sinyal değiştirilirse şaftın açısal
pozisyonu da değişir. Servo motorlar çeşitli robot projelerinde, robot kollarda, uzaktan
kumandalı uygulamalarda sıklıkla kullanılır. Aynı zamanda yüksek güçlü servo motorlar
endüstriyel otomasyonlarda da kullanılabilir.
2.1. Temel Prensip
Şekil 5: Servo motorun konfigürasyonu
Bir servo motorun temel konfigürasyonu şekilde gösterilmektedir. Bir DC motor
yüksek redüksiyon oranına sahip bir dişli kutusunu hareket ettirir. Sondaki şaft çok yavaş bir
hızla dönerek dönme ekseni üzerindeki potansiyometreyi de çevirir. Potansiyometrenin amacı
geri besleme yaparak servo motorun şaftının pozisyonun algılanmasını sağlamaktır.
Potansiyometre algılanan pozisyona karşılık gelen voltajı, voltaj karşılaştırıcısı olarak
kullanılan opampa gönderir. Bu voltaj değerinin, şaftın istenilen pozisyonunu belirleyen giriş
voltajı ile karşılaştırılması ile karşılaştırıcının çıkış voltajı belirlenir. Bu çıkış voltajı, motor
şaftını girişte uygulanan sinyali karşılık gelen açıya uyması için gerekli yönde hareket
ettirecek gücü sağlar.
2.2 Standart Konfügirasyon
Bir servo motorun şaftının pozisyonunu kontrol etmenin bir diğer yolu kodlanmış bir
sinyal kullanmaktır. Bu metot uzaktan kumandalı uygulamalarda kullanılan standart
servolarda sıklıkla kullanılır. Servonun kontrol girişine 18 ms periyotlu palslardan oluşan bir
9
sinyal gönderilir. Palsın süresi servo motorun şaftının 180º 'lik bir aralıktaki pozisyonunu
belirler. Eğer pals 1,5 ms uzunluğunda ise servo motorun şaftının pozisyonu 180 º 'lik aralığın
ortasındadır. Pals 1 ms uzunlukta ise servo motor 90 º sola, 2 ms uzunlukta ise 90 º sağa
hareket eder. Bazı servo motorların pals uzunluğu aralığı 1,25 ms ile 1,75 ms arasındadır. Bu
durumda pals uzunluğu 1,5 ms iken servo motor şaftı ortadadır. Pals uzunluğu 1,25 ms iken
90 º sola, 1,75 ms iken ise 90 º sağa hareket eder.
2.3 Servo Motor Çeşitleri
Standart servo motorların üç kablosu vardır. Bunlardan biri power (4 V ile 6 V
arasında), biri toprak, diğeri ise kontrol girişi içindir. Kabloların renkleri ise genellikle power
için kırmızı, toprak için siyah ve kontrol için beyazdır.
Servo motorların boyutları ve şekilleri planlanan uygulamaya bağlıdır. Yandaki
resimdeki servo motor ve benzerleri robotikte sık kullanılan servo motor tipleridir. Bunlar
düşük güçte çalışabilir, kullanılan servo motorun karakteristik özelliklerine ve uygulamaya
bağlı olarak 100 mA ile 2A aralığındaki DC voltaj kaynakları ile beslenebilirler. Endüstriyel
ve mobil uygulamalarda kullanılan AC voltaj ile çalışan servo motorlar da vardır.
Şekil 6: Servo Motor
2.4 Servo Motor Karakteristikleri
Diğer motorlarda olduğu gibi servo motorlarında elektriksel ve mekaniksel olarak
önemli karakteristik özellikleri vardır. Bunlardan en önemlileri aşağıda açıklanmıştır.
10
2.5 Güç Sağlayıcı (Power Supply) Voltajı
Normal robotik uygulamalarında sıklıkla kullanılan servo motorlar için bu voltaj
değeri genellikle 4 V ile 6 V aralığındadır. Bu aralığın dışında özel tipte servo motorlar da
bulunabilir.
2.6 Akım
Burada akım ile kastedilen servo motorun bir yüke maksimum tork uyguladığında
çektiği akımdır. DC motorlarda olduğu gibi bu akım değeri yüke göre değişir. Genellikle
servo motorların maksimum akım aralığı 100 mA ile 2 A arasıdır.
2.7 Uygulama Hızı
Uygulama hızı servo motoru şaftının belirli bir pozisyona (normalde 60 º)
gelebilmesi için gereken zaman olarak tanımlanır. Genellikle servo motorların uygulama
hızları 0,05 s / 60 º ile 0,2 s / 60 º arasındadır.
2.8 Tork
Diğer motorlarda oludğu gibi tork kg / cm ya da N-cm olarak verilir. Genel tork
değerleri 0,5 kg / cm ile 10 kg /cm arasındadır.
2.9 Kontrol Palsi
Kontrol palsi şaftın belli bir pozisyona gelebilmesi için kullanılan pals tipidir.
Uygulamalarda kullanılan iki ana tip vardır. Bunlar 1-2 ms aralığında pals ve 1,25-1,75 ms
aralığında pals değerleridir.
3. ROBOTUN ELEKTRONİK AKSAMI
Robotun elektronik aksamı temel olarak iki kısımdan oluşmaktadır. Bunlar ;
1- USB Seri Haberleşme Kiti
2- Servo motor Kontrol Kartı
kısımlarından oluşmaktadır.
11
3.1 USB Seri Haberleşme Kiti
Bu kitin amacı bilgisayarın USB portundan gelen verileri seri bilgiye dönüştürerek
mikrodenetleyiciye uygulamak ve bilgisayar – PIC haberleşmesini sağlamaktır. Projede
kullanılan USB – Seri dönüştürücü kiti üzerinde PL2303 entegresi yer almaktadır. Şekil 7’de
kitin resmi, Şekil 8’de devre şeması yer almaktadır.
Şekil 7: USB Seri Dönüştürücü PL2303 Kiti
12
Şekil 8: USB- Seri Dönüştürücü Devre Şeması
3.2 Servo Motor Kontrol Kartı
Servo motor kontrol kartında PIC Mikrodenetleyici olarak PIC 16F877, besleme
gerilimini 5 volta sabitlemek için 7805 gerilim regülatörü kullanılmıştır.
Kartın genel olarak çalışma prensibi şu şekilde işlemektedir;
Bilgisayarda yazılmış olan Visual Basic programından gelen 1 byte’lık veri servo
motor bilgisini içermektedir. Bilgisayardan her veri gönderildiğinde 5 byte’lık veri şekilinde
gelmektedir. Robotun dirsek kısmında kullanılan iki motor aynı açısal dönmeyi
gerçekleştireceğinden programdan gelen veri iki motorada uygulanmaktadır. VB ile USB
portundan gelen veriler VAR1, VAR2, VAR3, VAR4, VAR5 şeklinde değişkenlere
yazılmaktadır. VAR1 robot kolun uç kısmında yer alan kıskacın motoruna uygulanacak değeri
, VAR2 kıskacı hareket ettirecek motora uygulanacak değeri, VAR3 dirsek kısmında yer alan
motora uygulanacak değeri, VAR4 omuz kısmında yer alan motorlara uygulanacak değeri,
VAR5 ise robotu Z ekseninde döndürecek olan alt tabladaki motora uygulanacak değeri ifade
etmektedir. Seri olarak gelen her veride her motorun almaksı gereken açısal konum bilgisi yer
almakta ve bu esnada PIC HSERIN kesmesi ile gelen veriyi alarak, motorlara
göndermektedir. Programın çalışmasına yönelik detaylı bilgi Robotun Yazılımı kısmında yer
almaktadır.
13
Şekil 9 : Kontrol Kartının 3 Boyutlu Görünümü
Şekil 10 : Kontrol Kartının 3 Boyutlu Görünümü
14
Şekil 11 : Kontrol Kartının 3 Boyutlu Görünümü
3.2.1 PIC16F877 Mikrodenetleyicisi
MİMARİ (Architecture)
PIC 16F87X ve 16F8X serisi öncelikle, PIC 16CXX ailesinin özelliklerini taşır. PIC
16CXX’de Harvard mimarisi kullanılmıştır. Von Neuman mimarisinde, veri ve program
belleğine aynı yoldan erişilebilirken, bu mimaride program belleği ve veri belleğine erişim
farklı boylarda yapılır. Veri yolu (databus) 8 bit genişliğindedir. Aynı anda, veri belleğine 8
bit genişliğindeki bu yolla erişilirken; program belleğine program yolu ya da adres yolu
(program bus / adress bus) denilen 14 bit genişliğindeki diğer bir yolla erişilir. Bunun için PIC
16F87X ve PIC 16F84’de komut kodları (opcode), 14 bittir. 14 bitlik program belleğinin her
bir adresi, bir komut koduna (Instruction Code / Instruction Word) karşılık gelir. Dolayısıyla
her komuta bir çevrim süresinde (cycle) erişilir ve komut kaydedicisine yüklenir. Komut
kaydedicisi, CPU tarafından kullanılan bir kaydedicidir ve dallanma komutları dışındaki
bütün komutlar, aynı çevrim süresinde çalıştırılırlar. Bu sırada program sayacı, PC (Program
15
Counter) bir artar. Dallanma ya da sapma komutları ise, iki ardışık periyotta çalıştırılır ve
program sayacı PC, iki arttırılır.
Harvard
Program
Veri
Belleği
Von-Neuman
CPU
8
14
Program
Belleği
CPU
8
Ve
Veri
Belleği
Merkezi işlem biriminin (CPU) en önemli alt birimlerinden biri, ALU (Aritmetik Logic Unit)
olarak adlandırılan aritmetik mantık birimidir. ALU’nun görevi, kendisine yollanan veriler
üzerinde, aritmetik ya da mantıksal işlemler yapmaktır. ALU’nun biri W (Working Register)
ismi verilen kaydediciden olmak üzere, iki ana girişi vardır. ALU kendisine gelen iki veriyi
(işleçler), toplayıp çıkarılabilir. Çeşitli mantık işlemleri yapabilir (and,or, xor gibi).
Mikroişlemcilerde en çok kullanılan kaydedici, “working register”dır. Bu kısaca W olarak
adlandırılır. W, aritmetik ve mantık işlemlerinde, iki işlevi bir arada yürütür. İşlemden önce,
işlenenlerden birini barındırır. İşlemden sonra ise işlem sonucunu saklar, PIC 16F8X ve
16
16F87X serisi mikrodenetleyicilerde, komutun sonuna konan 1 veya 0 sayısıyla (d), sonucun
W’de ya da başka bir kaydedicisinde tutulacağı mikroişlemciye bildirilir.
PIC 16F877 ve 16F876, 8 Kword büyüklüğünde belleğe sahiptir. Program belleği yonganın
içerisindedir. PIC 16F84’ün belleği ise 1Kword büyüklüğündedir.
PIC 16F84 ve 16F87X serisi mikrodenetleyiciler, kendi kaydedicilerini ve veri belleğini,
doğrudan, dolaylı ve göreceli olarak adresleyebilirler.
16F87X Mikrodenetleyici ailesi aşağıdaki temel özellikleri taşır.
CPU azaltılmış komut seti
RISC temeline dayanır.
Öğrenilecek 35 komut vardır ve her biri 14 bit uzunluktadır.
Dallanma komutları iki çevrim (cycle) sürede, diğerleri ise bir çevrimlik sürede uygulanır.
İşlem hızı 16F877’de DC-20 MHz’dir. (16F877’de bir komut DC-200 ns hızında çalışır.)
Veri yolu (databus) 8 bittir.
32 adet SFR (Special Function Register) olarak adlandırılan özel işlem kaydedicisi vardır ve
bunlar statik RAM üzerindedir.
8 Kword’e kadar artan flash belleği 1 milyon kez programlanabilir.
368 Byte’a kadar artan veri belleği (RAM),
256 Byte’a kadar artan EEPROM veri belleği vardır.
Pin çıkışları PIC 16C73B/74B/76 ve 77 ile uyumludur.
14 kaynaktan kesme yapabilir.
Yığın derinliği 8’dir.
Doğrudan, dolaylı ve göreceli adresleme yapabilir.
Power-on Reset (Enerji verildiğinde sistemi resetleme özelliği)
Power-up Timer (Power-up zamanlayıcı)
Osilatör Start-up Timer (Osilatör başlatma zamanlayıcısı)
Watch-dog Timer (Özel tip zamanlayıcı), devre içi RC osilatör
Programla kod güvenliğinin sağlanabilmesi özelliği
Devre içi Debugger (Hata ayıklamakta kullanılabilecek modül)
Düşük gerilimli programlama
17
Flash ROM program belleği (EEPROM özellikli program belleği)
Enerji tasarrufu sağlayan, uyku –Sleep Modu
Seçimli osilatör özellikleri
Düşük güçle, yüksek hızla erişilebilen, CMOS-Flash EEPROM teknoloji
Tümüyle statik tasarım
2 pinle programlanabilme özelliği
yalnız 5V girişle, devre içi seri programlanabilme özelliği
İşlemcinin program belleğine, okuma/yazma özelliği ile erişimi
2.0 V – 5.0 V arasında değişen geniş işletim aralığı
25 mA’lik kaynak akımı
Devre içi, iki pin ile hata ayıklama özelliği
Geniş sıcaklık aralığında çalışabilme özelliği
Düşük güçle çalışabilme özelliği
Çevresel özellikleri ise şöyle sıralanabilir:
TMR0: 8 bitlik zamanlayıcı, 8 bit önbölücülü
TMR1: Önbölücülü, 16 bit zamanlayıcı, uyuma modundayken dış kristal zamanlayıcıdan
kontrolü arttırılabilir.
TMR2: 8 bitlik zamanlayıcı, hem önbölücü hem de sonbölücü sabiti
İki Capture / Compare / PWM modülü
10 bit çok kanallı A/D çevirici
senkron seri port (SSP), SPI (Master mod) ve I2C (Master Slave) ile birlikte
Paralel Slave Port, 8 bit genişlikte ve dış RD, WR, CS kontrolleri
USART/SCI, 9 bit adres yakalamalı
BOR Reset (Brown Out Reset) özelliği
PIC 16F84 ile PIC 16F87X mikrodenetleyici ailesinden farkları aşağıdaki tabloda
görülmektedir.
ÖZELLİKLER
PIC16F877
18
PIC16F84
Çalışma Hızı
DC-20MHz
DC-20MHz
Program Belleği
8 Kword Flash ROM
8 Kword Flash
ROM
EEPROM Belleği
256 Byte
256 Byte
Kullanıcı RAM
368 Byte
368 Byte
Giriş/Çıkış Port Sayısı
33
33
Zamanlayıcı
Timer0, Timer1, Timer2
Timer0
A/D Çevirici
8 Kanal, 10 Bit
Yok
Capture/Compare/PWM
16 Bit Capture, 16 Bit
Compare, 10 Bit PWM
çözünürlük
Yok
Seri çevresel Arayüz
SPI (Master) ve 12C (Master
- Slave) modunda SPI portu
ve senkron seri port
Yok
Paralel Uydu Port
8 Bit, harici, RD, WR ve CS
kontrollü
Yok
USART/SCI
9 Bit adresli
Yok
19
PİN ADI
PİN I/O BUFFER TİPİ AÇIKLAMALAR
NO
:
OSC1/CLKIN
13
I
ST/CMOS(3)
Osilatör clock girişi (kristal veya harici
kaynak)
OSC2/CLKOUT
14
O
0
Osilatör kristal çıkış ucu
1
I/P
ST
Resetleme girişi / Programlama anında
programlama gerilimi girişi
(Mikrodenetleyicinin resetlenmesi için bu
pin lojik 0 yapılmalıdır.)
MCLR/Vpp
PORTA iki yönlü giriş/çıkış portudur.
RA0/AN0
2
I/O TTL
Analog olarak kullanılabilir.
RA1/AN1
3
I/O TTL
Analog olarak kullanılabilir.
RA2/AN2/VREF
4
I/O TTL
Analog olarak kullanılabilir.
RA3
5
I/O TTL
Analog olarak kullanılabilir.
RA4/T0CK1
6
I/O ST
RA5/SS/AN4
7
I/O TTL
Bu pin (istenirse) TMR0 için bir clock girişi
olabilir.
SSP Slave seçme pini veya analog giriş/çıkış
olabilir.
RB0/INT
33
I/O TTL/ST(1)
RB1
34
I/O TTL
RB2
35
I/O TTL
RB3/PGM
36
I/O TTL
RB4
37
I/O TTL
RB5
38
I/O TTL
RB6/PGC
39
I/O TTL/ST(2)
PORTB iki yönlü giriş/çıkış portudur.giriş
konumunda iken dahili pull-up devresi
aktifleşebilir. Dış kesme girişi olarak
seçilebilir.
Düşük akımla programlamada da
kullanılabilir.
Kesme girişi olarak seçilebilir.
20
Kesme girişi olarak seçilebilir.
RB7/PGD
40
I/O TTL/ST(2)
Kesme girişi olarak seçilebilir.Seri
programlamada clock pinidir.
Kesme girişi olarak seçilebilir. Seri
programlamada data (veri) pinidir.
PORTC iki yönlü giriş/çıkış portudur.
RC0T1OS0/T1CK 15
1
16
RC1/T1OS1/CCP
2
I/O ST
17
I/O ST
18
I/O ST
RC3/SCK/SCL
23
I/O ST
RC4/SD1/SDA
24
I/O ST
RC5/SDO
25
I/O ST
RC6/TX/CK
26
I/O ST
Timer1 osc. çıkışı veya saat girişi olarak
kullanılabilir.
I/O ST
Timer1 osc. giriş veya Capture2
giriş/Compare2 çıkışı/PWM2 çıkışı olarak
kullanılabilir.
RC2/CCP1
Timer1 osc. giriş veya Capture1
giriş/Compare1 çıkışı/PWM1 çıkışı olarak
kullanılabilir.
SPI ve I2 modunda, seri saat giriş/çıkışında
kullanılır.
RC7/RX/DT
SPA modda SPI giriş verisi veya I2C modda
I/O için
SPA modda SPI çıkış verisi için seçilebilir.
USART asenkron gönderme ya da senkron
saat için
USART asenkron alma ya da senkron veri
için
21
PORTC iki yönlü giriş/çıkış portudur.
RD0/PSP0
19
I/O TTL/ST(1)
PSP 0. biti olarak kullanılabilir.
RD1/PSP1
20
I/O TTL/ST(1)
PSP 1. biti olarak kullanılabilir.
RD2/PSP2
21
I/O TTL/ST(1)
PSP 2. biti olarak kullanılabilir.
RD3/PSP3
22
I/O TTL/ST(1)
PSP 3. biti olarak kullanılabilir.
RD4/PSP4
27
I/O TTL/ST(1)
PSP 4. biti olarak kullanılabilir.
RD5/PSP5
28
I/O TTL/ST(1)
PSP 5. biti olarak kullanılabilir.
RD6/PSP6
29
I/O TTL/ST(1)
PSP 6. biti olarak kullanılabilir.
RD7/PSP7
30
I/O TTL/ST(1)
PSP 7. biti olarak kullanılabilir.
PORTA iki yönlü giriş/çıkış portudur.
RE0/RD/AN5
8
I/O ST/TTL(3)
RE1/WR/AN6
9
I/O ST/TTL(3)
RE2/CS/AN7
10
I/O ST/TTL(3)
Analog olarak ya da PSP okuma kontrollü
kullanılabilir.
Analog olarak ya da PSP okuma kontrollü
kullanılabilir.
Analog olarak ya da PSP okuma kontrollü
kullanılabilir.
NC
-
VSS
8
VDD
19
-
Bu pinler içerde kontrol edilmiyor, bağlı
değil.
P
-
Ground (toprak) uç
P
-
Pozitif kaynak ucu
I: Input (Giriş)
(Giriş/Çıkış)
TTL: TTL Giriş
Trigger giriş olarak çalışır.
Not:
O: Output (Çıkış)
-: Kullanılmıyor
I/O: Input/Output
ST: Schimitt
1. Bu buffer, dış kesme olarak düzenlendiğinde Schimitt Trigger giriş olarak çalışır.
2. Bu buffer, seri programlama modunda Schimitt Trigger giriş olarak çalışır.
22
3. Bu buffer, RC osilatör modunda ve CMOS devrelerinde Schimitt Trigger giriş
olarak çalışır.
CPU ÖZEL FONKSİYONLARI (Konfigürasyon Bitleri)
Konfigürasyon tanımında, her yonganın kendi konfigürasyon sözcüğü (14 bitliktir) içindeki
bitlerin (0-13. bitler) nasıl kullanılacağı, program içinden seçilebilir. Konfigürasyon bitlerinde
hiçbir değişiklik yapmadığınız takdirde, üretici tarafından belirlenmiş, ön koşullara bağımlı
kalınır.
PIC 16F877’nin konfigürasyon bitleri, işlevleriyle aşağıda sayılmıştır.
Power-on reset (POR)
Power-up timer (PWRTE)
Osilatör start-up timer
BOR (Brown Out Reset)
Yonga içindeki bir RC osilatör devresi ile belirli bir frekansta çalışması denetlenen WDT
(Watch Dog Timer) birimi
Kesmeler
Kod koruma güvenliği
Id yerleşimleri
Güç harcamasının azaltılması istendiği durumlar için uyku (sleep) modu
İsteğe bağlı osilatör seçenekleri: -RC / -XT / -HS / -LS
Devre içi seri programlama (iki pin ile seri olarak programlanabilme)
Devre içi düşük gerilimle programlama
Devre içi hata arayıcı (Debugger)
Aşağıda PIC 16f877 VE PIC 16f84’ün, program belleğinde 2007h adresindeki konfigürasyon
sözcükleri, bit açılımı ve değerleri açıklanmaktadır.
13
12 11
10
9
8
7
6
5
4
3
CP CP CP CP CP CP CP CP CP CP
1= Kod koruması yok
23
1
FOSC1 FOSC0
PWRTE WDTE
Bit 13-4: CP: Kod koruma biti
2
0
0= Tüm program belleği üzerinde kod koruması var
Bit 3: PWRTE: Power-up zamanlayıcı biti
1= Power-up zamanlayıcı aktif
0= Power-up zamanlayıcı pasif
Bit 2: WDTE: Bekçi köpeği zamanlayıcısı (Watch dog timer) bit
1= Bekçi köpeği zamanlayıcısı aktif
0= Bekçi köpeği zamanlayıcısı pasif
Bit 1-0: FOSC0-FOSC1: Osilatör seçme biti
11= RC osilatör seçildi
10= HS osilatör seçildi
01= XT osilatör seçildi
00= LP osilatör seçildi
PIC 16F87X ailesinin konfigürasyon sözcüğünün açılımı:
13
2
12
1
11
10
9
8
7
6
5
4
3
0
CP CP DEBU
1
0
G
WR
T
CP
D
LV
P
BODE
N
CP CP
PWRT WDT
1
0
E
E
Bit 13-12 ve 5-4: CP1, CP0: Flash program belleği kod koruma biti
11= Kod koruması yok
10= 1F00h – 1FFFh arası kod korumalı bölge
01= 1D00h – 1FFFh arası kod korumalı bölge
00= 0000h – 1FFFh arası kod korumalı bölge
24
FOSC FOSC
1
0
Bit 11: DEBUG: Devre içi hata arama modu
1= Devre içi hata arama pasif
0= Devre içi hata arama aktif
Bit 10: Alan uygulanmadı, 1 olarak okunur.
Bit 9: WRT: Flash program belleğine yazma biti
1= Kod korumasız program belleğine EECON denetimi ile yazılabilir.
0= Kod korumasız program belleğine EECON denetimi ile yazılamaz.
Bit 8: CPD: Veri EE belleği koruma biti
1= Kod koruması yok
0= Kod korumalı
Bit 7: LVP: Düşük gerilim devre içi seri programlama biti
1= RB3/PGM pini PGM işlevlidir, düşük gerilimle programlanabilir.
0= RB3 sayısal I/O tanımlı, MCLR’ye programlama için yüksek gerilim
uygulanmalıdır.
Bit 6: BODEN: Gerilim alt ve üst limitleri aşarsa, programı yeniden başlatabilen
(Brown out Reset Enable) bit
1= BOR yeniden başlatma aktif (ON)
0= BOR yeniden başlatma pasif (OFF)
Bit 3: PWRTE: Power-up zamanlayıcı biti
1= Power-up zamanlayıcı aktif
0= Power-up zamanlayıcı pasif
Bit2: WDTE: Bekçi köpeği zamanlayıcısı (Watch dog timer) biti
1= Bekçi köpeği zamanlayıcısı aktif
0= Bekçi köpeği zamanlayıcısı pasif
Bit 1-0: FOSC1-FOSC0: Osilatör seçme biti
11= RC osilatör seçildi
10= HS osilatör seçildi
25
01= XT osilatör seçildi
00= LP osilatör seçildi
ZAMANLAMA VE KOMUT PERİYODU
16F87X ve 16F84 mikrokontrollerine OSC1 pininden gelen saat (clock) sinyali, yonga içinde
dörde bölünür. Bunlara Q1, Q2, Q3, Q4 çevrimi denir. Program sayacı her Q1 çevriminde bir
artar. Komut Q4 anında belleğe getirilerek, komut kaydedicisine (Instruction Register)
yüklenir. Komut kodunun çözümlenmesi (decode) ve çalıştırılması (execute), izleyen Q1’den
Q4’e dek olan sürede gerçekleşir.
Komutun işlenme aşamaları: İlk komut çevriminde işlenecek olan komut, program
belleğindeki, komut kaydedicisine alınır. Bu komut çevrimin bitiminde, program sayacı bir
arttırılır ve program sayacı artık bellekte bir sonra işlenecek komutu gösterir.
İkinci komut çevriminde ise bir önceki çevrimde, komut kaydedicisine aktarılmış olan komut,
ayrıştırılır (decode). Böylece komut ile yapılacak işlem belirlenir (Q1). İşlenecek veri
bellekten alınır (Q2), komut çalıştırılır (Q3) ve oluşan sonuç, gerekli adrese yazılır (Q4).
Böylece komutun işlenmesi tamamlanır. Dallanma komutları kullanılmışsa, bu işlem için iki
komut çevrimlik süre geçer. Çünkü ilk komut çevriminde dallanma komutu, diğer komutlar
gibi program belleğinden alınır. Bu arada bir önceki komut da yürütülmektedir. İkinci komut
çevriminde dallanma komutu işlenecek ve bir sonraki komut çevrimine geçerken, program
sayacı dallanma komutundan hemen sonraki komutu değil, başka bir komutu gösterecektir.
Ama mikrodenetleyici, bu komutun nasıl sonuçlanacağını ikinci komut çevriminin sonunda
anlar. Eğer dallanma olacaksa, kaydedicisindeki bu değerin kullanılmaması ve yeniden komut
yakalaması gerekir. Böylece PIC16F87X ve 16F84 bir komut çevrimini kaybeder ve sapma
veya dallanma komutları –eğer sapma olacaksa- iki komut çevriminde gerçekleşir.
BELLEK YÖNETİMİ
PIC 16F87X ve 16F84 ailelerinin üç adet bellek bloğu bulunur. Bunlar program belleği
(program memory), veri belleği (data memory) ve EEPROM veri belleğidir. Her bloğun,
kendi veri yolu vardır (Harvard mimarisi). Öyle ki, aynı osilatör çevriminde, her bir bloğa
erişim sağlanabilir.
Program Belleği Yönetimi
16F877’de bu bellek kapasiteleri sırasıyla; 0000h-07FFh, 0800h-0FFFh, 1800h-1FFFh
adresleri arasındadır. Reset vektörü adresi 0000h ve kesme (interrupt) vektör adresi 0004h’tır
26
Veri Belleği Yönetimi
Veri belleği kendi içinde, bank adı verilen sayfalara bölünmüştür. Bunların her birinin başında
özel fonksiyonlu kaydedici (Special Function Register-SFR) alanı ve daha sonra da genel
amaçlı kaydedici (General Purpose Registers-GPR) alanı bulunur. Özel işlem kaydedicileri
mikrodenetleyicinin işletimini kontrol eder ve bir işlemin sonucunu öğrenebileceğimiz, özel
durum bitleri vardır.
Örneğin STATUS kaydedicisinin, 5. ve 6. bitleri olan RP0, RP1 adlı bitler; bank seçimi bitleri
olarak, bu bellek bölümlerini seçmede kullanılır. Her bank 07Fh adresine dek genişletilmiştir
(128 Byte).
Bazı özel işlem kaydedicileri bir banktan, daha çok bankta yer alır. Bu yöntem, erişimi
hızlandırma amaçlı olup, çok kullanılan kaydedicilerin görüntüsü ayna gibi diğer banklara
yansıtılmıştır. Böylece bu kaydedicilere erişmek için sık sık bank değiştirilmesi gereği
ortadan kaldırılmış ve programlamaya kolaylık sağlamıştır.
Veri belleği olarak kullanılmak üzere, kılıfın içerisinde bir de EEPROM bellek alanı vardır.
Bu bellek, diğer veri belleği gibi doğrudan adreslenemez. EEPROM veri belleğine dolaylı
erişilir. Toplam 92 byte’tır.
Reset (başlama) vektörü: Enerji uygulandığında (Power-on) mikroişlemcinin içinde veya
dışında olan bir elektronik devre ile yeniden başlatılmalıdır (reset). Bu devre power-on reset
adı ile kılıf içerisine yerleştirilmiştir. Çalışmaya başlatılan mikroişlemci, kendi program
sayacını özel bir sayı ile yükler. İşte bu sayı, o mikroişlemci için, reset vektör adresidir.
27
Kesme (interrupt) vektörü: Mikroişlemci program belleğindeki programı çalıştırırken, sırası
belirsiz, acilen yapılması gerekli yordamları da çalıştırabilir. Sırası ve ne zaman ortaya
çıkacağı bilinmeyen bu işleri yapmak için mikroişlemci, bir yolla dışarıdan veya kendi
içinden uyarılmalıdır. Gelen uyarıdan mikroişlemcinin bazı birimleri etkilenir. Bu birimlerden
biri olan program sayacına, özel bir sayı yüklenir. Bu sayı, o mikroişlemcinin kesme vektör
adresidir.
Kesme sırasındaki uyarıdan etkilenen diğer birim, yığındır. Yığın, program içinde bir alt
program kullanıldığında, bu alt programdan, asıl program bloğuna dönülecek adresi tutar.
Kesme de bir alt program gibi ele alınır. Kesmeye sapıldığında kesme bölümünden sonra
dönülecek adres PC’den yığına yerleştirilir. Daha sonra kesme yordamının komutları işlenir.
Kesmeden çıkış komutu olan Retfie, altprogramdan çıkış komutu return gibi çalışır. Retfie
komutu ile, programda dönülecek yerin adresi yığından alınıp, PC’ye geri yüklenir. Böylece
kesmeden sonra, program bloğu içinde işlemeyi bıraktığı yere döner ve kalan komutları
işlemeye devam eder.İç içe kullanılan altprogramlar en çok sekiz olabilir. bunlara kesme
bölümleri de dahildir. Kesmeleri dahil etmezsek, yığın taşmasına neden oluruz. Yığın taşması
oluştuğunda bizi uyaracak, herhangi bir uyarı (flag) kaydedicisi bulunmamaktadır.
Kaydedici
BANK0
BANK1
Adresi
Kaydedici Adı
Kaydedici Adı Adresi
00h
INDF
INDF
80h
01h
TMR0
OPTION
81h
02h
PCL
PCL
82h
03h
STATUS
STATUS
83h
04h
FSR
FSR
84h
05h
PORTA
TRISA
85h
06h
PORTB
TRISB
86h
07h
Kullanılmıyor
Kullanılmıyor 87h
28
Kaydedici
08h
EEDATA
EECON1
88h
09h
EEADR
EECON2
89h
0Ah
PCLATH
PCLATH
8Ah
0Bh
INTCON
INTCON
8Bh
0Ch
8Ch
(GPR)
(GPR)
07h
FFh
Veri Belleği Haritası
Kaydedicilerin İşlevleri:
INDF (Indirect File Register): Dolaylı adresleme kaydedicisidir. Birbiri ardı sıra yapılacak
erişim işlemlerinde, GPR – Genel amaçlı kaydedicilerle (statik RAM alanının) kullanımı
hızlandırılır ve yazılacak programı küçültür.
TMR0 (Timer): Mikrodenetleyici içinde bulunan zamanlayıcı ve sayaç olarak çalıştırılan
bölümü denetleyen kaydedicidir.
PCL (Program Counter Low Byte): bir sonra çalıştırılacak komutun program belleğindeki
adresini tutar.
STATUS: Mikrodenetleyici içindeki aritmetik işlem birimi (ALU) işlem sonuçlarına ait bazı
bilgileri durum kaydedicisinde tutar. Bank seçme bitleri de bu kaydedicidedir.
FSR (File Select Register): Dolaylı adreslemede INDF ile birlikte kullanılır.
Mikrodenetleyicinin içindeki RAM adresinde yapılacak işlemlerde, RAM adresini tutar. Bu
durumda INDF’ye yazılacak her veri, aslında adresi FSR’de bulunan RAM’e yazılmıştır.
PORTA – PORTE: Portlar, mikrodenetleyicinin dış dünyadan bilgi alması ve kendi dışındaki
devrelere veri aktarabilmesi amacıyla kullanılır. PIC16F877’nin beş portu vardır. A portu 6
bit genişliğindedir. B, C, D portları 8 bit, E portu ise 3 bit genişliğindedir.
TRISA – TRISE: Portların yönünü (yongaya veri girişi mi, yoksa yongadan veri çıkışı mı
yapılacak?) belirleyen kaydedicilerdir. Eğer portların herhangi bir pininden mikrodenetleyici
dışına veri gönderilecekse, önce ilgili portun yön kaydedicisinin aynı numaralı biti, b’0’
yapılır. Eğer o pinden mikrodenetleyiciye veri girilecekse, yine önceden, o portun yön
kaydedicisinin aynı numaralı biti b’1’ yapılır. Özetle ilgili TRIS kaydedicisi pini çıkış için
b’0’, giriş için b’1’ yapılır.
29
EEDATA ve EEADR: Mikrodenetleyici içindeki EEPROM veri belleğine ulaşmakta
kullanılırlar. Sonuçta EEDATA kaydedicisindeki veri EEADR kaydedicisinde adres numarası
bulunan veri, EEPROM veri belleğinden okunarak EEDATA kaydedicisine getirilir.
PCLATCH: Program sayacının yüksek öncelikli byte’ı yani, üst 5 biti için kullanılır.
INTCON: Kesme (interrupt) işlemlerinde kullanılır.
GPR (General Purpose Register): Genel amaçlı kaydedicilerin adresleri yukarıdaki çizelgede
verilmişti. Programcı buradaki adresleri istediği gibi, kendi değişkenleri için kullanabilir. Bu
adresleri isterse programın içinde, aşağıdaki örnekte görüldüğü gibi adlandırabilir.
SEC_1 EQU h’20’
;GPR alanındaki h’20’ adresine SEC_1 adı verildi
SEC_2 EQU h’21’
;GPR alanındaki h’21’ adresine SEC_2 adı verildi.
STATUS Register (Durum Kaydedicisi)
STATUS kaydedicisi, aritmetik ve mantık biriminin (ALU), aritmetik işlem sonucundaki
durumunu, merkezi işlem biriminin (CPU) test durumlarını ve veri belleğine ait küme (bank)
seçme bitlerini tutar. Herhangi bir kaydedici gibi, STATUS’da bir komuta hedef olabilir. yani,
içeriği okunabilir, değiştirilebilir. Ancak, TO ve PD isimli bitleri sadece okunabilir,
değiştirilemez.
Eğer, bu kaydedicinin içeriği CLRF STATUS komutuyla, silinmek istenirse; sadece üst üç bit,
0 olur. Bu komut sonunda STATUS’un içeriği 000u u1uu değerini alır. Burada u:değişmez
(Unchangable) anlamındadır.
7
6
5
IRP
RP1
RP0
R/W
R/W
R
4
3
TO
PD
R
R/W
2
1
0
Z
DC
C
R/W
R/W
R/W
Bit 7: IRP: Kaydedici bank seçme biti (dolaylı adreslemede kullanılır)
0= Bank 0,1 (00h-FFh)
1= Bank 2,3 (100h-1FFh)
Bit 6-5: RP1:RP0: Kaydedici bank seçme biti (doğrudan adreslemede kullanılır)
00= Bank 0
30
01= Bank1
10= Bank 2
11= Bank 3
Her bir bank 128 byte’tır.
Bit 4: TO: Time-out (süre aşımı biti)
1= CLRWDT komutuyla veya SLEEP’den, güç verme durumuna geçirildiğinde 1 olur.
0= WDT time-out (süre aşımı) işlemi gerçekleşmiş ise, 0 olur.
Bit 3: PD: Power-down (Güç kesme) biti
1= CLRWDT komutu ile veya güç verme durumunda 1 olur.
0= SLEEP komutu çalıştırılınca 0 olur.
Bit 2: Z: Zero (Sonuç sıfır) biti
1= Aritmetik veya lojik işlem sonucu 0 ise bu bit, 1 olur.
0= Aritmetik veya lojik işlem sonucu 0 değil ise bu bit 0 olur.
Bit 1: DC: Dijit elde (Digit Carry/Borrow) biti. (ADDWF, ADDLW komutları için.)
1= 8 Bitin düşük öncelikli dörtlüsü, taşarsa bu bit lojik 1 olur.
0= 8 Bitin düşük öncelikli dörtlüsü taşmazsa, bu bit 0 olur.
Bit 0: C: Carry/Borrow biti (ADDWF ve ADDLW komutları için)
1= En duyarlı bit, taşarsa, bu bit 1 olur.
0= En duyarlı bit taşmazsa, bu bit 0 olur.
Not: Ödünç alma (borrow) işlemleri için ters kutup kullanılmıştır (işlemde sonuç 0’sa, uyarı
bitleri 1, 1 ise 0 olmak üzere tersleri yazılır). Çıkarma (SUB) ve döndürme (RLF, RRF)
işlemlerinde bunun etkisi anlatılacaktır.
Option Register (Seçenek Kaydedicisi)
Option Register, okunabilir ve yazılabilir bir kaydedicidir. Kapsamında TMR0 / WDT
zamanlayıcılarının konfigürasyon bitleri, dış kesme (interrupt) denetim bitleri, TMR0
zamanlayıcısı kesme denetim bitleri ve PORTB için çekme (pull-up) dirençlerinin
kullanılmasını sağlayan bit bulunur.
7
6
5
4
3
31
2
1
0
RBPU
INTEDG TOCS
TOSF
R/W
R/W
R/W
R/W
PSA
R/W
PS2
PS1
PS0
R/W
R/W
R/W
Bit 7: RBPU: PORTB, çekme (pull-up) dirençlerini aktifleştirme biti
1= PORTB çekme dirençleri pasif
0= PORTB çekme dirençleri aktif
Bit 6: INTEDG: Kesme kaynağı etkilenme kenarı seçim biti
1= RB0 / INT pin kesmesi yükselen kenarı seçme biti
0= RB0 / INT pin kesmesi düşen kenarı seçme biti
Bit 5: TOCS: TMR0 saat kaynağı seçme biti
1= RA4 / TOCK1 pininden gelen darbeler clock kaynağı olsun
0= Clock kaynağı olarak iç komut çevrimi kullanılsın
Bit 4: TOSF: TMR0 clock kaynağı kenar seçme biti (eğer TOCS=1 ise)
1= RA4 / TOCK1 pininden gelen her düşen kenar için bir arttır
0= RA4 / TOCK1 pininden gelen her yükselen kenar için bir arttır
Bit 3: PSA: Önbölücü biti
1= Önbölücü WDT için ayrıldı
0= Önbölücü TMR0 için ayrıldı
Bit 2,1,0: PS2, PS1, PS0: Önbölücü oranı seçme biti
Bit (PS2, PS1, PS0) TMR0
WDT
Değeri
Bölme Oranı Bölme Oranı
000
1:2
1:1
001
1:4
1:2
010
1:8
1:4
32
011
1:16
1:8
100
1:32
1:16
101
1:64
1:32
110
1:128
1:64
111
1:256
1:128
INTCON Register (Kesme Kaydedicisi)
INTCON kaydedicisi, okunabilir ve yazılabilir bir kaydedicidir. Kapsamında TMR0 / WDT
kaydedicisi taşma uyarı bitleri, RB port değişim ve dış kesme (RB0 / INT pin interrupt)
denetim bitleri, TMR0 kesme denetim bitleri bulunur.
7
6
5
4
3
2
1
0
GIE
PEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Bit 7: GIE: Bütün kesmeler geçerli (Global Interrupt Enable) biti
1= Maskelenmemiş kesmeleri aktif yapar
0= Kesmeyi kaldırır
Bit 6: PEIE: Çevresel kesme geçerli biti
1= Çevresel kesmeyi aktifleştirir
0= Çevresel kesmeyi kaldırır
Bit 5: TOIE: TMR0 clock taşma kesmesi biti
1= TMR0 kesmesini aktif yapar
0= Kesmeyi kaldırır
Bit 4: INTE: RB0 / INT dış kesme biti
1= RB0 / INT pininden dış kesmeyi aktif yapar
0= Kesmeyi kaldırır
Bit 3: RBIE: RB Port değişimi kesme biti
1= RB port değişimini aktif yapar
0= Kesmeyi kaldırır
33
Bit 2: TOIF: TMR0 taşma uyarısı bayrak biti
1= TMR0 taştı (taştıktan sonra program içinden temizlenir)
0= TMR0 taşmadı
Bit 1: INTF: TMR0 / INT dış kesme uyarı bayrak biti
1= TMR0 dış kesme oldu (program içinden temizlenir)
0= TMR0 dış kesme yok
Bit 0: RBIF: RB Port değişimi kesme uyarı bayrak biti
1= En az bir RB<7:4> pini durum değiştirdi (Programda kontrol edilir)
0= Hiçbir RB<7:4> pini durum değiştirmedi
PIE1 Register (Çevresel Kesme Kaydedicisi)
PIE1 kaydedicisi, çevresel kesmelerle ilgili bitleri olan bir kaydedicidir. Bir çevresel
kesmenin olabilmesi için, PIE1 (INTCON<6>) biti de set edilmelidir.
7
6
5
4
3
2
1
PSPIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE TMR2IE TMR1IE
R/W-O
R/W-O
R/W-O
R/W-O
R/W-O
R/W-O
R/W-O
Bit 7: PSPIE: Paralel Slave Port okuma/yazma kesmesi biti
1= PSP R/W kesmesini aktifleştir
0= Kesmeyi kaldırır
Bit 6: ADIE: A/D çevirici kesmesini aktifleştirme biti
1= A/D çevirici kesmesini aktifleştirir
0= Kesmeyi kaldırır
Bit 5: RCIE: USART alma (receive) kesmesini aktifleştirme biti
1= USART alma kesmesini aktifleştir
0= Kesmeyi kaldırır
Bit 4: TXIE: USART gönderme (transmit) kesmesi aktifleştirme biti
1= USART gönderme kesmesini aktifleştirir
34
0
R/W-O
0= Kesmeyi kaldırır
Bit3: SSPIE: Senkron Seri Port kesmesi aktifleştirme biti
1= SSP kesmesini aktifleştirir
0= Kesmeyi kaldırır
Bit2: CCP1IE: CCP1 kesmesi biti
1= CCP1 kesmesini aktifleştirir
0= Kesmeyi kaldırır
Bit 1: TMR2IE: TMR2 PR2 uyum kesmesi aktifleştirme biti
1= TMR2 PR2 uyum kesmesini aktifleştirir
0= Kesme yok
Bit 0: TMR1IE: TMR1 taşma kesmesini aktifleştirme biti
1= TMR1 taşma kesmesini aktifleştir
0= Kesmeyi kaldırır
PIR1 Register (Çevresel Kesme Kaydedicisi)
PIR1 kaydedicisi, çevresel kesmelerle ilgili uyarı bitlerini taşıyan kaydedicidir.
7
6
5
4
3
2
1
PSPIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF TMR2IF TMR1IF
R/W-O
R-O
R-O
R/W-O
R/W-O
R/W-O
R/W-O
Bit 7: PSPIFE: Paralel Slave Port okuma/yazma kesme uyarısı biti
1= PSP R/W kesmesi oluştu (yazılımda temizlenmeli)
0= Okuma ya da yazma yok
Bit 6: ADIF: A/D çevirici kesme uyarısı biti
1= A/D çevirme işlemi bitti
0= Çevirme tamamlanmadı
Bit 5: RCIF: USART alma (receive) kesmesi uyarı biti
1= USART alma tamponu boş
0= Alma tamponu dolu
35
0
R/W-O
Bit 4: TXIF: USART gönderme (transmit) kesme uyarısı biti
1= USART gönderme tamponu boş
0= Gönderme tamponu dolu
Bit3: SSPIF: Senkron Seri Port kesme uyarısı biti
1= SSP kesmesi dolu (yazılımda temizlenmeli)
0= SSP kesmesi yok
Bit2: CCP1IF: CCP1 kesmesi uyarı biti
1= TMR1 kaydedicisi yakaladı
0= TMR1 kaydedicisi yakalamadı
Bit 1: TMR2IF: TMR2 PR2 uyum kesmesi uyarı biti
1= TMR2 PR2 uyum kesmesi var
0= Kesme yok
Bit 0: TMR1IF: TMR1 taşma kesmesi uyarı biti
1= TMR1 sayacı taştı, kesme oldu
0= Kesme yok
PIE2 Register (CCP2, SSP veri yolu çarpışma, E2PROM – Çevresel Kesme Kaydedicisi)
PIE2 kaydedicisi, CCP2 (Capture/Compare/PWM2) çevresel biriminin kesme bitlerini, SSP
(Senkron Seri Port) veri yolu çarpışma bitini ve EEPROM yazma kesmesi bitini taşır.
7
6
U-O
5
4
3
2
1
0
Reserved -
EEIE
BCLIE
-
-
CCP2IE
R/W-O
R/W-O
R/W-O
U-O
U-O
R/W-O
U-O
Bit 7, 5, 2, 1: Unimplemented: Bit kullanılmaz 0 okunur
Bit 6: Reserved: Bit sonra kullanılmak için ayrılmıştır. Temizlenmelidir (set 0)
Bit 4: EEIE: EEPROM yazma işlemi kesme biti
1= EEPROM yazma kesmesini aktifleştirir
36
0= EEPROM yazma kesmesi yok
Bit 3: BCLIE: Çarpışma (Bus Collision) kesmesi uyarı biti
1= Çarpışma kesmesini aktifleştirir
0= Çarpışma kesmesi yok
Bit 0: CCP2IE: CCP2 kesmesini aktifleştirme biti
1= CCP2 kesmesini aktifleştirir
0= CCP2 kesmesi yok
PIR2 Register (CCP2, SSP data-bus çarpışma, E2PROM – Çevresel Kesme Kaydedicisi)
PIE2 kaydedicisi CCP2 çevresel biriminin kesme bitlerini, SSP çarpışma bitini ve E2PROM
yazma kesmesi uyarı bitini taşır.
7
6
U-O
5
4
3
2
1
0
Reserved -
EEIF
BCLIF
-
-
CCP2IF
R/W-O
R/W-O
R/W-O
U-O
U-O
R/W-O
U-O
Bit 7, 5, 2, 1: Unimplemented: Bit kullanılmaz 0 okunur
Bit 6: Reserved: Bit sonra kullanılmak için ayrılmıştır. Temizlenmelidir (set 0)
Bit 4: EEIF: EEPROM yazma işlemi kesmesi uyarı biti
1= Yazma işlemi tamamlandı
0= Yazma işlemi tamamlanamadı ya da başlatılamadı
Bit 3: BCLIF: Çarpışma (Bus Collision) kesmesi uyarı biti
1= SSP’de çarpışma oldu, I2C Master mod olarak ayarlanmışsa
0= Çarpışma olmadı
Bit 0: CCP2IF: CCP2 kesmesi uyarı biti
Capture (yakalama) modu için
1= TMR1 kaydedicisi yakalandı (capture). Yazılımda temizlenmeli
0= TMR1 kaydedicisi yakalanmadı
Compare (karşılaştırma) modu için
1= TMR1 kaydedicisi karşılaştırma (compare) uyumlu. Yazılımda
temizlenmeli
37
0= TMR1 karşılaştırma uyumlu değil
PCON Register (Güç Kaynağı Kontrol Kaydedicisi)
Güç kontrol kaydedicisi PCON, yazılımda ve reset durumlarında kullanılır. Reset durumları;
devrenin dışardan MCLR ile, gerilim ya da akımın aşırı düşme ve yükselmesi Brown-Out,
Watch Dog Timer ve son olarak Power on reset durumlarında kullanılabilir. BOR biti, Power
on reset’te bilinemez. Reset sonrasında b’1’ yapılmalıdır ki, bir sonraki BOR durumunu
öğrenebilsin.
7
6
5
4
3
2
1
0
-
-
-
-
-
-
POR
BOR
U-O
U-O
U-O
U-O
U-O
U-O
R/W-1 R/W-1
Bit 7 - 2: Unimplemented: Bit kullanılmaz 0 okunur
Bit 1: POR: Power On Reset durumu biti
1= POR durumu yok
0= POR dolu (yazılımda set edilmeli)
Bit 0: BOR: Bus collision kesme uyarı biti
1= BOR durumu yok
0= BOR durumu var (yazılımda set edilmeli)
PCL ve PCLATH Registers (Adres Kaydedicileri)
Program counter (PC) olarak adlandırılan adresleme kaydedicisi 13 bitliktir. Bunun düşük
değerlikli byte’ı PCL kaydedicisinden gelir. Üstteki bitler ise PC<12:8> arasındaki 5 bittir,
bunlar PCLATH kaydedicisinden alınır. PCL okunabilir ve yazılabilir bir kaydedicidir. Ancak
üst bitleri (PCH) doğrudan okunamaz. Dolaylı olarak PCLath yoluyla yazılabilir veya
okunabilir.
38
Call komutu, yığının her zaman en tepesine, PCL kaydedicisinin içindeki adres değerini
yazar.
Return, Retfie ve Retlw komutları ise yığının en tepesindeki elemanın içeriğini PCL’ye
aktarır. Sayfa (bank) numaralarının PCLath kaydedicisinden PC’ye aktarılabildiğini program
yazarken de unutmamalıyız.
PCLATH kaydedicisinin içeriği, altyordama girildikten sonra sabit kalır, bir return ya da
retfie benzeri komut gelse de değişmez. Programcı, call veya goto komutlarından önce,
PCLATH kaydedicisini güncellemelidir. PCH daima PCLATH kaydedicisi yoluyla
güncellendiğinden (tersi yapılamaz) altyordam veya gidilen kesimin hangi bankta olduğu,
aşağıdaki örneğe benzer bir yolla belirtilmelidir.
ORG 0x500
BCF PCLATH, 4
;PCLATH kaydedicisinin 4.biti temizlendi
BSF PCLATH, 3
;PCLATH’ın 3.biti set edildi, 1.banka geçildi
;(800h-FFFh adres aralığı)
CALL SUB1_P1
;1.banktaki altyordam çağrıldı
ORG 0x900
;Bank 1 (800h-FFFh)
SUB1_P1
; Altyordam 800h ile FFFh aralığına yerleştirildi.
RETURN
;Return’den sonra 0.sayfaya (000h-7FFh) dönülecek
Computed goto (Hesaplanmış goto): PC’ye PCL’nin eklenmesiyle oluşur.
39
Yığın (Stack)
Yığın 8 elemanlıdır. Elemanları 13 bitliktir ve donanımın bir parçasıdır. Veri veya program
alanlarında yer almaz. Yığın göstergesi (pointer) yazılabilir ve okunabilir değildir.
Yığın işlemi komutları POP ve PUSH’tur. Her PUSH işleminde yığının en tepesindeki adrese,
PC’ın içeriği yüklenir. Her POP işleminde yığının en tepesindeki adres PC’ın içine geri
yüklenir.
Yığın, LIFO (Last In First Out) Son Giren İlk Çıkar tekniğiyle çalışır.
INDF ve FSR Register (Dolaylı Erişim Kaydedicileri)
INDF, fiziksel bir kaydedici değildir. Mikrokontrolördeki RAM adresini tutar. INDF’e
yazılan her veri, adresi FSR’de bulunan RAM’a yazılır. INDF’ten okunan veriler de adresi
FSR’de bulunan RAM’den okunmuştur.
3.2.2 7805 Gerilim Regülatörü
Bu +5V güç kaynağı projesinin gereksinimlere, sabit voltajlı 7805 entegre devre
regülatörünün özellikleri uymaktadır. 5 Volt çıkış voltajı ve en fazla 1.5 Amper yük akımı,
içindeki ısı kesicisi ve akım limitleme özelliği, test devrelerini çalıştırırken ek güvenlik
sağlamak için özellikle kullanışlıdır.
7805 entegre devresi güç kaynağı akımı olarak 1 Amper ve belki en fazla 1.5 Amper
akım verebileceğinden ve en düşük 8 Volt (8-5=3Volt) giriş gerektiğinden, en fazla yükte
40
(3x1.5) en az 4.5 Wattlık ısı yayacaktır. Yüksek ısıdan etkilenmemesi için bir soğutucunun
bulunması ve bağlı olması ve cihaz kutusunun da delikleri olması şarttır.
Projede regülatörün kullanım sebebi PIC16F877 için gerekli olan 5 voltluk gerilim teminini
sağlamaktır.
Şekil 12 : 7805 Gerilim Regülatörü Maksimum Değerleri ve Isıl Değeri
Şekil 13 : 7805 Gerilim Regülatörü Karakteristik Değerleri
41
Şekil 14 : 7805 Gerilim Regülatörü Bağlantı Şeması
4. ROBOTUN YAZILIMI
4.2 Visual Basic Bilgisayar Arayüz Yazılımı
4.2.1 Programdaki Açısal Hesaplamalar
4.2.2 Programın Çalışması
Program iki bölümden oluşmaktadır. Birinci bölümünde Şekil 16’da görülen
programın ekran görüntüsünde sol taraftaki kutuculara her bir motor için açısal değerlerin
yukarıdaki kısımda ifade edildiği gibi ölçeklendirilmiş değerleri yazılarak motorların kontrolü
sağlanmaktadır. Robotun hangi porta bağlandığına dair gerekli ayar port no kutucuğundan
girilmektedir. Port No değeri girildiken sonra Portu Aç butonuna basıldığında port açıldı
uyarısı, Portu Kapat butonuna basıldığında ise port kapatıldı uyarısı ekranda görülmektedir.
42
Kutucuklara değerler girildikten sonra gönder butonuna basıldığında robot kol üzerindeki
motorlar, girilen değerler ait açısal konumları almaktadır. Ekran görüntüsünde yer alan
değerler robot kolun dik pozisyonunda motorların aldığı açısal değerlerin karşılıklarıdır.
Programın ikinci bölümü ise robotun daha önceden girilmiş hareketleri
gerçekleştirmesi için oluşturulan kısımdır. Şekil 17’de sağ kısımda yer alan bölümde her
motor için girilmiş açısal değerler görülmektedir. Bu değerler program.txt adlı dosyaya
kaydedilmekte ve programda YENİLE butonuna basıldığında güncel halde Visual Basic
programında yer almaktadır. BAŞLAT butonuna basıldığında robot girilen konumları sürekli
olarak gerçekleştirmekte ve Text7 yazan kısımda hangi konumda olduğu görülmektedir.
DURDUR butonuna basıldığında ise en son hangi konumda ise orada durmaktadır.
Robota yüklenen ve Şekil 17’deki ekran görüntüsünün sağ kısmında yer alan, hareket
dizini aşağıda yer almaktadır. Motorların açısal değerlerini içeren ölçeklendirilmiş bu
değerlerin en sağında yer alan 6. veri milisaniye cinsinden beklemeyi ifade eder. Örneğin
robot ilk satırda yer alan hareketi gerçekleştirdikten sonra 2.5 sn beklemektedir.
60,220,170,70,90,2500
60,220,170,70,70,300
60,220,170,70,60,300
83,220,170,70,60,300
83,220,170,70,90,300
83,220,170,250,90,2500
83,220,170,250,70,300
60,220,170,250,70,300
Robota yüklenen ölçeklendirilmiş açısal değerler
43
5. ROBOTUN MEKANİK AKSAMI
Robot kolun yapımında forex ve alüminyum malzeme kullanılacaktır. Şekil 18’de bu
bölümde yapımı ele alınacak robot kolunun tamamlanmış hali görülmektedir.
Şekil 15
5.1 Kullanılan Malzemeler
Bu bölümde yer alan robot kolunun dış gövdesi için gerekli forex malzeme
kullanılmıştır. Forex parçaların birleştirilmesi ve robot kolunun el kısmı için ise yine forex
malzeme kullanılacaktır. Robot kolunun yapımında kullanılacak malzemeler aşağıdaki
gibidir;
500mm*400mm abatlarında 5mm’lik forex tabaka.
2 adet 110mm*110mm ebatlarında 5mm’lik forex tabaka.
2 adet 24mm*144mm ebatlarında 5mm’lik forex tabaka.
25mm*120*mm ebatlarında 5mm’lik forex tabaka.
6 adet RC servo motor.(HS 311)
2 adet fazladan servo başlığı.
44
1 adet 2’li şarjlı kalem pil.
RC servo motor kontrol devresi.
RS232 iletişim devresi.
2 adet 25mm*120mm ebatlarında, 4 mm kalınlığında forex (ikinci uzuv)
1 adet 20mm*110mm ebatlarında,43mm kalınlığında forex (üçüncü uzuv)
1 adet 20mm*50mm ebatlarında, 4mm kalınlığında forex (üçüncü uzuv)
2 adet 64mm*25mm ebatlarında, 4mm kalınlığında forex (dördüncü uzuv)
1 adet 18mm*30mm 34mm*40mm ebatlarında, 4mm kalınlığında forex(kıskaç altı)
1 adet kıskaç uzun kol
1 adet kıskaç kısa kol.
1 adet 5mm çapında ve 65 mm uzunluğunda silindir forex destek elemanı
2 adet 5 mm çapında ve 40 mm uzunluğunda silindir forex destek elemanı (üçüncü uzuv)
2 adet 5 mm çapında ve 60 mm uzunluğunda silindir forex destek elemanı (ikinci uzuv)
1 adet alüminyum ‘u’ kıskaç ara elamanı
45
5.2 Plan Ve Yapım Aşamaları
Robot kolunun yapımında standart servo kullanılmıştır. Standart servonun dış
ebatları yaklaşık olarak aynı olduğundan bu bölümde verilen ölçüler aynen kullanılabilir.
Robot kolunun zemininde şekil 19’daki gibi 225mm*115mm ebatlarında ve 5mm kalınlığında
plastik tabaka kullanılır.
Şekil 16 : Robot kolunun zemini için kullanılacak forex parça.
Şekil 20 deki forex parçanın üzerindeki delikler 3mm çapında olup robot kolunun
zemin forexine bağlamak amacıyla kullanılır.
Şekil 17
46
Şekil 18 : Zemin ile birleştirilmiş forex parçalar
Robot kolunun gövdesi için şekil 21’daki 5 mm kalınlığındaki forex parça kullanılır.
Gövdeyi oluşturulacak plastik parçanın 110 mm çapındadır. Bu parçanın ortasını servoya
monte edebilmek için 9mm çapında bir delik delinir. Bu parça üzerindeki delikler zemin ile
gövde parçasını bağlamak için kullanılır ve 3 mm çapındadırlar. Delikler 3 mm çapında olup
servoyu gövdeye bağlamak için kullanılır.
Şekil 19 : Robot kolunun gövdesini oluşturacak forex parça
47
Şekil 20: Robot kolunun gövdesini oluşturacak forex parça
Şekil 21 : 1 numaralı servo motor
Robot kolu için 6 adet servo motor kullanılacaktır. Kullanılacak bu servo motoru
birbirinden ayırt edebilmek için kuruluş şekline göre aşağıdan
yukarıya doğru
numaralandırılmalıdır. Gövdeye bağlanacak servo motor 1 numara olarak adlandırılır. Robot
kolu üzerindeki servoların konumları ile bağlantılarının yapılacağı RC servo motor kontrol
devresi arasındaki mesafe önemlidir. Servo motorların kablolarının uzaklıkları bu mesafelere
göre düzenlenmelidir. Standart bir servo motorun kablosu 30 cm uzaklığındadır. 1 numaralı
servo motorun kablosunun 60 cm olması yeterlidir.
48
Şekil 22: Gövde forexi ve 1 numaralı servo motor
Şekil 23: Gövde forexi ve 1 numaralı servo motorun birleştirilmesi
Şekil 26’da gövde forexi , gövdeye bağlanacak servo motor ve bağlantısı silikon
tabancası ile silikonlanarak montajı yapılmıştır.
49
Şekil 24: Gövdeye bağlanmış servo motorun yandan görünüşü
Robot kolu üzerinde aynı ebatlarda bir sabit, bir de hareketli gövde parçası
bulunmaktadır. Bu iki parça arasında dört adet plastik bilya ve bilya yatağı bulunmaktadır. Bu
bilyalar sayesinde üst parça ile alt parça arasında sürtünme azalır ve rahatça hareket etmesini
sağlar. Hareketli gövde parçası 1 numaralı servo tarafından hareket ettirilmektedir.
Robot kolunun hareketli gövdesine 2 adet servo bağlanmalıdır. Bu servo motorları
birbirine paralel çalışacaktırlar. 2 ve 3 numara olarak adlandırılacak olan bu servoların 60
cm’lik kabloları olması yeterlidir. Robot kolunda servoların hareketli gövdesine bağlanması
için 5 mm’lik forex parça kullanılmıştır.
50
Şekil 25: 2 nolu kolu oluşturacak forex parça
Robot kolunun alt kolunu oluşturmak için 2 ve 3 numaralı servo motorlara şekil
28’deki gibi iki adet 5mm’lik 120 mm* 25 mm ebatlarında forex parça takılmalıdır. Bu plastik
parça üzerindeki 2 adet delik servo motor başlıklarına bağlantı yapmak için kullanılır. Her biri
etrafında bulunan dörder delik ise servo motor başlıklarının vidalarını sıkmak için kullanılır.
Şekil 26: Hareketli gövdeye bağlanacak servo motor
Robot kolun hareketli gövdesine bağlanacak servo motor ve diğer bağlantı parçaları
şekil 29’daki gibi birleştirilir. Robot kolunun hareketli gövdesinde, üst kolu taşıyabilmek için
iki adet servo motor kullanılacaktır. Dolayısıyla şekil 30’daki gibi iki adet servo motor
hazırlanmalıdır.
51
Şekil 27: Üst plakayı monte etmek için arka tekerlerin çıkarılması
Hareketli gövdeye bağlanacak bu iki servo motor paralel çalışacaktır. Dolayısıyla bu
iki servo motorun başlangıç ve bitiş pozisyonları aynı olmasıdır. Servo motorların başlangıç
ve bitiş pozisyonlarını eşitlemek için servo motor başlıklarını çıkarıp tekrar doğru pozisyonda
takmak gerekebilir.
Not: 2 ve 3 numaralı servolar aynı marka ve model olmalıdır. Farklı marka veya
pozisyondaki servo motorları ile yapılan robot kolları sabit durdukları hallerde bile servoların
konumlarındaki farklılıklarından dolayı titremektedirler. Bu da yapılan robot kolunun düzgün
çalışmamasına neden olmaktadır.
Robot kolunun hareketli gövdesi üzerine 2 ve 3 numaralı servo motorlar
bağlanacaktır. Şekil 31’de hareketli gövdenin ölçümlendirilmiş şekli vardır. Hareketli gövde
üzerindeki delikler 3 mm çapında olup 2 ve 3 numaralı servo motorları bağlamak için
kullanılacaktır. Hareketli gövde üzerindeki delikler 3 mm çapında olup 1 numaralı servonun
başlığı ile olan bağlantıyı sağlamak için kullanılır.
Hareketli gövde üzerindeki I deliği önemlidir. I deliği 6 mm çapında olup hareketli
gövdeye sabitlenmiş servo başlığı sabit gövde üzerindeki 1 numaralı servoya tutturmak için
kullanılır.
52
Şekil 28: Robot kolunun hareketli gövdesi
53
Şekil 32’de görüldüğü gibi 1 numaralı servo motorun başlığı diğer standart
başlıklardan daha büyük seçilmiştir. Hareketli gövde robot kolunun üst kısmında bulunan
bütün ağırlığı çekeceğinden servo başlığının büyük seçilmesi daha uygun olmaktadır. Şekil
33’de görüldüğü gibi hareketli gövde ile servo motor başlığını birbirine tutturmak için silikon
kullanılarak montajı yapılmıştır.
Şekil 29: Hareketli gövde, 1 numaralı servo motor başlığı
Hareketli gövdeye 2 ve 3 numaralı servolar kullanılan plastik tabaka ile
silikonlanarak gövdeye montajı yapılmıştır.
Şekil 30: Hareketli gövde ile alt konum birleştirilmesi
54
Robot kolunun sabit gövdesi ile hareketli gövde üzerine birleştirilmiş alt kol şekil 33
‘deki gibi bir adet sac vidası kullanılarak birleştirilir. Bu vida hareketli gövdenin I deliğinden
geçerek sabit gövde üzerindeki 1 numaralı servo ile hareketli gövde üzerindeki servo başlığını
birleştirmekte kullanılır. Bağlantı vidası olarak servoların paketinden çıkan vidalar kullanılır.
Robot kolunun üst kol kısmı 2 adet servodan oluşmaktadır. 4 numaralı servo motorun
kablosu 45 cm ve 5 numaralı servo motorun kablosu 60 cm olmalıdır.
Şekil 31: 5 numaralı servo motor
Standart servo motorların kabloları genellikle 30 cm olduğundan 4 ve 5 numaralı
servolarının istenilen uzunlukta olması için ek yapılmalıdır. Kabloları uzatılmış 4 ve 5
numaralı servo motorlar şekil 34’de görülmektedir.
Şekil 32: 2 nolu kolda bulunan servoları üst kol parçasına birleştirmek için kullanılan forex parça
55
Robot kolunun üst kolunda bulunan 1 adet servo motoru üst kol parçasına bağlamak
için şekil 35’deki parçadan 1 adet hazırlanmalıdır. Bu parça 2 mm alüminyumdan ve 8 mm *
32 mm ebatlarındadır. Bu metal parça üzerindeki delikler 2,5 mm çapındadır bu delikten ikisi
servo ile forex parçayı diğer ikisi ise forex parça ile üst kol plastik parçasını birleştirmek için
kullanılır. Robot kolu hareketli olduğundan servoların kabloları robotun çalışmasına engel
olmayacak biçimde yerleştirilmelidir.
Şekil 33: 3 nolu forex parça
Robot kolunun 3 nolu uzvu 101mm*20 mm*5mm ölçülerindedir. Malzemesi diğer
uzuvlar gibi yine forex malzemeden üretilmiştir. Üzerinde bir tarafı 5 nolu servoya bağlıdır.
Diğer ucunda 9 mm çapındaki delik ise 4 nolu servoya bağlıdır.
56
Şekil 34 : Servo başlıkları perçinlenmiş üst kol bağlantı parçası
Şekil 35 : 4 numaralı servonun üst kol bağlantı parçası ile birleştirilmesi
Üst kol bağlantı parçası ile 4 numaralı servo silikon ile birleştirilerek montajı yapılır.
Servonun kablolarının uzun olması ve hareketi engellememesi gerekir.
57
Şekil 36 : Alt kol ile üst kolun birleştirilmiş hali
Şekil 37: Alt kol ile üst kolun birleştirilmiş hali
Alt kol ile üst kol birbirine 4 adet 3 mm’lik sac vidası kullanılarak birleştirilir.
Birleşim 4 numaralı servo başlığı ve alt kolun plastik parçaları arasında yapılır. Robot
kolunun el kısmını oluşturan parçalar 5. servo kullanılarak hareket ettirilir.
58
Şekil 38: Robot kolunun el kısmı
Şekil 39: Robot kolunun el kısmını taşıyacak forex parça
59
Şekil 40: Robot kolunun birleştirilmiş gövdesi
Robot kolu çok hareketli parçalara sahip olduklarından kablolarının düzenlenmesi
gerekir. Kabloların düzenlenmesi için zil teli kullanılır. Bu zil telleri 2 cm uzunluğunda
kesilerek robot kolunun kabloları toparlanır.
Şekil 41: Robot kolunun bitirilmiş hali
Robot kolunun 1 numaralı servosu robotun zemininde olduğundan kablolarının
toparlanmasına gerek yoktur. 2 ve 3 numaralı servoların kabloları zil telleri ile birbirleri ile 4
ve 5 numaralı servoların kabloları zil telleri ile birbirleri birleştirilirler.
60
KAYNAKLAR
[1] DND. Kottege, ‘‘Virtual Robot Arm Control Model’’, Department of Physics,University
of Colombo, Sri Lank,. June, 2003.
[2] Bhattacharya, R., “A Project Report on Robotic Manipulator for Merlin”,Bayerische
Julius-Maximiuans Universitat, Würzburg, 2004.
[3] Hikmet, Ş., “Proteus”, Altaş Publisher,. 2004.
[4] Ayyıldız, S., ‘‘Kendi Robotunu Kendin Yap’’, Altaş Publisher, October, 2006.
[5] Seri Porttan Kontrollü 3 Eksenli Hareket Kabiliyetine Sahip Robot Uygulaması Engin
Ayçiçek Selin Özçıra
[6] Çamoğlu D. “Bilgisayar Kontrollü Robotik”, Dikeyeksen Yayınları, Mayıs,2011
[7] Çamoğlu D. “Mikrodenetleyiciler”, Dikeyeksen Yayınları, Eylül,2012
61

Benzer belgeler

Deney 10

Deney 10 Robotlar, endüstride, tıpta, haberleşmede ve daha birçok alanda kullanılmaktadır. Ayrıca, askeri uygulamalarda da robot kullanımı yaygındır. Robotları, kullanılan kontrol tekniğine ve içerdikleri e...

Detaylı