# Have a problem with control 3 stepper motor using Arduino uno

**URL:** <https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695>\
**Category:** Motors, Mechanics, Power and CNC\
**Created:** [November 2, 2024, 4:11am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695 "2024-11-02T04:11:16Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:11am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/1 "2024-11-02T04:11:16Z")

</div>

```arduino
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <math.h>

// Define pins for the steppers

// stepper 1 truc X drive giữa
#define ENA_PIN1 0
#define STEP_PIN1 1
#define DIR_PIN1 2

//stepper 2 truc Y driver bên trái ngoài cùng
#define ENA_PIN2 3
#define STEP_PIN2 4
#define DIR_PIN2 5

//stepper 3 truc Z drive bên phải ngoài cùng
#define ENA_PIN3 8
#define STEP_PIN3 9
#define DIR_PIN3 10

#define stopMotor 11
#define relayPin 12
#define homeXPin A0
#define homeYPin A1
#define homeZPin A2

// Biến trung gian quá trình 
int currentTarget = 0; // 0: A, 1: B
int detectTarget = 0; // 0: ko thay doi tuong, 1: tim thay doi tuong.
int xA, yA, zA, xB, yB, zB; // Biến cho vị trí

//setup stepper
AccelStepper stepper1(AccelStepper::DRIVER, STEP_PIN1, DIR_PIN1); // truc X
AccelStepper stepper2(AccelStepper::DRIVER, STEP_PIN2, DIR_PIN2); // Truc Y
AccelStepper stepper3(AccelStepper::DRIVER, STEP_PIN3, DIR_PIN3); // Truc Z

// object MultiStepper
MultiStepper steppers;

void setup() {
  Serial.begin(9600); 

  // Setup ENABLE pins
  pinMode(ENA_PIN1, OUTPUT);
  pinMode(ENA_PIN2, OUTPUT);
  pinMode(ENA_PIN3, OUTPUT);

  // Setup homePin and sensor
  pinMode(stopMotor, INPUT_PULLUP);
  pinMode(homeXPin, INPUT_PULLUP);
  pinMode(homeYPin, INPUT_PULLUP);
  pinMode(homeZPin, INPUT_PULLUP);

  // Setup relayPin
  pinMode(relayPin, OUTPUT);

  // Enable drivers (ENABLE LOW)
  digitalWrite(ENA_PIN1, LOW);
  digitalWrite(ENA_PIN2, LOW);
  digitalWrite(ENA_PIN3, LOW);

  // add steppers in to multiStepper Steppers
  steppers.addStepper(stepper1);
  steppers.addStepper(stepper2);
  steppers.addStepper(stepper3);

  // setup speed for motor
  stepper1.setMaxSpeed(1000); // tối đa là 1000 với full bước hoặc 9400 với bước 1/32
  stepper1.setAcceleration(500);

  stepper2.setMaxSpeed(1000);
  stepper2.setAcceleration(500);

  stepper3.setMaxSpeed(1000);
  stepper3.setAcceleration(500);

  // Setup home position XYZ
  homing();
}

void loop() {
  if (Serial.available() > 0) {
    String input = Serial.readStringUntil('\n'); // Đọc dữ liệu từ Serial
    sscanf(input.c_str(), "%d,%d,%d,%d,%d,%d,%d", &detectTarget, &xA, &yA, &zA, &xB, &yB, &zB);
    Serial.print("Received: detectTarget: "); Serial.print(detectTarget);
    Serial.print(", xA: "); Serial.print(xA);
    Serial.print(", yA: "); Serial.print(yA);
    Serial.print(", zA: "); Serial.print(zA);
    Serial.print(", xB: "); Serial.print(xB);
    Serial.print(", yB: "); Serial.print(yB);
    Serial.print(", zB: "); Serial.println(zB);
  }

  // move to A to pick up things
  if (detectTarget == 1 && currentTarget == 0) {
    if (digitalRead(stopMotor) == HIGH) { // chưa gặp công tắc hành trình thì vẫn sẽ di chuyển 
      // Move to vị trí đối tượng
      moveToPosition(xA, yA, zA);
      delay(1000);
      currentTarget = 0;
    } else { // dừng động cơ khi gặp công tắc và bắt đầu đợi di chuyển tới vị trí thùng chứa B
      stopAllMotors();
      currentTarget = 1;
      digitalWrite(relayPin, HIGH);
      delay(500);
    }
  }

  // move to B 
  if (currentTarget == 1) {
    // Move to vị trí thùng chứa
    moveToPosition(xB, yB, zB);
    delay(500);
    digitalWrite(relayPin, LOW);
    currentTarget = 0;
  }

  // move to home
  if (currentTarget == 0 && detectTarget == 0) {
    moveToPosition(0, 0, 0);
    delay(500);
  }
}

// calculateSteps with distance
long calculateSteps(float khoangCach) {
  long gocQuay = calculateGocQuay(khoangCach);
  return (gocQuay / 360.0) * 200; // 200 steps is 1 round (1.8/step)
}

// move all 3 stepper to position
void moveToPosition(float X, float Y, float Z) {
  long positions[3];
  positions[0] = calculateSteps(X);
  positions[1] = calculateSteps(Y);
  positions[2] = calculateSteps(Z);

  // Di chuyển động cơ đồng bộ
  steppers.moveTo(positions);
  steppers.runSpeedToPosition(); // Chạy động cơ tới vị trí mục tiêu
}

long calculateGocQuay(float khoangCach) {
  return (khoangCach * 360) / 8;
}

// setup homing when start
void homing() {
  bool homingXComplete = false;
  bool homingYComplete = false;
  bool homingZComplete = false;

  while (!homingXComplete || !homingYComplete || !homingZComplete) {
    // Trục X stepper 1 drive giữa
    if (digitalRead(homeXPin) == LOW) {
      stepper1.setCurrentPosition(0); // đặt vị trí hiện tại là gốc
      homingXComplete = true;
    } else {
      stepper1.setSpeed(300); // Trục X 
      stepper1.runSpeed();
    }

    // Trục Y stepper 2 driver bên trái
    if (digitalRead(homeYPin) == LOW) {
      stepper2.setCurrentPosition(0); // đặt lại vị trí hiện tại là gốc
      homingYComplete = true;
    } else {
      stepper2.setSpeed(-300); // Trục Y homing trục Y + là về - là tiến
      stepper2.runSpeed();
    }

    // Trục Z stepper 3 drive bên phải
    if (digitalRead(homeZPin) == LOW) {
      stepper3.setCurrentPosition(0); // đặt lại vị trí hiện tại là gốc
      homingZComplete = true; // Sửa lỗi ở đây
    } else {
      stepper3.setSpeed(500);
      stepper3.runSpeed();
    }
  }
}

// stop all motors
void stopAllMotors() {
  stepper1.stop();
  stepper2.stop();
  stepper3.stop();
}

```

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:16am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/2 "2024-11-02T04:16:02Z")

</div>

What is the problem?  
Show your devices and wiring diagram.

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:18am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/3 "2024-11-02T04:18:28Z")

</div>

Device I'm using  
2 stepper motors 1.2A , 1.8 degrees /step and 1 stepper motor 2A, 1.8 degrees /step.  
Arduino circuit using plug-in chip  
3 driver DRV8825  
1 power supply 24V-10A

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:19am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/4 "2024-11-02T04:19:49Z")

</div>

> [@xfpd](#):
>
> What is the problem?  
> Show your devices and wiring diagram.

...

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:20am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/5 "2024-11-02T04:20:02Z")

</div>

Engine running unstable, sometimes 1 engine not working

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:20am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/6 "2024-11-02T04:20:53Z")

</div>

sometime i got 1 stepper motor not working

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:21am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/7 "2024-11-02T04:21:28Z")

</div>

> [@xfpd](#):
>
> Show your devices and wiring diagram.

> [@mtcle2002](#):
>
> Engine running unstable, sometimes 1 engine not working

Probably power supply is not supplying enough power.

> [@xfpd](#):
>
> Show your devices and wiring diagram.

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:23am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/8 "2024-11-02T04:23:47Z")

</div>

Thank you. I will try another power supply.  
According to you, how many A power supply should I use?

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:27am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/9 "2024-11-02T04:27:36Z")

</div>

> [@mtcle2002](#):
>
> power supply should I use

What voltage are the three motors?  
What stepper driver module are you using?

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:28am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/10 "2024-11-02T04:28:59Z")

</div>

i tried removing the serial lines in the code and it worked. Is it because my arduino uno is too weak

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:29am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/11 "2024-11-02T04:29:59Z")

</div>

~~[quote="xfpd, post:9, topic:1317695"] What voltage are the three motors? What stepper driver module are you using? [/quote]~~

I saw you posted that information. DRV8825 and 24v10A motors...

> [@xfpd](#):
>
> Show your devices and wiring diagram.

...  
The datasheet says the voltage is okay, but you need to restrict the current to 2.5A.

> 8.2-V to 45-V Operating Supply Voltage Range  
> 2.5-A Maximum Drive Current at 24 V

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:33am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/12 "2024-11-02T04:33:11Z")

</div>

I'm using driver DRV8825 for all  
and Vref of driver I setup is 0.6V for stepper motor using 1.2A and 1V for stepper motor 2A  
 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/8/8/c/88cf9cec86822a15231f8152af80ad4f53cdb31b.png)

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:37am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/13 "2024-11-02T04:37:01Z")

</div>

You want to run a 24VDC motor with AA batteries? Okay... 24/1.5 = 16xAA... but maybe you should use a (switching) power supply having 24vdc output.

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:40am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/14 "2024-11-02T04:40:49Z")

</div>

![image](https://europe1.discourse-cdn.com/arduino/original/4X/d/1/5/d15843869708699318b8e33c2bd0968cb1caac1b.png)  
this is exactly what I'm using

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 4:46am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/15 "2024-11-02T04:46:07Z")

</div>

This shows a typical connection of Arduino, motor, driver and power supply...

> **[Pololu - DRV8825 Stepper Motor Driver Carrier, High Current (md20a)](https://www.pololu.com/product/2132/)**
>
> This original version of our DRV8825 stepper motor driver carrier has been replaced by a newer version that can more easily be used as a drop-in replacement for our A4988 stepper motor driver carriers. The only difference is that the newer version...

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 2, 2024, 4:56am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/16 "2024-11-02T04:56:17Z")

</div>

> [@xfpd](#):
>
> This shows a typical connection of Arduino, motor, driver and power supply...

 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/f/8/3/f83cbff0451168d52ca5b750cba978aaac01f007.png)  
I used this too so I'm pretty sure I connected it correctly.

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [November 2, 2024, 12:58pm UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/17 "2024-11-02T12:58:15Z")

</div>

> [@mtcle2002](#):
>
> used this too

Is this a DRV8825 carrier?

> [@xfpd](#):
>
> Show your devices and wiring diagram.

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 3, 2024, 5:30am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/18 "2024-11-03T05:30:41Z")

</div>

> [@xfpd](#):
>
> Is this a DRV8825 carrier?

yes that's right

---

<div class="post-metadata">

**Author:** ![mtcle2002](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mtcle2002/32/1117284_2.png) [@mtcle2002](https://forum.arduino.cc/u/mtcle2002)\
**Post date:** [November 3, 2024, 5:33am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/19 "2024-11-03T05:33:53Z")

</div>

![20241103_123205](https://europe1.discourse-cdn.com/arduino/original/4X/7/3/f/73f5e1d759b983f353e5efdb5a184bf0294afe6b.jpeg)

---

<div class="post-metadata">

**Author:** ![TomGeorge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/tomgeorge/32/215261_2.png) [@TomGeorge](https://forum.arduino.cc/u/TomGeorge)\
**Post date:** [November 3, 2024, 5:40am UTC](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695/20 "2024-11-03T05:40:25Z")

</div>

> [@mtcle2002](#):
>
> i tried removing the serial lines in the code and it worked. Is it because my arduino uno is too weak

```arduino
// Define pins for the steppers

// stepper 1 truc X drive giữa
#define ENA_PIN1 0
#define STEP_PIN1 1
#define DIR_PIN1 2

```

I think the reason it was fixed when you removed serial comms is because you are using pins 0 and 1 as stepper1 control pins, they are the pins used for serial comms and programming.

What model Arduino are you using?

**Can you please post a copy of your circuit, a picture of a hand drawn circuit in jpg, png?**  
**Hand drawn and photographed is perfectly acceptable.**  
**Please include ALL hardware, power supplies, component names and pin labels.**

Thanks.. Tom... 😃 👍 ☕ 🇦🇺

[Next page](https://forum.arduino.cc/t/have-a-problem-with-control-3-stepper-motor-using-arduino-uno/1317695.md?page=2)
