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:
- Tutorial de TB6560 Stepper Motor Driver con Arduino
- Cómo controlar un motor paso a paso con el driver A4988 y Arduino
- Motor paso a paso 28BYJ-48 con controlador ULN2003 y tutorial de Arduino
- Cómo controlar un motor paso a paso con Arduino Motor Shield Rev3
- Control a Stepper Motor with an IR Remote
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 | × 1 | Amazon | |
Motor paso a paso NEMA 23 | × 1 | Amazon | |
Arduino Uno Rev3 | × 1 | Amazon | |
Alimentación (24/36 V) | × 1 | Amazon | |
Cables de puente | × 4 | Amazon | |
Cable USB tipo A/B | × 1 | Amazon |
Herramientas
Pelacables | Amazon | ||
Destornillador pequeño | Amazon | ||
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
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 funcionamiento | 9 - 42 V |
Corriente de salida máxima | 4,5 A por fase, 5,0 A de pico1 |
Resolución de micropasos | completo, 1/2, 1/4, 1/8 y 1/162 |
Protección | Desconexión por baja tensión, protección contra sobrecalentamiento y sobrecorriente |
Dimensiones | 96 x 72 x 28/36 mm |
Distancia entre agujeros | 88, ⌀ 5 mm |
Coste | Comprobar 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.
TB6560 | TB6600 | |
---|---|---|
Tensión de funcionamiento | 10 - 35 VDC, se recomienda 24 VDC | 9 - 42 VDC, se recomienda 36 VDC |
Corriente de salida máxima | 3 A por fase, 3,5 A de pico | 3,5 A por fase, 4 A de pico |
# Configuración actual | 14 | 8 |
Resolución de micropasos | completo, 1/2, 1/8 y 1/16 | completo, 1/2, 1/4, 1/8, 1/16 y 1/32*. |
Frecuencia del reloj | 15 kHz | 200 kHz |
Coste | Comprobar el precio | Comprobar 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.
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
TB6600 | Conexión |
---|---|
VCC | 9 - 42 VDC |
GND | Tierra 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:
- Intenta hacer girar el eje del motor paso a paso con la mano y fíjate en lo difícil que es girar.
- Ahora escoge un par de cables al azar del motor y toca los extremos desnudos entre sí.
- 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
S1 | S2 | S3 | Resolución de micropasos |
---|---|---|---|
EN | EN | EN | NC |
EN | EN | OFF | Paso completo |
EN | OFF | EN | 1/2 paso |
OFF | EN | EN | 1/2 paso |
EN | OFF | OFF | 1/4 de paso |
OFF | EN | OFF | 1/8 paso |
OFF | OFF | EN | Paso 1/16 |
OFF | OFF | OFF | 1/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áxima | S4 | S5 | S6 |
---|---|---|---|---|
0.5 | 0.7 | EN | EN | EN |
1.0 | 1.2 | EN | OFF | EN |
1.5 | 1.7 | EN | EN | OFF |
2.0 | 2.2 | EN | OFF | OFF |
2.5 | 2.7 | OFF | EN | EN |
2.8 | 2.9 | OFF | OFF | EN |
3.0 | 3.2 | OFF | EN | OFF |
3.5 | 4.0 | OFF | OFF | OFF |
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 dirPin
el 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.
Puedes buscar 'accelstepper' y buscar la biblioteca de Mike McCauley. Seleccione la última versión y luego haga clic en Instalar.
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.
Esta obra está bajo una licencia de Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Otros enlaces útiles de la web:
Benne is professional Systems Engineer with a deep expertise in Arduino and a passion for DIY projects.
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".