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.

He incluido un diagrama de cableado y 3 códigos de ejemplo. En el primer ejemplo, le mostraré cómo puede utilizar este controlador de motor paso a paso sin una biblioteca de Arduino. Este ejemplo se puede utilizar para que el motor gire continuamente. En el segundo ejemplo, vamos a ver cómo se puede controlar la velocidad, el número de revoluciones, y la dirección de giro del motor paso a paso. Finalmente, echaremos un vistazo a la librería AccelStepper. Esta librería es bastante fácil de usar y te permite añadir aceleración y desaceleración al movimiento del motor paso a paso.

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:


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 participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.


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.

Hay una forma muy sencilla de comprobar si su controlador utiliza un chip TB6600HG o un chip TB67S109AFTG, el TB6600HG sólo soporta hasta 1/16 de micropaso (ver hoja de datos), mientras que el TB67S109AFTG llega hasta 1/32. La principal razón por la que los fabricantes se han pasado a este otro chip es probablemente el precio. A continuación puede encontrar los enlaces a los chips en LCSC.com que muestra que el TB67S109AFTG es alrededor de 1,50 dólares más barato.

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 de embeddedtronicsblog hizo algunas pruebas con los drivers TB67S109AFTG y descubrió que los motores paso a paso funcionaban mejor que con los drivers TB6600. Así que, ¿debería usted optar por un TB6600 genuino o por la "actualización"? Yo diría que depende de si realmente necesita la salida de alta corriente o si prefiere hasta 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);
}

Como puedes ver, el código es muy corto y súper sencillo. ¡No necesitas mucho para hacer girar un motor paso a paso!

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() del código, dejamos que el driver ejecute un paso enviando un pulso al pin de paso. Como el código en la sección de bucle se repite continuamente, el motor paso a paso comenzará a girar a una velocidad fija. En el siguiente ejemplo, verás cómo puedes cambiar la velocidad del motor.

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

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

Este esquema controla tanto la velocidad, como el número de revoluciones y el sentido de giro del motor paso a paso.

/* 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);
  }

Controla la dirección de giro:

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.

Controla el número de pasos o revoluciones:

En este ejemplo, los bucles for controlan el número de pasos que dará el motor paso a paso. El código dentro del bucle for resulta en 1 (micro)paso del motor paso a paso. Como el código en el bucle se ejecuta 1600 veces (stepsPerRevolution), esto resulta en 1 revolución. En los dos últimos bucles, el código dentro del bucle for se ejecuta 8000 veces, lo que resulta en 8000 (micro)pasos o 5 revoluciones.

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.

Velocidad de control:

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.

Instalar una librería Arduino paso 1 abrir Library Manager

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

Instalación de una biblioteca Arduino paso 2 AccelStepper

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();

Si quieres ver más ejemplos de la librería AccelStepper, echa un vistazo a mi tutorial sobre el controlador del motor paso a paso A4988:


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

Tom

Martes 20 de diciembre de 2022

Como sugerencia, tal vez aclarar que el "digital" vs "analógico" que se refiere es en realidad decimal vs fraccional. 200,400,etc, da pasos fraccionarios de una revolución mientras que 1000,2000,etc da pasos decimales de revolución. Esto se convierte en un problema en aplicaciones de posicionamiento donde 800 pasos/rev en un husillo de bolas de 5mm de paso daría pasos de 0.00625mm, y 1000 pasos en un husillo de 5mm de paso daría pasos de 0.005mm. Para mover un mm a 0,00625 se necesitan 160 pasos. Un mm a 0,005 requiere 200 pasos. Dicho de otro modo, el controlador "analógico" no puede zambullirse correctamente los pasos requeridos. Además, debemos diferenciar entre los controladores "analógicos", como usted los denomina, y los lineales. AMBOS de los drivers discutidos, TB6600 y DM542 son drivers digitales. Llamarlos "analógicos" sería una denominación errónea. Deberían llamarse "fraccionales". El driver digital utiliza un regulador chopper para controlar la potencia del motor. Ambos drivers son circuitos de accionamiento por chopper. Un driver "analógico" sería sinónimo de un driver lineal que utiliza resistencias y condensadores para alimentar el motor. No utiliza un circuito chopper para controlar el motor. Por lo demás, ¡gracias por el artículo!

Kelvin

Miércoles 7 de septiembre de 2022

Gracias por esto Por favor, quiero detener mi motor stemp después de 2 revoluciones completas ¿Cómo puedo hacerlo?

1típico

Viernes 2 de septiembre de 2022

2remnantes

Vicen

Lunes 21 de junio de 2021

¡Genial! He seguido tu tutorial y todo funciona como es de esperar. Tengo aparcado un CNC que he construido debido a problemas de adaptación con los motores paso a paso hasta ahora. Creo que después de este artículo he logrado disipar los problemas que estaba arrastrando con mi CNC, estoy convencido que era una cuestión de controlar los pasos y la corriente de cada motor. Por lo tanto, sólo me queda darte las gracias por tu trabajo y tu correcto trato del tema. Repito GRACIAS.

Dattatray Thatte

Sábado 8 de mayo de 2021

¡Hola!

Es la primera vez que utilizo un controlador Arduino y estoy muy sorprendido de su facilidad de uso. Además, no estoy muy familiarizado con los motores paso a paso y es la primera vez que uso uno de forma independiente. Utilicé los programas de ejemplo para hacer funcionar un motor Nema 23, de 20kg-cm utilizando el controlador Arduino UNO y el controlador TB6600. Nuestra aplicación requiere una rotación continua fwd/rev con una aceleración mínima y una velocidad que va de 400rpm a 600 rpm. Necesito orientación sobre los siguientes puntos: 1. ¿Cómo puedo calcular las rpm exactas del motor? 2. ¿Cómo puedo saber qué ocurre exactamente en las librerías AccelStepper? 3. ¿Cómo puedo establecer los valores de velocidad máxima y aceleración en el programa para obtener la velocidad en el rango mencionado?

Gracias DVT