Qué hace que los controladores de motor paso a paso TMC2208 sean silenciosos

Hace un tiempo hice un pequeño experimento para comparar el nivel de sonido entre los controladores de motor paso a paso TMC2208 y A4988. En ese momento, los controladores A4988 se usaban más comúnmente en impresoras 3D y otros dispositivos CNC de pasatiempo. Desde entonces, la mayoría de los fabricantes de impresoras 3D y láser CNC se han movido hacia la sustitución de al menos los motores de los ejes X e Y con el controlador de motor paso a paso silencioso TMC2208 o alguna otra variante de controlador de motor silencioso. Una pregunta que surgió bastante en los comentarios del video fue cómo estos controladores logran impulsar los motores con una reducción de sonido tan significativa y si hubo alguna compensación.

Entonces, en lugar de solo mostrarle algunos diagramas, pensé en configurar el motor y los controladores nuevamente e intentar mostrárselos a través de medidas reales.

Aquí está mi video de la prueba: siga leyendo para ver el informe, aunque el video es la mejor manera de escuchar la diferencia de sonido por sí mismo.

Lo que necesita para configurar su propia prueba

Para configurar su propia prueba como lo he hecho yo, necesitará algunos componentes básicos:

Voy a usar un multímetro Pokit para tomar medidas de corriente usando la función de osciloscopio. No necesita uno de estos si solo quiere escuchar la diferencia de sonido o jugar con el control de los motores.

Comprender cómo funcionan los motores paso a paso

Hay muy buenos recursos en línea para explicar cómo funcionan los motores paso a paso, así que no voy a entrar en demasiados detalles. La explicación simple es que los motores paso a paso tienen varios polos y el controlador energiza las bobinas del motor para alinear el rotor con estos polos en una secuencia para girarlo.

La forma más sencilla de hacer esto es encender un polo y apagar el otro, haciendo que el rotor salte de un polo a otro. Esto es simple de hacer eléctricamente pero causa la mayor cantidad de ruido ya que induce mucha vibración dentro del motor.

Podemos reducir el ruido energizando lentamente una bobina mientras desactivamos la segunda bobina para que pasemos suavemente el rotor de un paso al siguiente. La forma más óptima de hacer esto sin producir ninguna vibración es produciendo una onda sinusoidal.

Cuanto mejor pueda replicar el controlador del motor paso a paso una forma de onda sinusoidal, más silencioso podrá hacer funcionar el motor. Pero replicar perfectamente una onda sinusoidal requiere una electrónica más costosa, por lo que hay un poco de compensación.

Hay algunas otras fuentes de ruido o zumbido en un motor paso a paso causado por cosas como campos magnéticos, ondulación de corriente y frecuencia de corte. Pero su contribución es generalmente significativamente menor que esto.

Entonces, echemos un vistazo a la forma de onda actual que producen los dos controladores.

Configuración y código de la prueba del controlador TMC2208

Tengo una configuración similar a la última prueba con los dos controladores conectados de la misma manera a un Arduino.

Ambos controladores están conectados a las salidas digitales 3 y 4 del Arduino para el control de pasos y direcciones, respectivamente. Entonces solo necesitamos enchufar nuestro motor en el que queremos probar. También agregué un potenciómetro de 10K, conectado al pin analógico A0, para ajustar el tiempo de retardo entre pulsos de paso, que a su vez controlará la velocidad del motor.

El boceto de Arduino es muy básico, simplemente asignando los modos de pin en la función de configuración y luego recorriendo la lectura en la posición del potenciómetro y acelerando el motor con el retardo de tiempo medido.

//The DIY Life //Michael Klements //30 April 2020  int stepPin = 3;          //Define travel stepper motor step pin int dirPin = 4;           //Define travel stepper motor direction pin int motSpeed = 5;         //Initial motor speed (delay between pules, so a smaller delay is faster)  void setup()  {   pinMode(stepPin, OUTPUT);                 //Define pins and set direction   pinMode(dirPin, OUTPUT);   digitalWrite(dirPin, HIGH); }  void loop()  {   motSpeed = map(analogRead(A0),0,1023,50,1);           //Read in potentiometer value from A0, map to a delay between 1 and 50 milliseconds   digitalWrite(stepPin, HIGH);                          //Step the motor with the set delay   delay(motSpeed);   digitalWrite(stepPin, LOW);   delay(motSpeed); }

Prueba de las formas de onda de los controladores de motor paso a paso A4988 y TMC2208

Vamos a comenzar con el controlador A4988 observando primero el nivel de sonido a diferentes velocidades.

El nivel de sonido en todo el rango de velocidades fue un promedio de alrededor de 50-60dB. Obviamente, el sonido estaba siendo amplificado por el escritorio de madera y no sería tan fuerte con un soporte de amortiguación de vibraciones adecuado, pero de esta manera se obtiene una buena idea de la mejora.

Para medir la forma de onda, usaré este multímetro y osciloscopio Pokit y lo conectaré en serie con una de las bobinas del motor para medir la corriente que fluye a través de la bobina del motor.

En el video, puede notar que el motor suena un poco raro cuando está conectado y el osciloscopio no mide nada. Esto se debe a que el osciloscopio abre el circuito cuando no está tomando lecturas. Entonces, el motor efectivamente solo tiene una bobina conectada al variador. Verá que el eje ya no gira y simplemente salta en el mismo lugar. Entonces, solo nos interesa el sonido que hace el motor durante las lecturas después de que presioné el botón rojo de grabación.

A4988 en modo de paso completo

Con el controlador A4988 funcionando en modo de paso completo estándar, puede ver claramente que el controlador está produciendo una onda muy cuadrada.

Tampoco importa si aumentamos la velocidad del motor, aún obtenemos una onda cuadrada similar que se repite más a menudo en el mismo período de tiempo. Entonces, esta forma de onda obviamente está bastante lejos de una onda sinusoidal y, por lo tanto, produce la mayor vibración dentro del motor, lo que genera la mayor cantidad de ruido.

Ese no es el final del camino para el controlador A4988, en realidad puede producir algo así como una onda sinusoidal a través de micropasos.

El microstepping es esencialmente la capacidad del controlador de energizar parcialmente las bobinas para colocar el rotor en posiciones entre los dos polos, y lo hace de una manera que se asemeja a una onda sinusoidal. Entonces, cuantas más posiciones (micropasos) pueda hacer entre cada polo, mejor se verá su onda sinusoidal.

El A4988 puede hacer micropasos de medio, cuarto, octavo o decimosexto paso tirando de una combinación de tres pines de altura. Entonces, veamos cómo se ven: comenzaremos con el modo de medio paso.

A4988 en modo de medio paso

Con el controlador A4988 funcionando en modo de medio paso, ahora tenemos algo que comienza a parecerse un poco a una onda sinusoidal, pero obviamente todavía hay mucho margen de mejora.

El motor también sonaba como si estuviera funcionando un poco más suave que en el modo de paso completo. Al observar la forma de onda producida, puede ver claramente dos pasos en nuestra onda sinusoidal por encima y por debajo de 0.

A4988 en modo de octavo paso

Ahora intentemos mejorar nuestros resultados con el modo de octavo paso. Entonces, en esta prueba, ahora deberíamos tener ocho incrementos entre el cero y el máximo en nuestra onda sinusoidal.

Lo primero que notará es que la onda sinusoidal ya no se ajusta a nuestro marco de tiempo. Esto se debe a que el controlador ahora solo se mueve 1 micropaso por cada pulso, por lo que nuestro motor se mueve efectivamente 8 veces más lento que en el modo de paso completo. Entonces, por ejemplo, un motor con 200 pasos por revolución funcionando en el modo de octavo paso ahora tendrá 1600 pasos por revolución.

Si ajustamos la escala de tiempo, podemos ver nuestra onda sinusoidal completa y también notaremos que nuestro motor vuelve a moverse más suave y más lento que cuando estaba en modo de medio paso.

A4988 en modo de decimosexto paso

Por último, probemos el modo de decimosexto paso, que es lo máximo que puede hacer este controlador A4988.

Nuevamente notará que el motor se mueve la mitad de rápido que en el modo de ocho pasos y estamos obteniendo una onda que ahora se parece mucho a una onda sinusoidal.

Ese es ahora el final del camino para nuestro conductor A4988. El micropaso lo ha hecho funcionar mucho más suave y un poco más silencioso, pero sigue siendo bastante ruidoso. Así que cambiemos a nuestro controlador TMC2208 ahora.

TMC2208 ejecutándose en modo heredado

Para compatibilidad con el código del controlador A4988, ejecutaremos el controlador TMC2208 en modo heredado. Básicamente, este modo permite que el controlador actúe como reemplazo directo del controlador A4988.

Si vio el video, en esta etapa probablemente no se dio cuenta de que el motor estaba funcionando. Obviamente, es una mejora significativa con respecto a los controladores A4988 que producían alrededor de 50-60dB. El controlador TMC2208 funciona casi en silencio, incluso cuando cambia la velocidad.

Una gran parte de cómo hace esto es que los controladores TMC producen 256 micropasos, dieciséis veces más que lo que hacen los controladores A4988.

Ahora conectemos el osciloscopio y veamos cómo se ve la forma de onda.

Al igual que con la prueba anterior, el motor hace un poco de ruido cuando el osciloscopio no está tomando medidas, ya que solo tiene un polo conectado, por lo que salta hacia atrás y hacia adelante alrededor del mismo polo. Sin embargo, vuelve a silenciarse cuando el osciloscopio está funcionando.

Al igual que con el controlador A4988, si aumentamos la velocidad, aún obtenemos la misma onda sinusoidal suave, solo que se repite más a menudo en el mismo intervalo de tiempo.

Entonces puede ver que es una onda sinusoidal significativamente mejorada incluso con respecto a la mejor que el controlador A4988 pudo producir.

Reflexiones finales sobre la prueba de controlador de motor TMC2208

Así que ahora tiene una comprensión básica de lo que los controladores TMC2208 hacen de manera diferente para funcionar casi en silencio.

En cuanto a cualquier inconveniente. Hay dos principales.

Una es una ligera reducción en el par incremental, que no suele ser un problema a menos que esté operando cerca de las limitaciones de par del motor.

El segundo no tiene tanto que ver con el motor sino con el microcontrolador que le dice al conductor qué hacer. Como mencioné anteriormente, los micropasos requieren más pulsos del microcontrolador para mover el motor un paso completo. Por lo tanto, ejecutar el modo de decimosexto paso requiere que su microcontrolador emita 16 veces más pulsos de los que necesitaría en el modo de paso completo. Si está haciendo esto en varios motores o mientras realiza otras tareas, su controlador se atasca rápidamente al mantener los motores en funcionamiento y es posible que no pueda mantenerse al día.

Curiosamente, durante las pruebas, estaba ejecutando los controladores con un suministro de 12 V al motor.

Eso es todo por hoy, espero que hayas aprendido algo y hayas encontrado útil esta explicación. Déjame saber en la sección de comentarios para qué has usado estos controladores y echa un vistazo a algunos de mis otros proyectos para obtener ideas.