Skip to Content

Tutorial de TB6600 Stepper Motor Driver con Arduino

Tutorial de TB6600 Stepper Motor Driver con Arduino

En este tutorial, aprenderás a controlar un motor paso a paso con el driver microstepping TB6600 y Arduino. Este driver es fácil de usar y puede controlar grandes motores paso a paso como un NEMA 23 de 3 A.

I have included a wiring diagram and 3 example codes. In the first example, I will show you how you can use this stepper motor driver without an Arduino library.

This example can be used to let the motor spin continuously. In the second example, we will look at how you can control the speed, number of revolutions, and spinning direction of the stepper motor.

Finally, we will take a look at the AccelStepper library. This library is fairly easy to use and allows you to add acceleration and deceleration to the movement of the stepper motor.

Después de cada ejemplo, desgloso y explico cómo funciona el código, por lo que no deberías tener problemas para modificarlo y adaptarlo a tus necesidades.

Si tiene alguna pregunta, deje un comentario a continuación.

Si quiere saber más sobre otros controladores de motores paso a paso, los artículos siguientes pueden resultarle útiles:

We also have an article on How To Use the TB6600 Stepper Motor Driver with ESP32 if you want to work with an ESP32 microcontroller instead.

Suministros

Componentes de hardware

Controlador de motor paso a paso TB6600× 1Amazon
Motor paso a pasoMotor paso a paso NEMA 23× 1Amazon
Arduino Uno Rev 3Arduino Uno Rev3× 1Amazon
Alimentación (24/36 V)× 1Amazon
Cables de puente× 4Amazon
Cable USB tipo A/B× 1Amazon

Herramientas

PelacablesAmazon
Destornillador pequeñoAmazon
Alicates de presión autoajustables (recomendados)*.Amazon
Surtido de casquillos (recomendado)*Amazon

*Hackaday escribió un magnífico artículo sobre las ventajas de utilizar virolas de cable (también conocidas como manguitos finales).

Software

Arduino IDEArduino IDE

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.

Sobre el conductor

El microcontrolador TB6600 está construido en torno al CI TB6600HG de Toshiba y puede utilizarse para controlar motores paso a paso bipolares de dos fases.

Con una corriente máxima de 3,5 A continuos, el controlador TB6600 puede utilizarse para controlar motores paso a paso bastante grandes, como un NEMA 23. Asegúrese de no conectar al controlador motores paso a paso con una corriente superior a 3,5 A.

El controlador tiene varias funciones de seguridad incorporadas, como la protección contra la sobrecorriente, el apagado por baja tensión y el sobrecalentamiento.

Puede encontrar más especificaciones en la siguiente tabla. Tenga en cuenta que las especificaciones y dimensiones exactas pueden diferir ligeramente entre fabricantes. Consulte siempre la hoja de datos de su controlador en particular, antes de conectar la alimentación.

Especificaciones del TB6600

Tensión de funcionamiento9 - 42 V
Corriente de salida máxima4,5 A por fase, 5,0 A de pico1
Resolución de micropasoscompleto, 1/2, 1/4, 1/8 y 1/162
ProtecciónDesconexión por baja tensión, protección contra sobrecalentamiento y sobrecorriente
Dimensiones96 x 72 x 28/36 mm
Distancia entre agujeros88, ⌀ 5 mm
CosteComprobar el precio

1 Estas son las especificaciones del CI TB6600HG, el driver en sí tiene una corriente máxima de 3,5 A y 4,0 A de pico.
2 Véase el comentario sobre los drivers TB6600 falsos/actualizados más abajo.

Para más información, puede consultar la hoja de datos y el manual que aparecen a continuación:

Controladores falsos o "actualizados" del TB6600

Hace poco desmonté uno de los controladores TB6600 que pedí y descubrí que en realidad no utilizaba un chip TB6600HG. En su lugar, utilizaba un chip TB67S109AFTG mucho más pequeño, también fabricado por Toshiba. El rendimiento y las especificaciones de estos chips son similares, pero el TB6600HG tiene una mayor capacidad de corriente de pico (hasta 5 A) y es un chip mucho más grande con mejor disipación térmica en general.

There is a very simple way to check if your driver uses a TB6600HG chip or a TB67S109AFTG chip, the TB6600HG only supports up to 1/16 microstepping (see datasheet), whereas the TB67S109AFTG goes to 1/32. The main reason manufacturers switched over to this other chip is probably price. Below you can find links to the chips on LCSC.com which shows that the TB67S109AFTG is around $1.50 cheaper.

TB6600HG: https://lcsc.com/product-detail/Motor-Drivers_TOSHIBA_TB6600HG_TB6600HG_C66042.html
TB67S109AFTG: https://lcsc.com/product-detail/Motor-Drivers_TOSHIBA_TB67S109AFTG_TB67S109AFTG_C92125.html

Puedes comprar drivers TB6600 genuinos en Amazon, como esta placa de driver de 4 ejes, pero la mayoría utiliza el chip TB67S109AFTG. Se puede decir que utiliza el chip TB6600HG de los pines que sobresalen de la PCB y también sólo va hasta 1/16 microstepping.

Jim from embeddedtronicsblog did some testing on the TB67S109AFTG drivers and found that the stepper motors ran nicer than with the TB6600 drivers. So should you be going for a genuine TB6600 or the ‘upgrade’? I would say it depends on whether you really need the high current output or if you rather prefer up to 1/32 microstepping.

Puede encontrar la hoja de datos del TB67S109AFTG a continuación.

Alternativas

Tenga en cuenta que el TB6600 es un controlador analógico. En los últimos años, los controladores digitales como el DM556 o el DM542 son mucho más asequibles. Los controladores digitales suelen ofrecer un rendimiento mucho mayor y un funcionamiento más silencioso. Se pueden cablear y controlar de la misma manera que el TB6600, por lo que puede actualizar fácilmente su sistema más adelante.

He utilizado los controladores DM556 para mi router CNC de bricolaje y han funcionado muy bien durante varios años.

TB6600 vs TB6560

Al comprar un controlador de motor paso a paso TB6600, probablemente también se encontrará con el controlador TB6560, ligeramente más barato. Este driver puede ser controlado con el mismo código/cableado, pero hay algunas diferencias clave.

TB6560TB6600
Tensión de funcionamiento10 - 35 VDC, se recomienda 24 VDC9 - 42 VDC, se recomienda 36 VDC
Corriente de salida máxima3 A por fase, 3,5 A de pico3,5 A por fase, 4 A de pico
# Configuración actual148
Resolución de micropasoscompleto, 1/2, 1/8 y 1/16completo, 1/2, 1/4, 1/8, 1/16 y 1/32*.
Frecuencia del reloj15 kHz200 kHz
CosteComprobar el precioComprobar el precio

*Conductores que utilizan el chip TB67S109AFTG.

Así que las principales diferencias son el mayor voltaje máximo, la mayor corriente máxima, y hasta 1/32 microstepping. El TB6600 también tiene un mejor disipador de calor y un mejor factor de forma general. Si quieres controlar motores paso a paso más grandes o necesitas una mayor resolución, te recomiendo que elijas el TB6600.

Cableado - Conexión del TB6600 al motor paso a paso y al Arduino

Conectar el controlador de motor paso a paso TB6600 a un Arduino y a un motor paso a paso es bastante fácil. El siguiente diagrama de cableado muestra las conexiones que debes realizar.

Diagrama de cableado del controlador de motor paso a paso TB6600 con Arduino-UNO
Controlador de motor paso a paso TB6600 con Arduino UNO y diagrama de cableado del motor paso a paso

En este tutorial, conectaremos el controlador en una configuración de cátodo común. Esto significa que conectamos todos los lados negativos de las conexiones de la señal de control a tierra.

Las conexiones también se indican en la tabla siguiente:

Conexiones del TB6600

TB6600Conexión
VCC9 - 42 VDC
GNDTierra de la fuente de alimentación
ENA-No conectado
ENA+No conectado
DIR-Arduino GND
DIR+Pin 2 Arduino
PUL-Arduino GND
PUL+Pin 3 Arduino
A-, A+Bobina 1 motor paso a paso
B-, B+Bobina 2 motor paso a paso

Observe que hemos dejado los pines de habilitación (ENA- y ENA+) desconectados. Esto significa que el pin de habilitación siempre está en LOW y el driver siempre está habilitado.

¿Cómo determinar el cableado correcto del motor paso a paso?

Si no puedes encontrar la hoja de datos de tu motor paso a paso, puede ser difícil averiguar qué color de cable va donde. Yo uso el siguiente truco para determinar cómo conectar motores paso a paso bipolares de 4 cables:

Lo único que tienes que identificar son los dos pares de cables que se conectan a las dos bobinas del motor. Los cables de una bobina se conectan a A- y A+ y el otro a B- y B+, la polaridad no importa.

Para encontrar los dos cables de una bobina, haga lo siguiente con el motor desconectado:

  1. Intenta hacer girar el eje del motor paso a paso con la mano y fíjate en lo difícil que es girar.
  2. Ahora escoge un par de cables al azar del motor y toca los extremos desnudos entre sí.
  3. A continuación, mientras mantiene los extremos juntos, intente hacer girar el eje del motor paso a paso de nuevo.

Si siente mucha resistencia, ha encontrado un par de cables de la misma bobina. Si todavía puede girar el eje libremente, pruebe con otro par de cables. Ahora conecte las dos bobinas a las clavijas mostradas en el diagrama de cableado anterior.

(Si todavía no está claro, por favor deja un comentario abajo, también se puede encontrar más información en la wiki de RepRap.org)

Ajustes del micropaso del TB6600

Los motores paso a paso suelen tener un tamaño de paso de 1,8° o 200 pasos por revolución, esto se refiere a pasos completos. Un controlador de micropasos como el TB6600 permite resoluciones más altas al permitir ubicaciones de pasos intermedios. Esto se consigue energizando las bobinas con niveles de corriente intermedios.

Por ejemplo, al conducir un motor en el modo de 1/2 paso, el motor de 200 pasos por revolución dará 400 micropasos por revolución.

Puede cambiar la configuración de los micropasos del TB6600 activando o desactivando los interruptores DIP del controlador. Consulte la tabla siguiente para obtener más detalles. Asegúrese de que el controlador no está conectado a la corriente cuando ajuste los interruptores DIP.

Tenga en cuenta que estos ajustes son para los controladores de micropasos 1/32 con el chip TB67S109AFTG. Casi todos los drivers TB6600 que se pueden comprar hoy en día utilizan este chip. Normalmente también puedes encontrar una tabla con los ajustes de micropaso y corriente en el cuerpo del driver.

Mesa de micropasos

S1S2S3Resolución de micropasos
ENENENNC
ENENOFFPaso completo
ENOFFEN1/2 paso
OFFENEN1/2 paso
ENOFFOFF1/4 de paso
OFFENOFF1/8 paso
OFFOFFENPaso 1/16
OFFOFFOFF1/32 paso

En general, un ajuste de micropasos más pequeño dará lugar a un funcionamiento más suave y silencioso. Sin embargo, limitará la velocidad máxima que puede alcanzar al controlar el controlador del motor paso a paso con un Arduino.

Configuración actual del TB6600

Puedes ajustar la corriente que va al motor cuando está en marcha activando o desactivando los interruptores DIP S4, S5 y S6. Recomiendo empezar con un nivel de corriente de 1 A. Si tu motor pierde pasos o se cala, siempre puedes aumentar el nivel de corriente más adelante.

Tabla actual

Corriente (A)Corriente máximaS4S5S6
0.50.7ENENEN
1.01.2ENOFFEN
1.51.7ENENOFF
2.02.2ENOFFOFF
2.52.7OFFENEN
2.82.9OFFOFFEN
3.03.2OFFENOFF
3.54.0OFFOFFOFF

Código de ejemplo del TB6600 básico con Arduino

Con el siguiente sketch, puedes probar la funcionalidad del driver del motor paso a paso. Simplemente deja que el motor gire a una velocidad fija.

Puedes subir el código a tu Arduino utilizando el IDE de Arduino. Para este ejemplo específico, no es necesario instalar ninguna biblioteca.

En el siguiente ejemplo veremos cómo controlar la velocidad, el número de revoluciones y el sentido de giro del motor paso a paso.

Puede copiar el código haciendo clic en el botón de la esquina superior derecha del campo de código.

/* Example sketch to control a stepper motor with TB6600 stepper motor driver 
  and Arduino without a library: continuous rotation. 
  More info: https://www.makerguides.com */

// Define stepper motor connections:
#define dirPin 2
#define stepPin 3

void setup() {
  // Declare pins as output:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  // Set the spinning direction CW/CCW:
  digitalWrite(dirPin, HIGH);
}

void loop() {
  // These four lines result in 1 step:
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(500);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(500);
}

As you can see, the code is very short and simple. You don’t need much to get a stepper motor spinning!

Explicación del código

El sketch comienza definiendo los pines de paso (PUL+) y dirección (DIR+). Los conecté a los pines 3 y 2 de Arduino.

La declaración #define se utiliza para dar un nombre a un valor constante. El compilador sustituirá cualquier referencia a esta constante por el valor definido cuando se compile el programa. Por lo tanto, en todos los casos en los que se menciona dirPinel compilador lo sustituirá por el valor 2 al compilar el programa.

// Define stepper motor connections:
#define dirPin 2
#define stepPin 3

En el setup() del código, todos los pines de control del motor se declaran como OUTPUT digital con la función pinMode(pin, mode). También establezco el sentido de giro del motor paso a paso poniendo el pin de dirección en HIGH. Para ello utilizamos la función digitalWrite(pin, value).

void setup() {
  // Declare pins as output:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);

  // Set the spinning direction CW/CCW:
  digitalWrite(dirPin, HIGH);
}

En el loop() section of the code, we let the driver execute one step by sending a pulse to the step pin. Since the code in the loop section is repeated continuously, the stepper motor will start to rotate at a fixed speed.

void loop() {
  // These four lines result in 1 step:
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(500);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(500);
}

In the next example, you will see how you can change the speed of the motor.

2. Ejemplo de código para controlar la rotación, la velocidad y la dirección

The following sketch controls both the speed, the number of revolutions and the spinning direction of the stepper motor.

/* Example sketch to control a stepper motor with TB6600 stepper motor driver 
   and Arduino without a library: number of revolutions, speed and direction. 
   More info: https://www.makerguides.com */

// Define stepper motor connections and steps per revolution:
#define dirPin 2
#define stepPin 3
#define stepsPerRevolution 1600

void setup() {
  // Declare pins as output:
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  // Set the spinning direction clockwise:
  digitalWrite(dirPin, HIGH);

  // Spin the stepper motor 1 revolution slowly:
  for (int i=0; i < stepsPerRevolution; i++) {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }

  delay(1000);

  // Set the spinning direction counterclockwise:
  digitalWrite(dirPin, LOW);

  // Spin the stepper motor 1 revolution quickly:
  for (int i=0; i < stepsPerRevolution; i++) {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }

  delay(1000);

  // Set the spinning direction clockwise:
  digitalWrite(dirPin, HIGH);

  // Spin the stepper motor 5 revolutions fast:
  for (int i=0; i < 5 * stepsPerRevolution; i++) {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }

  delay(1000);

  // Set the spinning direction counterclockwise:
  digitalWrite(dirPin, LOW);

  // Spin the stepper motor 5 revolutions fast:
  for (int i=0; i < 5 * stepsPerRevolution; i++) {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }

  delay(1000);
}

Cómo funciona el código

Además de establecer las conexiones del motor paso a paso, también definí un stepsPerRevolution constante. Como he configurado el driver en modo microstepping 1/8 lo he puesto a 1600 pasos por revolución (para un motor paso a paso estándar de 200 pasos por revolución). Cambia este valor si tu configuración es diferente.

// Define stepper motor connections and steps per revolution:
#define dirPin 2
#define stepPin 3
#define stepsPerRevolution 1600

El setup() es lo mismo que antes, sólo que no necesitamos definir el sentido de giro todavía.

En el loop() del código, dejamos que el motor gire una revolución lentamente en la dirección CW y una revolución rápidamente en la dirección CCW. Luego, dejamos que el motor gire 5 revoluciones en cada dirección con una velocidad alta. Entonces, ¿cómo se controla la velocidad, la dirección de giro y el número de revoluciones?

  // Set the spinning direction clockwise:
  digitalWrite(dirPin, HIGH);

  // Spin the stepper motor 1 revolution slowly:
  for(int i=0; i < stepsPerRevolution; i++)
  {
    // These four lines result in 1 step:
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }

Control spinning direction

Para controlar el sentido de giro del motor paso a paso ponemos el pin DIR (dirección) en HIGH o LOW. Para ello utilizamos la función digitalWrite(). Dependiendo de cómo hayas conectado el motor paso a paso, al poner el pin DIR en alto el motor girará en sentido de la marcha o en sentido contrario.

Control number of steps or revolutions

In this example sketch, the for loops control the number of steps the stepper motor will take. The code within the for loop results in 1 (micro)step of the stepper motor. Because the code in the loop is executed 1600 times (stepsPerRevolution), this results in 1 revolution. In the last two loops, the code within the for loop is executed 8000 times, which results in 8000 (micro)steps or 5 revolutions.

Tenga en cuenta que puede cambiar el segundo término del bucle for por el número de pasos que desee. for(int i=0; i<800; i++) resultaría en 800 pasos o media revolución.

Control speed

La velocidad del motor paso a paso viene determinada por la frecuencia de los pulsos que enviamos al pin STEP. Cuanto mayor sea la frecuencia, más rápido funcionará el motor. Puedes controlar la frecuencia de los pulsos cambiando delayMicroseconds() en el código. Cuanto más corto sea el retardo, mayor será la frecuencia y más rápido funcionará el motor.

Instalación de la biblioteca AccelStepper

La librería AccelStepper escrita por Mike McCauley es una librería impresionante para usar en tu proyecto. Una de las ventajas es que soporta la aceleración y la desaceleración, pero tiene un montón de otras funciones agradables también.

Puede descargar la última versión de esta biblioteca aquí o hacer clic en el botón de abajo.

Puedes instalar la librería yendo a Sketch > Incluir librería > Añadir librería .ZIP ... en el IDE de Arduino.

Otra opción es ir a Herramientas > Administrar Bibliotecas... o teclear Ctrl + Shift + I en Windows. El Administrador de Bibliotecas se abrirá y actualizará la lista de bibliotecas instaladas.

Arduino IDE manage or install libraries
Install library

Puedes buscar 'accelstepper' y buscar la biblioteca de Mike McCauley. Seleccione la última versión y luego haga clic en Instalar.

Install AccelStepper library via Arduino IDE
Install AccelStepper library

3. Código de ejemplo de AccelStepper

Con el siguiente sketch, puedes añadir aceleración y desaceleración a los movimientos del motor paso a paso, sin ninguna codificación complicada. En el siguiente ejemplo, el motor irá de un lado a otro con una velocidad de 1000 pasos por segundo y una aceleración de 500 pasos por segundo al cuadrado.

Tenga en cuenta que todavía estoy utilizando el controlador en el modo 1/8 microstepping. Si estás usando una configuración diferente, juega con los ajustes de velocidad y aceleración.

/* Example sketch to control a stepper motor with TB6600 stepper motor driver, 
  AccelStepper library and Arduino: acceleration and deceleration. 
  More info: https://www.makerguides.com */

// Include the AccelStepper library:
#include "AccelStepper.h"

// Define stepper motor connections and motor interface type. 
// Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
  // Set the maximum speed and acceleration:
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(500);
}

void loop() {
  // Set the target position:
  stepper.moveTo(8000);
  // Run to target position with set speed and acceleration/deceleration:
  stepper.runToPosition();

  delay(1000);

  // Move back to zero:
  stepper.moveTo(0);
  stepper.runToPosition();

  delay(1000);
}

Explicación del código

El primer paso es incluir la biblioteca con #include <AccelStepper.h>.

// Include the AccelStepper library:
#include "AccelStepper.h"

El siguiente paso es definir las conexiones entre el TB6600 y el Arduino y el tipo de interfaz del motor. El tipo de interfaz del motor debe establecerse en 1 cuando se utiliza un controlador de paso y dirección. Puedes encontrar los otros tipos de interfaz aquí.

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

A continuación, hay que crear una nueva instancia de la clase AccelStepper con el tipo de interfaz del motor y las conexiones adecuadas.

En este caso, he llamado al motor paso a paso 'stepper', pero también puedes utilizar otros nombres, como 'z_motor' o 'liftmotor', etc. AccelStepper liftmotor = AccelStepper(motorInterfaceType, stepPin, dirPin);. El nombre que le des al motor paso a paso se utilizará más tarde para establecer la velocidad, la posición y la aceleración de ese motor en particular. Puedes crear múltiples instancias de la clase AccelStepper con diferentes nombres y pines. Esto le permite controlar fácilmente 2 o más motores paso a paso al mismo tiempo.

// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

En la función setup(), además de la velocidad máxima, necesitamos definir la aceleración/desaceleración. Para ello utilizamos la función setMaxSpeed() y setAcceleration().

void setup() {
  // Set the maximum speed and acceleration:
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(500);
}

En la sección de bucle del código, dejamos que el motor gire un número predefinido de pasos. La función stepper.moveTo() se utiliza para fijar la posición del objetivo (en pasos). La función stepper.runToPostion() mueve el motor (con aceleración/deceleración) a la posición objetivo y se bloquea hasta que esté en la posición objetivo. Debido a que esta función es de bloqueo, no deberías usarla cuando necesites controlar otras cosas al mismo tiempo.

  // Set the target position:
  stepper.moveTo(8000);
  // Run to target position with set speed and acceleration/deceleration:
  stepper.runToPosition();

If you would like to see more examples for the AccelStepper libary, check out my tutorial on How to control a stepper motor with A4988 driver and Arduino.

Conclusión

En este artículo, he mostrado cómo controlar un motor paso a paso con el controlador de motor paso a paso TB6600 y Arduino. Espero que lo hayas encontrado útil e informativo. Si lo has hecho, ¡compártelo con un amigo al que también le guste la electrónica y hacer cosas!

Me encantaría saber qué proyectos planeas construir (o ya has construido) con este controlador. Si tienes alguna pregunta, sugerencia, o si crees que faltan cosas en este tutorial, por favor deja un comentario abajo.

Tenga en cuenta que los comentarios son retenidos por la moderación para evitar el spam.

Licencia Creative Commons

Don Mirabella

Monday 4th of December 2023

Excellent tutorial! I have recently upgraded my desktop CNC mill to use these TB6600 drivers. While troubleshooting I was hoping to use the two LED's on the drives to gather information about their activity. I assumed one was power and the other the step pulse, but that doesn't turn out to be the case. Can you tell me the function of the two LED's? I've not found the answer in my own research.

Stefan Maetschke

Monday 4th of December 2023

One is power and the second one is an alarm LED that comes on if power levels are exceeded. But the alarm LED seems to flicker for other reasons as well https://forum.arduino.cc/t/tb6600-alarm-led/592020 https://www.youtube.com/watch?v=clMGM8q3e74&ab_channel=DesignsByPhil

Brook

Saturday 14th of October 2023

Thank you for a very clear, educational tutorial. This helped so much!

Stefan Maetschke

Saturday 14th of October 2023

Glad to hear that it was useful.

Doug

Wednesday 11th of October 2023

How both these pages be right? https://www.makerguides.com/tb6600-stepper-motor-driver-arduino-tutorial/ Current (A) Peak current S4 S5 S6 0.5 0.7 ON ON ON 1.0 1.2 ON OFF ON 1.5 1.7 ON ON OFF 2.0 2.2 ON OFF OFF 2.5 2.7 OFF ON ON 2.8 2.9 OFF OFF ON 3.0 3.2 OFF ON OFF 3.5 4.0 OFF OFF OFF https://makerhardware.net/wiki/doku.php?id=electronics:tb6600_stepper_motor_driver Current (A) S4 S5 S6 0.5 ON ON ON 1 OFF ON ON 1.5 ON OFF ON 2 OFF OFF ON 2.5 ON ON OFF 3 OFF ON OFF 3.5 ON OFF OFF 4 OFF OFF OFF

Stefan Maetschke

Wednesday 11th of October 2023

Thanks for pointing that out. Much appreciated. I checked three manuals and they all agree with the numbers on MakerGuides. https://www.makerguides.com/wp-content/uploads/2019/10/TB6600-Manual.pdf http://www.handsontec.com/dataspecs/module/TB6600-Motor-Driver.pdf https://usermanual.wiki/Document/TB660020User20Guide20V12.1280230395/html So, I would assume MakerGuides is correct here but I did verify buy measuring it myself.

Zee

Friday 11th of August 2023

What is going on with all of these excessive ads? Too annoying!

Stefan

Friday 11th of August 2023

Agreed, but somehow the authors need to get paid and currently it is ads. Sorry. But I aim to reduce the ad frequency. They are annoying, indeed.

Mejse

Monday 27th of February 2023

Thank you for the tutorial! I'm totally new to working with arduino, drivers and stepper motors, but you explained it in a way that even I could understand! One quick (maybe stupid) question: in the microstep table it says that when all three switches are on the microstep resolution is "NC" - what does that mean? Thank you

Stefan Maetschke

Saturday 21st of October 2023

Hi, NC stands for "Normally Closed".