T.C. KARADENĠZ TEKNĠK ÜNĠVERSĠTESĠ Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölüm PIC PROGRAMLAMA İLE ROBOT KOLU KONTROLÜ BİTİRME ÇALIŞMASI ABDULLAH UYSAL ONUR YILMAZ HALĠT ATEġ Yrd. Doç. Dr. Yusuf SEVĠM MAYIS 2013 TRABZON
T.C. KARADENĠZ TEKNĠK ÜNĠVERSĠTESĠ Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölüm PIC PROGRAMLAMA İLE ROBOT KOLU KONTROLÜ BİTİRME ÇALIŞMASI ABDULLAH UYSAL ONUR YILMAZ HALĠT ATEġ Yrd. Doç. Dr. Yusuf SEVĠM MAYIS 2013 TRABZON
LİSANS BİTİRME PROJESİ ONAY FORMU 21033 Abdullah UYSAL, 210227 Onur YILMAZ ve 228454 Halit ATEġ tarafından Yrd. Doç. Dr. Yusuf SEVĠM yönetiminde hazırlanan PIC Programlama ile Robot Kolu Kontrolü baģlıklı lisans bitirme projesi tarafımızdan incelenmiģ, kapsamı ve niteliği açısından bir Lisans Bitirme Projesi olarak kabul edilmiģtir. DanıĢman : Unvanı Adı ve SOYADI Yrd. Doç. Dr. Yusuf SEVĠM Jüri Üyesi 1 : Unvanı Adı ve SOYADI Öğr. Gör. Cahit ALTAN Jüri Üyesi 2 : Unvanı Adı ve SOYADI Yrd. Doç. Dr. Gökçe HACIOĞLU Bölüm BaĢkanı : Unvanı Adı ve SOYADI Prof. Dr. Ġsmail Hakkı ALTAġ iii
ÖNSÖZ Robot kolu teknolojisi birçok sektörde ihtiyaç duyulan ve bu ihtiyacın giderek arttığı bir teknolojidir. Günümüzde insanın fiziksel gücüne duyulan ihtiyaç giderek azalmaktadır. Bu noktada robot kolu devreye girer. Robot kolu teknolojisi kullanılarak hem verimin artması hem de hata oranının en aza indirilmesi sağlanabilir. Bitirme çalıģmamıza danıģmanlık yapan ve proje süresince bizlere büyük destekleri bulunan Sayın Yrd. Doç. Dr. Yusuf SEVĠM hocamıza teģekkürlerimizi sunarız. Ayrıca bize değerli zamanlarını ayıran hocalarımız Ayten ATASOY, Cahit ALTAN, Oğuzhan ÇAKIR ve laboratuar sorumlusu Mustafa Sedat BAYKAN a teģekkürlerimizi sunarız. Projemin gerçekleģmesinde her türlü olanağı sağlayan Bölüm baģkanlığına ve desteklerinden ötürü Mühendislik Fakültesi Dekanlığı ve KTÜ Rektörlüğüne teģekkürlerimi sunarım. Eğitim hayatlarımız boyunca maddi ve manevi desteklerini bizlerden esirgemeyen, bugünlere gelmemizde en büyük pay sahibi olan ailelerimize sonsuz teģekkürlerimizi sunarız. Abdullah UYSAL Onur YILMAZ Halit ATEġ TRABZON 2013 iv
İÇİNDEKİLER ÖNSÖZ... iv ĠÇĠNDEKĠLER... v ÖZET... vi SEMBOLLER VE KISALTMALAR... vii ġekġller DĠZĠNĠ... viii 1. GĠRĠġ... 2 ĠĢ-Zaman ÇalıĢma Takvimi Tablo 1 de verilmiģtir.... 3 Tablo 1. ĠĢ-Zaman ÇalıĢma Takvimi... 3 2.PROJEDE KULLANILAN TEMEL MALZEMELER... 4 2.1. Servo Motorlar... 4 2.2. PIC16f877A MikroiĢlemci... 5 2.3. Servo Motor Kontrol Devresi... 6 2.4. Kontrol Devresinin Elemanları... 8 2.4.1 Güç... 8 2.4.2. Açma Kapama Butonu... 8 2.4.3. Butonlar... 8 2.4.4. LED ler... 9 2.4.5. Seri ĠletiĢim... 9 2.4.6. LCD Ekran... 10 2.4.7. ICSP... 10 2.5. Mekanik Kısım... 10 3. PROJENĠN GENEL ĠġLEM BASAMAKLARI... 12 3.1. Projede Ġzlenen Yöntem... 12 3.2. Mekanik Kısmın Montajı... 14 3.3. Program Kısmı... 18 4. SONUÇLAR... 28 5. KAYNAKLAR... 29 EKLER... 30 EK-1 STANDARTLAR VE KISITLAR FORMU... 30 ÖZGEÇMĠġ... 32 v
ÖZET Teknolojinin çok hızlı ilerlediği günümüzde robotik alanında da büyük ve köklü değiģimler olmaktadır. Robot kolu ya bir operatör yardımıyla ya da daha önceden belirlenmiģ bazı komutlar doğrultusunda verilen görevi yerine getiren cihazdır. Birçok alanda uygulanan robot kolu teknolojisi çeģitli ihtiyaçlar doğrultusunda yönlendirilmiģtir. Robot kolu teknolojisi özellikle endüstri ve tıp sektörlerinde geniģ uygulama alanına sahiptir. Robot kolu ile bir insanın yapamayacağı iģler daha kolay ve hem maddi açıdan hem de zaman açısından daha ekonomik olarak yapılabilmektedir. Ayrıca insan faktörünün yetersiz kaldığı ortamlarda da çalıģma imkanı sunmaktadır. Projemizde yapılan robot kolu 6 adet servo motor ile 5 eksende hareket edebilmektedir. Bu sayede istenilen bir malzemeyi bir yerden alıp baģka bir yere koyabilmektedir. Aynı zamanda daha önceden belirlenmiģ bir iģi yapabilecek fonksiyona sahiptir. RS232 seri iletiģim devresi yardımıyla robot kolu kablolu olarak kumanda edilmektedir. Bunun yanında servo motor kontrol devresi üzerinde bulunan butonlar yardımıyla devre üzerinden de belli kontrolleri yapılabilmektedir. Devre üzerinde bulunan LCD ekran yardımıyla ilk servo giriģine takılan servo motorun konum bilgisi görülebilmektedir. Servo motorların kontrolü PIC16F877A mikroiģlemcisinin microc programlama dili kullanılarak programlanması ile sağlanmaktadır. Ayrıca ICSP yardımıyla PIC mikroiģlemcisinin devreden sökülüp takılmadan programlanabilmesi sağlanmaktadır. Böylece mikroiģlemcinin daha az zarar görmesi ve zamandan tasarruf yapılması sağlanmaktadır. vi
SEMBOLLER VE KISALTMALAR AC DC V ma s ms : Alternatif Akım (Alternative Current) : Doğru Akım (Direct Current) : Volt : Miliamper : Saniye : Milisaniye µs : Mikrosaniye kg cm bps I/O ICSP PWM LED LCD : Kilogram : Santimetre : Saniyedeki Bit Sayısı (Bit Per Second) : GiriĢ/ÇıkıĢ (Ġnput/Output) : Devre Üzerinden Seri Programlama (In-Circuit Serial Programming) : Darbe GeniĢlik Modülasyonu (Pulse Width Modulation) : IĢık Yayan Diyot (Light Emitting Diode) : Sıvı Kristal Ekran (Liquid Crystal Display) vii
ŞEKİLLER DİZİNİ Tablo 1. ĠĢ-Zaman ÇalıĢma Takvimi ġekil 1. Projede kullanılan servo motorlardan biri ġekil 2. Servo motor kontrol devresi ISIS programında çizimi ġekil 3. Servo motor kontrol devresi ġekil 4. Ġki konumlu anahtar (toggle switch) ġekil 5. Seri iletiģim devresi ve RS232 kablosu ġekil 6. Servo motor kontrol devresinde kullanılan LCD ekran ġekil 7. Robot kol mekanik kısmı ġekil 8. Robot kol parçalarının AUTOCAD programında çizimi ġekil 9. Ġlk 3 servo motorun monte edilmiģ hali ġekil 10. Robot kolun el kısmı ve 6 numaralı servo motor ġekil 11. Projenin tamamlanmıģ hali viii
1. GİRİŞ Teknolojinin çok hızlı ilerlediği günümüzde de robotik alanında büyük ilerlemeler kaydedilmiģtir. Hemen her alanda kullanılan robot teknolojisi insanların yaģamına büyük kolaylıklar sağlamaktadır. Bu projede çeģitli amaçlar doğrultusunda belirli bir görevi yerine getirmek için tasarlanacak robot kolunun yapımında ne tür iģlemlerin uygulanacağını, bu iģlemler sırasında yazılım, mekanik ve bu ikisinin uyum içerisinde nasıl bir araya getirileceğine karar verilmiģtir. Bilgisayar ile kontrolü yapılacak olan robot kolu istenilen bir malzemeyi bir yerden alıp bir yere koyabilecek özellikte olup aynı zamanda daha önceden belirlenmiģ bir iģi yapabilecek fonksiyona da sahip olacaktır ve 6 adet servo motor ile 5 eksende hareket edebilecek özelliktedir. Servo motorlar karıģıklık olamaması amacıyla aģağıdan yukarıya doğru 1 den baģlayarak numaralandırılmıģtır. DüĢük gerilimle yüksek tork üretme ve hassas çalıģabilme özelliğinden dolayı servo motorlar kullanılmıģtır. Aynı zamanda RS232 seri iletiģim devresi yardımıyla robot kolunun kablolu olarak kontrol edilmesi sağlanmıģtır. Projede MicroC programlama dili ile PIC16F877A mikroiģlemcisini programlayıp servo motorların kontrolü sağlanmıģtır. Ayrıca ICSP kullanılarak PIC16F877A mikroiģlemcisini devreden söküp takma zahmetine girilmeden programlanması sağlanmıģtır. Mekanik kısım ise AUTOCAD çizim programı ile çizilerek robot kolunun boyutları belirtilmiģtir. Bu projede servo motor kullanılarak herhangi bir sistemin konum ve hız kontrolünün yapılmasına dair bir prototip niteliğindedir. Birçok alanda uygulaması mevcut olan robot kolu teknolojisi çeģitli ihtiyaçlar doğrultusunda yönlendirilmiģtir. Ġnsan gücünün azaltılması ve çeģitli sebeplerden dolayı meydana gelen sakatlanmaların azaltılması amacıyla endüstri sektöründe yaygın olarak kullanılmaktadır. Seri üretimin yapıldığı sektörlerde ürünün mümkün olduğunca az hata ile üretilmesi istenmektedir. Ġnsan hatasını minimize etmek için en etkin çözümlerden biri robot teknolojisinin uygulamaya geçmesidir. Ayrıca insan elinin uzanamayacağı ve sağlık açısından zararlı bölgelerde (radyasyonlu, kimyevi veya biyolojik maddelerin bulunduğu ya da çok 2
sıcak ve soğuk ortamlarda, patlayıcı bulunan yerlerde) çalıģmaya imkan tanıyan robot kolu teknolojisi bu sektörde yaygın bir Ģekilde uygulanmaktadır. Bunun yanında tıbbi alanda da operasyonların insan eliyle değil de bilgisayar ile robot kolunun uzaktan kontrol edilmesi ile gerçekleģtirilmesi önem arz etmektedir. Çünkü operasyonlarda insan eli bazı durumlarda yetersiz kalmaktadır. Robot kolu ile operasyon yönteminin ana avantajları küçük kesiklerden (santimetre düzeyinde) gerçekleģtirilmesi ve böylece yara iyileģmesi kolaylığı, estetik kaygılara yanıt vermesi olarak söylenebilir. ĠĢ-Zaman ÇalıĢma Takvimi Tablo 1 de verilmiģtir. Tablo 1. ĠĢ-Zaman ÇalıĢma Takvimi ĠĢ / Zaman 3-16 Eki m Proje Konusunun Belirlenmesi Proje Hakkında Genel Bilgilerin Toplanması PIC MikroiĢlemcile ri ve Servo Motorların Ġncelenmesi Servo Motor Kontrol Devresinin Tasarlanması Yazılımın OluĢturulması Robot Kolun Montajının Yapılması Bitirme Tezinin Yazılması ve Teslimi X 31 Ekim- 13 Kasım X 14-30 Kası m X 1-30 Aralı k X X 1-30 Ocak X 1-28 ġubat X 1-31 Mar t X 1-30 Nisan X 1-24 Mayıs X 3
2.PROJEDE KULLANILAN TEMEL MALZEMELER 2.1. Servo Motorlar Servo motorlar konum ve hız kontrolü gereken sistemlerde kullanılan geri-beslemeli motorlardır. Servo motorlar düģük gerilimle yüksek tork üretme ve hassas çalıģabilme özelliğine sahiptir. Genellikle 3 kabloya sahiptir. Bunlar güç için kırmızı kablo, toprak için siyah ve kontrol (data, veri) için sarı renkli kablolardır. [1] Servo motorların AC servo motorlar ve DC servo motorlar olmak üzere iki çeģidi bulunmaktadır. Genellikle DC gerilim ile çalıģmakla beraber endüstriyel veya mobil uygulamalarda kullanılan AC gerilim ile çalıģan servolar da bulunmaktadır. AC servo motorlar fırçasız tipte motorlardır. DC servo motorlar ise fırçalı tip motorlardır. Bu projede kullanılan servo motorlardan bir tanesi ġekil 1 de gösterilmektedir. ġekil 1. Projede kullanılan servo motorlardan biri Projede kullanılan Hitec HS-311 Standard servo motorun özellikleri Ģunlardır: Sistem kontrolü: Darbe geniģlik kontrolü 1500 µs Darbe: Tepeden tepeye 3-5 V kare dalga 4
ÇalıĢma gerilimi: 4.8-6 V ÇalıĢma hızı ( 4.8 V ta ): Yüksüz 0.19 s/60 Tork ( 4.8 V ta ): 3 kg/cm Yön: Çok yönlü Motor tipi: Fırçalı Servo motorların kontrolü, veri ucundan verilen PWM (darbe geniģlik modülasyonu) sinyalin durumuna göre kontrol edilmektedir. Servo motora her bir 10-20 ms de bir 0,5-1,5 ms arasında bir PWM sinyal uygulandığında kontrol edilebilir. Uygulanacak olan PWM sinyalin lojik-1 de kalma süresi 0,5 ms ise motor mili en sola döner. PWM sinyalin lojik-1 de kalma süresi 0,5 ile 1 ms arasında olursa motor mili ortaya doğru konumlanmakta, sinyalin lojik-1 de kalma süresi 1,5 ms ye doğru artırıldığında ise motor mili sağa doğru konumlanmaktadır. Eğer 10-20 ms aralıklarla aynı sinyal verilirse konumunu korumaktadır. Servo motorun konumu gerekli darbeler uygulanarak belirlenebilir. Projede kullanılan servo motorlar yaklaģık olarak 5 V çalıģma geriliminde kullanılmıģlardır. 2.2. PIC16f877A Mikroişlemci PIC16F877A mikroiģlemcisi çok kullanıģlı ve uygulama alanı geniģ bir mikroiģlemcidir. Kullanım alanı geniģ ve kullanıcı sayısı da fazla olması dolayısı ile bol miktarda örnek uygulamaya da eriģmek mümkündür. Çok miktarda uygulaması olduğu için bu uygulamalar çalıģılarak bile bazı temel bilgilere eriģebilmek mümkündür. [2] PIC16F877A mikroiģlemcisi 40 adet pine sahiptir. Bu 40 pininden 33 tanesi giriģ/ çıkıģ pini olarak kullanılabilmektedir. PIC16F877A farklı sayıda pinler içeren 5 porta ayrılmıģtır. Bu özelliği kullanıcı açısından avantajlar sağlamaktadır. Ekonomik olarak da düģük maliyete sahiptir. Basit elemanlar kullanılarak gerekli programlama devresi elde edilebilir. Bunun yanında gerektirdiği reset, clock sinyali ve güç devreleri de oldukça basittir. Ayrıca tekrar tekrar silinip yeniden programlanabilme özelliğinden dolayı kullanıģlı bir mikroiģlemcidir. [3] 5
Projede kullanılan mikroiģlemcinin B portları LED ekran için kullanılan çıkıģ portlarıdır. C portlarından seri veri alıģ veriģi yapılmaktadır. D portları motorlar için kullanılan çıkıģlardır. 2.3. Servo Motor Kontrol Devresi Kullanılan servo motor sürücü devresi seri iletiģim prensibini kullanarak 8 adet servo sürebilir ve bu 8 adet servo için ayrı ayrı bağımsız servo kontrol sinyali sağlayabilir. Bu sinyallerle konum ve hız kontrolü yapılabilir. Proje için hazırlanan servo motor kontrol devresinin ISIS programında çizimi ve devrenin gerçeklenmiģ hali ġekil 2 ve ġekil 3 te gösterilmektedir. ġekil 2. Servo motor kontrol devresi ISIS programında çizimi 6
ġekil 3. Servo motor kontrol devresi Servo motor kontrol devresinin özellikleri; 8 adet servo portu 0,5 1,5 ms darbe geniģliği 0,5 µs çözünürlük 5 9 V uygulama gerilimi 0 5 V I/O gerilimi 1200 38400 bps iletiģim hızı Ortalama 5 ma akım tüketimi 7
2.4. Kontrol Devresinin Elemanları 2.4.1 Güç Servo motor kontrol devresini besleyecek kaynak tüm servolar aynı anda çalıģtığında yeterli akımı verebilmelidir. Tüm servolar aynı anda çalıģtırıldığında yaklaģık olarak 0.5 A lik akım çekmektedir, dolayısıyla kaynak bu akımı sağlayabilmelidir. Devrede bu ihtiyaç 5 V luk cep telefonu adaptörü ile sağlanmaktadır. PIC mikroiģlemcisi için gerekli olan güç, devrede kullanılan regülatörün 9 V luk pilden gelen gerilimi 5 V a düģürmesi ile sağlanmaktadır. 2.4.2. Açma Kapama Butonu Devrede kullanılan iki konumlu anahtar (toggle switch) ile devrenin tamamen açılıp kapanması sağlanmaktadır. Butona basıldığında A1-Q1 ve A2-Q2 uçları kısa devre olarak bu iģlem sağlanmaktadır. ġekil 4 te iki konumlu anahtarın iç yapısı görülmektedir. ġekil 4. Ġki konumlu anahtar ( toggle switch ) 2.4.3. Butonlar PIC mikroiģlemcisinin, istenilen bir anda basılarak mikroiģlemcinin kaydettiği konum bilgilerini sıfırlaması için reset butonu kullanılmıģtır. Diğer butonlar ilk sokete takılan servo motorun sağa veya sola dönmesi hareketini yaptırmaktadır. 8
2.4.4. LED ler Kontrol devresinde sol üstteki LED mikroiģlemciye enerji gelip gelmediğini göstermektedir. Diğer LED ler ise altındaki butonlara basıldığını yani servo 1 giriģine takılan motorun sağa veya sola döndüğü bilgisini vermektedir. 2.4.5. Seri İletişim Kontrol devresi üzerinde PIC16F877A mikroiģlemcisine bağlı seri veri giriģi sağlayan bir soket bulunmaktadır. Bilgisayardan doğrudan RS232 seri portundan gönderilen veriler ile robot kol kumanda edilebilir. Seri iletiģim devresi servo motor kontrol devresine takılıp RS232 kablosu kullanılarak uygun program yardımıyla bilgisayarın klavyesinden gönderilen sinyaller ile robot kolunun kontrolü sağlanmaktadır. Seri iletiģim devresi ve RS232 kablosu ġekil 5 te görülmektedir. ġekil 5. Seri iletiģim devresi ve RS232 kablosu 9
2.4.6. LCD Ekran Devre üzerindeki LCD ekran ile ilk sokete takılan servo motorların baģlangıç ve bitiģ konumlarının belirlenmesinde ve servo motorun o anki konumunun belirlenmesinde kullanılmaktadır. Devrede kullanılan LCD ekran ġekil 6 da görülmektedir. ġekil 6. Servo motor kontrol devresinde kullanılan LCD ekran 2.4.7. ICSP MikroiĢlemciyi kontrol devresinden çıkarıp takma iģlemi sırasında iģlemci çeģitli Ģekillerde zarar görmektedir. PIC mikroiģlemcisini kontrol devresi üzerinden sökmeden daha hızlı bir Ģekilde programlayabilmek için ICSP (in-circuit serial programming) kullanılmaktadır. Böylece hem daha hızlı ve pratik bir Ģekilde programlama yapılabilmekte hem de mikroiģlemcinin zarar görmesinin önüne geçilebilmektedir. 2.5. Mekanik Kısım Servo motorlarla birlikte monte edilen belli ölçülerde kesilmiģ fleksiglas parçalar birleģtirilerek projenin mekanik kısmını oluģturulmuģtur. Mekanik kısım ġekil 7 de görülmektedir. 10
ġekil 7. Robot kol mekanik kısmı 11
3. PROJENİN GENEL İŞLEM BASAMAKLARI 1) Projenin yapımı için gerekli olan alet ve parçaların belirlenmesi 2) Projede kullanılacak iģlemci ve yazılımının belirlenmesi 3) Servo motorlar hakkında bilgi toplanması 4) Seri iletiģim devresi ve RS232 nin araģtırılması 5) Servo motor kontrol devresinin tasarlanması 6) Kullanılacak iģlemci ve servoların en uygun Ģekilde programlanması ve denenmesi 7) Mekanik kısmın ölçülerinin belirlenip uygun Ģekilde kestirilmesi 8) Robot kolu montajının gerçekleģtirilmesi 9) Tüm sistemin amaca uygun Ģekilde çalıģıp çalıģmadığının test edilmesi 10) Herhangi bir uyuģmazlık veya aksaklık durumunda sistemin tekrar gözden geçirilmesi ve sorunun giderilmesi 3.1. Projede İzlenen Yöntem Öncelikle PIC16F877A mikroiģlemcisi hakkında araģtırmalar yapılmıģ ve çalıģma mantığı, yapılacak proje için uygunluğu hakkında bilgiler edinilmiģtir. Devamında bu mikroiģlemciyi programlayabilmek için gerekli diller araģtırılmıģ ve en uygun olanının microc dili olduğu görülmüģtür. MicroC programlama dilinin C++ ile olan benzer yönleri dikkate alındığında en yatkın olunan programlama dili microc dir. Daha sonra microc ile PIC programlanarak önce basit iģlemler yapılmıģtır. Bu sayede yazılım hakkında deneyimler artırılmıģ ve projeye uyarlanır hale getirilmiģtir. Servo motor kontrol devresinin ISIS programı ile çizimi yapılmıģ ve baskı devresi yapılarak devre oluģturulmuģtur. Devrede gerekli elemanlar yerlerine monte edilmiģ ve devrenin farklı kısımlarından ölçümler alınarak herhangi bir sorun olup olmadığı kontrol edilmiģtir. PIC giriģ ve çıkıģlarından osiloskop yarımıyla sinyaller gözlemlenerek doğruluk kontrol edilmiģtir. Projenin devamında seri iletiģim ve servo motorlarla uygulamalar yapılarak bu sistemlerin çalıģma mantığı hakkında deneyimler elde edilmiģtir. Servo motorlar ve seri iletiģim devresi, servo motor kontrol devresine bağlanarak programların ve cihazların birbirleri ile uyumluluğu ve kullanılan programda herhangi bir düzeltmeye gidilip gidilmeyeceği kontrol edilmiģtir. 12
Yapılan robot kolu üç farklı fonksiyonu gerçekleģtirebilmektedir: Ġlk olarak kontrol devresi üzerindeki butonlar yardımıyla birinci sokete takılan servo motorun sağa veya sola dönmesi kontrol edilebilmektedir. Bu sağa veya sola dönme hareketleri sırasında basılı bulunan buton üzerindeki LED ler yanmakta ve LCD ekran servo motorun konumu hakkında bilgi vermektedir. Ġkinci adımda seri iletiģim devresi kullanılarak bilgisayardan robot kolunun kontrolü sağlamaktadır. Seri iletiģim devresi olarak kullanılan RS232 devresi bilgisayarın USB çıkıģını seri iletiģim devresine çevirmektedir. Robot kolunun kontrolü bilgisayarın klavyesindeki a, z, s, x, d, c, f, v, g, b tuģları ile kontrol edilmektedir. Robot kolundaki servo motorların konumları klavyeden basılan tuģlara göre artıp azalmaktadır. Bu iģlemler RS232 seri portu yardımıyla kablolu olarak robot kolunun bilgisayardan kumanda edilebilmesini sağlamaktadır. Klavyeden basılan tuģlara göre servo motorların davranıģları: a tuģuna basılması 1 numaralı servo motoru sola döndürür. z tuģuna basılması 1 numaralı servo motoru sağa döndürür. s tuģuna basılması 2 ve 3 numaralı servo motorları yukarı hareket ettirir. x tuģuna basılması 2 ve 3 numaralı servo motorları aģağı hareket ettirir. d tuģuna basılması 4 numaralı servo motoru yukarı hareket ettirir. c tuģuna basılması 4 numaralı servo motoru aģağı hareket ettirir. f tuģuna basılması 5 numaralı servo motoru yukarı hareket ettirir. v tuģuna basılması 5 numaralı servo motoru aģağı hareket ettirir. g tuģuna basılması 6 numaralı servo motor döner ve parmak açılır. b tuģuna basılması 6 numaralı servo motor döner ve parmak kapanır. Son olarak robot kolunun bilgisayardan gönderilen veriler ile önceden tanımlanmıģ bazı konumlara gelmesi ve bazı iģler yapabilmesi sağlanmaktadır. Bu verilerin gönderilmesi de klavye aracılığı ile yapılmaktadır. Klavyeden basılan tuģlara göre robot kolunun davranıģları: n tuģuna basıldığında robot kol normal konumuna gelmektedir. d tuģuna basıldığında robot kol dik konuma gelmektedir. y tuģuna basıldığında robot kol yatık konuma gelmektedir. 13
a tuģuna basıldığında robot kolun önünde önceden tanımlanmıģ bir yerdeki küçük bir cismi ( örneğin küp Ģeker ) almaktadır. b tuģuna basıldığında robot kolun sağ tarafında önceden tanımlanmıģ bir yerdeki küçük bir kutuya (örneğin çay bardağı ) tuttuğu cismi bırakmaktadır. o tuģuna basıldığında ise robot kol a ve b tuģlarında yapılan iģlemleri beraber yapmaktadır. 3.2. Mekanik Kısmın Montajı Robot kolunun mekanik kısmı için gerekli parçaların temin edilmesi ve montajı projenin en zor aģamalarından biriydi. Kol için gerekli parçalar AUTOCAD programında çizildi ve fleksiglas malzemeden lazerle kestirilerek parçalar elde edildi. Robot kol parçalarının AUTOCAD programında çizimi ġekil 8 de görülmektedir. ġekil 8. Robot kol parçalarının AUTOCAD programı ile çizimi Gerekli parçalar elde edildikten sonra montaj aģamasına geçildi. Bu aģamada ilk olarak en altta, gövdenin dönme hareketini sağlayacak olan servo motor yuvarlak parçanın tam 14
ortasına gelecek Ģekilde monte edildi. Bu projede servo motorlar karıģıklık olmaması açısından aģağıdan yukarıya doğru 1 den baģlanarak numaralandırılmıģtır. Kol üzerinde aynı ebatlarda bir hareketli bir de sabit gövde parçası bulunmaktadır. Robot kolun gövdesine iki adet servo bağlanmıģtır. Bu iki servo birbirlerine paralel Ģekilde çalıģacaklardır. Bu nedenle baģlangıç ve bitiģ pozisyonları aynı olmalıdır. Bu servolar 2 ve 3 numara olarak numaralandırılmıģtır. Bu kısım robot kolun alt kol kısmını oluģturmaktadır. ġekil 9 da ilk 3 servo motorun montajı sonucu elde edilen kısım görülmektedir. ġekil 9. Ġlk 3 servo motorun monte edilmiģ hali Üst kol bağlantısı için kullanılan 4 ve 5 numaralı servolar aynı eksen üzerine monte edilmiģlerdir. Alt kol ve üst kol birbirleri ile 4 numaralı servo aracılığı ile birleģtirilmiģtir. 5 15
numaralı servo ise robot kolun el kısmını oluģturan parçaların yukarı ve aģağı hareketini sağlar. Son olarak 6 numaralı servo robot kolunun el kısmında birbirleri ile zıt yönlü çalıģan iki adet parmağı diģliler yardımıyla hareket ettirmek için kullanılmaktadır. 6 numaralı servo kolun en ucunda bulunduğundan devreye de en uzak servodur. Bu yüzden diğer servolara nazaran daha uzun bağlantı kablosuna ihtiyaç duyulmaktadır. ġekil 10 da robot kolun el kısmı görülmektedir. ġekil 10. Robot kolun el kısmı ve 6 numaralı servo motor 16
ġekil 11 de projenin tamamlanmıģ hali görülmektedir. ġekil 11. Projenin tamamlanmıģ hali 17
3.3. Program Kısmı Öncelikle servoların kontrol edilebilmesi için kütüphane olarak aģağıdaki program oluģturuldu ve kütüphane adı olarak servokontrol kullanıldı. char srv1=100,srv2=100,srv3=100,srv4=100; char srv5=100,srv6=100,srv7=100,srv8=100; #define servo1 PORTD.F0 #define servo2 PORTD.F1 #define servo3 PORTD.F7 #define servo4 PORTD.F6 #define servo5 PORTD.F5 #define servo6 PORTD.F4 #define servo7 PORTD.F3 #define servo8 PORTD.F2 void rc_servo_1(char x ){ char i,j,k; for (j=1;j<=x;j++){ for (i=1;i<=10;i++){ servo1 = 1; for(k=0;k<srv1;k++) delay_us(3); servo1 = 0; delay_ms(15); void rc_servo_2(char x ) { 18
char i,j,k; for (j=1;j<=x;j++) for (i=1;i<=10;i++){ servo1 = 1; for(k=0;k<srv1;k++) delay_us(3); servo1 = 0; servo2 = 1; for(k=0;k<srv2;k++) delay_us(3); servo2 = 0; delay_ms(15); void rc_servo_3(char x ) { char i,j,k; for (j=1;j<=x;j++) for (i=1;i<=10;i++){ servo1 = 1; for(k=0;k<srv1;k++) delay_us(3); servo1 = 0; servo2 = 1; for(k=0;k<srv2;k++) delay_us(3); servo2 = 0; servo3 = 1; for(k=0;k<srv3;k++) delay_us(3); servo3 = 0; delay_ms(14); 19
void rc_servo_6(char x ) { char i,j,k; for (j=1;j<=x;j++){ // for (i=1;i<=10;i++){ servo1 = 1; for(k=0;k<srv1;k++) delay_us(3); servo1 = 0; servo2 = 1; for(k=0;k<srv2;k++) delay_us(3); servo2 = 0; servo3 = 1; for(k=0;k<srv3;k++) delay_us(3); servo3 = 0; servo4 = 1; for(k=0;k<srv4;k++) delay_us(3); servo4 = 0; servo5 = 1; for(k=0;k<srv5;k++) delay_us(3); servo5 = 0; servo6 = 1; for(k=0;k<srv6;k++) delay_us(3); servo6 = 0; delay_ms(10); 20
AĢağıda devam eden program ile robot kolunun ilk hareketi yapılabilmektedir; yani ilk servo giriģine takılan servo motor butonlar aracılığıyla sağa ve sola döndürülebilmektedir. #include "servokontrol.c" char txt[4]; char srv = 100; void main(){ TRISD = 0X00; PORTD = 0X00; TRISE = 0X07; ADCON1 = 7; TRISB = 0X00; Lcd_Config(&PORTB,4,5,6,3,2,1,0); Lcd_Init(&PORTB); Lcd_Cmd(Lcd_CLEAR); Lcd_Cmd(LCD_CURSOR_OFF); while(1){ if ((PORTE.F0 == 0) && (srv1 > 35 )) srv = srv - 2; if ((PORTE.F1 == 0) && (srv1 < 245)) srv = srv + 2; ByteToStr(srv, txt); Lcd_Out(1, 1, txt); srv1 = srv; srv2 = srv; srv3 = srv; srv4 = srv; srv5 = srv; srv6 = srv; rc_servo_6(1); AĢağıda yazılan program ile robot kolunun klavyeden basılacak a, z, s, x, d, c, f, v, g, b tuģları ile hareketi sağlanabilmektedir. 21
#include "servokontrol.c" char txt[4]; char dd; const srv1_bas =35,srv1_nrm=120,srv1_bit =205, srv2_bas =90,srv2_nrm=180,srv2_bit =245 srv4_bas =50,srv4_nrm=135,srv4_bit =200 srv5_bas = 45,srv5_nrm=130,srv5_bit =215 srv6_ac =125,srv6_nrm=115,srv6_kapa=105; void main(){ TRISD = 0X00; PORTD = 0X00; TRISE = 0X07; ADCON1 = 7; TRISA.F0 = 1; TRISA.F1 = 1; srv1 srv2 srv4 srv5 srv6 = srv1_nrm; = srv2_nrm; = srv4_nrm; = srv5_nrm; = srv6_nrm; Usart_Init(19200); rc_servo_6(1); while(1){ if (Usart_Data_Ready()) { dd = Usart_Read(); if ((dd == 'a') && (srv1 > srv1_bas)) srv1 = srv1-1; if ((dd == 'z') && (srv1 < srv1_bit)) srv1 = srv1 + 1; 22
if ((dd == 's') && (srv2 < srv2_bit)) srv2 = srv2 + 1; if ((dd == 'x') && (srv2 > srv2_bas)) srv2 = srv2-1; if ((dd == 'd') && (srv4 > srv4_bas)) srv4 = srv4-1; if ((dd == 'c') && (srv4 < srv4_bit)) srv4 = srv4 + 1; if ((dd == 'f') && (srv5 < srv5_bit)) srv5 = srv5 + 1; if ((dd == 'v') && (srv5 > srv5_bas)) srv5 = srv5-1; if (dd == 'g') srv6 = srv6_ac; if (dd == 'b') srv6 = srv6_kapa; ByteToStr(dd, txt); Lcd_Out(1, 1, txt); srv3 = srv2; rc_servo_6(1); AĢağıda yazılan program ile klavyeden basılan tuģlara göre önceden belirlenmiģ bazı hareketleri yapabilmesi sağlanmaktadır. #include "servokontrol.c" char txt1[4],txt2[4],txt3[4],dd; const srv1_bas =35,srv1_nrm=120,srv1_bit =205, srv2_bas =90,srv2_nrm=180,srv2_bit =245, srv4_bas =50,srv4_nrm=135,srv4_bit =200, srv5_bas = 45,srv5_nrm=130,srv5_bit =215, srv6_ac =125,srv6_nrm=115,srv6_kapa=105; 23
void robot_kol(char x){ srv3 = srv2; ByteToStr(srv1, txt1); ByteToStr(srv2, txt2); ByteToStr(srv3, txt3); Lcd_Out(1, 1, txt1);lcd_out(1,4,txt1);lcd_out(1,8,txt2); ByteToStr(srv4, txt1); ByteToStr(srv5, txt2); ByteToStr(srv6, txt3); Lcd_Out(2, 1, txt1);lcd_out(1,4,txt1);lcd_out(1,8,txt2); rc_servo_6(x); void normal(){ srv1 = srv1_nrm ;robot_kol(10); srv2 = srv2_nrm ;robot_kol(10); srv4 = srv4_nrm ;robot_kol(10); srv5 = srv5_nrm ;robot_kol(10); srv6 = srv6_nrm ;robot_kol(10); void dik(){ srv1 = srv1_nrm ;robot_kol(10); srv2 = srv2_nrm ;robot_kol(10); srv4 = srv4_bas ;robot_kol(10); srv5 = srv5_nrm ;robot_kol(10); srv6 = srv6_nrm ;robot_kol(10); 24
void yatik(){ srv1 = srv1_nrm ;robot_kol(10); srv4 = srv4_bit ;robot_kol(10); srv5 = srv5_nrm ;robot_kol(10); srv2 = srv2_bit ;robot_kol(10); srv6 = srv6_nrm ;robot_kol(10); void al(){ srv6 = srv6_ac;robot_kol(10); srv1 = 120;robot_kol(10); srv4 = 170;robot_kol(10); srv5 = 130;robot_kol(10); srv2 = 140;robot_kol(20); srv2 = 130;robot_kol(10); srv6 = srv6_kapa;robot_kol(10); void birak(){ srv2 = 180;robot_kol(30); srv1 = 205;robot_kol(20); srv2 = 160;robot_kol(20); srv4 = 170;robot_kol(10); srv5 = 130;robot_kol(10); srv6 = srv6_ac;robot_kol(20); srv2 = 180;robot_kol(10); void main(){ 25
TRISD = 0X00; PORTD = 0X00; TRISE = 0X07; ADCON1 = 7; TRISA.F0 = 1; TRISA.F1 = 1; srv1 srv2 srv4 srv5 srv6 = srv1_nrm; = srv2_nrm; = srv4_nrm; = srv5_nrm; = srv6_nrm; Usart_Init(19200); rc_servo_6(1); while(1){ if (Usart_Data_Ready()) { dd = Usart_Read(); if (dd == 'n') normal(); if (dd == 'd') dik(); if (dd == 'y') yatik(); if (dd == 'a') al(); if (dd == 'b') birak(); if (dd == 'o'){ al(); birak(); 26
if (PORTE.F0 == 0){ al(); birak(); srv3 = srv2; rc_servo_6(1); 27
4. SONUÇLAR Projeye baģlarken amaç bir robot kolunun yapılması ve bunun kontrol edilebilmesiydi. Bu hedef doğrultusunda gerekli malzemeler araģtırıldı, bilgiler edinildi. Yapılan araģtırma ve öğrenilen bilgiler sayesinde proje zamanında ve baģarıyla sonuçlandırıldı. Robot kolunun yapımı süresince birçok bilgi pratiğe aktarıldı ve bu bilgilere yenileri eklendi. Yapılan prototip robot koluyla bir malzemeyi bir yerden alıp bir yere koyma veya daha önceden belirlenmiģ komutlarla bir eylemi kendi kendine gerçekleģtirebilme iģlemleri yapılabilir. Robot kolu, kontrol devresi üzerinde bulunan butonlar yardımıyla kontrol edilebilir. Aynı zamanda robot kolunun RS232 seri iletiģim devresi ile kablolu olarak uzaktan kontrolü yapılabilir. Robot kolunun geleceği düģünüldüğünde ileriki yıllarda robot kolunun daha da yaygınlaģacak bir teknoloji olduğu görülmektedir. Proje olarak yapılan bu robot kolu da gerekli maddi destek sağlandığında çok büyük ilerlemeler kaydedebilir. Örneğin daha ağır yükler için veya daha çok hassasiyet gerektiren ortamlarda kullanılabilir. Ayrıca fonksiyonları artırılarak çok daha faydalı hale getirilebilir. Üzerine yerleģtirilen kamerayla bilgisayar aracılığı ile kolun ön kısmı görülebilir ve daha rahat kontrol sağlanabilir. Aynı zamanda bir insanın çalıģmasına müsaade etmeyen ortamlarda robot kolundan yararlanılabilir. Kullanıcının isteği doğrultusunda çalıģma ortamına daha uygun olacak Ģekilde robot kolunun boyutları değiģtirilebilir. Uzay teknolojilerinde de robot kolu kullanımı mevcuttur. Robot kolunun hassasiyeti arttırılarak tıp sektöründe de geniģ bir uygulama alanı bulması mümkündür. Çünkü günümüzde artık birçok cerrahi müdahale robot kolları ile gerçekleģtirilmektedir. Böylece operasyonun baģarı oranı da artırılmaktadır. Bunun yanında insan kaynaklı hatalar da en aza indirilebilecektir. Robot kolu, proje tamamlandığında kolay bir proje gibi görülebilir ama yapımı sırasında harcanan emekler ve geçirilen saatler bu iģ için ne kadar çaba sarf edildiğinin göstergesidir. 28
5. KAYNAKLAR [1] MEGEP, Elektrik Elektronik Teknolojisi-Step ve Servo Motorlar, Ankara 2007 [2] Doğan Ġ., PIC Mikrokontrolör Öğreniyorum, Ġstanbul BiliĢim Yayınevi, 2005 [3] Akpolat Ç., PIC Programlama, Ġstanbul Pusula Yayıncılık, 2006 29
EKLER EK-1 STANDARTLAR VE KISITLAR FORMU 1. Projenizin tasarım boyutu nedir? Açıklayınız. YaklaĢık olarak 60*20*20 (yükseklik*uzunluk*geniģlik) cm boyutlarındadır. 2. Projenizde bir mühendislik problemini kendiniz formüle edip, çözdünüz mü? Herhangi bir problemi formüle edip çözmedik. 3. Önceki derslerde edindiğiniz hangi bilgi ve becerileri kullandınız? Elektrik ve elektronik laboratuarlarında öğrenmiģ olduğumuz ölçme tekniklerini uyguladık. ĠletiĢim derslerinde öğrendiğimiz bilgileri kullandık. Bunların yanında öğrenmiģ olduğumuz programlama mantığı sayesinde yeni karģılaģtığımız programlama dillerine daha kolay uyum sağlayabildik. 4. Kullandığınız veya dikkate aldığınız mühendislik standartları nelerdir? Projenin Auto-CAD ile çizimi yapıldı. Kullanılacak malzemelerin listesi oluģturulup teknolojik yönleri araģtırıldı. Malzemelerin proje için uygunluğu üzerinde çalıģmalar yapıldı. 5. Kullandığınız veya dikkate aldığınız gerçekçi kısıtlar nelerdir? a) Ekonomi: Proje tasarlanırken ekonomik Ģartlar göz önünde bulundurularak hareket edilmiģtir. Proje minimum maliyetle yapılmaya çalıģılmıģtır. b) Çevre sorunları: GerçekleĢtirilen projenin çevreye hiçbir zararı olmayacaktır. c) Sürdürülebilirlik: Robot kolu teknolojisi her geçen gün geliģmekte olup gelecekte insan gücünün yerini robotlar alacağı düģünüldüğü zaman bu teknolojinin büyük ilerlemeler kaydedebileceği görülmektedir. d) Üretilebilirlik: Yapılan robot kolu istenilen hedefler doğrultusunda değiģiklik yapılabilir ve geliģtirilebilir. Bu sebeplerde dolayı üretilebilirlik açısından gayet uygundur. e) Etik: Proje etik olarak hiçbir sorun içermemektedir. 30
f) Sağlık: Projemiz sağlık açısından hiçbir sorun teģkil etmeyip aksine tıp alanında da uygulanabildiği için sağlık için dolaylı yoldan katkı sağlamaktadır. g) Güvenlik: Proje güvenlik açısından hiçbir sorun içermemektedir. h) Sosyal ve politik sorunlar: Sosyal ve politik hiçbir sorun bulunmamaktadır. Not: Gerek görülmesi halinde bu sayfa istenilen maddeler için geniģletilebilir. Projenin Adı Projedeki Öğrencilerin Adları PIC PROGRAMLAMA ĠLE ROBOT KOLU KONTROLÜ ABDULLAH UYSAL ONUR YILMAZ HALĠT ATEġ Tarih ve İmzalar 31
ÖZGEÇMİŞ Abdullah UYSAL 28 Ağustos 1990 Ankara-Altındağ doğumluyum. Lise öğrenimimi Ankara Nermin Mehmet Çekiç Anadolu Lisesi nde okudum. Lisans eğitimim ise Karadeniz Teknik Üniversitesi Elektrik-Elektronik Mühendisliği Bölümünde devam etmektedir. Onur YILMAZ 28 Haziran 1989 Erzurum-Merkez doğumluyum. Lise öğrenimimi Erzurum da Mehmet Akif Ersoy Lisesi nde tamamladım. Lisans eğitimim ise Karadeniz Teknik Üniversitesi Elektrik-Elektronik Mühendisliği Bölümünde devam etmektedir. Halit ATEġ 6 ġubat 1991 Adana-Kozan doğumluyum. Lise öğrenimimi Adana ĠMKB Anadolu Öğretmen Lisesi nde tamamladım. Lisans eğitimim ise Karadeniz Teknik Üniversitesi Elektrik-Elektronik Mühendisliği Bölümünde devam etmektedir. 32