Dokümanlar · ← Blog yazıları

Robotik

Step motor nedir, nasıl çalışır? Arduino ile kontrol (28BYJ-48, ULN2003, A4988)

Probot Studio

Bu yazıda ne yapacağız?

  1. Step motorun içinde bobinlerin sırayla nasıl yandığını göreceğiz.
  2. Tam adım, yarım adım ve mikro adım farkını öğreneceğiz.
  3. 28BYJ-48'i ULN2003 ile, büyük motoru A4988 ile Arduino'ya bağlayacağız.
  4. Hesaplayıcıyla tur başına adımı ve gereken darbe hızını bulacağız.

Neden işe yarar? Step motor, sensör kullanmadan "tam 90 derece dön" ya da "5 mm ilerle" demenin en kolay yoludur. 3D yazıcılar ve CNC tezgâhları bu yüzden step motor kullanır.

Step motorun şematik kesiti: dört bobin A, B, C, D sırayla turuncu yanıyor, ortadaki mıknatıs rotorun oku her seferinde yanan bobine dönüyor; yanda hangi adımda hangi bobinin açık olduğunu gösteren tablo

Step motor nedir, ne işe yarar?

Step motor, her elektrik darbesinde belirli bir açı (bir adım) dönen motordur. Darbeleri sayarak milin nerede olduğunu bilirsiniz, ayrıca sensör gerekmez.

Nerelerde kullanılır? 3D yazıcı ve CNC eksenleri, lazer kesiciler, kamera kaydırıcıları, döner tablalar, tarayıcılar.

Step motor nasıl çalışır?

Rotor bir mıknatıstır, çevresinde bobinler vardır. Akım verilen bobin mıknatıslanır ve rotoru kendine çeker. Bobinleri sırayla açıp kapatınca rotor adım adım döner.

Gerçek motorda rotor ve stator ince dişlidir, adımlar çok küçüktür: yaygın motorlarda bir adım 1,8°, bir tur 200 adım.

Tam adım, yarım adım, mikro adım

Üç satır motor çizimi: tek bobinde dört konum, tam adımda iki komşu bobinle aradaki dört konum, yarım adımda sekiz konum; ok her yarım adımda 45 derece ilerliyor

Kendiniz deneyin

Sürüş türünü seçip 1 adım ya da Oynat'a basın: hangi bobinin yandığını ve rotorun nereye döndüğünü izleyin. Altta kendi mekanizmanızı hesaplayın.

Burada bobinleri sırayla enerjileyip rotorun nasıl adım attığını izleyebileceğiniz bir simülatör ve tur başına adım, darbe frekansı, mm başına adım hesaplayıcısı var; JavaScript ile çalışır. Açılmadıysa yukarıdaki görseller aynı sırayı gösteriyor.

Deneyin: yarım adımda sekiz kez basın, model rotor tam tur atar. Sonra hesaplayıcıda 1,8° motor, 1/16 ve 20 dişli GT2 kasnak seçin: bir adım 0,0125 mm, yani 1 mm için 80 darbe.

Unipolar ve bipolar step motor

Unipolar Bipolar
Kablo 5 ya da 6 (bobinlerin orta ucu var) 4
Sürücü Basit: ULN2003 gibi transistör dizisi Her bobine bir H köprüsü: A4988, L298N
Örnek 28BYJ-48 (5 telli) 1,8° motorlar (3D yazıcılardaki NEMA 17 boy)

Bipolar motorda akımın yönü değişmeli; bu yüzden her bobine DC motor yazısındaki H köprüsünden bir tane gerekir.

Step motor sürücü nedir? ULN2003 ve A4988

Bobinler Arduino pininin veremeyeceği kadar akım çeker; sürücü bu akımı Arduino'nun komutuyla anahtarlar.

28BYJ-48 ve ULN2003 nasıl bağlanır?

Bağlantı şeması: Arduino pin 8, 9, 10, 11 sırayla ULN2003 IN1-IN4'e, 5V ve GND kartın artı ve eksisine; 28BYJ-48 beş telli soketle karta takılı, kırmızı tel ortak

// 28BYJ-48 + ULN2003: Stepper kütüphanesiyle bir tur ileri, bir tur geri
#include <Stepper.h>

const int ADIM_TUR = 2048;  // tam adımda bir tur (katalog değeri)
// Sıra önemli: IN1, IN3, IN2, IN4 -> pin 8, 10, 9, 11
Stepper motor(ADIM_TUR, 8, 10, 9, 11);

void setup() {
  motor.setSpeed(10);       // rpm; 28BYJ-48 için 10-15 arası
}

void loop() {
  motor.step(ADIM_TUR);     // bir tur ileri (bitene kadar bekler)
  delay(1000);
  motor.step(-ADIM_TUR);    // bir tur geri
  delay(1000);
}

A4988 ile step motor nasıl bağlanır?

A4988 bağlantısı: Arduino pin 3 STEP'e, pin 2 DIR'e; RST ile SLP köprülü; MS pinleri boş; VMOT ve GND 8-35 V beslemeye, arada en az 47 µF kondansatör; motorun bobinleri 1A-1B ve 2A-2B'ye; VDD ve GND Arduino 5V ve GND'ye

// A4988 + 1,8° bipolar step motor: STEP/DIR ile tur
const int STEP_PIN = 3;
const int DIR_PIN = 2;
const int ADIM_TUR = 200;   // MS1-MS3 boş: tam adım

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
}

// adim kadar darbe gönder; aralikUs: iki darbe arası süre
void git(int adim, bool ileri, unsigned int aralikUs) {
  digitalWrite(DIR_PIN, ileri ? HIGH : LOW);
  for (int i = 0; i < adim; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(aralikUs / 2);  // datasheet: en az 1 µs
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(aralikUs / 2);
  }
}

void loop() {
  git(ADIM_TUR, true, 5000);    // 200 Hz = 60 rpm
  delay(1000);
  git(ADIM_TUR, false, 5000);   // geri
  delay(1000);
}

Step motor kaç volt ile çalışır?

Step motor dururken de konumunu tutmak için bobinlerinden akım geçer, bu yüzden beklerken de ısınır.

Step motor uçları nasıl bulunur?

Multimetreyi ohm kademesine alın:

  1. 4 telli (bipolar): iki tel arasında direnç okunuyorsa aynı bobindir, okunmuyorsa farklı bobinlerdir. İki çift bulursunuz: biri 1A-1B'ye, öbürü 2A-2B'ye.
  2. 5 telli (28BYJ-48): kırmızı tel ortak uçtur; kırmızı ile diğer her tel arasında aynı direnç okunur.
  3. Motor ters dönüyorsa: bir bobinin iki ucunu kendi arasında değiştirin ya da DIR'i kodda çevirin.

Step motor ile servo motor arasındaki fark

DC motor Servo motor Step motor
Hareket Sürekli döner Belirli açıya gider, çoğu 0-180° Adım adım, sürekli de döner
Konumu nasıl bilir? Bilmez, enkoder gerekir İçinde ölçer Darbeleri sayarak, ölçmeden
Sürüş H köprüsü + PWM Tek sinyal teli Sürücü + darbe dizisi
Zayıf yanı Konum için sensör ve PID Sınırlı açı Aşırı yükte adım kaçırır ve fark etmez

Ayrıntılar: servo motor nedir?

Sık yapılan hatalar

Belirti Sebep Çözüm
28BYJ-48 titriyor, dönmüyor Kodda pin sırası 8, 9, 10, 11 Stepper motor(2048, 8, 10, 9, 11)
Bipolar motor titriyor Bobin çiftleri karışmış Multimetreyle çiftleri bulun
A4988 hiç tepki vermiyor RST boşta RST ile SLP'yi birleştirin
Konum zamanla kayıyor Fazla hız ya da yük, düşük akım sınırı Yavaşlatın, yavaş hızlanın, Vref'e bakın
Motor ve sürücü çok ısınıyor Akım sınırı yüksek Vref'i motorun anma akımına göre ayarlayın
28BYJ-48 tam turu tutturamıyor Gerçek dişli oranı 63,68:1 2048 yerine ölçtüğünüz değeri kullanın

Kaynaklar

Erişim: 17 Ekim 2026