ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU İSMAİL KAHRAMAN-ŞEYMA ÖZTÜRK 200713151027 200513152008 Robot Kol Mekanizması: Şekildeki robot-insan benzetmesinden yola çıkarak, bel kısmı tekerlekli ve sağa-sola-ileri-geri hareket edebilen bir araba gibi tasarlanacaktır. Omuz kısmı 360° sağa-sola, dirsek kısmı araba üstündeki platforma sabitlendiği için sadece aşağı-yukarı hareket edebilecek şekilde kontrol edilecektir. Parmaklar, maşa gibi iş görecek şekilde tasarlanacaktır. Tasarım Aşaması: Step motorların ve kol için kullanılan malzemelerin ağırlıkları düşünülerek her bir parçanın motorunda uygun torku seçebilmek için tasarıma parmaklardan başlandı. Parmak kısmı için step motor eski yazıcıdan temin edildi. Tasarımda Karşılaşılan Sorunlar: 1) Sağlam olması düşünülerek kol parçalarını ahşap malzeme seçildi. Her motorun tork ihtiyacı her bir parça için artacağından, dolayısıyla maliyet artacağı için daha hafif ve sağlam olan PVC malzeme kullanmaya karar verildi. 2) Başlangıçta servo motor kullanılması uygun görüldü, fakat kontrol devresi karmaşıklığı ve motor maliyetinin yüksekliğinden dolayı step motor kullanıldı. 3) ULN2003 entegresi step motorun dönmesi için yeterli akımı karşılayamadığından dolayı motor transistörle (BC237-238) sürüldü. Step Motor Kontrol Devresi: Step motor kontrol devresi şekildeki gibi olup, motor; 4 adet NPN tip (BC238) transistör ile sürülmektedir. (Step motor; ULN2003 entegresi, röle, FET ile de sürülebilir). Mikrodenetleyici olarak PIC16F84A (Peripheral Interface Controller) kullanılmıştır. 4MHz’lik kristal ve 10nF’lık kapasitörler ile PIC’in çalışması için gereken osilatör sinyalini sağlandı. Gerekli çıkışlar RB0-RB1-RB2-RB3 portlarına gönderilmektedir. Port çıkışlarındaki 1K’lık dirençeler, gerekli port çıkışlarındaki lojik-1 yani +5 Volt’u transistor ün base ini tetikleyebilecek seviyeye indirmekte. Q2, Q4, Q6, Q8 transistörlerinin emitter leri topraklanmakta, Q1-Q2, Q3-Q4, Q5-Q6, Q7-Q8 collector-emitter ortak bağlantılarından motora çıkış alınmaktadır. İmpuls ile motorun bir sargısı endüklenir, diğer sargıya impuls geldiğinde bir önceki sargı endüklenir ve motor gelen impulsa göre ileri-geri çalışır. Devrede 6 uçlu step motor kullanıldı. Step motorun doğru bacak bağlantılarını bulabilmek için aşağıdaki yöntem izlenir: Uçlar arası direnç ölçümü yapılır. Şekildeki O1 ve O2 ortak uçlardır. Dolayısıyla A-B arasında ölçülen direnç A-O1 ya da B-O1 arasında ölçülen direncin 2 katıdır. Aynı şekilde C-D arasında ölçülen direnç C-O2 ya da D-O2 arasında ölçülen direncin 2 katıdır. Uçlar belirlendikten sonra Katalog bilgilerinden step motorun kaç Voltta çalıştığına bakılarak step motorun + beslemeleri gerilim kaynağına bağlanır, geri kalan uçlara sıra ile – verilerek tam dönüş yapılasıya kadar denenir ve uçların sırası belirlenmiş olur. Motor sargılarının sadece birinin uyartıldığı uyartım cinsine tek-faz uyartımı adı verilir. Rotor her bir uyartım sinyali için tam adımlık bir hareket yapmaktadır. Dönüş yönüne bağlı olarak sıra ile yapılır. Step Motor Kontrol Programı: Mikrodenetleyici ASM (Assembly) ile programlanmıştır. Program algoritması özetle şu şekildedir: Motor belirli bir süre ileri, belirli bir süre geri dönecek şekilde programlanmıştır. İlerleyen zamanlarda önce buton kontrolü ile ileri-geri çalıştırılması planlanmaktadır. /****************************************************** Uygulama Adı :Step Motor Kontrol Uygulaması Yazan : İsmail KAHRAMAN-Şeyma ÖZTÜRK *******************************************************/ list p=PIC16F84A #include <p16f84a.inc> __CONFIG _HS_OSC count equ 0x0c dly1 equ 0x0d dly2 equ 0x0e org 0 ;reset vector goto start ;go to beginning of program on reset org 5 ;start of code space start bsf STATUS,RP0 ;_select_register bank 1 movlw 0xf0 ;rb0-rb3 output (stepper), rb4-rb7 input (switch) movwf TRISB ;portb all output bsf OPTION_REG,NOT_RBPU ;disable pullups bcf STATUS,RP0 ;_select_register bank 0 movlw 0x00 ;start with everything off movwf PORTB loop call gofwd call gobwd goto loop gofwd movlw b’00000110’ movwf count loopf movlw 0x0a movwf PORTB call delay movlw 0x06 movwf PORTB call delay movlw 0x05 movwf PORTB call delay movlw 0x09 movwf PORTB call delay decfsz count,1 goto loopf return gobwd movlw b’00000110’ movwf count loop b movlw 0x09 movwf PORTB call delay movlw 0x05 movwf PORTB call delay movlw 0x06 movwf PORTB call delay movlw 0x0a movwf PORTB call delay decfsz count,1 goto loopb return delay swapf PORTB,0 andlw 0x0f movwf dly1 delay1 clrf dly2 delay2 nop nop nop nop nop nop decfsz dly2,1 goto delay2 decfsz dly1,1 goto delay1 return end Kurulan Devre: Kaynakça: 1) www.t-robot.info 2) www.robotiksistem.com 3) MEGEP- Robotik 4) Elektronik Hobi-ALFA Yayıncılık 5) Kendi Robotunu Kendin Yap-ALTAŞ Yayıncılık 6) www.elektronikhobi.com