Robot Eklem Hareket Elemanlarının Elektromekanik Sistemleri
Kategori: Bilgiler Klavuzlar Teori 23/06/2008
Projenin PDF Dosyasına Buradan ulaşabilirsiniz Alternatif link
Hazırlayan: Emre KOYUNCU
Doğru Akım Motorları
Mantık olarak bobinler üzerinden geçen akımın oluşturduğu magnetik alan sayesinde oluşan kutuplaşma ile ileri ve geri yönlü olarak, yani zıt kutupların çekmesi ve de aynı kutupların birbirini itmesi prensibinin dairesel harekete dönüştürülmesi ile mekanik hareket üretilebilen en basit yapıdır. Diğer motorların tamamı bu mantık üzerine kurulmuştur.
Burada DA motorunun kutuplaşma şeklini görebilirsiniz. Bu şekli ile DA motorları Elektriksel gücün
Mekanik güce çevrimi ile oluşturulan moment kuvveti sayesinde stator denilen düzeneğin rotor
üzerinde manyetik olarak döndürüldüğü sistemlerdir.



Doğru Akım Motorlarının Elektriksel Kontrol Sistemleri

H Köprüsü Kontrol yöntemi DA motorlarında yön kontrolü için kullanılan sayısız yöntemden biridir. Diyotların ve Tranzistörlerin iletim yönleri prensibi ile gerilimin motor üzerinden hangi yönlerde akacağını, dolayısıyla motorun hangi yönde dönmesi gerektiğini kontrol eden devredir.
Öncelikle Tranzistörlerin yukarıdaki devrede ne yaptıklarını görelim…
Şekildeki gibi, Mikrodenetleyiciden gelecek sinyaller ile A ve B uçları kontrol uçları olacaktır. Sırası ile bu
uçlardan gelecek sinyal ÅŸekillerini inceleyelim…

Pozitif lojik mantığına göre, A ucuna Yüksek (Logic High), B ucuna Alçak (Logic Low) gerilim işareti
gönderdiğimizde, Q1 tranzistörü iletime geçecek ve Q3, Q4 bazlarına giden girişi toprağa(Düşük
potansiyele) çekecek ( Sink Akımı Yöntemi ). Bu durumda Q4 iletime geçecek… Q2 iletime geçemeyeceÄŸi için +9 voltluk gerilim Q5 ve Q6 bazlarına gidecek ancak sadece Q5 iletimde olacak… Bu durumda +9 Voltluk gerilim Q5 ve Q4 üzerinden akarak topraÄŸa ulaÅŸabilecek.
Akım motor üzerinden saÄŸdan sola doÄŸru akacak… A ucuna Alçak, B ucuna Yüksek gerilim iÅŸareti gönderdiÄŸimizde bu kez Q2 iletime geçerken, Q1 açık bir anahtar gibi davranacak ve bu kez tersine Sink Akımı ile Q5 ve Q6 bazları topraÄŸa çekilirken, sadece Q6 iletimde olacak… DiÄŸer yönden ise sadece Q3 iletimde olacak ve +9 Voltluk gerilim bu kez Q3 tarnzistöründen Q6 tranzistörüne doÄŸru topraÄŸa ulaÅŸacak. Bu durumda akım motor üzerinden ilkinin tersine soldan saÄŸa doÄŸru yönelmiÅŸ olacak… BilindiÄŸi gibi diyot ileri yönde yani Anotdan Katoduna akım akıtabilen, ancak ters yönde akım akıtmayan bir elektriksel elemandır.
Akım gerilimin yüksek olduğu noktadan, düşük olduğu yöne doğru akacaktır. Tıpkı bir taşın yüksekten
alçaÄŸa yuvarlanması gibi… DoÄŸru Akım Motorları Hız Kontrolü Yandaki ÅŸekilde bir DA Motor Darbe Modlu Çalışan hız kontrol devresi görülmektedir. Devrede ana gerilim transistörü tetiklenerek DA motoruna gerilim verilmek suretiyle motor hareketlendirilip, transistör kesime götürülerek DA motoru beslemesi kesilmektedir.
Bu sayede motor tetiklenme aralığına göre hız kazanmaktadır. !!! Tork beklenen yapılar için sakıncalı bir devredir… Tercih edilmesi gereken akıma dayalı gerilim bölme yada kısıtlama yapılarıdır.
Sonuç
• Kontrolü oldukça güç motorlardır. Kapalı Çevrimli Sistemlerde kullanılamazlar…
• Tork taşıma kapasiteleri çok düşüktür. Robot Sistemleri için özellikle Kol Tasarımlarında kullanılması hemen hemen imkansızdır…
• Açısal Konum Kontrolü yapılamaz…
Adım(Stepper) Motorlar ve Kontrol Yöntemleri
DA Motorlarına benzer ÅŸekilde sarım ÅŸekilleri vardır. Yandaki Åžekilde kutuplaÅŸma ÅŸeklini görebilirsiniz. Adım Motorlarda kutuplaÅŸma, adım adım yapılarak rotorun dönel hareketi saÄŸlanır. Bu kutuplaÅŸma kontrol edilebilir ÅŸekildedir…
Adım motorlarda çalışma yapısal prensip olarak, biri pozitif gerilimde (Vcc) diÄŸeri toprakta (Ground) olan çekirdek kutuplaÅŸmaları için yapısal farklılıklar olmakla birlikte, Bütün çekirdekleri yada birkaçını birleÅŸtiren, bir yada iki Pozitif Gerilim Ucu, Adım atmayı saÄŸlayacak genellikle üç, dört yada daha fazla toprak ucu bulunmaktadır…

Adım(Stepper) Motorları Çalışma Prensibi
Adım Motorlarda Çalışma şekli ise Pozitif Gerilim ucuna sürekli Gerilim uygulayarak, Toprak uçlarına ise sırasıyla toprağa kısa devre yaparak sağlanır. Bu şekilde sıralı adımsal bir hareket sağlanır.
Bu adım sırası bir tür kontrol devresi ile sağlanır.
Genellikle tercih edilen kontrol yöntemi, sırası ile motor toprak girişlerine Lojik 0 göndererek negatif gerilim oluşturmaktır.
Bunun yanında Sink Yöntemi ile Lojik bir sinyaller bir Tranzistör yardımıyla motor toprak
giriÅŸleri, toprak ile kısa devre yapılabilir…
Aşağıda iki VCC ucu, dört Toprak ucu olan bir Adım motorun çalışma şekli görülmektedir.

Adım motorları kontrol edebilmek için toprak uçlarına göndereceğimiz sinyalleri kontrol edebilmemiz gerekir. Bu yüzden toprak uçlarına hangi sıraya göre 1 yada 0 sinyallerini göndereceğimize, ve bunu hangi hızla yapacağımıza karar vermek, motorun hangi yönde döneceğine, tork taşıma kapasitesine ve hızına karar vermemiz demektir.

Adım motorlardaki en basit kontrol ÅŸekli yukarıda görülmektedir… Bu durumda, buradan 1 iÅŸareti aldığımız her giriÅŸ + Vcc ucunun çekirdek üzerinden topraÄŸa iletimini saÄŸlamakta ve bu ÅŸekilde gerilimle beslenen her çekirdek, motorun rotoru üzerine kuvvet uygulamaktadır.
Adım(Stepper) Motorları Kontrol Yöntemleri
Burada Adım Motor kontrollerinden bahsederken, mikrodenetleyiciden aldığımız sinyalleregöre motor sürüş yöntemlerinden bahsetmekteyiz. Daha önce de belirttiğimiz gibi Adım motorları sürmek için toprak uçlarına sırası ile toprak sinyali göndermeliyiz. Aşağıdaki gösterimlerde Lojik 1 giriş sinyalleri bunu ifade etmektedir.

Yukarıda gösterildiği gibi iki çeşit kontrol yönteminden ve bunların türevlerinden bahsetmek mümkündür.
Burada görülen Tam Adım (Full Step Mode) ile yüksek tork taşıma kapasiteleri elde edilir. Yarım Adım (Half Step Mode) sürüş yöntemi ile stator kuvvet uygulayan iki çekirdek ararsında duruÅŸ yapacak ancak bu durumda stator üzerindeki moment kuvveti yarıya düşecektir. Bu nedenle Yarım Adım Sürme yöntemi motorun tam bir dönüş için attğı adım sayısını artırarak daha hassas bir konum kontrolü elde etmemizi saÄŸlasa da, robot kolları gibi tork taşıma kapasitesinin yüksek olması istenen sistemlerde kullanıma uygun bir sürüş yöntemi deÄŸildir…
Bunun yanında iki ayrı statora gönderilen gerilim farkları farklı deÄŸerlere taşınarak, iki farklı çekirdeÄŸin motor rotoruna farklı kuvvetler uygulaması ile çok hassas konum kontrolleri yapılabilmektedir. Ancak bu durumda motorun tork taşıma kabiliyeti daha da düşecektir…
Sonuç
• Konum ve Moment Kontrol edilebilirlikleri yüksektir.
• Geniş çalışma bantlarında piyasada bulunabilirler.
• Tam adım( Full Step ) yöntemi ile çalışmak, Yarım Adım ( Half Step ) yöntemi ile çalışmaktan her yönden daha kontrol edilebilirdir.
• Isınma ile kararlılıkları değişebilir.
• Yüksek hızlarda adım atlamaları, gerilemeler ve tepki verme durumları oluşabilir.
Servo Motorları ve Çalışma Prensibi
Adım motorlarındaki yapısal frenleme, hareket çözünürlülükleri ve yüksek hızlardaki sorunlarından dolayı karşımıza Servo motorlar çıkmaktadır. Servo Motorlar kontrol edilebilirlik mantığına göre üretilmiÅŸlerdir. Servo motor asıl olarak bütün bir Servomekanizmanın bir elemanıdır… Bir Servomekanizma motoru, sürücü devreleri ve geri beslemeli kontrol elemanlarıyla bütün bir sistemdir.
Servo Motorlar yapısal olarak Adım Motorlarla, DA Motorları yapısal özelliklerini içerirler. Üç ana dış bobin yapısı Adım motorun adımlama yöntemi ve döndürme yöntemiyle DA motorunun işlevsel özelliğini çağrıştırmaktadır. Ancak sargıları çok daha geliştirilmiş ve hassas konumlandırılmıştır.
Servo Mekanzima Nedir ?
Servo Mekanizma Aşağıdaki gibi kapalı çevrimli geri beslemeye sahip bir sistemdir. Bu sistem İşlemci yada denetleyiciye komut gönderen bir arayüz, bir işlemci yada denetleyici, işlemciden gelen sinyalleri değerlendiren ve ileten bir arabirim, sinyalleri alan bir servo motor grubu ve servo motorun konum, hız yada hata bilgisini tekrar denetleyiciye gönderen, sistem çevrimi kapatan bir geri besleme elemanlarından oluşur.
Servo Motorlar ve Kontrolü
Servo motorlar piyasada bulunan sürücü birimleriyle kolay kontrol edilebilir gibi gözükseler de aslında karmaşık bir kontrol prensibi ile çalışırlar.
Bir Servo Motor biri besleme ( +VCC ) , diğeri toprak ( Ground ), diğeri de Bilgi girişi ( Data In, SGN ) olmak üzere üç adet giriş ( Input ) birimi içerir. Bu besleme ve toprak girişleri kaynağa bağlanırken, Bilgi girişi bir çeşit Zamanlayıcı Dalga Üretici birime bağlanır. Bu şekli ile Kare Dalga üreten dalga üreteci, Motora belirli zaman aralıklarında Darbe ( PULSE ) üretirler. Bu darbelerin sıklığına göre Motor hızlı çalışırken, geniş periyotlu darbelerde yavaş çalışırlar. Bunun yanında gerilimsel olarak, Darbeler motorun çalıma aralığında kalmak şartıyla ne kadar güçlü olurlarsa, motorun tork taşıma kapasitesi de o kadar artacaktır. Motorun darbe üretici birimi Nano Saniye ( saniyenin milyarda biri,
saniye) mertebelerinde çalışabilirler. Bu da çok hassas bir konum ve hız kontrolü demektir.
Örnek olarak aşağıdaki devrede Kare Dalga Üreteci olarak yaygın kullanılan NE 555 Tümdevresi kullanılmıştır. Burada P1 ile gösterilen Ayarlı Direnç ( Potansiyometre ) üretilen darbelerin sık yada yüksek aralıklı olmasını sağlamaktadır. Çok hassas kontrol verimi elde edilebilen bir devre değildir.

Diğer bir kontrol şekli, üretilecek darbelerin bir Mikrodenetleyici tarafından üretilmesidir. Bu şekilde yüksek çözünürlüklü hareket ve konumlandırma elde edebilmek mümkündür.
Örnek olarak bu devrede Micro Chip ailesinden Harvard mimarisine sahip ve piyasada çok rahat bulunabilen namı değer PIC16F84 Mikrodenetleyicisi kullanılmıştır. Burada da işlemlerin zamanlaması, Saniyede yapılabilen işlem saysı (PPS, CPS ; Process-Cycle Per Second ) bir tür Kristalli birim ile sağlanır. Örnek olarak PIC 16F84, 0-20MHz frekans aralıklarında çalışabilir. Bu şekli ile dahili işlem frekansı olarak 0-5MHz bir aralıkta işlem yapabilir. Bu frekans işlem yapma zamanını değiştireceğinden, servo motor sürerken verilen darbeler arası zamanı da değiştirecektir.
Bu örnekte ise Motorola işlemcilerinin kullanıldığı, güçlü denetime sahip karmaşık yapıda bir kontrol devresi görülmektedir.
Sonuç
• Hareket çözünürlülüğü oldukça yüksek
• Hız ve Konum kontrol verimi çok iyi
• Alanında Mevcut Teknolojinin en üst seviyesinde
• Piyasada çok geniş çalışma bantlarında bulunması çok kolay değil
• Maliyeti diğer Konumlu Motorlara göre fazla
• Kontrol devreleri çok karmaşık ancak piyasada bulunabilirliği fazla ve fiyatları çok yüksek değerlerde değil
• Robot Kolları için en ideal Elektromekanik Sistem
• Yüksek Devirli kullanımlar için Ball-Bearing’li Servo Motorlar kullanılmalı
Uygulama Örneği Mikrodenetleyici ile Adım Motor Konum Kontrolü
Amaç:
Amacımız, iki ayrı buton ile Mikrodenetleyiciye sinyal göndermek ve Adım Motorun Sağa ve Sola dönüşünü kontrol edebilmek.
Bunun için sırası ile ilk butona bastığımızda, çıkışlardan deÄŸersel olarak 0 0 1 1 deÄŸerinin okunmasını ve bu deÄŸerin sıra ile sola kaydırılarak adım saÄŸlanmasını istiyoruz. İkinci butona bastığımızda bu deÄŸerin bu kez saÄŸa kaydırılarak yapılmasını istiyoruz…


Assembly Kodu ve İncelenmesi:
İlk olarak PIC modelimizi ve deÄŸiÅŸkenlerimizi tanımlıyoruz. 0×10 bellek gözünden baÅŸlayarak pos,dc1 ve dc2 deÄŸiÅŸkenlerini tanımlıyoruz.
LIST p=16F84 #include "P16F84.INC" CBLOCK 0x10 ; DeÄŸiÅŸkenleri yarat pos dc1 dc2 ENDC
Daha sonra, portları ayarlamak için Bank 1 e geçiyoruz. PORTB nin 0-3 bitlerini çıkış yapıyoruz. Bunun için 0xF0=’00001111′ deÄŸerini TRISB yazmaçına gönderiyoruz. ‘1′ e denk gelen pinler çıkış olacaktır. Aynı ÅŸekilde, PORTA nın tüm pinleri giriÅŸ yapılıyor.
Åžimdi tekrar Bank 0 a geçiyoruz. PORTB yi temizliyoruz ve PORTA nın tüm uçlarını giriÅŸ için yüksek yapıyoruz. Ardından ‘pos’ deÄŸiÅŸkenine ‘3′ deÄŸerini yani ‘00000011′ deÄŸerini yüklüyoruz. Daha sonra bu deÄŸiÅŸkeni sola yada saÄŸa öteleyerek, PORTB ye göndereceÄŸiz.
Dikkat ederseniz PORTB ye sıra ile ‘1′ deÄŸeri gönderecektik. Fakat ‘pos’ deÄŸiÅŸkeni içerisinde ki iki tane bite yanyana ‘1′ gönderdik. Bunun sebebi, öteleme iÅŸlemini gerçekleÅŸtirirken, bir pine uygulanan ‘1′ süresini uzatmak. EÄŸer sadece bir tane ‘1′ deÄŸerini kaydırarak sinyal göndermeye çalışırsak, ‘1′ uygulama süresi çok kısa olacağından, motor hareketi saÄŸlıklı olmayacaktır.
start bsf STATUS,RP0 ; Bank 1 Seç movlw 0xF0 ; PORTB nin 0-3 bitlerini çıkış yap movwf TRISB movlw 0x00 ; PORTA nın tüm uçlarını giriş yap movwf TRISA bcf STATUS,RP0 ; Bank 0 Seç clrf PORTB movlw 0xFF movwf PORTA movlw 3 ; W ye '0011' değerini yükle. movwf pos ; W deki değeri pos a yükle
Sıra geldi programın ana döngüsüne. Burada sürekli PORTA nın birinci ve sıfırıncı bitlerini test ediyoruz.
EÄŸer butonlardan bir tanesine basılırsa, PORTA nın, o butona baÄŸlı olan biti ‘0′ olacaktır. Biz de, bu ‘0′ olma durumunu BTFSS komudu ile test ediyoruz. Bu komut belirtilen bit eÄŸer ‘1′ ise bir alt satırı atlayacaktır. PORTA nın tüm uçları giriÅŸ olduÄŸu için bu pinler, butona basılmadığı sürece hep ‘1′ dir. EÄŸer butona basılırsa, basılan bit ‘0′ olacak ve bir alt satır uygulanacaktır. Bu alt satırlarda ise, döndürme fonksiyonlarını çağırıyoruz. Dolayısı ile hangi butona basılırsa o yöndeki döndürme fonksiyonu çağırılacaktır.
loop btfss PORTA,0 ; Saat yönü butonunu test et call stepcw ; Eğer basılı ise STEPCW fonksiyonunu çağır. btfss PORTA,1 ; Ters-Saat yönü butonunu test et call stepccw ; Eğer basılı ise STEPCCW fonksiyonunu çağır. goto loop
Şimdi sırada motoru döndürme fonksiyonları var.
İlk olarak, bir adım saat yönünde çevirme fonksiyonunu inceliyoruz. Kaydırma iÅŸlemlerini ‘pos’ deÄŸiÅŸkeni üzerinde gerçekleÅŸtireceÄŸiz. Program ilk baÅŸladığında, pos deÄŸeri “0011″ idi. Bunu sıra ile sola ötelediÄŸimizi düşünelim. DeÄŸerler sıra ile, “0110″, “1100″ olacaktır. Birdaha sola ötelendiÄŸinde ise, “11000″ olacaktır. Biz ilk 4 biti (0-3) kullandığımız için baÅŸtan 5. bitin 1 olması bizi pek ilgilendirmiyor. Bu durumda sıfırıncı bitin tekrar ‘1′ olması gerekiyor.
Yani “1100″ dan sonra, “1001″ olmalı. Bunu STATUS yazmaçının CARRY bitini kullanarak halledeceÄŸiz. Sola ötelemelerde, RLF komutu en sondaki bit, yani 7. bit kaybolmasın diye bu deÄŸer otomatik olarak STATUS yazmacının CARRY bitine yazılır. Bu deÄŸeri sonraki ötelemede saÄŸdan tekrar girecektir. Biz ilk 4 (0- 3) biti kullandığımız için, hiçbir zaman 7. (baÅŸtan sekizinci) bit üzerinde bir veri olmayacaktır. Bu nedenle bunu kendimiz CARRY bitine yazıyoruz. Åžimdi durumu adım adım inceleyelim.
Kullandığımız ‘pos’ deÄŸiÅŸkeninin içeriÄŸi “1100″ olsun. Bu durumda BTFSC ile bu durumu test ediyoruz. EÄŸer 3. bitimiz ‘1′ ise, sonraki satırda bu ‘1′ deÄŸerini CARRY bitine yazıyoruz. Sonra öteleme iÅŸlemi yapılıyor. CARRY bitinin deÄŸeri ‘1′ olduÄŸu için, öteleme yaparken bu deÄŸer en saÄŸdaki bite ekleniyor. Yani son durum “1001″ oluyor. Adından da anlaşılacağı gibi CARRY biti öteleme sırasında, en sondaki biti, en baÅŸa taşıyarak kaybolmasını önlüyor. Dolayısı ile 3. bite gelen ‘1′ deÄŸeri, ötelemeden sonra saÄŸdan tekrar giriyor. RLF komudu W pos içeriÄŸini bir sola öteleyerek son durumu W saklayıcısına yazıyor.
Daha sonra bu deÄŸeri önce AND liyoruz. Bunun sebebi sola kaymış gereksiz bitlerden kurtulmak. İlk 4 bit bizi ilgilendirdiÄŸi için bu iÅŸlemden sonra, W nin içeriÄŸindeki ilk 4 bit içinde olan ‘1′ deÄŸerleri kalacaktır. Daha sonra bu veriyi PORTB ye gönderiyoruz. Sonra bir miktar gecikme saÄŸlıyoruz. PORTB yi temizleyip tekrar ana döngüye dönüyoruz. Bir sonraki durumda ise sıra ‘1001′ deÄŸerine geliyor. Burada da 3. bitin deÄŸeri yine ‘1′ olduÄŸu için bu deÄŸer önce CARRY bitine aktarılıyor. Dolayısı ile öteleme iÅŸleminden sonra, bu bit saÄŸdan tekrar giriyor.
;Saat yönünde döndürme
stepcw
bcf STATUS,C ;CARRY bitini temizle
btfsc pos,3 ; Eğer 3. bit 1 ise sonraki satırı uygula ('1100'
ve '1001' durumu)
bsf STATUS,C ; CARRY bitini 1 yap
rlf pos,W ; pos içeriğini sola ötele
andlw 0x0F ; İlk 4 bit bizi ilgilendiriyor.(0-3)
movwf pos
movwf PORTB ; pos un son halini PORTB ye gönder
call delay ; Gecikme saÄŸla
clrf PORTB ; PORTB yi temizle
return
Sırada sağa öteleme fonksiyonu var.
Burada yaptığımız iÅŸlem diÄŸerinden biraz farklı. ‘pos’ deÄŸeri saÄŸa öteledikçe, içeriÄŸi ‘1100′ ise bu deÄŸer, önce ‘0110′, daha sonra da ‘0011′ olacaktır. EÄŸer sıfırıncı bit ‘1′ ise yani ‘pos’ deÄŸeri üzerinde, ‘0011′ yada ‘1001′ deÄŸerleri var ise en saÄŸdaki biti, 4. bite yazacağız. Dolayısı ile bir sonraki ötelemede, 4. bit 3. bite geçeceÄŸinden, en saÄŸdaki bit kaybolmamış olacak. ÖrneÄŸin ‘1001′ deÄŸerini saÄŸa öteleyeceÄŸimiz zaman, sıfırıncı bit ‘1′ olduÄŸu için bu deÄŸer 4. bite yazılıyor.
‘pos’ deÄŸiÅŸkeninin son durumu ‘11001′ oluyor. RRF komudu ile içerik bir saÄŸa ötelendiÄŸinde, ‘1100′ deÄŸeri elde ediliyor. En saÄŸdaki bit ise CARRY bitine gidiyor ve bir sonraki ötelemede, en soldaki bitten tekrar giriyor (7.bit). Zaten bizi 3. bitten sonrası ilgilendirmiyor. Yani burada CARY bitini kullanmıyoruz.
;Saat yönü tersine döndürme
stepccw
bcf STATUS,C ; CARRY bitini temizle
btfsc pos,0 ; pos un 0. biti 1 ise alt satırı uygula ('0011'
ve '1001' durumu)
bsf pos,4 ; pos un 4. bitini 1 yap ('10011' ve '11001' durumu)
rrf pos,W ; pos içeriğini sağa ötele
andlw 0x0F ; İlk 4 bit bizi ilgilendiriyor.(0-3)
movwf pos
movwf PORTB ; PORTB yi temizle
call delay ; Gecikme saÄŸla
clrf PORTB ; PORTB yi temizle
return
; Gecikme rutini
delay
movlw 5 ; Bu değeri arttırdıkça motor yavaşlayacaktır
movwf dc1
dl1 clrf dc2
dl2 nop
nop
decfsz dc2,F
goto dl2
decfsz dc1,F
goto dl1
return
END
Yazıyı yazdır | Arkadaşına Gönder | Yazıyı Paylaş | Geri izleme URI | Yorum takibi RSS


CSS
Haziran 30th, 2008 4:38 pm
işte paylaşım diye ben buna derim elleriniz dertten uzak olsun!!!!!