8- arduino İle robot kol kontrolü- buğra aydoĞan · robot kollar, dışarıdan bir...
TRANSCRIPT
T.C.
KARABÜK ÜNİVERSİTESİ
MÜHENDİSLİK FAKÜLTESİ
MEKATRONİK MÜHENDİSLİĞİ
ARDUINO İLE ROBOT KOL KONTROLÜ
BİTİRME TEZİ
Hazırlayan
BUĞRA AYDOĞAN 2011010225018
Tez Danışmanı
Yrd. Doç. Dr. Aytül BOZKURT
2016
KARABÜK
1
İÇİNDEKİLER
Sayfa No: İÇİNDEKİLER……………………………………………………………………………………….1
KABUL VE ONAY………………………………………………………………………………… 2
ÖNSÖZ………………………………………………………………………………………………3
ÖZET………………………………………………………………………………………..4
1. GİRİŞ ……………………………………………………………………………………5
2. TEORİK ALTYAPI …………………………………………………………………………...7
2.1. Servo Motorlar ………………………………………………………………….…...7
2.2. Arduino Mikrodenetleyici ……………………………………………………….…8
2.3. Bluetooth Modülü …………………………………………………………………..10
2.4. Devre Şeması ………………………………………………………………………..11
2.5.Güç ……………………………………………………………………………..11
3. ROBOT KİNEMATİĞİ ……………………………………………………...................12
3.1. Robot Kolu Kinematiği Genel Özellikleri ………………………………….....12
3.2. D & H (Denavit ve Hartenberg) Koordinat Çerçeveleri ……………………....17
3.3. İleri Kinematik ………………………………………………………………...17
3.4. Ters Kinematik ………………………………………………………………...18
4. TASARIM KISMI ………………………………………………………………………19
4.1. Mekanik Kısmın Tasarımı ……………………………………………………..20
4.2. Mekanik Kısmın Montajı …………………………………………...................22
4.3. Android Programlama …………………………………………………………23
5. DENEYSEL ÇALIŞMALAR …………………………………………………………...26
5.1. Projede İzlenen Yöntem ……………………………………………………….26
5.2. Robot Kol Kontrolü ……………………………………………………………27
6. SONUÇLAR …………………………………………………………………………….28
KAYNAKLAR …………………………………………………………………………….29
EKLER ……………………………………………………………………………………..30
ÖZGEÇMİŞ………………………………………………………………………………………….41
2
3
ÖNSÖZ
Lisans öğrenimim sırasında başta bölüm başkanımız olmak üzere, üzerimde emeği geçen
bütün hocalarıma bana öğrettikleri üniversite ve hayat dersleri için, tez çalışmalarım
boyunca gösterdiği her türlü destek ve yardımlardan dolayı danışman hocam Yrd. Doç.
Dr. Aytül BOZKURT’a en içten dileklerimle teşekkür ederim.
Buğra AYDOĞAN
Mekatronik Mühendisi
Mezun durumuna gelen tüm öğrencilerimizin hayat boyu başarılı olmalarını diler, vatana
millete ve ailelerine faydalı birer mühendis olarak bundan sonraki yaşamlarını devam
ettirmelerini temenni ederim.
Yrd.Doç.Dr. İbrahim ÇAYIROĞLU
Bölüm Başkanı
4
ÖZET
Günümüzde hızla artan insan ihtiyaçları doğrultusunda teknoloji de aynı oranda
gelişmektedir. Bu ihtiyaçların karşılanması için yapılan çalışmalar her geçen gün hayatı
daha da kolaylaştırmakta ve bu çalışmalar robot kol çalışmalarında yoğunlaşmaktadır.
Robot kollar, dışarıdan bir kullanıcıyla ya da daha önceden belirlenen komutları yerine
getirerek çalışırlar. Günümüzde nerdeyse her alanda ihtiyaç duyulan robot kolların en fazla
gelişme gösterdiği alan endüstri ve tıp sektörüdür.
Projede tasarlanan ve gerçekleştirilen robot kol 5 adet servo motor ile 4 eksen yönünde
hareket edebilme yeteneğine sahiptir. Tutucu sayesinde istenilen bir malzemeyi bir yerden
alıp başka bir yere taşıyabilir ve ayrıca aldığı malzeme ile karıştırma işlemi de
gerçekleştirebilir. Bu işlemi yaparken de arduino ve arduinoya bağlı bluetooth modülü
üzerinden android uygulamasına bağlanarak robot kontrolü sağlanmaktadır.
5
1. GİRİŞ
Geçmişten günümüze insanlar her zaman ek yardımcı sistemlere ihtiyaç duymuştur.
Bilgi akışının hızla artması ile artık insanları farklı pazar arayışlarına yönlendirmiş ve
insanlar kaliteli ürünü ucuza imal edebilmek için rekabete girmişlerdir. Bunu
gerçekleştirebilmek için de otomasyon sistemlerine ihtiyaç vardır. Çünkü kaliteli ürün için
çalışanların tecrübeli ve iyi eğitilmiş olmalarının yanı sıra hataları minimize eden
standartlaştırılmış otomasyon sistemleri de gerekmektedir. İnsanlar, fiziksel özelliklerinden
dolayı güçlerinin yetmediği yerlerde yardımcı makineler kullanma ihtiyacı duymuşlardır.
Önceleri insan yardımına ihtiyaç duyularak çalıştırılan bu makineler, teknolojinin
ilerlemesiyle insan gücüne ihtiyaç duymadan kendiliğinden çalışır hale getirilmiştir.
Otomasyon sistemlerinin uygulamalarında en fazla kullanılan elemanlarından birisi de
robotlardır. Robotik sistemler; Mekatronik Mühendisliği, Makine Mühendisliği, Elektrik-
Elektronik Mühendisliği ve Bilgisayar Mühendisliğinin ortaklaşa çalışmaları sonucu ortaya
çıkmıştır.
Projede, önceden belirlenen komutlar doğrultusunda belirlenen görevi yerine
getirmesi için tasarlanan robot kolun gerçekleştirilmesinde yapılan işlemler ve bu işlemler
esnasında mekanik ve yazılım konusunda çeşitli bilgi sahibi olmak için araştırmalar
yapılmış ve projeye uygulanmıştır.
6
İlk olarak, robot kolun ne işlevde olacağı ve hangi hareketleri yapabileceği
saptanmıştır. Android telefon veya tablet kontrolü yapılan robot kol; istenilen malzemeyi
taşıyabilir, karıştırabilir ve önceden bir kullanıcı tarafından belirlenen komutları yerine
getirebilir. Bu proje de belirlenen görevi ise; robot kol bir malzemeyi alarak istediğimiz
konuma getirdikten sonra hareketlerini kaydediyoruz ve biz durdurana kadar aynı hareketi
yapmasını sağlıyoruz. Bu işlemlerin düzgün bir şekilde gerçekleştirilebilmesi için seçilecek
motorun hassas çalışabilmesi ve yüksek torkta olması gerektiğinden servo motor tercih
edilmiştir. Robot kol, 5 adet servo motordan oluşmaktadır ve bu motorlar yardımıyla 4
eksen yönünde hareket edebilmektedir.
Projede Java dilinde yazılan Arduino Nano mikrodenetleyicisi programlanarak servo
motor kontrolü sağlanmıştır. Böylelikle servo motor girişlerinin bulunduğu devre dışında
herhangi bir devre yapımına gerek kalmaksızın arduino üzerinde bulunan elemanlar
sayesinde istenilen işlemler yapılabilmiştir. Mekanik bölüm için SolidWorks programı ile
robotun uzuvları çizilerek robot kolunun boyutları belirtilmiştir. Robotun çalışabilmesi için
de 5V’luk güç kaynağı tercih edilmiştir.
7
2. TEORİK ALTYAPI
Projenin teorik alt yapısı, ana başlıklar ve alt başlıklar olarak aşağıda incelenmiştir.
2.1. Servo Motorlar
Servo; bir mekanizmanın işleyiş hatasını algılar, geri besleme yöntemiyle denetler ve
hataların giderilmesini sağlar. Servo motorun içinde alternatif akım (AA), doğru akım
(DA) veya step motorlar bulunabilir. Bunların yanı sıra sürücü ve kontrol devreleri
bulunmaktadır. Servo motorlar istediğimiz komutları yerine getirebilen motor çeşitleridir.
Çok küçük ya da çok büyük hızlarda bile kararlı bir şekilde çalışabilirler. Bu motorlarda
küçük boyuttan büyük moment elde edilebilir.
Servo motorlar kontrol sistemlerinde hızlı çalışmalar, fazla eksen hareketinin
yapılması, durum kontrolü ve bunun gibi alanlarda kullanılmaktadırlar. Servo motorlar bir
mekanizmanın son kontrol elemanıdırlar. Duyarlılıkları yüksektir ve servo motorlar
elektronik yapılı veya programlayıcı devrelerle birlikte kullanılmaktadırlar. Bu motorlar
AA ve DA olmak üzere ikiye ayrılır. AA servo motorlar fırçasız tip motorlar iken DA
servo motorlar fırçalıdır. Servo motorlar çoğunlukla üç kabloludur. Bunlar güç için kırmızı
kablo, topraklama için siyah ve kontrol (data, veri) için sarı renkli kablolardır. Projenin
yapım aşamasında kullanılan servo motorlardan biri Şekil 1’de gösterilmektedir.
Şekil 1. DA servo motor
Projede Tower Pro SG90 Mini servo motoru kullanılmıştır. Bu servo motorun bazı
özellikleri; çok yönlü çalışması, darbe genişlik kontrolünün 10 μs olması, VP-P: 3-5 V
8
kare dalga ile çalışması ve çalışma geriliminin 4,8-6V olması gibi sıralanabilir. Kullanılan
servo motorun küçük çalışma geriliminde, çalışma hızı yüksüz olarak 0,12 s/60° ve torku
1,2-1,6 kg/cm’dir.
Servo motorlar, sinyal durumuna göre kontrol edilirler. Bunu yaparken veri ucu
yardımıyla verilen darbe genişlik modülasyon (PWM) sinyali kullanılır. Her bir servo
motor, 10-20 ms’de ve 0,5-1,5 ms’de bir PWM sinyali ile kontrol edilir. Bu sinyalin lojik-
1‘de kalış süresine (tk) göre motor milinin konumları belirlenir. Bunlar;
tk = 0,5 ms iken motor mili en sona döner,
tk= 0,5- 1 ms iken motor milinin konumu ortadadır,
tk= 1- 1,5 ms iken motor mili sağa döner,
tk= 10-20 ms iken (tekrar aynı sinyal verildiğinde) eski konumunda kalır,
şeklindedir. Bu motorların konum kontrolü gerekli darbeler kullanılarak belirlenir.
Projede kullanılan DA servo motorlar çalışma esnasında gerilimleri 5V civarında
tutulmuştur.
2.2. Arduino Nano Mikrodenetleyicisi
Genellikle programlama ve yazılım alanında kullanılan mikrodenetleyici tipi PIC
olsa da son zamanlarda arduino dünyada oldukça popüler hale gelmiştir. Arduinonun
geçmişi wiring ve processing projelerine dayanmaktadır. Processing, programlama
deneyimi olmayanlara yönelik geliştirilmek amacıyla yazılmış bir dildir. Arduinolar wiring
programlama dili temelinde üretilmiştir. İkisinin de ortak özelliği, elektronik ve
programlama konusunda temel bilgi sahibi kişilerin dahi kolayca tasarım yapabileceği
ortamın sağlanmış olmasıdır. Arduino artık günümüzde giderek daha yaygın hale gelmeye
başlamıştır. Neredeyse her alanda kullanımı olan arduino ile yapılan insansız hava aracı
projeleri dahi görülmektedir.
Arduinonun bu derece hızlı bir şekilde yaygınlaşma sebepleri şunlardır;
Sürücü kullanımıyla birlikte geliştirme ortamının basit olmasından dolayı bütün
platformlarda kullanılabilir.
9
Gelişmiş kütüphanesi yardımıyla karmaşık olan işlemlere bile kolaylıkla çözüm bulunabilir.
Arduinoya yazılan programlar herhangi bir başka platformda koşturulmadığından hızlı
çalışabilirler.
Arduino ile uyumlu ve birlikte çalışabilecek çok fazla donanım desteği bulunmaktadır.
Açık kaynak kodlu olduğu için çevresi ile iletişime kolay geçebilmektedir.
Arduino kullanıcı sayısı fazla olması sebebiyle herhangi bir sorun oluştuğunda kolaylıkla
çözüme ulaşılabilir.
Şekil 2. Projede kullanılan Arduino nano mikrodenetleyicisi
Arduino Nano ATmega328 mikrodenetleyici (Arduino Nano 3.x ) veya Atmega168 ( Arduino
Nano 2.x ) mikrodenetleyici barındıran, küçük , tam ve breadboard dostu bir Arduino kartıdır.
Arduino Duemilanove ile hemen hemen aynı fonksiyonlara sahiptir. Arduino Nano Gravitech
tarafından tasarlanmıştır ve kullanılmaktadır.
Arduino Nano bir bilgisayar ile, başka bir Arduino ile ya da diğer mikrodenetleyiciler ile
haberleşme için çeşitli imkanlar sunar. ATmega328 ve ATmega168 mikrodenetleyicileri, RX ve
TX pinlerinden erişilebilen UART TTL (5V) seri haberleşmeyi destekler. Kart üzerindeki bir
FTDI FT232RL seri haberleşmeyi USB üzerinden kanalize eder ve FTDI sürücüleri (arduino
yazılımı içinde mevcuttur) ile bilgisayardaki yazılıma sanal bir com portu olarak görünür. Kart
üzerindeki RX ve TX ledleri FTDI çipi üzerinden USB den seri çipe ve USB den bilgisayara veri
giderken yanıp söner.
10
SoftwareSerial kütüphanesi Arduino Nano 'nun digital pinlerinden herhangi biri üzerinden
seri haberleşmeye imkan sağlar. Ayrıca ATmega328 ve ATmega168 mikrodenetleyicileri I2C
(TWI) ve SPI haberleşmelerini de destekler.
2.3. HC-06 Bluetooth Modülü
HC-06 BT modülü sadece slave olarak çalışan ve seri haberleşme protokolünü kullanan
bir modüldür. Bluetooth haberleşmede master ve slave, bağlantıyı başlatabilme durumuna göre
belirlenir. Bir master modül, bağlantıyı başlatabilir ama slave modül bağlantıyı başlatamaz. Biz
projemizde slave olarak çalışan modülün bağlantısını bir pc veya android cihazıyla
sağlayacağımız için bağlantıyı harici bir aygıt başlatacaktır. Çift yönlü data sağlıklı bir şekilde
gönderilip alınabilir.
Şekil 3. HC-06 Bluetooth modülü
Cihazı bluetooth aygıtlarına ekledikten sonra bilgisayarımızda, modül ile ilişkilendirilmiş
sanal bir com port oluşmuş oluyor. Artık modül yardımıyla bluetooth üzerinden haberleşmemiz
gerçekleşebilir. Mikrodenetleyici (PIC18F46K22) ile UART üzerinden gönderdiğimiz kodlar
bluetooth ile PC ye BT modülünün bağlı olduğu COM üzerinden alınabiliyor. Ve PC den de
11
COM üzerinden gönderilen datalar, mikrodenetleyiciye ulaşır.
2.4. Devre Şeması (Board Üstünde)
Devre; servo girişleri, arduino pin girişlerinden ve bluetooth modülü girişinden
oluşmaktadır. Şekildeki devrede servo motorların, bluetooth modülünün, arduino nanoya
bağlantıları ve güç kaynağı bağlantıları gösterilmiştir. Kullandığımız bu devre sayesinde güç
kaynağından gelen 5V’un servo motorlara dağıtılması sağlanmıştır.
Devreye ait resim Şekil 4’te verilmiştir.
Şekil 4. Devre
2.5. Güç
Servo motorların kontrol devresini beslemesi için seçilen güç kaynağı, eş zamanlı tüm
servo motorların çalışması durumunda dahi aynı akımı verebilmektedir. Tüm servo motorlar
aynı anda çalıştırıldığında 0,5 A akım çekmektedirler. Ayrıca projede robotun hareketi için
kullanılan arduino için de 5 V’a ihtiyaç duyulmuştur. Bu ihtiyaç 5V’luk güç kaynağı ile
sağlanmıştır.
12
3. ROBOT KOLU KİNEMATİĞİ
3.1. Robot Kolu Kinematiği Genel Özellikleri
Robotikte kinematik, hareket inceleme bilimidir. Robot kolu uzuvları referans
koordinat çerçevesine göre dönebilir veya ötelenebilir. Denavit ve Hartenberg tarafından
geliştirilen sistematik ve genel bir yaklaşım robotun uç noktası ile robot kolu uzuvlarının
toplam yer değiştirmeleri arasındaki ilişkiyi kurar (Fu 1987). Uzuvlar arasındaki açısal ve
doğrusal yer değiştirmeler mafsal koordinatları olarak adlandırılır ve uzuv değişkenleri
tarafından tanımlanır. Uç noktasının referans koordinat sistemine göre dönme ve öteleme
miktarını belirlemek için, her uzuv dönme ve öteleme miktarlarını gösteren A matrisleri
sırayla birbiriyle çarpılır. Uç noktasının koordinatlarının verilmesi durumunda, geriye doğru
gidilerek uzuv değişkenleri elde edilebilir. Bu işlemler ileri ve ters kinematik olarak
isimlendirilir. Bundan sonraki kısımda ileri ve ters kinematiğin nasıl belirleneceği
anlatılacaktır. Genel transformasyon matrisi basit robotlar için bile oldukça karışık
olabilmektedir. Standart robotlar için olan Jacobian matrisi (McKerrow 1991) ve (Koivo
1989) gibi standart ders kitaplarında bulunabilir.
Genel Bir Robot Kolu İçin Koordinat Çerçeveleri ve Transformasyon Matrisleri
n boyutlu bir pozisyon vektörünün n+1 boyutlu bir vektör ile gösterilmesine homojen
koordinat gösterimi denir. Aşağıda koordinat çerçeveleri arasında bir pozisyon vektörünü
homojen koordinatlarda gösteren 4 4 ’lük bir matris görülmektedir (Fu, 1987).
p = p i + p j + p k x y z yeni çerçevenin orijininin vektörünü,
x = x i + x j + x k x y z yeni çerçevenin x ekseninin dogrultu vektörünü,
y = y i + y j + y k x y z yeni çerçevenin y ekseninin dogrultu vektörünü,
13
z = z i + z j + z k x y z yeni çerçevenin z ekseninin dogrultu vektörünü temsil eder.
Transformasyon matrisinin 4. kolonu x, y, ve z dogrultularındaki ötelemeye karsılık
gelen 3 elemana sahiptir.
3 koordinat ekseninin herhangi birinde dönme mümkün oldugundan, x, y ve z eksenlerinde q
açısı kadar olan dönmelere karsılık gelen 3 dönme transformu vardır. x ekseni için aşağıdaki
matris yazılabilir;
y ve z eksenleri etrafında sadece dönmeleri temsil eden matrisler benzer sekilde yazılabilir.
14
Transformasyon matrisinin elemanları saf dönme ve öteleme matrislerinin ard arda
çarpımıyla bulunabilir. Kartezyen uzayda uç noktasının referans çerçevesine göre oryantasyonu
istendiginde, bu, sabit referans çerçevesinin eksenleri etrafındaki dönmelerin bir dizisi olarak elde
edilebilir. Bunu yapmak için çok sayıda yol varsa da, en iyi bilinenlerde birisi “roll-pitch-yaw”
transformasyonudur. 3 dönmenin belirlenmesiyle olur. Önce x ekseni etrafında dönme, sonra y ve
daha sonra da z eksenli etrafında dönme.
Robotikte kinematik, hareket inceleme bilimidir. Robot kolu uzuvlarının pozisyonları,
hızları ve ivmeleri arasındaki iliskileri, kuvvetleri ve hareketi etkileyen diger faktörleri dikkate
almadan inceler.
15
Şekil .Bağıl açıları gösterilen n uzuvlu seri robot kolu
Sekil ’de verilen seri uzuv robot kolunu incelendiginde uzuvlardan birinin pozisyonu ve
oryantasyonu veya her ikisi degistiginde, bu uzuv ve uç noktası arasında olan uzuvların
pozisyonları ve oryantasyonları da degisecektir. Uzuvların pozisyon ve oryantasyonları
degisirken, genellikle uç noktasının pozisyonu ve oryantasyonunun temel referans çerçevesine
göre belirlenmesi arzu edilir.
16
H
Şekil . D & H parametreleri
Her hareketli uzuva bir koordinat çerçevesi bağlandığında, her iki uzuv
arasındaki transformasyon, A matrisi olarak isimlendirilen bir homojen
transformasyon matrisi ile tanımlanabilir. Örneğin 1. uzuv temel çerçeveye 1.
A matrisi olan 0A1 ile bağlanır. Uç
noktasının transformasyon matrisi RT ise A matrislerinin 1. A matrisinden
başlayarak uç noktasının A matrisine kadar olan A matrislerinin ard arda
çarpımıyla referans çerçevesine göre ifade edilebilir.
Bu denklem kapalı formda oldugundan, herhangi bir terim bir digerine göre ifade edilebilir ve
robot kolunun kinematik analizinde çok önemlidir. Çünkü robot kolunun ileri ve ters
kinematiginin çözümlemesinde kullanılır.
17
3.2. D & H (Denavit ve Hartenberg) Koordinat Çerçeveleri
Uzuvlar arasındaki açılar ve yer değiştirmeler uzuv değişkenleri tarafından tanımlanan
mafsal koordinatları olarak adlandırılır. Her uzuvu için bir DOF’a sahip olan n mafsallı bir seri
uzuv robot kolu n+1 tane uzuva sahiptir. D & H parametrelerini kullanarak Şekil 3.2’de
görüldüğü üzere doğrusal olması şart olmayan herhangi bir uzuv, yapısal kinematik uzuv
parametreleriyle karakterize edilebilir (Koivo, 1989);
ln : uzuv uzunluğu, mafsal eksenleri arasındaki ortak normal boyunca olan mesafedir. z
ve zi-1 eksenleri arasındaki uzunluğa diktir.
i: positif zi-1 ekseninden positif zi eksenine olan pozitif x ekseni etrafındaki dönme açısıdir.
i : pozitif xi-1 ekseninden positif zi eksenine olan pozitif zi-1 ekseni etrafındaki dönme açısıdir.
di 1. koordinat çerçevesinin orijininden xi-1 ekseni boyunca olan zi-1 ve xi eksenlerinin kesişimine
olan uzaklıkdır.
Yapısal parametrelerin bazıları robot kolu hareketi sırasında zamanla değişebilir. Bu değerleri
değişen parametreler, örneğin dönel mafsaldaki I I açısı, mafsal değişkenleri olarak
isimlendirilir.
3.3. İleri Kinematik
Bir robot kolunun mafsal uzayı tanımı, kartezyen uzayı tanımıyla ilişkilendirilebilir.
Yani, verilen bir mafsal değişkenleri takımı için uç noktasının pozisyonu ve oryantasyonu
kartezyen koordinatlarda belirlenebilir. Bu işlem ileri kinematik olarak bilinir. İleri
kinematik, önceden bahsettiğimiz A matrislerini kullanarak uç noktasının pozisyon ve
oryantasyonunu veren R T H transformasyon matrisini bulma olayıdır. R T H transformasyon
matrisi, genel öteleme matrisi ile RPY açılarının oryantasyon transformu matrisiyle
çarpılarak da elde edilebilir.
18
3.4. Ters Kinematik
Kartezyen koordinatlarda verilen bir uç noktası pozisyonu ve oryantasyonu için,
mafsal değişkenlerinin alması gereken değerleri bulma işlemine ters kinematik denir.
Ters kinematik ileri kinematiğe göre çözümlenmesi oldukça zor olabilmektedir. Birçok
durumda çözümü garanti etmeyen ve deneme yanılma yöntemini de içeren teknikler
kullanmak gerekmektedir.
19
4. TASARIM KISMI
Tasarım kısmı kendi içerisinde, mekanik kısmın tasarımı ve mekanik kısmın montajı
olmak üzere ikiye ayrılmaktadır. Mekanik kısmın tasarımında, robot kol yapımında
kullanılacak olan parçaların milimetrik çizimleri yardımcı program aracılığı ile yapılmıştır.
Mekanik kısmın montajında ise robot kolda kullanılan servo motorların isimlendirilmesi ve
robotun çalışması esnasındaki görevleri açıklanmıştır. Projenin yapımı bazı basamaklardan
oluşmaktadır. Bu basamaklar;
Projenin yapımı için gerekli mekanik malzemelerin belirlenmesi,
Projede kullanılacak mikrodenetleyici ve yazılımın belirlenmesi,
Robot kolu uygun bir biçimde çalıştıracak servo motorların araştırılması ve seçilmesi,
Mekanik kısım parçalarının uygun şekilde seçilmesi,
Robot kol montajının gerçekleştirilmesi,
Sistemin seçtiğimiz mikrodenetleyici ile amaca uygun şekilde çalışıp çalışmadığının test
edilmesi,
Olası hatalar gözden geçirilerek sistemin tekrar yapılandırılması şeklinde verilmiştir. Bu
adımlar tamamlanarak robotun tasarımı tamamlanmıştır.
Arduino ile robot kol kontrolü adlı projemizde kullanılan malzemeler aşağıdaki
çizelgede verilmektedir.
Malzeme listesi çizelgesi
Sıra Malzeme Miktar Fiyat Tutar
1 Tower Pro SG90 Mini Servo Motor 5 12.00 60.00
2 Arduino Nano (AT Mega328) 1 15.00 15.00
3 Robot uzuvları (3D yazıcı ile yapıldı) 5 10.00 50.00
4 Bluetooth modülü (HC-06) 1 25.00 25.00
20
4.1. Mekanik Kısmın Tasarımı
Robot kolun mekanik kısmı için gerekli malzemeler temin edildikten sonra
SolidWorks üzerinde çizimi yapılarak malzemeler milimetrik olarak oluşturulmuştur. Bu
malzemeler ile mekanik kısmın montajı gerçekleştirilmiştir. Projenin mekanik kısmına ait
çizimler Şekil 5, 6, 7, 8’te verilmiştir.
Şekil 5.
Şekil 6.
21
Şekil 7.
Şekil 8.
Şekil 5. Mekanik kısımlarının tasarımı
22
4.2. Mekanik Kısmın Montajı
Kesilen parçalar, servo motorlarla birlikte birleştirilerek robot kolun montajı
tamamlanmış, robot kol 4 eksende hareket etmekte ve bu hareketini 5 adet Mini Servo
Motorla gerçekleştirmektedir.
SolidWorks üzerinde parçaların çizimini yapılıp gerekli parçalar edinildikten sonra
mekanik kısmın tasarımı başlatılmış ve robot kolun bir hareketsiz alt gövde ve hareketli üst
gövdesi hazırlanmıştır. Robot kolun hareketsiz alt gövde kısmında bir adet servo motor
bulunmaktadır ve bu robotun 1. ekseni olarak adlandırılmıştır. 1. eksen robot kolun sağa
sola dönme hareketi sağlamaktadır. Hareketli üst gövde kısmında ise 2 adet servo motor
bulunmaktadır. Bu servo motorlar birbirlerine paralel şekilde çalışmaları gerektiğinden
ikisinin de başlangıç ve bitiş pozisyonları eş zamanlı ayarlanmıştır. Bu iki servo motorda
sırasıyla 2. eksen ve 3. eksen olarak adlandırılmıştır.
2. ve 3. eksenlerinin görevleri ise robot kolun aşağı ve yukarı hareket etmesini
sağlamaktır. 1. 2. ve 3. eksenlerdeki servo motorlarının montajı Şekil 9’da verilmiştir.
Şekil 9. 1, 2 ve 3. eksenlerdeki servo motorlarının montajı
23
4.3. Android Programlama
Bu projede kullanmış olduğumuz android uygulaması App Inventor ile yapılmıştır.
App Inventor nedir? App Inventor, Google tarafından ortaya çıkarılan ve sonrasında MIT
(Massachusetts Institute of Technology) tarafından geliştirilen özgür bir web uygulamasıdır.
MIT'nin diğer projeleri Scratch ve StarLogo TNG gibi grafiksel bir arayüz kullanan
uygulama, Android işletim sistemi üzerinde çalışan mobil uygulamaların yapımında
satırlarca kod yazdırmak yerine görsel objeleri sürükle bırak özelliğini kullanıyor.
App Inventor Design arayüzünde yapacak olduğumuz uygulamanın görsel ve aktif
bileşenlerinin tasarlandığı kısım olup, Butonlar, Resimler, Metin Alanlarından; Ses , Video
gibi Media Bileşenlerine kadar nesnelerin eklenebildiği, bunun dışında cihazın GPS, İvme ve
Bluetooth sensörü gibi bileşenlerin de eklenebildiği bir kısımdır. Bu kısımda Boyut, renk ,
konum gibi bir çok değişkenin kontrol edilebildiği bir tasarım kriterine sahip oluyorsunuz.
Projede kullandığımız android uygulamasının tasarımı Şekil 12’de gösterilmiştir.
Şekil 12.
24
App Inventorün Block kısmında ise, yapmış olduğumuz uygulamanın arka planında
çalışacak olan kodlamaları birbirine geçen bloklarla tıpkı bir lego gibi birleştirilen kod
parçalarla oluşturuyoruz. Uygulamamıza eklediğim tüm bileşenlerin kullanılabilecek tüm
olaylar/özellikleri (event) yer alıp bunları ilgili bloka birleştirerek çalışmasını sağlıyoruz.
Yapmış olduğumuz projede android bloklar Şekil 13, 14, 15, 16’da gösterilmiştir.
Şekil 13.
25
Şekil 14.
Şekil 15.
26
Şekil 16.
5. DENEYSEL ÇALIŞMALAR
Deneysel çalışmalar kendi içerisinde; projede izlenen yöntem, robot kol kontrol
sistemi ve programlama olmak üzere üç kısma ayrılmaktadır. Projede izlenen yöntem ve
robot kol kontrol sistemi kısımlarında, temel bilgiler verildikten sonra robotun istenilen
görevleri gerçekleştirebilmesi için gereken komutlar açıklanmıştır. Programa kısmında ise
robotun hareketi için gereken yazılım bilgileri bulunmaktadır. Projenin program kısmı,
görsel açıdan projenin daha düzenli olması için Ekte verilmiştir.
5.1. Projede İzlenen Yöntem
İlk olarak robot kollar hakkında bir tarihi araştırma yapılmış ve sistemin kurulması
için gerekli temel bilgiler edinilmiştir. Projede kullanılan robot kol eklemli tiptir ve 4
eksen yönünde hareket edebilmekte (sağa sola, yukarı aşağı ) ayrıca üzerinde bulunan tutaç
sayesinde tutma ve salınım hareketi yapabilmektedir. Robot kolun kontrolünü en uygun
biçimde sağlayabilmek için kullanılan mikrodenetleyici Arduino Nano olarak seçilmiştir.
Bu mikrodenetleyicinin tercih edilme nedeni, açık kaynak kodlu olması,, kullanımı diğer
mikrodenetleyicilere göre daha kolay olması ve kullanıcı sayısı da daha fazla olduğu için
oluşabilecek bir hatanın çözümü için yardım alabilmenin daha ulaşılabilir olmasıdır
27
Bu çalışmalar yapıldıktan sonra kullanılacak servo motorlar hakkında ayrıntılı
bilgiler edinilmiştir. Robotun projede yapacak olduğu işlemleri düzgün bir şekilde
gerçekleştirilebilmesi, seçilecek motorun hassas çalışabilmesi ve yüksek torkta olması
gerektiği için servo motor tercih edilmiştir. Robot kol, 5 adet servo motordan
oluşmaktadır. Servo motorların fazla olması sebebiyle görevlerini anlatabilmek için
aşağıdan yukarıya doğru numaralandırılmıştır.
5.2. Robot Kol Kontrolü
Besleme kaynağından gelen 5V’luk gerilimin servo motorlara dağıtılması amacıyla bağlantı
kutusu yapılmıştır. Bunu yaparken de servo motor girişleri, arduino pin girişleri ve iletişim
devresi elemanları kullanılmıştır. Önceden seçilen parçaların uygun şekilde
birleştirilmesiyle robot kolun mekanik kısmı tasarlanmıştır. Yapılmış olan robot kolun
amacına uygun şekilde hareket ettirilebilmesi için seçilen uygun arduino mikrodenetleyicisi
ile yazılımı gerçekleştirilmiş ve ardından bluetooth modül ve servo motorlarla denemeler
yapılarak sistem çalışması hakkında bilgi edinilmiştir. Yapılmış olan robot kolun amacına
uygun şekilde hareket ettirilebilmesi için seçilen uygun arduino mikrodenetleyicisi ile
yazılımı gerçekleştirilmiştir. Robot kolunun kontrolü android uygulamasındaki eksenlerin ‘-
‘ ve ‘+’ yönünde hareket etmesiyle sağlanmaktadır. Android uygulaması şekil 17’de
gösterilmiştir.
Şekil 17. Android uygulaması
28
SONUÇ
Robot kollar, birçok alanda geliştirilebilir yapıdadır. Robot kollar sayesinde birçok
işin yapımı kolaylaşmış ve ortaya çıkabilecek hata seviyesi minimuma indirilmiştir.
Örneğin; bazı eczanelerde kullanılmakta olan ilaç veren robotlar, projede gerçekleştirilen
robot kolun geliştirilmiş halidir. Bunun yanı sıra robot kolun hareket kabiliyeti daha da
arttırılıp, parmak kısmına kamera yerleştirilip, hassasiyeti arttırıldığında tıp sektöründen
otomasyon sistemlerine kadar geniş bir kullanım alanına sahip olabilmektedir. Bu şekilde
geliştirilen robot kollar ile tıp sektöründe hastanın enfeksiyon kapma riski en aza inerken
cerrahi müdahale esnasında insan kaynaklı hatalar da en aza indirilmiş olmaktadır. Bu
proje ile yapılan robot kol prototip niteliği taşımasına rağmen daha kapsamlı robotik
sistemler için geliştirilebilir bir niteliğe sahiptir. Bunların yanı sıra gelişime açık olan robot
kol sektörü ilerleyen zamanlarda önemini koruyacaktır.
Projenin amacı, 4 eksende hareket eden robot kol tasarımı ve bu robot kolun uygun
bir mikrodenetleyici ile bluetooth modül üzerinden android uygulamayla kontrolünün
sağlanmasıdır. Bu amaç için gerekli teorik ve pratik bilgiler edinilerek projenin yapılması
için gerekli altyapı oluşturulmuştur. Projenin yapılması ve geliştirilmesi sürecinde birçok
teorik bilgi pratiğe aktarılarak, projenin amacına uygun bir şekilde gerçekleşmesi
sağlanmıştır.
29
KAYNAKLAR
[1]. Elektrik Elektronik Teknolojisi-Step ve Servo Motorlar, MEGEP, 2007.
[2].T. Coşkun, Arduino Uygulama Kitabı:Analog- Dijital- Sensörler- Haberleşme- Projeler,
Dikeyeksen Yayınları, İstanbul, Türkiye:Şubat, 2013.
[3].http://www.robotiksistem.com/arduino_nano_ozellikleri.html
[4].https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-201/bluetooth-ile-iletisim
[5].https://tr.wikipedia.org/wiki/Servo_motor
[6].http://www.bilgiustam.com/servo-motor-nedir-nasil-calisir/
[7].http://www.zekeriyacanbal.com/2016/01/mit-app-inventor-nedir-ve-dersleri.html
[8].http://mvaslan.blogspot.com.tr/2016/04/mit-app-inventor-nedir.html
[9].GEREĞİNDEN ÇOK SERBESTLİK DERECELİ ROBOT KOLU
KONTROL SİSTEMİ TASARIMI VE UYGULAMASI
Pamukkale Üniversitesi Fen Bilimleri Enstitüsü Yüksek Lisans Tezi
Elektrik-Elektronik Mühendisligi Anabilim Dalı
İlker EREN Haziran, 2006 DENİZLİ
30
EKLER
EK-1 LİTERATÜR TARAMALARI
Kinect Tabanlı Robot Kolu Kontrolü İsmail Özkök, Gürkan Küçükyıldız, Suat Karakaya, Hasan Ocak Mekatronik Mühendisliği Bölümü Kocaeli Üniversitesi, İzmit/Kocaeli
Özetçe
Bu çalışmada Kinect ile robot kolunu anlık olarak hareket ettirmek üzerinde
çalışılmıştır. Bu amaçla geliştirilen sistemde Kinect sensör ve bilgisayar kullanılmıştır. Ayrıca
çalışma sırasında bir adet üç eksenli robot geliştirilmiş ve deneyler gerçek zamanlı olarak bu
geliştirilen robot üzerinde gerçekleştirilmiştir. Üç eksenli robotun hareketi RC servo motorlar
ile sağlanmış olup bu motorlar Arduino Uno R3 kartı ile kontrol edilmiştir. Eklem açılarını
bulabilmek için Kinect kameradan elde edilen görüntü Processing 2.0b9 ortamında geliştirilen
görüntü işleme programı aracılığıyla iskeletleştirilir. Açısı bulunmak istenilen insan uzuvları
üzerine bir vektör çizdirilir. Çizilen bu vektörlerin uzunlukları trigonometrik işlemlerden
geçirilerek uzuvlar arasındaki açıları vermektedir. Elde edilen açı değerleri seri haberleşme
vasıtasıyla Arduino Uno R3 kartına gönderildikten sonra robotun hareketini sağlayan servo
motorlar bu açı değerlerine göre döndürülerek sistemin hareketi sağlanmıştır. Yapılan
deneyler sonucunda geliştirilen sistemin başarılı olarak çalıştığı ve robotun kollarının yapılan
hareketleri anlık olarak taklit edebildiği gözlenmiştir.
31
GEREĞİNDEN ÇOK SERBESTLİK DERECELİ ROBOT KOLU KONTROL
SİSTEMİ TASARIMI VE UYGULAMASI
EREN, İlker Yüksek Lisans Tezi, Elektrik Elektronik Mühendisligi ABD
Tez Yöneticileri: Yard. Doç. Dr. Abdullah T. TOLA ve Doç. Dr. E. Sahin ÇONKUR
ÖZET
Bu tezin amacı, gereginden çok serbestlik dereceli bir robot kolunun bilgisayardan
kontrolü için gerekli kontrol sisteminin tasarımının ve uygulamasının yapılmasıdır.
Bu çalısma TÜB_TAK tarafından desteklenen, tasarımı ve prototipi üniversitemizde
yapılan ilk sanayi tipi robotu içeren projenin bir parçasıdır. Prototipin tahrik
mekanizması AC servo motorlardan olusmaktadır. Visual C++.NET bilgisayar programı
içinden bir OCX program parçacıgı vasıtasıyla eksen kontrol kartına emir yollanmakta,
kart bu emirleri servo sürücülere iletmekte ve servo sürücüler de motorları sürmektedir.
Bu tezde, motorların kurulması, ayarlanması ve kontrol kartıyla bilgisayardan
kontrolü gerçeklestirilmistir. Buna ek olarak, bu prototipte kullanılan kontrol
algoritmaları incelenmistir. Robotun mafsalları üzerinde ek bir enkoder
yerlestirilebilmesi için gerekli çalısmalar yapılmıs, bu enkoderlerden alınan bilgi
bilgisayar programına aktarılmıstır. Benzer sekilde robotun uç noktasına takılan bir
lazer sensörüyle seri port vasıtasıyla iletisim kurulmus ve sensör verisi bilgisayar
programına aktarılmıstır.
32
EK-2 PROGRAMLAMA KODLARI
Servo motorların kontrolünü sağlayıp robot kolun hareketlerini gerçekleştirebilmek
için gerekli program kodları aşağıda verilmiştir.
#include <Servo.h>
#include <EEPROM.h>
byte paket_sira=0;
byte gelenveri[200];
byte MMC_paketSira=0;
byte veri_boyu=0;
byte okunan_veri_sayisi=0;
int data_sayisi=0;
bool sec_btn_up = 0;
bool sec_btn_down = 0;
bool up_btn =0;
bool down_btn=0;
bool kaydet_btn =0;
bool oynat_btn =0;
String hmisend;
byte Secili_Servo=1;
byte hiz=75;
Servo Alt_servo;
Servo Alt_omuz;
Servo Ust_dirsek;
Servo G_bilek;
33
Servo Tutucu;
int Alt_Servo_Derece=90;
int Alt_omuz_Derece=90;
int Ust_dirsek_Derece=90;
int G_bilek_Derece=90;
int Tutucu_Derece=90;
char bt_data;
void setup() {
Serial.begin(9600);
pinMode(2,OUTPUT);
digitalWrite(2,1);
pinMode(13,OUTPUT);
digitalWrite(13,0);
Alt_servo.attach(5);//3
Alt_omuz.attach(6); //6
Ust_dirsek.attach(9);//11
G_bilek.attach(10);//5
Tutucu.attach(11);//9
Alt_servo.write(90);
Alt_omuz.write(90);
Ust_dirsek.write(90);
G_bilek.write(90);
Tutucu.write(90);
}
34
void derece_updown()
{
delay(hiz);
if(bt_data=='B')
{
// Serial.print("Alt_servo: ");Serial.println(Alt_Servo_Derece);
Alt_Servo_Derece++;
if(Alt_Servo_Derece > 180) Alt_Servo_Derece=180;
Alt_servo.write(Alt_Servo_Derece);
}
else if(bt_data=='D')
{
// Serial.print("Alt_omuz: ");Serial.println(Alt_omuz_Derece);
Alt_omuz_Derece++;
if(Alt_omuz_Derece > 180) Alt_omuz_Derece=180;
Alt_omuz.write(Alt_omuz_Derece);
}
else if(bt_data=='F')
{
// Serial.print("Ust_dirsek: ");Serial.println(Ust_dirsek_Derece);
Ust_dirsek_Derece++;
if(Ust_dirsek_Derece > 180) Ust_dirsek_Derece=180;
Ust_dirsek.write(Ust_dirsek_Derece);
}
else if(bt_data=='H')
35
{
// Serial.print("G_bilek: ");Serial.println(G_bilek_Derece);
G_bilek_Derece++;
if(G_bilek_Derece > 180) G_bilek_Derece=180;
G_bilek.write(G_bilek_Derece);
}
else if(bt_data=='Y')
{
// Serial.print("Tutucu: ");Serial.println(Tutucu_Derece);
Tutucu_Derece++;
if(Tutucu_Derece > 180) Tutucu_Derece=180;
Tutucu.write(Tutucu_Derece);
}
if(bt_data=='A')
{
// Serial.print("Alt_servo: ");Serial.println(Alt_Servo_Derece);
Alt_Servo_Derece--;
if(Alt_Servo_Derece < 0) Alt_Servo_Derece=0;
Alt_servo.write(Alt_Servo_Derece);
}
else if(bt_data=='C')
{
// Serial.print("Alt_omuz: ");Serial.println(Alt_omuz_Derece);
Alt_omuz_Derece--;
if(Alt_omuz_Derece < 0) Alt_omuz_Derece=0;
36
Alt_omuz.write(Alt_omuz_Derece);
}
else if(bt_data=='E')
{
// Serial.print("Ust_dirsek: ");Serial.println(Ust_dirsek_Derece);
Ust_dirsek_Derece--;
if(Ust_dirsek_Derece < 0) Ust_dirsek_Derece=00;
Ust_dirsek.write(Ust_dirsek_Derece);
}
else if(bt_data=='G')
{
// Serial.print("G_bilek: ");Serial.println(G_bilek_Derece);
G_bilek_Derece--;
if(G_bilek_Derece < 0) G_bilek_Derece=00;
G_bilek.write(G_bilek_Derece);
}
else if(bt_data=='X')
{
// Serial.print("Tutucu: ");Serial.println(Tutucu_Derece);
Tutucu_Derece--;
if(Tutucu_Derece < 0) Tutucu_Derece=00;
Tutucu.write(Tutucu_Derece);
}
}
37
int kaydedilen_konum=0;
int adim=1;
void Kaydet()
{
if(bt_data=='K')
{
EEPROM.write(adim, Alt_Servo_Derece);
adim++;
EEPROM.write(adim, Alt_omuz_Derece);
adim++;
EEPROM.write(adim, Ust_dirsek_Derece);
adim++;
EEPROM.write(adim, G_bilek_Derece);
adim++;
EEPROM.write(adim, Tutucu_Derece);
adim++;
kaydedilen_konum++;
// Serial.print("Konum Kaydedildi.! Toplan Konum
Dizini:");Serial.println(kaydedilen_konum);
}
EEPROM.write(0,kaydedilen_konum);
}
bool play=0;
int oynatadim=0;
void oynat()
38
{
if(bt_data=='P')
{
//Serial.println("Kaydedilen Is yapiliyor...");
play=1-play;
}
if(play==1)
{
oynatadim=1;
kaydedilen_konum= EEPROM.read(0);
for(int i=0;i<kaydedilen_konum;i++)
{
int Derece = EEPROM.read(oynatadim);
while(Alt_Servo_Derece!=Derece)
{
if(Alt_Servo_Derece>Derece) Alt_Servo_Derece--;
else if(Alt_Servo_Derece<Derece) Alt_Servo_Derece++;
delay(10);
Alt_servo.write(Alt_Servo_Derece);
}
oynatadim++;
delay(100);
Derece = EEPROM.read(oynatadim);
while(Alt_omuz_Derece!=Derece)
{
if(Alt_omuz_Derece>Derece) Alt_omuz_Derece--;
else if(Alt_omuz_Derece<Derece) Alt_omuz_Derece++;
39
delay(10);
Alt_omuz.write(Alt_omuz_Derece);
}
oynatadim++;
delay(100);
Derece = EEPROM.read(oynatadim);
while(Ust_dirsek_Derece!=Derece)
{
if(Ust_dirsek_Derece>Derece) Ust_dirsek_Derece--;
else if(Ust_dirsek_Derece<Derece) Ust_dirsek_Derece++;
delay(10);
Ust_dirsek.write(Ust_dirsek_Derece);
}
oynatadim++;
delay(100);
Derece = EEPROM.read(oynatadim);
while(G_bilek_Derece!=Derece)
{
if(G_bilek_Derece>Derece) G_bilek_Derece--;
else if(G_bilek_Derece<Derece) G_bilek_Derece++;
delay(10);
G_bilek.write(G_bilek_Derece);
}
oynatadim++;
delay(100);
Derece = EEPROM.read(oynatadim);
40
while(Tutucu_Derece!=Derece)
{
if(Tutucu_Derece>Derece) Tutucu_Derece--;
else if(Tutucu_Derece<Derece) Tutucu_Derece++;
delay(10);
Tutucu.write(Tutucu_Derece);
}
oynatadim++;
}
}
}
void loop()
{
if(Serial.available()>0)
{
bt_data=Serial.read();
}
derece_updown();
Kaydet();
oynat();
if(bt_data=='K' || bt_data=='P')
{
digitalWrite(13,1);
bt_data=' ';
}
else digitalWrite(13,0);
41
KİŞİSEL BİLGİLER
Buğra Aydoğan
Örnek Mah. Selimiye Cad.
Yasemin apt. No:37/8 Ataşehir/İstanbul
Tel: 0506 636 2424
E-mail : [email protected]
EĞİTİM BİLGİLERİ
2011-2016 Karabük Üniversitesi
Lisans Öğrencisi, Mekatronik Mühendisliği
2007-2011 Çorum Atatürk Lisesi
BİLGİSAYAR BİLGİSİ
Autocad – orta seviye
Ansys – temel seviye
SolidWorks – temel seviye
Matlab – temel seviye
C# - temel seviye
Arduino – temel seviye
Microsoft Office (Word, PowerPoint) - orta seviye
SEMİNER ve KURSLAR
1 Aralık 2012 Europlast Plastik Endüstri Fuarı - Tüyap
27, 28, 29 Aralık 2012 Robogenç Projesi - Üsküdar Gençlik Merkezi
28, 29, 30 Kasım 2013 TR İnovasyon Haftası - İstanbul Kongre Merkezi
22 Mart 2014 Win Otomasyon Fuarı – Tüyap
Temmuz, Ağustos 2014 Yaz Stajı - Genel Sistem Dizaynı A.Ş / İstanbul
Şubat, Haziran 2015 Erasmus - Lucian Blaga Universitate Sibiu, Romanya
REFERANSLAR
Dr. M.Atalay Timur – Genel Sistem Dizaynı Proje Müdürü
Tel: 0216 458 4810
Erdal Karslı – Çekva Yöneticisi
Tel: 0532 608 9973