¿Se puede mejorar el movimiento de un motor a cualquier resolución arbitraria?

Para un proyecto en el que estoy trabajando, necesito la rotación del motor en incrementos extremadamente pequeños; mi resolución deseada es de aproximadamente ~0,15 grados por paso mínimo de rotación.

Por supuesto, la mayoría de los motores de costo razonable no ofrecen tanta precisión, así que estoy tratando de ver si puedo alcanzar mi objetivo usando un movimiento de circuito cerrado con un motor de bajo costo.


Digamos que tengo acceso a los datos de salida de un codificador que puede medir la rotación a mi resolución requerida (es decir, hasta un ángulo incremental de 0,15 grados).

Mi pregunta entonces: ¿es posible conectar un codificador de este tipo (sus datos forman un bucle de retroalimentación) a través de un microcontrolador a un motor y llegar a cualquier resolución deseada arbitraria, o existen límites basados ​​​​en la mecánica del motor para lograr precisión?


En términos de elección del motor para este método en particular:

  • Steppers: Supongo que los steppers no son una opción ya que están diseñados para moverse en pasos de cierto tamaño e, incluso con mi codificador de retroalimentación, no puedo indicarle al stepper que se detenga entre pasos.

  • Motores de CC estándar: ¿Puedo usar los datos de mi codificador y luego hacer un bucle PID para mover el motor y la zona en la posición angular objetivo cada vez? ¿Supongo que el tiempo de asentamiento podría ser demasiado largo?

  • Servos: ¿Podría agregar mi propio control de circuito cerrado usando mi codificador además de, o reemplazando el potenciómetro de un servo barato con baja resolución? Por lo tanto, lograr que se mueva / pise en mi objetivo mejoró la resolución. ¿O hay límites específicos de diseño sobre la precisión con la que se puede mover un servo dado, que no puedo superar?

Si necesita menos de un giro, entonces creo que quiere un servo. Los servos de hobby son bastante delgados en términos de resolución. Este tipo, nikhiljgeorge.wordpress.com/2012/08/24/70 dice que un MX-28 podría cumplir con sus especificaciones.
@GeorgeHerold: Sí, ese servo Dynamixel funciona mejor que mis especificaciones, pero a un costo de $ 220, es difícil de vender; por lo tanto, estoy tratando de ver si puedo resolver el problema controlando dinámicamente un motor existente dado que tengo acceso a un codificador suficientemente preciso.
Es un poco retrospectivo, pero ¿has considerado un sincronizador o un resolutor?
@Dave: Eso ayudaría para la parte de medición (que ya he manejado con un codificador magnético lo suficientemente preciso); Estoy interesado en el movimiento real en sí mismo y hacerlo lo suficientemente preciso.
Si desea un paso a paso, simplemente use engranajes para lograr la resolución que desee. El servo también puede funcionar, pero es más complicado de configurar y el paso a paso es simplemente fácil. Si toma un motor de CC y hace un bucle PID para controlarlo, ha reinventado el servo.
@MichaelFox: Este es el tipo de respuesta que esperaba; gracias. Entonces, si reemplazo el codificador del servo (probablemente un potenciómetro) con el mío y agrego un bucle PID, entonces puedo llegar a cualquier resolución suponiendo que mi codificador pueda resolver hasta ese grado, o ¿hay límites prácticos en la funcionalidad del motor en sí?
Dado que cambiará la velocidad por la fuerza y ​​​​la precisión, puede usar un motor relativamente pequeño para accionar una carga grande lentamente. En alguna resolución, la vibración del motor o cualquier vibración externa limitará la precisión. La solución común es simplemente hacer que la carga sea pesada. Más allá de eso, algún tipo de suspensión para absorber las vibraciones. Mira el mecanismo en un microscopio. Tratar con grandes fuerzas te lleva a la ingeniería mecánica. Es posible que deba preocuparse por el estrés y la tensión que deforman su sistema. De nuevo, hazlo grande y pesado.

Respuestas (5)

No mencionó qué velocidad mínima y máxima se requiere. Supongo que no querrás comprometer ningún parámetro ;-)

Con el controlador paso a paso y micropaso, puede lograr una resolución superior a 0,15 grados. Pero, ¿qué es la precisión? Probablemente esté mal porque hay motor y micropasos no lineales y el par es bajo, el rango dinámico es bajo y los problemas adicionales surgen a muy baja velocidad.

Puede organizarlo como control de bucle doble con codificador de carga en el bucle exterior. Debería mejorar la precisión. Digamos que un codificador de carga de 13 bits y 32 o 64 micropasos con un motor de 400 pasos podría satisfacer una precisión de 0,15.

Gearbox ayuda con el par y la resolución, pero también necesita un control de bucle doble y sin contragolpe si desea cambiar de dirección. Hay un problema adicional si hay un resorte en la caja de cambios. Si es así, entonces hay una fuerza en la salida, necesita un bucle de control de alta frecuencia. Puede ser incluso imposible controlar el sistema cuando debe considerar esta fuerza. Caja de cambios tan cara o volver a la transmisión directa.

Puede sustituir paso a paso con motor trifásico sin escobillas y codificador con o sin caja de cambios y uno o dos codificadores. El rango dinámico y el precio suben. Torque ??? Para alta velocidad necesita un codificador/descodificador de gran ancho de banda. Y es muy difícil depurar una configuración de este tipo en tiempo real, ya que casi no puede usar puntos de interrupción.

Generalmente, cuando se utilizan codificadores, estos deben satisfacer sus necesidades de precisión (y no solo de resolución).

EDITAR (ya que está prohibido comentar): codificador AS5045 / 8: creo que debe considerar principalmente los parámetros INL de no linealidad en el rango de grados que afectan la precisión (peor que 0.15 grados). También el retraso de propagación en el rango de 100 us limita la velocidad, 1RPS = 1/4096 = 244us por tick de posición.

Gracias por abordar los diversos factores. En cuanto a la última sugerencia ("codificador y motor trifásico sin escobillas"), ¿puede ampliar esto un poco? ¿Por qué es preferible esto a paso a paso? ¿Usar un motor de CC sin escobillas (suponiendo que tiene un bucle PID) no implicaría oscilaciones de ida y vuelta sobre el punto objetivo debido a un exceso, hasta que finalmente nos decidamos por el destino? Además, tenga en cuenta que estoy usando un codificador de ancho de banda muy alto (codificadores magnéticos de AMS).
Sin escobillas proporciona un rango dinámico más amplio, el paso a paso está limitado por la velocidad máxima debido al problema de resonancia. La tarea principal es el ajuste de PID para evitar el exceso. Pero no es un problema del motor sin escobillas sino de cualquier sistema con retroalimentación (es decir, PID). ¿Qué es la resolución y la precisión de los codificadores magnéticos? (Visité ams.com pero no logré encontrar rápidamente una lista de comparación más o menos).
Aquí están los codificadores a los que me refiero (ver, por ejemplo, AS5045 o AS5048): ams.com/eng/Products/Position-Sensors/…

Es posible realizar micropasos en motores paso a paso. Si obtiene los controladores correctos, pueden interpolar los pasos en una gran cantidad de subdivisiones. He visto controladores que pueden hacer 256 micropasos por paso. Con 1,4 grados por paso, una cifra bastante estándar, solo necesita ~10 micropasos por paso para obtener 0,15 grados por micropaso. 8 micropasos le darían 0,175 grados por paso, y puede obtener chips controladores de micropasos todo en uno de Allegro que pueden hacer hasta 8 micropasos por paso. Usé el Allegro 3977 hace unos años para un proyecto. 16 o 32 micropasos por paso le darían 0,0875 o 0,04375 grados por paso, lo que debería ser más que suficiente.

Microstepping podría ser la mejor opción aquí si el requisito de torque es bajo. Los micropasos generalmente no mantienen muy bien su posición contra una carga, pero si apenas hay carga, son geniales. Mucha más precisión con cero contragolpe. Básicamente, impulsa el motor con ondas sinusoidales en lugar de cuadrados y se detiene en puntos arbitrarios a lo largo de la forma de onda.
Si agrega control de bucle cerrado además de microstepping, podría ser una solución decente. Agregar uno o dos micropasos para oponerse a un par externo probablemente sea bastante efectivo. Sin embargo, si tiene un codificador fino, también podría usar un motor de CC.
@AaronD: Pero digamos que hay una carga significativa: soy algo nuevo en los motores paso a paso, pero ¿la inercia no hará que los micropasos sean prácticamente inútiles en términos de mantener la precisión? Por ejemplo, este artículo habla de microstepping.
@alex.forencich: Veo esperanza ahora jaja! ¿Ve algún obstáculo en la implementación del control del motor de CC con un codificador (suponga que es satisfactorio) y lograr este tipo de resolución en el movimiento real ? ¿Es el bucle PID el camino a seguir?
Sí, ese artículo es bastante correcto, si lo llevas al extremo. 256/paso probablemente no se pueda lograr con una precisión absoluta. En ese punto, está más preocupado por el ruido mecánico que por la precisión posicional. Pero los números pequeños, como quizás 8 o menos, probablemente funcionen si su carga es pequeña.
Como se menciona en el artículo, los motores paso a paso tienen una especificación para mantener el par. Esta es la carga máxima que el motor puede manejar con pasos completos. Y como muestra la tabla, debe reducir esa especificación si usa micropasos. Si la especificación reducida sigue siendo mayor que la carga, entonces probablemente sea bueno. Si está cerca, es posible que desee agregar un codificador o usar un tipo de motor más grande o diferente.
El problema con los motores de CC con escobillas es que tienen cierta fricción inherente en las escobillas que debe superarse para comenzar a moverse, por lo que, incluso con un codificador adecuado, es difícil colocar el motor donde lo desea. Puede usar una caja de cambios, de modo que su sistema de control pueda recuperarse y volver a ser preciso antes de que la salida se mueva demasiado, pero luego tiene una especificación para la reacción. Si su carga es siempre en la misma dirección, teniendo en cuenta la gravedad, la fricción, la inercia, etc., es posible que la holgura no importe.
Una práctica común cuando se usan codificadores con cajas de engranajes es colocar el codificador en el eje del motor o en algún lugar en el medio del tren de engranajes en lugar de la salida. Luego, puede usar un codificador de menor resolución y mayor velocidad para obtener aproximadamente el mismo efecto. La resolución generalmente cuesta más que la velocidad.
@boardbite Si tiene una carga y desea un micropaso, me preocuparía la deformación torsional del eje, esto introducirá un error entre el paso del motor y el paso de carga. Aunque todo depende de las dimensiones.

Una forma de hacerlo podría ser con una caja de cambios. Por ejemplo, si coloca una caja de cambios de 10:1 en la salida de este motor, entonces 10 revoluciones del motor le darían 1 revolución en la salida de la caja de cambios. De esa manera, si solo puede controlar la posición de su motor dentro de 1 grado, la salida de la caja de engranajes teóricamente podrá posicionarse dentro de 0.1 grados.

Sin embargo, digo teóricamente porque las cajas de cambios tienen juego, que es un término para el juego entre los dientes del engranaje. Esto reduce la precisión de su eje de salida. Las cajas de engranajes industriales enumeran esta holgura como una especificación, que puede tener en cuenta en su diseño. Sin embargo, la mayoría de las cajas de engranajes para aficionados que he visto no especifican la holgura, por lo que es posible que tenga problemas para encontrar una caja de engranajes económica con una holgura lo suficientemente pequeña para su aplicación.

Cuando se especifica, la holgura aparece como la cantidad de variabilidad en el eje de salida. Por ejemplo, una caja de engranajes 10:1 con clasificación servo industrial tiene una reacción de salida de 5 minutos de arco o 0,083 grados.

Las cajas de engranajes pueden tener lo que se denomina juego de engranajes. Esto sucede cuando los dientes del engranaje tienen una distancia corta para no dirigir el par de entrada del acoplamiento al par de salida cuando cambia la dirección de rotación. Esto puede ser especialmente problemático cuando se controla la posición de un servomotor en un sistema de circuito cerrado.
@MichaelKaras Muy cierto. Ahora que lo pienso, creo que será difícil encontrar una caja de cambios económica con una holgura lo suficientemente pequeña para esta aplicación. He actualizado mi respuesta.
Puede agregar otras formas de engranajes, por ejemplo, en el mecanismo que impulsa el motor, para reducir los efectos de la reacción.
los engranajes como los engranajes helicoidales tienen una holgura casi nula, también tienen un par de mantenimiento de posición muy bueno. Otra forma de reducir la reacción es sesgar previamente la dirección para que cualquier movimiento adicional mueva la salida y nunca cambie de dirección después de eso (lo que eliminaría el sesgo que acaba de darle). @MichaelKaras
@KyranF: El método de reducción de la reacción que mencionó: si lo entiendo correctamente, está compensando previamente la reacción agregando un movimiento adicional en la dirección opuesta, ¿verdad?
@boardbite no en la otra dirección, en la dirección en la que pretendes moverte. La reacción solo afecta el movimiento cuando cambia de dirección, al tener una "zona muerta"

¿Has mirado - un ratón?
No el animal, el de apuntar y hacer clic. Concretamente, el estilo antiguo con balón.

La bola reposa contra una barra rodante, que sostiene una gran rueda. La rueda tiene ranuras alrededor del borde exterior y la configuración óptica detecta (cuenta) los agujeros a medida que pasan.

Para su configuración, la "pelota" se convertiría en un pequeño motor eléctrico. Como mencionaron otros, esta configuración sufre de "contragolpe": esto se supera, hasta cierto punto, al tener la configuración de codificación óptica en la rueda final, que podría tener un diámetro realmente grande (dándole la resolución que desea).

¿Problemas? Dependiendo del tamaño y el peso de esta configuración, es posible que haya reemplazado "contragolpe" con "inercia"... corte la alimentación del motor, una rueda grande y pesada puede tardar un tiempo en detenerse. Incluso puede sobrepasar el objetivo, lo que significa que debe invertir el motor y retroceder cierta distancia.
Este es un oscilador amortiguado . Cuanto más estrictos sean sus requisitos de resolución, más probable es que el sistema detecte un error de posición, lo que provocará "correcciones" constantes.

Los requisitos son:

  • precisión de posicionamiento de 0,15 grados
  • carga significativa
  • fácilmente disponible/barato

Algunas cosas a considerar:

  • Debe obtener la información de posición lo más cerca posible de la carga, para compensar la deformación torsional y otras imperfecciones.
  • Un motor de bajas revoluciones, BLDC de polo alto o similar sería la alternativa sugerida si no opta por un motor paso a paso.
  • La resolución del codificador también es importante.
  • Necesitará un control de circuito cerrado en cualquier caso.

Veamos las posibilidades:

Obtenga un motor / sistema realmente bueno

Si calcula el tiempo que dedica a las soluciones alternativas (quizás sin funcionar), tal vez sea más inteligente tratar de encontrar fondos para un sistema apropiado. Tal vez ni siquiera sea tan caro.

Caja de cambios mecánica

Como mencionó Ben Miller, las cajas de cambios podrían hacer el truco. Lo que sugeriría es usar una caja de cambios de alta relación que sea de alta calidad. Mire los precios/hojas de datos, tal vez encuentre algo.

Primavera

Es un proceso de muy alta precisión, así que ¿por qué no mirar la relojería? Mira esta figura de Wikipedia: espiral de resortes . Si enrollas un resorte como este en algún punto del eje, puedes ajustar la posición con precisión haciendo pequeños movimientos del otro extremo del resorte. Esta sería una herramienta complementaria, para compensación de carga y ajuste fino. Todavía necesitará un paso a paso (o algo más) para el posicionamiento inicial, supongo. Probablemente sería más adecuado para procesos en los que no necesita cambios de posición dinámicos. Por supuesto, hay problemas con eso, pero tal vez puedas hacer algo con eso.

Actuador/motor pequeño + Palanca

Si tiene espacio, puede usar una barra rígida muy larga para crear una altura más alta. d X / d ϕ . Eso significa que obtiene cambios de ángulo muy pequeños para movimientos (relativamente) grandes (casi lineales) del extremo de la barra. Entonces, prácticamente necesita agregar esta barra larga al eje y conectar un pequeño motor a su extremo. La flexión de la barra probablemente sea significativa, pero creo que un bucle de control puede ayudar. Prácticamente lo construyes sobre la relación: ϕ = arcsen ( X / r ) (para x pequeña). Podrías desacoplar la palanca cuando hagas grandes cambios de ángulo.

Solución de palanca

¿Puedes ampliar un poco más la idea de la vara? No puedo imaginar dónde está colocando la varilla para crear el dx/dϕ más alto.
Imagina dos círculos de diferentes diámetros. Ahora solo tienes el círculo pequeño, pero si agregas la varilla, obtienes el círculo más grande. Para obtener el mismo ángulo en ambos círculos a lo largo de la circunferencia, deberá cruzar caminos de diferentes longitudes. Entonces, usando el círculo más grande, obtienes la relación deseada entre la longitud del camino y el ángulo.
Creo que esta podría ser una muy buena solución, ya que puede sincronizar la rotación angular del disco con el motor. ¡Pero todavía no puedo entender dónde estás poniendo esta vara! ¿Puedes dibujar un bosquejo muy aproximado para mostrar lo que quieres decir? ¿Estás sugiriendo usar dos discos con una varilla que los conecte? Por alguna razón, pensé que la transmisión directa (es decir, colocar directamente el eje del disco grande principal en el eje del motor) era la única opción en este caso.
Solo puedo acceder desde el móvil hasta mañana, así que agregaré un dibujo entonces.
Cosa segura; solo espero un boceto crudo para poder entender la geometría de los componentes en su sugerencia.
@boardbite Agregué un boceto.
Esto está muy bien pensado y es útil; ¡gracias! Jugaré con él y veré qué puedo construir.