STEP motor nedir, Nasıl çalışır ve Projelerde nasıl kullanılır. KÜTÜPHANESİZ.

 

STEP motor nedir, nasıl çalışır ve Kütüphanesiz olarak projelerde nasıl kullanılır.

Başlık biraz uzun oldu. Step motorların endüstri de nasıl kullanılması gerektiğini biliyorum. Fakat internette araştırdığımda bir sürücü entegre ve motor kullanan o kadar çok proje var ki, bunları kopyaladığınızda sadece motoru çalıştırabilirsiniz.

Amaç motoru döndürmek ise zaten çok bilgi var. Fakat amaç sadece bu olmamalı. Yoksa projelerinizde kullandığınızda, birçok sorunla baş başa kalırsınız.

STEP MOTORLARDA,  ilk güç geldiğinde, motorun yerini ne devreniz bilir, ne de sensörünüz bilir. Bundan dolayı ilk anda motor bir yöne doğru gönderilir ve HOME pozisyon denilen anahtara kadar gider. Anahtara bastığında devreniz motorun sıfır noktasında olduğunu anlar ve geri döndürerek adımları saymaya başlar. Bu şekilde artık devreniz nerede olduğunu bilir.( Fakat pratikte mikroişlemci portundan tasarruf etmek için mi bilmiyorum. Bir çok yerde HOME anahtarı göremiyorum. Limit anahtarlarından birini home anahtarı olarak kullanan mekanizmalar gördüm.
Gerçekte ise Limit anahtarları ayrı ve HOME anahtarı ayrı yapılır. Fakat mekanizmaları yapanlar basitleştirmişler. Home anahtarı hem sayma adımını sıfırlar hem de enkoderli olan sistemlerde enkoderin sıfır noktasını almasını sağlar. )
Ayrıca Step motorlar geri gelirken ya da ileri giderken, mekanik ya da elektronik bir sorundan dolayı nerede olduğunu bilemez ve çalışma sınırını aşabilir. Bu durumda çarpıp motora ya da cihaza zarar verebilir. Bundan dolayı eksen başına ve sonuna limit anahtarları konulur.

Bütün bunları yaptık fakat hala bitmedi.
Motor ya da mekanik aksam, zaman içerisinde sıkışmış olabilir. Bu da yüksek akım çekerek sürücü devrenin veya motorun bozulmasına sebep olabilir. Bundan dolayı bir de akım kontrol etmeniz gerekir.
Bu iki yönlü olabilir.
Birincisi fazla akım çekiyor olması durumu,( sıkışmış olabilir) Diğeri ise Hiç akım çekmiyor olması. Motor kablosu, hareketten dolayı kopmuş olabilir. Her komutta çekmesi gereken akımı çekemez bundan dolayı sürücü devre gittiğini sanır, ama motor gidemez. Bu şekilde bir arıza olursa diğer eksenler yerinde olduğunu sanarak işleme devam eder. Bu da aynı yere Z eksenine koyduğunuz plastiğin ya da yapışkanın verilmesi demektir malzeme ziyan olacaktır.
Akım kontrol dışında ne yapılabilir. Motor miline bir enkoder bağlanarak git komutu verildikten sonra enkoder kontrolüne başlanır ve gitmesi gereken yere gittiği takip edilir. Bu şekilde de önlem alınabilir. Bu bir süreçtir. Gitmesi gereken yere giderken sıkıştıysa fazla akım çekmeye başladıysa bir Timeout denilen geri bildirim süresi sonrası motor durdurulur. HATA bildirilir. Motorun sıkışması veya kablo kopması durumu kontrol edilmiş olur.

Bunlar diğer motor sistemlerinde de kontrol edilmesi gereken önemli detaylardır. Fakat internette yaptığım araştırmalarda bu konudaki bilgiler çok kısıtlı. Herkes sadece motorun nasıl çalışacağına odaklanmış.
Diğer motor sistemleri (Servo motorlar gibi) zaten enkoder denilen geri bildirim sensörlerine bakarak, motorun nerede olduğunu takip ederler. Doğru yerde değilse bunu algılayıp sistemi durdururlar.
Fakat step motorları, adım sayarak bunu yaptığından, anlık geri bildirim alamayıp harekete devam eder. Bundan dolayı biz programda kontrol etmeliyiz.
Bunun yanı sıra step motorlara da isterseniz enkoder koyabilirsiniz. Fakat Step motorun mantığına ve basitliğine aykırı görünüyor. Step motorlar adım sayacak şekilde programlanabildiğinden basit bir mekanik sistem yeterli oluyor. Bu da bizim için avantaj, fakat daha profesyonel sistemlerde ya da 3D makinelerde daha hassas kontrol gerekebiliyor.
Mesela 3D makinesi yaptınız. Sadece adım sayıyorsunuz. Enkoder kullanmadınız. Neler olabilir.
Öncelikle 3D makinesi ile verdiğiniz plastik normal çalışırken nesne yükselir. Sonrasında Z ekseni kablo koptu ve aşağıda kaldı diyelim. Bu kez gezen ve plastik gönderen kafa devamlı oluşturduğunuz nesneye çarpacak ve bunu ne siz ne de makine fark edebilecek.
Ya da 3D kuralını genel olarak söylersek, BİRBİRİNE DİK OLAN HAREKETLİ ÇALIŞMA PARÇALARI MUTLAKA KONTROL EDİLMELİDİR. Yani X ve Y normal çalışsa bile Z ekseni bir sebepten aşağı düşmüşse Z ekseninin ucundaki bölüm kırılabilir demektir.

Step motorun en büyük avantajı TORK kuvveti aşılmadığında, frenleme yapmanıza gerek kalmadan durabilmesidir. Bu diğer motorlarda ayrı bir devre ile frenleme kontrolü yapmak demektir.
Tabii ki bunun yanı sıra step motorlar diğer motorlara göre daha yavaş çalışacaktır. Ne kadar hız istediğinize karar vermeniz gerekir. Yüksek hızlara çıkılmaya çalışıldığında TORK KUVVETİ DE AZALACAĞINDAN durmakta sorun oluşacaktır. Bununla birlikte maksimum devir sayısıyla kalkmaya çalıştığınızda step motorlar üzerindeki yükle birlikte kalkış yapabilmesi için yüksek akım çekmek zorunda kalabilirler. Bundan dolayı kalkış yüksek TORK ile olsun diye, yavaş kalkış ve sonrasında ise daha hızlı olarak devam ettirilmesi daha uygun olacaktır.

Normalde sürücü devreler kullanıyorsanız, zaten sürücüler akım kontrolü, gerilim kontrolü yapacaklarından bunu otomatik ayarlayacaklardır. Fakat kendi devreleriniz ile bunu yapacaksanız, sizin de yukarıdakiler dahil bazı şeyleri kontrol etmeniz gerekir. (ULN2003 gibi entegre veya mosfetli H köprü devreleri gibi. )

Düşük seviyeli, amatörce kullandığımız, Arduino ile kontrol ettiğiniz step motorlar 100ma akım çektikleri için bu sorun olmayabilir. Fakat NEMA17 gibi motorlar 1A üzerinde bir akım çekiyor. Burada Tork ve hız arasındaki bağı kurmanız yerinde olacaktır.
Ayrıca Unipolar ve bipolar motorların TORK karşılaştırmasını da bu grafikten görebilirsiniz. Grafiğe göre Bipolar motorların TORK değeri Unipolar motorlara göre daha fazladır. Fakat bu tork kullanıldığında Hız kısmında hemen tork’un düştüğünü görebilirsiniz. Unipolar motorlarda ise daha düşük Tork olmasına rağmen bu tork hemen düşmez ve tork değerini daha uzun süre korur. ( Yavaş olduğunda tork artar, Hızlandıkça Tork düşer. )

Bu yazımda STEP MOTOR programlarını KÜTÜPHANESİZ olarak, proteus üzerinde birçok kontrol devresiyle örneklemeye çalıştım. Bu devreler sadece proteus üzerinde çalıştığından akım kontrol düşünülmedi. Fakat sistemi algıladığınızda kendi devrelerinizi ve akım kontrollerinizi yapabilirsiniz.

Çeşitli kontrol devrelerin Proteus üzerinde anlatımlarını videoda bulabilirsiniz.

Şimdi step motorların tiplerine bakalım. Hatta bunların seçimini nasıl yapacağımıza ve bağlantılarına dair bilgilere bakalım.

Step motorlar UNIPOLAR ve BIPOLAR diye 2 ye ayrılır. Bunlar sırasıyla tek kutuplu ve iki kutuplu olarak ayrılır.

5, 6, 8 bacaklı motorlar bulunmaktadır. 5 bacaklı motor normalde, 6 bacaklı motor gibidir. Fakat 2 ortak bacak içeriden birleştirilmiştir.

Tabii ki bu şekilde yetersiz bir seçim olacak.
Bir de bunları nasıl sürebiliriz diye düşünüyoruz.
Burada seçeneklerimiz neler diye baktığımızda BIPOLAR sürücüler ve UNIPOLAR sürücüler ortaya çıkar. Tabii ki bunları seçerken de motorumuzun çekeceği akım ve gerilim durumuna göre seçmemiz gerekir.
Bazıları 25V ta kadar çalışırken bazıları 48 volta kadar çalışır.
Bunun yanı sıra ULN2003, 2004 gibi entegrelerle yapılan, step motorları sürme devrelerinden faydalanabiliriz. Ya da kendimiz H-bridge denilen H köprüsü devrelerimizi yapabiliriz.

Gördüğünüz gibi burada fazla çeşitlilik de var. Fakat şunu da unutmamalıyız. Motorlar toplam gerilime göre satılmazlar. Her bobine verilecek gerilim ve akımı gösterirler. Yani 2 bobin devrede ise 2 katı akım çekilecek diye düşünülebilir. Bunu da dikkate alırsak hatta sıkışma durumunda daha fazla akım çekeceğini düşünürsek gerilim ve akıma uygun bir güç kaynağı kullanmamız gerekir.
Bunların hepsini seçtik. Fakat daha bitmedi.
Motoru kontrol ederken ne tip bir adımlama kullanılacak.

Burada ise seçeneklerimiz
1-) Wave mode:  En küçük tork değerine sahiptir. Basit bir yapısı vardır.
2-) Full step ( Tam adım ) : Burada her adımda kullandığınız motorun açısı kadar döner.
3-) Half step (Yarım adım ) : Bu tip çalışmada motorun tam adım açısının yarısı kadar hareket eder.
4-) Micro step (Mikro adım ) : Yukarıdaki seçenekler tüm sürücüler ve devrelerle kolaylıkla yapılsa bile bu seçenek sadece uygun sürücülerle gerçekleştirilir. Bu şekilde 0,07 dereceye kadar motor hareket ettirilebilir. Bunu yapmak için bobinlere akım verilirken komşu bobinlere de tamamlayıcı kadar akım verilir. Yani bir bobini %70 akım ile sürüyorsanız, komşu bobine de %30 akım verilir bu şekilde çalışma ile daha küçük adımlar atılır ve titreşimsiz bir çalışma sağlanır.

WAVE MODE.

 

FULL STEP MODE

 

HALF STEP MODE

 

MICROSTEP MODE 

 

Bu resimler motor motor açısı 90 derece olan step motorun, adım şekillerini gösterir.

Piyasadaki motorlar. 0.9 dereceden başlar ve katları şeklinde gider. Sonuçta 360 dereceye eşit olacak şekilde bölünmüştür. Yani 400 adım 1 tur eder. Bu verilen açı değerleri TAM adım modu içindir. (HALF step) yarım adım çalışmada bunun da yarısı kadar değere sahip olacaktır.(Fakat  bu açıya sahip bir motor, 1 turu 800 yarım adımda tamamlar.)

Açılar, dediğimiz gibi değişebilir ve 360 dereceye, kalansız bölünecek şekilde hesaplanmıştır.
Mesela bendeki, Arduino için amatör işlerde kullanılan step motor, Philips MB11 modeli, 7.5 derece bölüntülüdür.  48 adım sonra tam tur yani 360 derecelik dönüş yapmış olacaktır.

Yukarıdaki anlattıklarım içinde en önemli konu TORK konusu. Bu da yapacağınız projedeki yükler ile ilişkilidir.
Step motorunu yatay çalıştırmakla ve dikey çalıştırmakla neler değişir önce buna bakalım.

Yukarıdaki resimde aynı motorun yatay ve dikey kullanımda TORK kuvvetinin %75 kayıp olduğunu görebilirsiniz. Projelerinizde motor kullanırken X ve Y eksenlerinde ağırlığı azaltmak için rulmanlı miller kullanılır. Bu miller, sadece kılavuz değil ağırlığı taşıyarak sadece sürtünme kuvvetinin motora etki etmesini sağlarlar. Dikey konumda Z ekseni tüm ağırlığı taşıması gerekir. Yatak kullanılmış olsa bile bu ağırlığı tutmak için son durumunu koruması ve devamlı akım çekmesi demektir. Step motorlar pozisyonunu korurken bile akım çekmeye devam ederler.
X – Y eksenleri yatay pozisyonda olduklarından timing belt dediğimiz kayışlar ile hareket alır. Fakat bu tip cihazlarda dikey alanda ağırlık söz konusu olduğunda, Z ekseni genelde sonsuz vidalı yapılır ki, bu sonsuz vida motor dursa bile son konumunu korur. Bundan dolayı devamlı enerjili kalmasına gerek kalmaz. Şayet sonsuz vidalı mil olmasaydı ve motor enerjisi kesilmiş olsaydı o zaman Z ekseni yavaş da olsa aşağı doğru kayacak ve motorun adımı değişmiş olacaktı. Sonsuz vidalı mil aşağı kaymasını önlemektedir. 

Tork yapacağınız işe göre de değişir. Yatay çalışma ve dikey çalışma gibi.
Ayrıca hızınıza göre de değişir. Mesela 1 yükü 1 m/s hızla yukarı çıkarmak veya 2 m/s hızla çıkarmak için tork değişir.

Hesap tablosunda sadece RPM dediğimiz devir sayısını düşürelim ve TORK değerine bakalım.

2 resim arasında sadece dönüş hızı farklıdır. Dönüş hızı arttıkça TORK kuvveti düşmektedir.


Tork, akımla orantılıdır (çok düşük akımlar hariç), bu nedenle örneğin sürücüleri motor nominal akımının %85’ine ayarlarsanız, maksimum tork %85 ​​* 0.707 = belirtilen tutma torkunun %60’ı olacaktır. Yani motorun datasheet dediğimiz bilgilerinde tork değeri ne ise onun %60 kadarını taşıyabilir demektir. Bunlar step motorlarda belirtilir.
Burada şunu da belirtmeliyim. NEMA17 demek bir marka ve model demek değildir. 17 rakamı inç kare olarak boyutlarıdır.  Yani her nema17 motoru aynı torkta ve çalışma akımında  olmayabilir.

Yukarıdakileri anladık, bu kez karşımıza motor tipleri olarak, ROTOR kısmına bağımlı çeşitler çıkıyor.
Bunlarda 3 kısma ayrılır.
1-) Permanent Magnet(Rotor  Kalıcı mıknatıs) : Rotor, stator devresi tarafından üretilen manyetik alanla hizalanan kalıcı bir mıknatıstır. Bu çözüm, iyi bir tork ve ayrıca bir kilit tork’u garanti eder.

2-) Variable Reluctant( Rotor Değisken akımlara göre şekil alır.) Rotor bir demir çekirdekten yapılmıştır ve manyetik alanla hizalanmasına izin veren özel bir şekle sahiptir. Bu çözümle daha yüksek bir hıza ve çözünürlüğe ulaşmak daha kolaydır, ancak geliştirdiği tork genellikle daha düşüktür ve tetik torku yoktur.
(Tetik Tork: Sabit mıknatıslar kullanan senkron elektrik motorları, elektrikle çalıştırılmadıklarında rezonant pozisyon tutma torkuna ( kilit torku veya dişli olarak adlandırılır ve bazen spesifikasyonlara dahil edilir) sahiptir. Yumuşak demir çekirdekleri bu davranışı göstermez.)
3-) Hybrid rotor:  Bu tür rotorun belirli bir yapısı vardır ve kalıcı mıknatıs ile değişken relüktans ( Manyetik Direnç) versiyonları arasında bir hibrittir. Rotor, değişen dişlere sahip iki kapağa sahiptir ve eksenel olarak mıknatıslanmıştır. Bu konfigürasyon, motorun hem sabit mıknatıslı hem de değişken relüktans versiyonlarının, özellikle yüksek çözünürlük, hız ve tork avantajlarına sahip olmasını sağlar. Bu daha yüksek performans, daha karmaşık bir yapı ve dolayısıyla daha yüksek bir maliyet gerektirir.
Yukarıdaki seçeneklere göre motorunuzu seçmek istediniz. Acaba motoru gereğinden büyük mü seçtiniz.
Belki de başka seçeneklerle daha küçük motor seçebilir miydiniz?
Belki de aşağıdaki resimlere bakarak çeşitli bağlantı varyasyonlarıyla tork ve hız konusunda çözüm elde edebilirsiniz.
Örneğin, NEMA23 motorunu ele alalım. HİBRİT bir yapısı var. UNIPOLAR olarak kullanılabildiği gibi BIPOLAR olarak da kullanılabilir. Hatta 8 kablolu olduğundan bobinleri seri paralel bağlayabilirsiniz.

Electrical Specification
Manufacturer Part Number: 23HS22-3008D
Motor Type: Unipolar/Bipolar Stepper
Step Angle: 1.8 deg
Holding Torque(Unipolar): 0.9Nm(127.5oz.in)
Holding Torque(Bipolar Serial): 1.26Nm(178.4oz.in)
Holding Torque(Bipolar Parallel): 1.26Nm(178.4oz.in)
Rated Current/phase(Unipolar): 3.0A
Rated Current/phase(Bipolar Serial): 2.12A
Rated Current/phase(Bipolar Parallel): 4.24A
Phase Resistance(Unipolar): 0.75 ohms
Phase Resistance(Bipolar Serial): 1.5 ohms
Phase Resistance(Bipolar Parallel): 0.375 ohms
Inductance(Unipolar): 1.1mH ± 20%(1KHz)
Inductance(Bipolar Serial): 4.4mH ± 20%(1KHz)
Inductance(Bipolar Parallel): 1.1mH ± 20%(1KHz)
Connection :

A+ A- C- C+ B+ B- D- D+
RED YEL BLK BLU WHT PUR GRN BRN

Bu motorun datasheetine bir göz atın derim.
https://www.omc-stepperonline.com/download/23HS22-3008D.pdf

Orada bağlantı durumlarını da gözlemleyebilirsiniz.

 

Bu bağlantı tablosu 6 ve 8 bacaklı UNIPOLAR ve BIPOLAR motor bağlantısı ile UNIPOLAR motorların, BIPOLAR olarak nasıl bağlanacağını gösteriyor.

 

6 bacaklı UNIPOLAR motorun bağlantısını gösteriyor. Ortadaki bölüm UNIPOLAR motorun yarım sargısını kullanarak yapılan bir bağlantıdır. Dolayısıyla TORK da düşmektedir.

Yukarıdaki özelliklerde Holding torque kısmında, bağlantı şekline göre değişimi görebilirsiniz. Aynı zamanda bu torku elde ederken ne kadar akım gerektiğini de RATED CURRENT kısmından görebilirsiniz. Bu tip bağlantı durumlarını 6 bacaklı ve 8 bacaklı step motorlarında deneyebilirsiniz.
En baştaki resimde görebileceğiniz gibi. 4 kablolu bipolar motor, 5 ,6,8 kablolu unipolar motorlar var. Bunlardan 5 kabloluyu ayırmanız zor olduğu için bazı bağlantıları yapamayabilirsiniz. Fakat şunu da unutmayalım her unipolar motor, Bipolar uyumluysa bipolar olarak çalıştırılabilir.
Bipolar uyumlu dedim genelleme yapmak için bir bilgim yok. Fakat sanırım bir çok unipolar motor, bipolar olarak da çalışabilir. 

Bu grafikte bağlantı durumuna göre ve HIZ’a göre TORK kuvvetini görebilirsiniz.

Mesela NEMA17, 6 bacaklı soket ile satılıyor sadece bir adaptör kablo ile 4 kablolu bipolar motor diye satılıyor.

Videodaki benim kullandığım motor 6 kablo çıkışlıdır. 2 kablosuna (KIRMIZI) +9V motor gerilimi verdim. (5 kablo lu olanda 2 kırmızı kablo içeriden birleşiktir.)  Diğer kablolar ise sırasıyla GRİ ve SARI. ( ULN2003 çıkışları motor bobini üzerinden gelen gerilimi şaseye ileterek motorun dönmesini sağlar.) Daha sonra ise GRİ ve SARI uçlarını sırayla ULN2003 entegresinin çıkışına bağladım. Bağlantı şeklim her FAZ için 1 gri ve 1 sarı olduğu için, ULN2003 e bağlarken A1,B1,A11,B11 şeklinde bağladım. Gri olanlar A ve B sarı olanlar ise A11ve B11 olarak sıraladım. Bu sıralama yanlış olduğunda, vermeniz gereken sinyal değişir.
Fakat step motorlarda, tablolarda gördüğünüz gibi adım kodları standart olduğundan kablo sırası değişirse sağa sola dönüşler farklı olabilir ya da birkaç adım sağa birkaç adım sola giderek titreşim yapar. Fakat motora zarar vermez. Doğru kablolamayı verdiğinizde motor standart tabloya göre sağa ya da sola gider. Kütüphane kullanılmamakta fakat kütüphane kullandığınız program olsa da yine aynı hareketi yapacaktır. Çünkü kullanılan tablo standarttır.
Motorun sağa dönüşü için ve sola dönüşü için tek bir kodlama vardır. Bu kodlamada, yukarıdan aşağı sırasıyla kodu verdiğinizde sağa dönüyorsa, aşağıdan yukarı doğru verdiğinizde tam tersine döner.
Bundan dolayı, Arduino programlarında sadece bu tablodaki kodlar vardır ve motor ne tarafa dönecekse bir sayaç ileri geri sayarak, motorun dönüş yönünü belirler. Mesela sayaç değeri 1,2,3 diye artıyorsa sağa döner 4,3,2,1 gibi düşüyorsa sola döner diyebiliriz. Zaten tam tur atınca ilk başlangıç yerine gelir. Tablo yine tekrarlanır.

Bunun yanı sıra KÜTÜPHANESİZ kullanıyorsanız ve kendi yaptığınız sürücü devresini kullanıyorsanız, motorun dönüşü için kablo farklı bağlanmış olsa da, bu bağlantınıza göre kod tablosunu siz hazırlayabilirsiniz. Yine motor istediğiniz şekilde dönecektir. Fakat şunu da unutmayalım. Standart verilen tablo en iyi optimize edilmiş çalışmayı sunacaktır. Yani tork belirtilen standart değerlerde olacaktır. Sizin verdiğiniz sıralama doğru sonuca yakın olsa da tork biraz düşebilir.  ( Bu konuda 1.videoyu seyretmeniz size daha faydalı bilgiler sunacaktır. )

Mesela H-bridge (H köprüsü) denilen devreyi kendiniz oluşturduğunuzda, tabloyu kendiniz değiştirmek zorunda kalabilirsiniz. Ya da tersleyici (invertör, inverter) mantık kapıları ile girişi terslemek zorunda kalabilirsiniz. Bu konuyu 3. videoda görebilirsiniz.

Kullanabileceğiniz Step motor sürücülerinden biri, L298 step motor sürücü devresidir. Bu devre ile çalışırken sadece motorun yönünü değil hızını da kontrol edebiliyorsunuz. Motorun hızını, her ne kadar verdiğiniz adım kodları arasındaki bekleme süreleri belirliyor olsa bile, ki bu yanlış bir uygulamadır. Bu modülün EN-A ve EN-B uçlarına PWM sinyali vererek hız ayarı yapabiliyorsunuz. Bunu da 3.videoda görebileceksiniz.

Ayrıca L298 modülü üzerinde göremeseniz de aşağıdaki şemaya bakarak SENSA ve SENSB uçlarını entegre bacaklarından alarak Şemada gösterildiği gibi dirençler bağlayarak Arduino’nun ADC girişine vererek okuma yapılabilir. Devamlı akım kontrol yapılabilir.

Pim 1 ve pim 16 SENS_A ve SENS-B çıkışlarıdır. Modülde GND ye bağlanmıştır. Sizler aşağıdaki yazıda anlatıldığı gibi kontrol edebilirsiniz.

sense dirençleri 2 adet 1R paralel bağlanarak 0,5R elde edilmiş.
Bu resimde ve diğer resimlerde SEN_A ve SEN_B dirençlerinin üzerinde bulunan gerilimi ölçerek AKIM KONTROLÜNÜ yapabilirsiniz. Arduino’nun ADC uçlarına vererek bu değerleri kontrol edebilirsiniz. Direnç değerleri şemada yazıyor fakat üzerinden Motor seçiminize göre 1-2A akım geçebilir bundan dolayı 2W lık bir direnç seçerseniz iyi olacaktır. Isınmaması bozulmaması için.

Yukarıda L298 modülünün bağlantıları var. Fakat modül pim isimlerine bakarsanız burada SEN-A gibi bir çıkış göremeyebilirsiniz. Bunun için 2. resme bakın Entegrenin 1. ve 15. bacakları üzerinden sizin almanız lazım. Bu bacaklar şaseye kısa devre edilmiş olduğundan bacakları kesip direnç ile GND ye bağlayıp bacak üzerinden Arduino’nun ADC ucuna bağlamanız gerekir.

Ayrıca bu şemalarda diyotlar göreceksiniz. Ben küçük motorda bunları kullanmadım. Fakat yüksek güçlü motorlarda bunları kullanmak gerekecektir.  Modül kullanıyorsanız zaten bunlar modül içerisinde mevcuttur. Bu diyotları şöyle düşünün, Rölelerde kullandığımız ters yöndeki diyotlar gibi. Siz gerilimi bobine verdiğinizde bir manyetik alan oluşur. Sonrasında enerjiyi kestiğinizde manyetik alanın sönmesi için ters yönde bir gerilim oluşur. Bu ters yön gerilim çıkış transistorlarınıza zarar vermesin diye Diyot üzerinden GND ye ya da +Vcc ye doğru gider ve modül çıkışlarınız korunmuş olur. ( Bunu ne olduğunu algılayamayan arkadaşlar için ters gerilimin nasıl bobinlerde oluştuğunu deneyleyebilmeniz için küçük oyuncak arabaların motorlarını alın. Motora enerji vermeyin kablo bağlantılarına bir led bağlayın. Bu led motor milini hızla döndürdüğünüzde yanacaktır.  Bu konuda video örneği için buraya bakabilirsiniz.  )

Diğer step motor sürücü modülleri L293 gibi ucuz sürücüler olmakla birlikte yukarıda da dediğim gibi akımına, gerilimine göre değişen sürücüler de var. Hatta mikro adım kullanılacaksa Mikro adıma uygun sürücüler de var. Her birinin farklı çalışma şekilleri olabilir. Fakat mantık step motor kontrol mantığı aynıdır. Mesela TB6600 mikro adımda da kullanılabilen bir sürücüdür. Ayrıca A4988 sürücüsü size hem mikro adım sağlayabilir hem de adımlar için 4 arduino çıkış pimi kullanmak yerine 2 arduino çıkış pimi kullanmanızı sağlar. Kullanımı oldukça basit görünüyor. Fiyatı da diğerlerine göre iyi görünüyor. Kullanım örneği için bu sayfaya bir göz atmanızı tavsiye ederim. Tabii ki her sürücünün avantaj ve dezavantajları olabilir.

Bundan dolayı sürücü kullanacaksanız, motor seçiminize ve yaptığınız işe uygun bir güce sahip olarak seçmeniz gerekir.
Hatta HIZ ayarı yapılabiliyor mu?
Mikro adım gerekiyorsa mikro adım uyumlu mu?
Gerekli korumaları var mı?
Piyasa da satılan profesyonel yazıcılarda ya da diğer makinelerde ne sıklıkta kullanılıyor?
Bu tip sorgulamaları yapmanız yerinde olacaktır. Ben örnek bir çalışma için L298 bilgilerini verdim.
Fakat siz, illaki sürücü almak zorunda değilsiniz. Verdiğim L298 sürücüsünün özelliklerine bakarak ULN2003-2004 gibi entegrelerle ya da mosfet ile yapılan H-Bridge devreleriyle motorlarınızı sürebilirsiniz.

ULN2003 ve H-Bridge devrelerinin çalışmalarını Proteus dosyası üzerinde görebilirsiniz. Ben de gerçek step motorumu ULN2003 entegresiyle sürdüm.

Örnek Proteus şeması. ULN serisi ve H-Bridge bağlantılarla ilgili.

L298 sürücüsünün EN-A ve EN-B uçlarından PWM sinyali vererek hız ayarı yapabilirsiniz.
H-Bridge devresinde çalışmak için bağlantıları doğru yapmalısınız. Gerekirse Kendi kodlamanızı yapabilirsiniz. Ya da inverter (Tersleyici) kullanabilirsiniz.
Bu devre BIPOLAR motor sürmek için ULN2003 gibi enegrelerin mantığını kullanır. Fakat Bipolar motorda motor gerilimi için ortak uç olmadığından Bu dirençler ile Motor gerilimi Bipolar motora verilir. ULN2003 gibi devreler UNIPOLAR motorlarla direkt olarak çalışabilir. BİPOLAR motorlarda bu şekilde direnç ile motor gerilimi uygulanmalıdır. Çünkü BIPOLAR motorlar Pozitif tetikleme ile çalışırlar. Open collector veya open drain denilen yapıyla direkt kullanılamazlar.

Kendi motorunuza ve hangi tip kontrol çıkış gerilimi kullanacaksanız buna göre seçebilirsiniz. Şunu da hatırlatmalıyım. Datasheet ULN2003, 2004  serisi entegreler için her bir çıkışı 500mA der. Ve toplamda 7 çıkış olmasına rağmen toplam akımın 2,5A de sınırlar. Step motor sürecekseniz ve motorun akımı 500mA den fazla ise çıkışları paralel olarak birleştirerek kullanabilirsiniz. Bu şekilde 1A e kadar akım çekebilirsiniz. Tabii ki teorik olarak. Gerçekte ise verim %85 düşünülmeli. Hatta bu tip entegreler soğutuculu olmadığından yüksek akım yüksek ısı demektir ve entegre çabuk ısınacaktır. Motorunuza ve yapacağınız işe göre SÜRÜCÜ entegre ya da modülleri seçebilirsiniz.

Not: Motorların Datasheet teki özelliklerine baktığınızda size toplam gerilim ve akımı vermezler.  Sadece 1 bobinin çektiği akımı ve gerilimi verirler. Burada iletime geçen bobin sayısına göre akım çekilecektir. Bir de bu akım çekilirken bobin üzerinde kalan gerilim ile sürücü transistörünün iletimdeyken üzerinde kalan gerilimi de hesap etmeniz gerek. Mesela ULN2003 entegresinde tam iletimdeyken 1,1V ile 1,6V arası gerilim kalır bunu da motor gerilimine eklemeniz gerekir ki akım çektiğinizde gerilim düşmesin. Bendeki motoru 5V ile sürdüğümde çok yavaş hareket ediyordu. 100ma çekmesine rağmen. 9V ile beslediğimde gayet normal bir şekilde dönmeye başladı. Yani gerilimi de hesaba katarak uygun bir gerilim ve akım sağlayan güç kaynağı gerekecektir. Bu güç kaynağının da %85 ile çalışması gerektiğini unutmayın.

Buraya kadar sürücüler hakkında da bilgi vermeye çalıştım. Sizler bu yazıyla sadece motor döndürmek değil, motorların birbiriyle senkron olarak nasıl kontrol edileceğini gördünüz.
1 tek motoru döndürmek problem değil. X,Y,Z eksenlerini de kullanmak istediğinizde bir mantık geliştirmeniz gerek. Mesela 4 adet dijital çıkış kullanacaksınız 3 adet motora 12 dijital çıkış harcayacaksınız. Tüm motorlar aynı anda dönmese bile.
O zaman ne yapabiliriz.
Mesela 4 bitlik bir çıkışı 3 motorda da kullanabilir miyiz?
ya da A4988 sürücü kullansak her motor için 1 step 1 de yön pimi kullanarak 3 motor için gereken pim sayısını 6 ya mı düşürsek.
Bunun gibi farklı fikirler için daha önce yazdığım Bakış açısı yazıma bakarak kendinize bir yol seçebilirsiniz.
Ya da profesyonel bir kart olsun derseniz Böyle bir kartı seçebilirsiniz. Ayrıca üzerine 6 adet A4988 sürücü koyabilirsiniz. ( Tabii ki bu kolay bir yöntem olmakla birlikte biraz masraflı olabilir. Fakat güvenilirdir.) Bu linkten ise çalışması ile ilgili bilgilere ulaşabilirsiniz.

Ya da bütün bunları bırakıp kendi programınızı yapabilirsiniz. Kendi devrelerinizle birlikte. Aşağıdaki devrede 2 ayrı motor aynı adım kodlamasını aynı pimlerden alıyor. Fakat 74174 D Flip Flop entegrelerinin CLK girişlerini değiştirerek hangi motoru istersek onu seçebiliriz.
Devre proteus devrelerinin arasında denendi. Bu mantıkla Arduino mega kullanmak yerine 3 motor için 12 yerine, 7 dijital pim kullanarak uno ya da nano modellerini kullanabilirsiniz. Daha fazla motor da bağlayabilirsiniz. Dijital pimlerini yettiği taktirde. Çünkü tüm motorlar aynı anda kullanılmaz. Bazen X ve Y aynı anda kullanılabiliyor fakat Z ekseni için X-Y tablasının durması gerekiyor. Ya da malzeme gönderme kısmına ait motor her zaman çalışmıyor. Bundan dolayı çoklu step motor kontrol edebilirsiniz. unipolar_3d_eksen Arduino programı bu mantık ile yapıldı fakat kütüphane ile yapılan programları da bu mantıkla yapabilirsiniz. Hatta bu program üzerinde fazla düşünülmediği için Uzun yoldan kopyalama ile çalıştırıldı. Daha detaylı bakarsanız programı oldukça kısaltabilirsiniz.


Arduino programları her dizin için farklı gibi görünse de aslında mantık hepsinde aynıdır. Sadece bazılarında tüm adımlar tek tek verilmiştir. Bazılarında ise standart tablo gibi sadece adımlar tanımlanmış alt programlar şeklinde yapıldığından CASE komutu ile çağırılmıştır. Bu çağırma esnasında SAĞ’a dönerken D1,D2,D3,D4 gibi bir sayaç ile çağrılıyorsa, D4,D3,D2,D1 gibi de SOL’a dönüş için çağrılır. Bunu bir sayacı yukarı yada aşağı sayarak yapar.
Tüm programlarda HOME butonu vardır. İlk anda motor gelip bu butona basması gerek ki, nerede olduğunu anlasın. Bunun için TOTAL COUNT tam adım açısını sayabilsin. Bu tam adım motorun açısını gösterecektir. Yarım adım olarak sürüyorsanız Yarım açıyı gösterecektir. Bu da size kat edilen mesafeyi bulmanızda fayda sağlayacaktır.

Tüm proteus programları o dizindeki Arduino programıyla uyumludur. Bazı şemalarda motor bacak bağlantıları farklıdır. Bu sizi yanıltmasın. Kütüphane kullanılmadığında kendi adım tablonuzu uygun şekilde yazıp motorunuzu çalıştırabilirsiniz. Arduino programlarındaki Adım tabloları değişiklik gösterecektir.

Bunun yanı sıra 1. Video yu seyrederseniz kablo yanlışlıklarının gözle fark edilir problemlerini görebilirsiniz. Tablonuzu yazarken bunlara dikkat etmelisiniz.

Gelelim Bir step motor kontrollü makine yapma düşüncemize. Zaten benzerlerini 3D printer gibi yerlerde görmeniz mümkün. Fakat yapmak istediğiniz her daim 3D makine olmak zorunda değil. Fakat buradaki mekanik sistemleri kullanmanız gerekecektir. Mesela Timing BELT( Zaman kayışı ) motor mekaniklerinde kullanılmaktadır. Bunlar ince dişli kayışlardır. Motorlar büyüdükçe güç arttıkça kayış dişleri de büyüyecektir. Fakat sizinde piyasada göreceğiniz üzere Step motor mekaniklerinde ince diş kullanılmaktadır. Bunun yanı sıra aşağıda resmi bulunan PULLEY denilen ince dişli çarklar kullanılmaktadır. Uzun mesafelerde bu kayış ve dişli çarklar hareketi aktarmaktadır. Burada motor bağlantısının da önemi büyüktür. Şayet metal esnek olmayan bir bağlantı ile motor mili ve çalışma milini bağlarsanız Motor tam merkezde değilse zorlanabilir veya zamanla başka sorunlar çıkarabilir. Bunun için COUPLING denilen ESNEK bağlantı parçaları vardır. Bu bağlantı parçaları kullanıldığında sorunlara en aza indirilir.
Ayrıca dişli kullanımı TORK için de bir fayda sağlar. Mesela Büyük dişliyi motora küçük dişliyi çalışma miline bağladığınızda motorun küçük bir adımı ile küçük dişli daha hızlı dönecektir. Daha fazla yol alacaktır. Yavaş dönme durumunda TORK daha fazla olacaktır.
TORK kısmında çok güzel bir örnek olduğunu düşündüğüm bu videoyu, izlemenizi tavsiye ederim.

Pulley (dişli ) ve timing belt çeşitleri piyasada mevcuttur.

 

Bu tip esnek kaplinlerin (Coupling) yerine sabit veya arası lastikli başka tip kaplinlerde piyasada mevcuttur.

Arduino dediğimizde kütüphane kullanımından bahsetmek lazım. Bir çok kişi kolaylık olsun diye kütüphane kullanıyor. Mümkünse kullanmamak en doğrusudur. Çünkü Kütüphane kullanımı sizin yüzeysel öğrenmenizi sağlar. derinlemesine öğrendiğinizde başka devreler ya da sistemler için daha farklı çözümler üretebilirsiniz. Ben hiç bir şey için kütüphane kullanmam da diyemem. Gerektiğinde ben de kullanırım. Fakat bu konu için düşünürsek Kütüphane sadece doğru yolda olup olmadığınızı test etmek için idealdir. Mesela motor kabloları doğru bağlandı mı? gibi sorulara cevap verebilirsiniz.  Bazen de kütüphaneler o kadar farklı olur ki birine göre çalışan diğerine göre hata verebilir. Bundan dolayı da en doğrusu işin iç yüzünü bilip kendi programımızı yazmak en iyisidir.

Bunula birlikte step motor kütüphanesi için www.arduino.cc referans sitesinde araştırma yaptığımda, Tam adım için ayrı kütüphane yarım adım için ayrı kütüphane gördüm. Bu şekilde kullanmak yerine çalıştıracağım cihazda bir kısmını tam adım bir kısmını yarım adım gitmek istesem 2 adet kütüphaneyi de kullanmam gerekecek. Kendi yaptığım programlarda sadece tam adım ve yarım adım tablolarını programa yazsam istediğim zaman yarım adım istediğim zaman tam adım olarak çağırabilirim. Zaten arduino programlarında bunu görebileceksiniz.

Kablo hataları konusunda 1. videoyu izleyebilirsiniz.

Genel Step motor kullanımı için 2. videoyu izleyebilirsiniz.

Proteus devrelerinin açıklamaları için ise 3. video faydalı olacaktır. 

Tüm dosyaları GITHUB üzerinde buradan görebilirsiniz. 

Tüm dosyaları buradan download edebilirsiniz. 

 

Her adımda ne kadar mesafe olacak. Mikro adımlarda nasıl bir dezavantaj var.
Bu konularda bu öğreticiyi kullanabilirsiniz. 

Step motorlarda hareket ile ilgili bu yazı da dizayn aşamasında size yardımcı olacaktır. 

Video için düzeltme : Hız anlatılırken bu delay komutunun sıfırlanabileceği söylendi fakat yanlıştır. Arduino hızlı olduğundan tüm adım kodları arka arkaya hızlı gelirse motor daha dönemeden yeni kod gelir maksimum hız ve minimum hıza göre ayarlayabilirsiniz.
Arduino programında speeddelay asla sıfırlanamaz. arduino çok hızlı çalışacağından motor dönemeden diğer kod gelir problem olur. Bundan dolayı speeddelay motorun adım adım gidebileceği kadar hız olarak ayarlanır. pwm ile de yavaşlatıp hızlandırmak kalkarken yavas frenlerken yavaş olacak şekilde ayarlanır.

Video_1 : Kablo hatalarını ve kütüphane kullanımını gösterir.


Video_2 : Step motorlar hakkında


Video_3 : step motor sürücülerinin ve arduino örnek programlarının anlatımıdır. 


 

 

 

5 Comments

  1. Gerçekten step motorlarla ilgili araştırdığım en detaylı yazı olmuş.Emeğinize sağlık

Özcan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak.