TB6600 and Stepper Motor Issues

I am trying to run a bipolar Nema17 stepper with a TB6600 motor driver and Arduino Uno. The specifications of the components are as follows:
Stepper: purchased via Amazon

  • amps/phase: 2.00 A
  • resistance/phase (nominal): 1.4+-10% ohm
  • resistance/phase (measured): A and A\ - 2.5 ohm, B and B\ - 2.3 ohm
  • Step angle: 1.8 deg

TB6600: purchased via Amazon

  • input current: 0~5 A
  • output current: 0.5~4.0 A
  • control signal: 3.3~24 V

The setup is wired as shown in the product manual here and the code used is below:

int PUL=7; //define Pulse pin
int DIR=6; //define Direction pin
int ENA=5; //define Enable Pin
void setup() {
  pinMode (PUL, OUTPUT);
  pinMode (DIR, OUTPUT);
  pinMode (ENA, OUTPUT);

}

void loop() {
  for (int i=0; i<6400; i++)    //Forward 5000 steps
  {
    digitalWrite(DIR,LOW);
    digitalWrite(ENA,HIGH);
    digitalWrite(PUL,HIGH);
    delayMicroseconds(50);
    digitalWrite(PUL,LOW);
    delayMicroseconds(50);
  }
  for (int i=0; i<6400; i++)   //Backward 5000 steps
  {
    digitalWrite(DIR,HIGH);
    digitalWrite(ENA,HIGH);
    digitalWrite(PUL,HIGH);
    delayMicroseconds(50);
    digitalWrite(PUL,LOW);
    delayMicroseconds(50);
  }
}

When trying to run this with a 12V power supply to the Driver, the stepper only hums but does not move. I figure that I need to up the supply voltage in order to overcome the back EMF created by the coils but I am reluctant to do so without more knowledge. Further, I do not require high rpm for the required application, around 60 rpm or so will be fine.

I have gotten the stepper to function with an L298N H-bridge using this tutorial. Why are H-bridges considered less efficient?

What are the specifications of the 12V power supply? What is the current limit on the driver set at?

The L298 driver is not considered to be less efficient than a more modern driver, it is less efficient. That is, mostly, due to the bipolar transistors on the output of the driver having high (2-4V) collector to emitter voltage that wastes significant power. For example, if a motor draws 2A the L298 can drop more than 4V meaning that the L298 is dissipating over 8 Watts and the motor, instead of getting 12V, is getting 8V.

Your motor should work fine with 12v if the current limit on the stepper motor driver is correctly set.

Try making the motor go at a VERY much slower to start with - for example at 4 steps per second. Once you get it moving reliably you can then experiment with higher speeds.

And the motor will need to be accelerated up to a high speed, just like any motor.

...R
Stepper Motor Basics
Simple Stepper Code

also look up the AccelStepper library

jwempe:
When trying to run this with a 12V power supply to the Driver, the stepper only hums but does not move.

First thing to check is the wiring - wire the motor incorrect and its unlikely to work.

Second thing to check is that the motor driver is set to 2A current.

I figure that I need to up the supply voltage in order to overcome the back EMF created by the coils but I am reluctant to do so without more knowledge.

That's not the problem, your motor is very low impedance (1.4 ohms)

I have gotten the stepper to function with an L298N H-bridge using this tutorial. Why are H-bridges considered less efficient?

Darlington H-bridges driving low impedance loads are very inefficient. They drop 2.5 to 3V when carrying
high currents.
MOSFET H-bridges are fine, assuming low enough on-resistance for the load.

You may be thinking of the issue of driving a current-driven motor (low-impedance stepper) with constant voltage. This means very low speeds only, and impractically low motor supply voltages.

Low impedance steppers are designed for current drive, not voltage drive, and have very low inductance
to allow much faster operation. Most steppers have 50 pole-pairs, so require 50 times less inductance
compared to the standard 2-pole DC motor, to go at the same speed with voltage drive. In practice
a combination of low inductance and current drive with high supply voltage overhead is needed to get
steppers up to high speed.

use to AccelStepper it is in void setup

Serial.begin(9600);
  stepper.setEnablePin(8);
  stepper.setMaxSpeed(4000.0);//0
  stepper.setAcceleration(4000.0);//0
  stepper.setCurrentPosition(0); //zero

it is in void loop

if ((stepper.distanceToGo() != 0)) {
    stepper.run();
}

    if (stepper.distanceToGo() == 0)
      {
        delay(500);
        pos = -pos;
        stepper.moveTo(pos);
      }
    stepper.run();

jpaulo69:
use to AccelStepper it is in void setup

This seems to be a repeat of the question in your own Thread.

How is that going to help the OP ?

...R

Robin2:
This seems to be a repeat of the question in your own Thread.

How is that going to help the OP ?

...R

This works, to get an idea of how to use the library (in my topic I want something more specific)