Nema 23, 2.5A 3V Stepper Driver

Hey, for my project I'm looking to use the Nema 23 with 2.5A, 3V and 2 Phases. I was looking on the internet for severel motor drivers but all the ones i found were to big for my project. I've found drivers like the TB6600 which are just to big for me. Is there any drivers for the Nema 23 which are comperable to the ULN2003 Motor Driver in size?

For 2.5 A (twice?) a big driver is required, probably with heat sink. The ULN2003 is usable only with voltage driven steppers, not with your current driven motor. Nema only tells the mounting plate size, nothing about motor power.

1 Like

Do you know if i can run this motor with that driver with the AccelStepper library?

Yes. You can use the AccelStepper library. I like the MobaTools stepper library. The MobaTools library, in my opinion, is easier to learn and use than AccelStepper The MobaTools library is a bit limited in speed compared to AccelStepper.

Your motor, as previously mentioned, is current driven so the 3V is not relevant. For the most speed and torque use the highest voltage motor power supply that the chosen driver will support. Other wise use a convenient voltage, the driver will limit the current. Many drivers require the user to set the coil current limit. It is very important that setting the coil current be done properly.

1 Like

Yes but you first need to configure the driver via the SPI interface using the pololu library.

Pololu has a similar driver that will work with any stepper library but it's 3 time more expensive.

I'm asking because my whole programm is written already and when i tested it together with my mechanical parts the stepper which i had before was just to weak for it. I'm looking to just replace my current stepper and driver with the Nema 23 and the Pololu and hopefully to be able to not write my whole code again.

So with the Multi Interface Driver I wont need to set up the SPI using the pololu libray? I can just use it like the ULN2003 Driver? Sorry for all the questions I'm super new.

Maybe you should tell what your current setup is. All these suggested drivers are step/dir drivers. I highly suppose, that you need to adapt your sketch if you are using a ULN2003 driver so far.

You need to set it up via USB.
No you can't use it like a ULN2003 driver, you can use it Stepper and Accelstepper libraries

I'm buidling a playing cards dispensery system right now. The Cards get inserted by hand into the magazine and gets shooted out by an DC motor. My Stepper motor rotates the whole System to shoot cards to the next supposed player. To control the amount of players i use an rotary encoder and a segment display to display the amount. My Stepper gets his power from an externel 5V Power module. I'm using an Elegoo Mega with an ULN2003 Driver and the 28byj-48 Stepper. I'm using the AccelStepper library to control my stepper. My DC motor runs with an L98NH Driver. Due to time pressure im looking to adapt my sketch as fast as possible to my new driver but i havent used anything else than the ULN2003 and the AccelStepper library yet.

#include <Button.h>
#include <AccelStepper.h>
#include <Encoder.h>

int ena = 13;
int in3 = 12;
int in4 = 11;

int pos = 0;

AccelStepper stepper;

Button button1(A0);
int State = 0;

Encoder myEnc(A4, A5);

void setup() {
  pinMode(ena, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  button1.begin();

  stepper.setMaxSpeed(100);
  stepper.setAcceleration(50);

  while (!Serial) {};  // for Leos
  Serial.begin(9600);
}

long oldPosition = -999;

void loop() {
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }

  if (newPosition == 0) {
    digitalWrite(53, LOW);  // 9
    digitalWrite(52, LOW);  // 10
    digitalWrite(51, LOW);  // 7
    digitalWrite(50, LOW);  // 6
    digitalWrite(49, LOW);  // 2
    digitalWrite(48, LOW);  // 1
    digitalWrite(47, LOW);  // 3
    digitalWrite(46, LOW);  // 4
  }

  // Spielerzahl 2

  if (newPosition == 4) {
    digitalWrite(53, LOW);   // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, HIGH);  // 1
    digitalWrite(47, LOW);   // 3
    digitalWrite(46, LOW);   // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }
    while (State == 1) {
      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      if (digitalRead(in4) == LOW) {
        stepper.runToNewPosition(1024);

        if (stepper.distanceToGo() == 0) {
          analogWrite(ena, 250);
          digitalWrite(in4, HIGH);
          digitalWrite(in3, LOW);
          Serial.print(digitalRead(in4));

          delay(2000);

          analogWrite(ena, 0);
          digitalWrite(in4, LOW);
          digitalWrite(in3, LOW);
          Serial.print(digitalRead(in4));

          delay(2000);

          stepper.runToNewPosition(2048);
          stepper.setCurrentPosition(0);
          State = 0;
          Serial.print(State);
        }
      }
    }
  }

  // Spielerzahl 3

  if (newPosition == 8) {
    digitalWrite(53, LOW);   // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, LOW);   // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4


    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(683);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1365);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spielerzahl 4

  if (newPosition == 12) {
    digitalWrite(53, HIGH);  // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, LOW);   // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, LOW);   // 2
    digitalWrite(48, LOW);   // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(512);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1024);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1536);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spielerzahl 5

  if (newPosition == 16) {
    digitalWrite(53, HIGH);  // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, LOW);   // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, LOW);   // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(409);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(818);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1227);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1636);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      delay(1000);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spielerzahl 6

  if (newPosition == 20) {
    digitalWrite(53, HIGH);  // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, LOW);   // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, HIGH);  // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(341);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(682);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1024);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1365);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1706);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      delay(1000);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spielerzahl 7

  if (newPosition == 24) {
    digitalWrite(53, LOW);   // 9
    digitalWrite(52, LOW);   // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, LOW);   // 2
    digitalWrite(48, LOW);   // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(293);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(584);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(877);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1170);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1464);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1756);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      delay(1000);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spieler 8

  if (newPosition == 28) {
    digitalWrite(53, HIGH);  // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, HIGH);  // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(256);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(512);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(768);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1024);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1280);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1536);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1792);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      delay(1000);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }

  // Spieler 9

  if (newPosition == 32) {
    digitalWrite(53, HIGH);  // 9
    digitalWrite(52, HIGH);  // 10
    digitalWrite(51, HIGH);  // 7
    digitalWrite(50, HIGH);  // 6
    digitalWrite(49, HIGH);  // 2
    digitalWrite(48, LOW);   // 1
    digitalWrite(47, LOW);   // 5
    digitalWrite(46, HIGH);  // 4

    if (button1.pressed()) {
      State = 1;
      Serial.print(State);
    }

    while (State == 1) {

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(228);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(454);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(682);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(910);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1138);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1366);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1594);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(1822);

      analogWrite(ena, 250);
      digitalWrite(in4, HIGH);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      analogWrite(ena, 0);
      digitalWrite(in4, LOW);
      digitalWrite(in3, LOW);
      Serial.print(digitalRead(in4));

      delay(2000);

      stepper.runToNewPosition(2048);
      delay(1000);
      if (stepper.distanceToGo() == 0) {
        stepper.setCurrentPosition(0);
        State = 0;
        Serial.print(State);
      }
    }
  }
}

I generally use the DRV8825 from Pololu, or an alternative is the A4988 also from them, both coming on pin-compatible carrier boards. Unless your mechanism has a lot of friction it is highly unlikely to need 2.5A per phase though that may be what the motor's rating. However they do need a supply voltage of 12v and preferably 24v. The motor voltage rating is not very relevant as the driver controls the current. As a reference point I run a NEMA 23 for a milling machine axis drive at no more than 1A per phase from a DRV8825 and 24v. Actually I'm using a total of 7 steppers in this mill, a 3-axis CNC mill, a lathe and a rotary axis and none of them use any more than 2A per phase. Using the DRV8825 or A4988 is very easy - you just set the microsteps/step you want and send it a direction sigbal and step pulses. You may need to aapt your software but it isn't hard.

So you're Stepper does run even with less Amps than it should need? For example my Stepper would need 3 Amps and the driver can only provide 2.2 per phase. I had the problem with a DC motor before that it didnt run even when it got more than 50 percent the Amps it actually needed.

I'm not quite sure what you mean but yes they run fine and have plenty of torque for the application. DC motors need a lot of current to start but that's not how steppers work.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.