Step Motorlar
Step motorlar veya adım motorları küçük adımlar halinde istenildiği kadar döndürülebilen ve güç devam ettiği sürece durduğu zamanlarda bile pozisyonunu sıkıca koruyabilen motor tipleridir. Biraz daha detaylı olarak açıklayacak olursak, girişlerine uygulanan pals sinyallerine karşı analog dönme hareketi çıkışı üreten, bu dönme hareketini adım adım ve çok hassas kontrolle sağlayan sabit mıknatıs kutuplu motorlardır.
Step motorlarda, her bir tam dönüş turu eşit boyutlu adımlarla tanımlanır. Herhangi bir adım hızlı, kesin yük konumlandırması ve yüksek tutma torku sunar. Bir mikro step sürücü kullanırken her adım, daha da küçük artışlara bölünebilir. Step motorlarda karmaşık geri besleme cihazlarına veya bir kapalı döngü kontrol sistemine ihtiyaç duyulmaz.
Çalışma Prensibi

Step motorun çalışma prensibi şu şekildedir: Elektronik anahtarlar vasıtasıyla stator üzerindeki bobinlere enerji verilir ve üzerine monte edilmiş daimi mıknatıslar bulunan rotor, enerji olan bobinin karşısına geçerek durur. Motorun ne kadar çok dönmesi isteniyorsa bobinlere sırasıyla o kadar pals sinyali verilir. Bu dönme açısı step motorda değişkendir ve tercih yaparken çok kritik bir parametredir.

Adım Açısı
Herhangi bir step motorun 200 adımlı olduğunu düşünürsek: Her tam adımda 1,8º'lik bir dönüş sağlar (360º / 200 = 1,8º). Motora uygulanan DC gücünün daha sofistike kontrolüyle daha hassas adımlara ulaşılabilir. Örneğin, her bir sarıma art arda uygulanan pozitif akım, sıfır akım ve negatif akım sonucunda 0,9°'lik yarım step açıları elde edilebilir. Bağımsız sarımlara gönderilen akım miktarı üzerindeki hassas kontrol, neredeyse servo benzeri performans için tam 1,8°'lik bir adımın 1/250'si kadar küçük "mikro step" artışlarına ulaşabilir.
Bununla birlikte step motorlarda gerekli adım açısının (Qs) bulunması için faz sayısını (Ns) ve motordaki rotorun çıkıntılı kutup sayısını (Nr) bilmek gerekir.
Step Motorların Avantajları ve Dezavantajları
Avantajlar:
Step motorların hareketlerinde pozisyon hatası yaşanmaz.
Kontrolleri bilgisayar ve mikroişlemci ile sağlanabilmektedir.
Hassas pozisyon ve hız kontrolü sağlanır.
Düşük devirde yüksek torka sahiptir.
Dezavantajlar:
Step motorların adım açıları sabit olduğundan hareketleri sürekli değil darbelidir.
Çok yüksek hızlarda kolaylıkla kontrol edilemezler.
Step motorlarda elde edilebilecek güç ve moment sınırlıdır.
Geri bildirim mekanizması barındırmadığından harici konum limitlemeye gerek duyabilir.
Step Motor Seçimi
Daha sert dur kalk hareketleri için enkoderli step motor kullanılması tercih edilebilir. Akımı, tutma torku, nema değeri gibi özellikler de göz önünde bulundurulmalıdır. NEMA(National Electrical Manufacturers Association), motor çerçeve boyutlarına göre US standardizasyonlarıdır. Nema 11(1,1 inch kare), Nema 14(1,4 inch kare), Nema 17(1,7 inch kare), Nema 23(2,3 inch kare) vb. çeşitleri vardır.
Step Motor Çeşitleri
İki fazlı step motorlar
Unipolar step motorlar (ortak uç var)
Bipolar step motorlar (ortak uç yok)
Sabit mıknatıslı step motorlar
Değişken relüktanslı step motorlar
Tek parçalı
Çok parçalı
Lineer step motorlar
Hibrit step motorlar
Hidrolik Step motorlar
a- Unipolar Step Motorlar

Faz başına 2 bobin sargısından oluşur. A ve B fazlarından oluşan iki fazlı bir motorda ise, motorun dört bobin sargısı bulunur. Her bobinde akım yalnızca tek bir yönde akabilir. Bu yüzden buna unipolar (tek kutuplu) diyoruz.
Unipolar kontrolde, fazın yalnızca yarısı aynı anda güç alır. Bu da akımın bakır hacminin yalnızca yarısını kullandığı anlamına gelir. Tipik olarak, gerilim sürücülü seri dirençler elektriksel zaman sabitini azaltmak için kullanılır.
Pinler arası ölçü aletiyle buzzer modunda ölçüldüğünde, ölçü aleti, tüm pinler arası direnç gösteriyorsa step motor unipolardır. Bir pin, diğer pinlerle ölçüldüğünde bobin direnç değerinin yarısını gösteriyorsa o pin ortak pindir.
b- Bipolar Step Motorlar

Bipolar motorlar, faz başına yalnızca bir bobin sargısına ihtiyaç duyar. Akım, bobin başına her iki yönde de akabilir. Bu nedenle bu motorlara bipolar(çift kutuplu) denir. Bipolar sürücünün avantajı, faz başına tüm bakırın kullanılmasıdır.
Pinler arası ölçü aletiyle buzzer modunda ölçüldüğünde, birbiri ile bağlantısız pinler varsa step motor bipolardır. Birbiriyle bağlantılı pinler bir fazı ifade eder.
Arduino İle Step Motor Kontrolü
ULN2003A’lı Sürücü Modülü İle Step Motor(Unipolar) Kontrolü
ULN2003A’lı sürücü modülü ile unipolar olan step motorlar kontrol edilebilir.

*OUT1 hep 1’dir. Step motorun ortak ucuna bağlanır.
ULN2003A ile step motor kontrolünde, OUT1 ucundan gönderilen VDD, step motorun ortak +V ucuna girer. ULN2003’ün diğer OUT uçlarının belli bir sıra ile toprağa götürülmesi ile step motor sargıları da belli bir sıra ile toprağa götürülmüş olur.
“ULN2003A’lı Step Motor Sürücü Modülü” ile sadece unipolar step motorlar kontrol edilebilir. Bipolar step motorları kontrol etmek için “A4988 Step Motor Sürücü Modülü” kullanılabilir.
1. 28BYJ-48 Step Motor(Unipolar) Kontrolü (Uygulama yapılmadı)

28BYJ-48 Step Motor(Unipolar)’un çalışma voltajı 5V’dir. Çalışma Akımı 240mA’dir. Frekansı ise 100 Hz’dir.
Step motorun veri sayfasına göre; motor şaftı 360° dönüşünü 32 adımda tamamlar. Ancak bu motorlarda, 1/64 ya da 1/16 redüksiyon oranına sahip dahili bir dişli kutusu vardır. Bu da çıkış milinin tam bir tur atması 32 x 64 = 2048 ya da 32 x 16 = 512 adım gerektirir.
Tabloda Sıra 1’den 4’e doğru gittikten sonra tekrar baştan başlatarak döngü halinde devam edersek, step motor adım adım bir yöne döner. Sıra 4’den 1’e doğru aynı işlemleri yaparsak step motor diğer yönde döner. 1’den 4’e kadar olana 1 döngü dersek, 8 döngü sonunda step motor 1 turunu tamamlayarak 360° dönmüş olur.
28BYJ-48 step motor Arduino uygulamalarında, ULN2003A’lı sürücü modülü ile sık sık kullanılan bir step motordur. Arduino’da <Stepper.h> kütüphanesi ile de kontrol edilebilir.
NOT: 28BYJ-48 step motordan elimizde bulunmadığı için uygulama yapılamamıştır.
2. MITSUMI M42SP-7P Step Motor(Unipolar) (Uygulama yapıldı)

MITSUMI M42SP-7P step motorunun üzerinde tam tur için adım sayısı yer almadığından, motorun tam turdaki(360°) adım sayısını program ile deneme yaparak 48 adım olarak bulduk.
Güç Kaynağından Doğrudan Kontrol
“Ort” ortak uç olduğu için OUT1(VDD)’ye bağlanır.
1. Sadece Pin2 - 2. Sadece Pin4 - 3. Sadece Pin3 - 4. Sadece Pin1 -.
Sıralama 1’den 4’de doğru devam ederse step motor bir yöne, sıralama 4’den 1’e doğru devam ederse step motor diğer yöne döner.
Arduino İle Manuel Kontrol
Tabloda Sıra 1’den 4’e doğru gittikten sonra tekrar baştan başlatarak döngü halinde devam edersek, step motor adım adım bir yöne döner. Sıra 4’den 1’e doğru aynı işlemleri yaparsak step motor diğer yönde döner.
Arduino Stepper Kütüphanesi İle Kontrol
Uygulamanın başında Arduino ile dahili olarak gelen <Stepper.h> kütüphanesi programa eklenmelidir.
Komutlar:
a. Stepper step_motor(adim_sayisi, pin1, pin2, pin3, pin4);
Step motorun adım sayısını ve sürücünün Arduino’ya bağlı olduğu pinlerin belirlenmesini sağlayan “step_motor” adında bir nesne oluşturur.
adim_sayisi: Step motorun bir devrindeki(1 tam tur) adım sayısıdır. Step motorun etiketinde adım başına derece sayısı varsa, adım sayısını elde etmek için 360’ın bu derece sayısına bölünmesi gerekir.
pin1…4: Step motorun ULN2003A’ya bağlandığı pinler.
NOT: Uygulama yaparken MITSUMI M42SP-7P step motorun ULN2003A kartı ile pin bağlantısını yukarıdaki resimdeki gibi yaptıktan sonra komuttaki pin sıralamasını aşağıdaki gibi yaptıktan sonra step motor doğru şekilde çalıştı.
Stepper step_motor(adim_sayisi, IN2, IN4, IN1, IN3); veya
Stepper step_motor(adim_sayisi, IN1, IN3, IN2, IN4);
b. step_motor.setSpeed(rpm);
Bu fonksiyon, motorun dönüş hızını (RPM) ayarlar. Bu fonksiyon motoru döndürmez, sadece motorun hangi hızda döneceğini ayarlar.
rpm: Step motorun dakikadaki dönüş sayısını belirler.
c. step_motor.step(adim_sayisi);
Bu fonksiyon step motoru en son belirlenen hız ve adım sayısı parametrelerine göre döndürür. Bu fonksiyon blokaj işlevi görür. Yani step motor hareket etmeyi bitirene kadar program bu satırda bekler. “adim_sayisi” değişkeni motoru bir yöne döndürmek için pozitif tam sayı, diğer yöne döndürmek için negatif tam sayı olmalıdır.
Örneğin;
Step motorun adim_sayisi=48; ve rpm=25; ise: step motor 48 adımını 25 rpm hızında tamamlar.
A4988’li Sürücü Modülü İle Step Motor(Bipolar) Kontrolü
A4988’li sürücü modülü ile bipolar olan step motorlar veya ortak uçları kullanılmadan unipolar step motorlar kontrol edilebilir.
Bu sürücü modülü üzerinde Allegro tarafından üretilen A4988 çipi yer alır. Sürücü 35 volta kadar voltaj sağlayabilir ve 2 amper elektrik akımı verebilir. Bu, NEMA 17 ve NEMA 23 gibi popüler step motorları çalıştırmak için yeterli güçtür.
Modülde aynı zamanda mikro adımlama özelliği vardır. Her tam adımı mikro adım adı verilen daha küçük parçalara bölerek motorun daha akıcı hareket etmesini sağlar. A4988, beş farklı mikro adım çözünürlüğü sunar: Tam adım, yarım adım, çeyrek adım, sekizde bir adım ve on altıda bir adım.
Güvenlik için; A4988, düşük voltaj koruması, kısa devre koruması, aşırı akım koruması, termal kapatma ve ani akım koruması gibi çeşitli güvenlik özelliklerine sahiptir.
Pin Özellikleri
A4988'in iki ayrı güç kaynağına ihtiyacı vardır.
VDD ve GND Pinleri: A4988'in dâhili mantık devresine güç sağlar. 3V ile 5,5V arasında bir voltaj yeterlidir. Bu pinlerin voltajı Arduino üzerinden alınabilir.
VMOT ve GND Pinleri: Step motora güç sağlar. Kullandığınız motor türüne bağlı olarak, bu voltaj 8V ile 35V arasında değişebilir. Modülde düşük ESR seramik kapasitörler kullanılmıştır. Bu da LC voltaj yükselmelerine karşı devreyi savunmasız halde bırakabilir. 12V güç kaynağı kullanmış olsak dahi bu yükselmeler 35V’u aşabilir. Bu nedenle VMOT ile toprak arasına en az 47µF gibi bir kondansatör koyulmalıdır.
MS1, MS2 ve MS3 Pinleri: İstenilen mikro adım çözünürlüğünü seçmenize olanak tanıyan pinlerdir. Pinler varsayılan olarak tam(1/1) adım modundadır.

STEP Pini: Motoru hareket ettirmek için ana kontrol girişidir. Bu pine her HIGH sinyal gönderdiğinizde, motor bir adım ileri hareket eder. Bu darbelerin frekansı, motorun dönüş hızını belirler. Daha hızlı darbeler daha hızlı dönüş sağlar. Bu pin ile toprak arasına 1kΩ’luk direnç bağlarsak sürücü kartını korumuş oluruz. Bu pin varsayılan olarak boştadır. Fakat A4988 modülünü kullanırken bu pin mutlaka HIGH ya da LOW konumunda olmalıdır.
DIR Pini: Direction pinidir. Motorun hangi yönde döneceğini kontrol eder. Bu pini HIGH olarak ayarladığınızda motor saat yönünde, LOW olarak ayarladığınızda ise saat yönünün tersine döner. Projeniz motorun yalnızca tek yönde dönmesini gerektiriyorsa, bu pini doğrudan VDD veya GND'ye bağlayabilirsiniz. Bu pin varsayılan olarak boştadır. Fakat A4988 modülünü kullanırken bu pin mutlaka HIGH ya da LOW konumunda olmalıdır.
EN Pini: Enable pinidir. A4988 sürücüsünü etkinleştirir veya devre dışı bırakır. LOW konuma getirildiğinde sürücü etkinleştirilirken, HIGH konuma getirildiğinde devre dışı bırakılır. Bu pin varsayılan olarak LOW konumdadır. Yani varsayılan olarak A4988 sürücüsü etkindir. Güvenlik için motoru hızla kapatabilen bir acil durdurma düğmesine ihtiyacınız varsa bu pini kullanmak isteyebilirsiniz.
SLP Pini: Sürücüyü güç tasarrufu sağlayan uyku moduna geçirir. LOW konuma getirildiğinde sürücü uyku moduna geçer. HIGH durumunda uyanıktır. Bu pin varsayılan olarak HIGH konumdadır. Bu özellik, motor kullanılmadığında güç tasarrufu için kullanışlıdır.
RST Pini: Reset pinidir. LOW durumuna çekildiğinde sürücüyü sıfırlar ve motorun başlangıç konumuna dönmesini sağlar. Sıfırlama, motorun her seferinde aynı yerden başladığından emin olmak istediğinizde kullanışlıdır. RST pini varsayılan olarak boştadır. Eğer sıfırlama özelliği kullanılmayacaksa bu pin HIGH durumuna getirilmelidir. HIGH durumu için bu pin bitişikteki SLP pinine bağlanabilir.
1A, 1B, 2A, 2B Pinleri: Motor çıkış pinleridir. Step motorun sürücüye bağladığı pinlerdir. 1A ve 1B pinleri bir faza, 2A ve 2B pinleri diğer faza bağlanır. Genellikle, 1A ve 1B ilk faza, 2A ve 2B ikinci faza bağlansa da sıralama çok fark etmez.
Akım Sınırlama
A4988 step motor sürücüsü, küçük bir akım sınırlama potansiyometresi içerir. Bu, motorun bobinlerinden geçen maksimum akımı ayarlamamıza olanak tanır. Böylece motorun güvenli bir şekilde kaldırabileceğinden daha fazla akım çekmesini engellemiş oluruz. A4988'de akım sınırını ayarlamanın iki temel yolu vardır:
1. Sürücü tam adım modundayken ölçü aleti ile bir fazdan geçen akımı ölçeriz. Daha sonra sürücü üzerindeki potansiyometre ile akım ayarlayabiliriz.

2. Sürücüdeki referans voltajını ayarlayarak da akımı sınırlayabiliriz. Referans voltajı, potansiyometre ile toprak arasındaki voltajdır. Bu yöntemde Vref için aşağıdaki formülü kullanırız.

Vref = ILimit x 8 x Rs
Rs: A4988’in yanındaki direnç değerleridir. Üstteki resimdeki gibi R100 ise Rs’yi 0,1 alırız.
ILimit: İstediğimiz akım değeri. Örn. 1,5A olsun.
Formülde yerine koyduğumuzda;
Vref = 1,5 x 8 x 0,1 = 1,2V olur. Üstteki resimdeki gibi ölçü aletimizin eksi ucunu toprağa bağlayıp, artı ucunu da potansiyometrenin üzerindeki metal kısma değdirdiğimizde 1,2V’yi görene kadar potansiyometreyi çevirmeliyiz.
MITSUMI M42SP-4NP Step Motor(Bipolar)

M42SP-4NP step motorunun üzerinde tam tur için adım sayısı yer almadığından, motorun tam turdaki(360°) adım sayısını program ile deneme yaparak 96 adım olarak bulduk.
Güç kaynağından doğrudan kontrol
1. M1 +, S1 - 2. S2 +, S3 - 3. S1 +, M1 - 4. S3 +, S2 -.
Sıralama 1’den 4’de doğru devam ederse step motor bir yöne, sıralama 4’den 1’e doğru devam ederse step motor diğer yöne döner. M42SP-4NP Step Motor bipolar olduğu için ULN2003A’lı kontrol modülü ile kontrol edilemez. Bu step motorun kontrolü için A4988 modülünü kullanabiliriz.
Arduino ile manuel kontrol
digitalWrite(); ve delayMicroseconds(); komutları kullanılarak uygulamalar yapıldı.
Arduino PWM Kütüphanesi ile kontrol
Bu uygulamada belirlediğimiz frekans değerinde %50 duty cycle'da step motora PWM sinyali göndererek motorun dönmesini sağladık. Frekans değerini değiştirerek step motorun hızını kontrol edebiliriz. PWM kütüphanesi Timer1'i kullandığı için sadece 9. ve 10. pinler PWM sinyali için kullanılabilir. PWM kütüphanesi Timer kullandığı için Loop döngüsü içerisinde hız artırma-azaltma, dönüş yönü değiştirme gibi kontroller doğrudan yapılamıyor. Bunun için dışardan buton, Timer ya da interrupt gibi fonksiyonları kullanmak gerekiyor.
Arduino AccelStepper Kütüphanesi ile kontrol
Uygulamanın başında AccelStepper-1.64.0 kütüphanesi programa eklenmelidir. Bu kütüphane Arduino’da dâhili olarak bulunmaz. Google’dan aratarak ya da GitHub’dan bu kütüphane indirildikten sonra Arduino IDE’sinde “Taslak > library ekle > .ZIP kitaplığı ekle” yaparak kütüphane dosyasını Arduino’ya ekliyoruz. Aşağıdaki linkten indirebilirisiniz:
Adres: https://www.arduinolibraries.info/libraries/accel-stepper
Komutlar
a. AccelStepper step_motor(motor_arayuz_tipi, STEP, DIR);
Step motorun ara yüz tipinin ve A4988 sürücü kartının Arduino’ya bağlı olduğu pinlerin belirlenmesini sağlayan “step_motor” adında bir nesne oluşturur.
motor_arayuz_tipi: Kütüphaneye A4988 gibi iki kontrol piniyle çalışan bir adım motoru sürücüsü kullandığımızı belirtir. Bunun için motor_arayuz_tipi’ni 1 olarak veririz.
STEP: A4988 sürücüsünün STEP pininin Arduino’ya bağlandığı pin.
DIR: A4988 sürücüsünün DIR pininin Arduino’ya bağlandığı pin.
b. step_motor.setSpeed(200); Motorun başlangıç hızını ayarlar.
c. step_motor.setMaxSpeed(1000); Motorun ulaşabileceği maksimum hızı ayarlar.
d. step_motor.setAcceleration(50); Motorun ne kadar hızlı hızlanacağını ya da yavaşlayacağını belirler. Bu, motorun, ani hızlanma ve durma yerine yumuşak bir kalkış ve yavaşlama yapmasını sağlar.
e. step_motor.move(96); Motoru 96 adım ileri gitmesi için hazırlar.
Örnek:
step_motor.move(96); motoru 96 adım sağa döndürmeye hazırlar.
step_motor.move(-96); motoru 96 adım sola döndürmeye hazırlar.
f. step_motor.runToPosition(); Motoru move() ile belirtilen konuma döndürür.
g. step_motor.moveTo(96); Motoru 96 adım ileri gitmesi için hazırlar.
Örnek:
step_motor.moveTo(96); motoru 96 adım sağa döndürmeye hazırlar.
step_motor.moveTo(-96); motoru 96 adım sola döndürmeye hazırlar.
h. step_motor.run(); Motoru moveTo() ile belirtilen konuma döndürür.
NOT: move(); ve runToPosition(); ile moveTo(); ve run(); arasındaki fark:
move(); ve runToPosition(); fonksiyonları Loop döngüsü içerisinde sürekli çalışır. Örneğin; motor 96. adıma geldiğinde tekrar 0’dan başlar ve 96. adıma gider. Bu durum sürekli tekrarlanır.
moveTo(); ve run(); fonksiyonları ise Loop döngüsü içerisinde yalnız 1 kez çalışır ve durur. Örneğin; motor 96. adıma geldiğinde burada kalır ve tekrar 0’dan başlamaz. Tekrarlama için setCurrentPosition(0); fonksiyonu ile pozisyonun sıfırlanması gerekir.
i. pozisyon = step_motor.currentPosition(); Motorun bulunduğu konumu/hangi adımda olduğunu verir.
j. step_motor.setCurrentPosition(0); Motorun mevcut konumunu sıfırlar. Böylece motorun şu anda bulunduğu konum yeni 0 konumu olarak kabul edilir. İlk donanım konumlandırma hareketinden sonra bir adım motorunda sıfır konumunu ayarlamak için kullanışlıdır. Mevcut motor hızını 0'a ayarlama gibi bir yan etkiye sahiptir.
0 comments:
Yorum Gönder