Program Arduino untuk Stepper Motor NEMA 17 (dengan Driver STEP/DIR)

 mari kita buat program Arduino untuk menggerakkan stepper motor NEMA 17. Stepper motor ini umum digunakan karena presisi gerakannya.

Untuk mengendalikan stepper motor NEMA 17, kita biasanya memerlukan driver motor (seperti A4988 atau DRV8825) karena Arduino tidak dapat langsung menyediakan arus yang cukup. Program yang akan saya berikan ini didasarkan pada penggunaan driver A4988/DRV8825, yang menggunakan metode STEP/DIR.


Program Arduino untuk Stepper Motor NEMA 17 (dengan Driver STEP/DIR)




Program ini akan membuat stepper motor berputar bolak-balik (maju-mundur) sebanyak beberapa putaran.

Komponen yang Dibutuhkan:

  • Arduino Board (misalnya Arduino Uno)

  • Stepper Motor NEMA 17 (4 kabel)

  • Driver Stepper Motor (misalnya A4988 atau DRV8825)

  • Power Supply Eksternal (12V-24V, sesuai spesifikasi motor dan driver Anda, dengan arus yang cukup)

  • Breadboard (opsional, untuk kerapian)

  • Kabel Jumper

Skema Pengkabelan (Umum untuk A4988/DRV8825):

Koneksi ini adalah yang paling umum. Pastikan untuk selalu merujuk pada datasheet driver Anda.

  1. VCC driver ke 5V Arduino

  2. GND driver ke GND Arduino

  3. VMOT driver ke Positive (+) Power Supply Eksternal

  4. GND driver (dari bagian motor) ke Negative (-) Power Supply Eksternal

  5. DIR driver ke Digital Pin Arduino (misalnya pin 2)

  6. STEP driver ke Digital Pin Arduino (misalnya pin 3)

  7. EN driver ke GND Arduino (untuk mengaktifkan driver; jika tidak terhubung, driver mungkin nonaktif)

  8. MS1, MS2, MS3 driver: Biarkan tidak terhubung atau hubungkan ke GND/VCC sesuai konfigurasi microstepping yang Anda inginkan (untuk contoh ini kita biarkan standar, full step).

  9. Output Driver (1A, 1B, 2A, 2B) ke Koil Stepper Motor (penting untuk mencocokkan pasangan koil motor dengan benar, biasanya ada 2 pasang).


Arduino
// Mendefinisikan pin yang terhubung ke driver stepper motor
const int dirPin = 2;   // Pin untuk mengatur arah putaran (Direction)
const int stepPin = 3;  // Pin untuk mengirim pulsa langkah (Step)
const int enPin = 4;    // Pin untuk mengaktifkan/menonaktifkan driver (Enable) - opsional, bisa langsung ke GND

// Jumlah langkah per putaran penuh motor Anda.
// NEMA 17 umumnya 200 langkah per putaran (1.8 derajat per langkah).
const int stepsPerRevolution = 200;

void setup() {
  // Mengatur pin sebagai OUTPUT
  pinMode(dirPin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(enPin, OUTPUT);

  // Mengaktifkan driver (pin EN LOW berarti driver aktif untuk kebanyakan driver)
  digitalWrite(enPin, LOW);

  // Mulai komunikasi serial untuk debugging (opsional)
  Serial.begin(9600);
  Serial.println("Stepper Motor Program Started");
}

void loop() {
  // --- Putar searah jarum jam ---
  Serial.println("Rotating Clockwise...");
  digitalWrite(dirPin, HIGH); // Mengatur arah putaran (HIGH = satu arah)

  // Melakukan langkah sebanyak satu putaran penuh
  for (int x = 0; x < stepsPerRevolution; x++) {
    digitalWrite(stepPin, HIGH); // Mengirim pulsa langkah (HIGH)
    delayMicroseconds(1000);     // Durasi pulsa HIGH
    digitalWrite(stepPin, LOW);  // Mengakhiri pulsa langkah (LOW)
    delayMicroseconds(1000);     // Jeda antar langkah (mengatur kecepatan)
  }

  delay(1000); // Jeda 1 detik setelah satu putaran

  // --- Putar berlawanan arah jarum jam ---
  Serial.println("Rotating Counter-Clockwise...");
  digitalWrite(dirPin, LOW); // Mengatur arah putaran (LOW = arah berlawanan)

  // Melakukan langkah sebanyak satu putaran penuh
  for (int x = 0; x < stepsPerRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }

  delay(2000); // Jeda 2 detik sebelum mengulang siklus
}

Penjelasan Kode:

  1. const int dirPin = 2;, const int stepPin = 3;, const int enPin = 4;:

    • Mendefinisikan pin Arduino yang akan terhubung ke pin DIR, STEP, dan EN pada driver stepper. Anda bisa mengubah nomor pin ini sesuai keinginan.

  2. const int stepsPerRevolution = 200;:

    • Ini adalah jumlah langkah (steps) yang dibutuhkan motor Anda untuk menyelesaikan satu putaran penuh (360 derajat). Kebanyakan NEMA 17 memiliki 200 langkah/putaran (atau 1.8 derajat per langkah). Jika Anda menggunakan microstepping pada driver, nilai ini harus dikalikan (misalnya, 200 * 16 = 3200 langkah per putaran untuk 1/16 microstep).

  3. setup() Function:

    • pinMode(): Mengatur ketiga pin sebagai OUTPUT.

    • digitalWrite(enPin, LOW);: Ini mengaktifkan driver. Kebanyakan driver A4988/DRV8825 diaktifkan ketika pin EN diberikan sinyal LOW (dihubungkan ke GND). Jika Anda tidak ingin mengontrol pin EN dari Arduino, Anda bisa langsung menghubungkan pin EN driver ke pin GND Arduino.

    • Serial.begin(9600);: Menginisialisasi komunikasi serial untuk mengirim pesan ke Serial Monitor (berguna untuk debugging).

  4. loop() Function:

    • Mengatur Arah (dirPin):

      • digitalWrite(dirPin, HIGH); atau digitalWrite(dirPin, LOW); digunakan untuk menentukan arah putaran motor. Anda bisa mencoba mana yang clockwise (CW) dan counter-clockwise (CCW) untuk motor Anda.

    • Menggerakkan Langkah (stepPin):

      • Loop for (int x = 0; x < stepsPerRevolution; x++) akan mengulang sebanyak jumlah langkah yang dibutuhkan untuk satu putaran.

      • digitalWrite(stepPin, HIGH); dan digitalWrite(stepPin, LOW); secara berurutan akan menciptakan pulsa. Setiap pulsa ini akan membuat motor bergerak satu langkah.

      • delayMicroseconds(1000);: Ini adalah jeda dalam mikrodetik. Durasi jeda ini sangat krusial untuk mengontrol kecepatan motor.

        • Nilai yang lebih kecil akan membuat motor berputar lebih cepat.

        • Nilai yang lebih besar akan membuat motor berputar lebih lambat.

        • Gunakan delayMicroseconds() untuk kecepatan tinggi karena delay() bekerja dalam milidetik.

    • delay(1000); / delay(2000);: Memberikan jeda dalam milidetik antara perubahan arah atau siklus putaran.

Sebelum Mengunggah Program:

  1. Pastikan Koneksi Benar: Periksa kembali semua koneksi kabel Anda, terutama power supply ke driver dan driver ke motor. Kesalahan dalam menghubungkan power supply atau koil motor dapat merusak driver atau motor.

  2. Sesuaikan Current Limit Driver: Driver A4988/DRV8825 memiliki potensiometer kecil untuk mengatur batas arus yang diberikan ke motor. Ini sangat penting untuk mencegah motor atau driver terlalu panas. Sesuaikan batas arus sesuai dengan spesifikasi arus motor NEMA 17 Anda. Biasanya ada metode perhitungan berdasarkan nilai resistor sense pada driver.

  3. Pilih Board dan Port: Di Arduino IDE, pastikan Anda telah memilih board Arduino yang benar (misal: "Arduino Uno") di Tools > Board dan port serial yang benar di Tools > Port.

  4. Unggah Kode: Klik tombol "Upload" di Arduino IDE.

Setelah diunggah, stepper motor Anda seharusnya mulai berputar maju dan mundur. Jika motor hanya bergetar atau tidak berputar, periksa kembali:

  • Koneksi koil motor ke driver (urutan pasangan koil penting!).

  • Power supply eksternal (cukup arus dan tegangan).

  • Pengaturan batas arus pada driver.

  • Pin EN driver (pastikan aktif/low).

Komentar