Hareket Elemanlarının Elektromekanik Sistemleri

| Mayıs 17, 2023 Tarihinde güncellendi
Hareket Elemanlarının Elektromekanik Sistemleri

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.

dc_basit_motorelektriksel_kontrol

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

h-bridge_da_motor_kontrolu

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…

npn_pnp_tranzistor

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…

step_motor_sargi

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.

step_motor_vcc

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.

motor_calisma_prensibi

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.

adim_motor_kontrolleri

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,10_motor 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.

servo_surucu_devre

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…

adim_motor_girisleri

Assembly Kodu ve İncelenmesi:
İlk olarak PIC modelimizi ve değişkenlerimizi tanımlıyoruz. 0x10 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

Kaynak: http://www.iletisimplatformu.itu.edu.tr/documents/RTS1.pdf

Yayım tarihi: 2008/06/23 Etiketler: , , , , , , ,



4 Yorum “Hareket Elemanlarının Elektromekanik Sistemleri

  1. alperen GÖKalperen GÖK

    işte paylaşım diye ben buna derim elleriniz dertten uzak olsun!!!!!

    CEVAPLA
  2. MEHMET GÖKNARMEHMET GÖKNAR

    BİZLERLE PAYŞAŞTIĞINIZ BİLGİLENDİEMELERİNİZ HARİKA BEYNİNİZE SAĞLIK ÇOK TEŞEKKÜRLER ÇALIŞMALARINIZIN DEVAMINI BEKLİYORUZ.
    END.ELK.ELO.UZMAN ARAŞTIRMACI TEKNİKERİ MEHMET GÖKNAR…

    CEVAPLA
  3. mahmutmahmut

    yukarıdaki dc motor kontrol devresine ek olarak opto kuplör bağlayarak nasıl çalıştırabailiriz.Rica etsem acil cevap verebilirmisiniz.Şimdiden teşekkürler

    CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir