Rotación de seguimiento con una precisión extremadamente alta

Me gustaría rastrear la posición angular de un brazo giratorio motorizado bastante lento (accionamiento directo; vea la ilustración a continuación), pero requiere una precisión angular de menos de 0,05 ° y una resolución similar.

Como señaló @gbulmer en los comentarios, eso equivale a seguir la posición de la punta del brazo a lo largo de la circunferencia, con una precisión de (2×π×10 cm)/(360˚/0,05) = 0,08 mm.

dibujo

¿Hay algún sensor o método electrónico actualmente realizable que pueda alcanzar este nivel de precisión en la detección rotacional sin gastar una fortuna?


Esto es lo que he intentado hasta ahora, desde lo más simple hasta lo complejo:

  • Brújula/magnetómetro digital: Empecé con esto; pero obviamente no está ni cerca del rendimiento que estoy buscando.

  • Codificación rotatoria: Codificación basada en potenciómetro/sensor de efecto Hall: no se pudo obtener suficiente resolución y hay un error de linealidad significativo.

  • Visión artificial: Intenté colocar un marcador óptico en la punta del brazo (ya que la punta traza el arco más largo) y usar una cámara (OpenCV) para rastrear la posición del marcador: no pude resolver rotaciones muy pequeñas tan bien, dada la amplitud de rotación del brazo un área de 10x10 cm.

  • Codificador magnético: actualmente estoy investigando el uso de AS5048, un codificador giratorio magnético de AMS, colocado con el centro del sensor en la posición del eje del motor. Algo como esto:

ingrese la descripción de la imagen aquí

¿Por qué no considerar un codificador de eje (también puede ser magnético)? Los codificadores de cuadratura pueden tener una precisión bastante alta. Tome uno con 2000 líneas. Post-cuadratura será de 8000 pulsos por revolución. 360/8000 = 0,045 grados de resolución
Por cierto, ¿el sistema está engranado?
@EugeneSh: El sistema no está engranado. Manejo directo. Además, la preocupación con los codificadores de posición rotatorios, por lo que he visto, es que, si bien su resolución es alta, falta precisión . El error de un codificador rotatorio magnético, por ejemplo, puede ser de hasta 1 grado, según las hojas de datos. ¿Son los codificadores ópticos que ha visto significativamente mejores en este sentido?
Solo para comprobar que he entendido, calculo que desea saber la posición de la punta del brazo con una resolución y precisión de ( 2 × π × 10 C metro ) / ( 360 ˚ / 0.05 ) que es 0,008 cm, o 80 µm. ¿Es eso correcto? ¿Es el motor capaz de tal precisión?
@gbulmer: Sí, de hecho, ese es el equivalente posicional de la precisión angular que intento obtener aquí. He agregado esto al texto OP.
Los codificadores ópticos @sasha con los que estaba trabajando son casi 100% precisos. ¿De dónde vendría el error? La única fuente en la que puedo pensar es la lógica de decodificación.
@EugeneSh.: Si bien me gustaría estar de acuerdo (dado que en realidad los ha usado con éxito), me preocupa que la precisión pueda ser vulnerable a cualquier imperfección en el posicionamiento, por ejemplo, como se describe aquí . Sin embargo, estoy dispuesto a darle una oportunidad.
@EugeneSh: para ampliar su punto, en beneficio del OP, incluso si hubiera alguna imprecisión en un codificador óptico, sería consistente; cada rotación debe tener el mismo aspecto. Entonces el sistema podría 'aprender' eso, especialmente si hay una marca de índice.
Bueno, no conozco su configuración ni sus herramientas, pero si usa un actuador ajustado y probado fabricado en fábrica con codificador, hay muy pocas posibilidades de tener ese problema. Pero si le preocupa la mano de obra, encontrará los mismos problemas con cualquier otro método.
@gbulmer: Interesante. Entonces podría hacer un conjunto de entrenamiento (tabla de calibración) después de montar el codificador. Por supuesto, la dificultad sería tener una referencia externa precisa para comparar las medidas del codificador. Además, noté que hizo una pregunta más: Sí, suponga que el motor es capaz de moverse suavemente en cualquier ángulo (como puede comprender, estoy tratando de crear un ciclo de retroalimentación aquí; uno lento es suficiente).
Usé un codificador de cuadratura con alrededor de 30 000 conteos por revolución (a través de un tren de engranajes) para rastrear un LIDAR láser 2D giratorio, para hacer una unidad de radar 3D de barrido. Obviamente, eso es 360/30000 = 0,012 grados por tic, 4 veces mejor de lo que necesita.
Problema fascinante. Probablemente valga la pena agregar un comentario a su pregunta de que el sistema no está engranado, sino que es de accionamiento directo. Una solución estándar para aumentar la precisión es medir la posición del motor, mientras se reduce la salida. Así es como personas como [Faulhaber](www.faulhaber.com) y maxon parecen obtener precisión.
Supongo que ha mirado los sensores de posición AMS
@gbulmer: Efectivamente. Los codificadores de rotación de AMS tienen un error INL que es demasiado grande (hasta 1 grado), y también la alineación del sensor magnético debe ser perfecta. Y el codificador de posición lineal de AMS, AS5311, es lo que deseo usar en el enfoque que describí como mi pensamiento actual en el último párrafo. (Nota: se agregó el hecho de que ahora es de transmisión directa).
¿Te importaría compartir tu problema real aquí? Quizá la solución sea mucho más sencilla y se encuentre en otro plano.
@EugeneSh. - Muy buen punto. Es fácil distraerse con un desafío específico, en lugar de concentrarse en el problema real.
@EugeneSh.: Estoy de acuerdo en que describir más detalles ayuda a pensar en otros enfoques; sin embargo, este es todo el problema realmente. En cualquier caso, trataré de expandirme un poco: estoy tratando de diseñar este brazo que (muy rara vez) instruyo al motor para que se mueva, y me gustaría que se asiente en el punto exacto, por lo que la detección de rotación es proporcionar esencialmente un circuito cerrado. Las restricciones dimensionales significan que no puedo colocar nada más que un motor pequeño y liviano; por ejemplo, las correas-poleas, etc. están fuera de discusión.
Entonces, la pregunta es ¿por qué necesita tanta precisión?
¿Los codificadores absolutos ópticos, por ejemplo, los codificadores grises Avago de 17 bits, son demasiado caros o difíciles de usar?
@EugeneSh.: El brazo va a cada posición, donde un sensor (en la punta del brazo) toma lecturas durante varios segundos en una sección diferente de una muestra química ubicada debajo del brazo. Espero que esté claro.
@gbulmer: De hecho, ahora estoy seguro de pedir codificadores ópticos y darles una oportunidad, dado que tres personas, empezando por Eugene, los recomendaron. Si pudiera tener una referencia absoluta externa para verificar que realmente estoy obteniendo la posición precisa del codificador óptico, obviamente estaría feliz con todo; pero probablemente pueda resolver algo una vez que las cosas se pongan en marcha.
En cuanto a referencia externa te puedo dar una idea. Monte un láser en el brazo y rastree la posición del punto en una pantalla distante. Un desplazamiento de 0,05 grados en una pantalla colocada a 4 metros de distancia medirá 3,5 mm. Por supuesto, la configuración tiene que ser rígida. Y la verdadera preocupación aquí es la repetibilidad, ya que cualquier imprecisión puede compensarse si es repetible. Esto también se puede probar de esta manera.
El Avago AEDR-871x tiene una resolución de 318 LPI o 12,52 LP mm; eso es ligeramente mejor que 0,08 mm. Entonces, una rueda codificadora con el mismo diámetro que el brazo estaría lo suficientemente cerca. Sin embargo, afirma tener una interpolación integrada que puede generar una señal de frecuencia 4x, 8x o 16x más alta. Entonces, en teoría, el diámetro de la rueda podría reducirse o lograrse una mayor precisión, o ambas cosas. ADVERTENCIA, me dijeron que el patrón del codificador tiene que estar muy cerca de 318LPI para funcionar bien, menos líneas es malo.
Una solución que no vi aquí es un Resolver to Digital. Un resolver crea señales de seno/coseno según el ángulo del eje y el R2D convierte estas señales en datos digitales. Con un engranaje de transmisión, puede aumentar su resolución proporcionalmente.
No mencionaste el tipo de codificador odf: ¿absoluto o incremental? Debido a que AMS es de tipo incremental, ¿qué motor y controlador tiene que ser tan preciso?
Puede usar varios sensores y pasarlos por un filtro de Kalman para aumentar la precisión. También podría investigar los mecanismos y sensores que usan para los telescopios, ya que parecen tener un caso de uso similar.

Respuestas (12)

Lo que estás haciendo es posible, pero no veo cómo vas a hacerlo a bajo precio.

0,05 grados (3 minutos de arco) implica una resolución de 7200 conteos/rev, o el equivalente a 13 bits (8192). Peor aún, dado que está tratando de hacer un bucle de posición, necesitará al menos un bit adicional de resolución o un sistema de 14 bits. El problema radica en el hecho de que su bucle de posición no puede detectar un error de menos de un bit, por lo que si el brazo comienza a desviarse, el sensor de ángulo no lo detectará hasta que la salida esté un poco desactivada. El bucle de posición hará retroceder el brazo hacia el otro lado y dejará de hacerlo cuando el error llegue a cero. Pero esto permitirá que el brazo se mueva hacia el otro lado hasta que obtenga un conteo en la dirección opuesta, etc. Entonces, por ejemplo, si desea que el brazo mantenga un conteo del sensor de 100, el sistema bien puede producir 100, 101, 100 , 99, 100, etc

Sugiero que un codificador óptico es su mejor opción, pero un codificador de 14 bits (16 384 ppr) no será barato. Otra posibilidad es un resolver o sincro, con un RDC o SDC (resolver/convertidor digital o sincro/convertidor digital) como segunda posibilidad, pero esto costará aún más. Los sincronizadores/resolvedores tienen 2 inconvenientes. Primero, generalmente han sido reemplazados por codificadores ópticos, por lo que lo que encontrará en el mercado son en su mayoría unidades excedentes. En segundo lugar, la precisión no suele ser adecuada. Los resolutores de tamaño 23 suelen tener entre 5 y 10 minutos de arco, por lo que necesitará una unidad de alta precisión y buena suerte para encontrar una.

Inductosyns le brindará una resolución y precisión excepcionales, pero costará incluso más que un codificador óptico. Esencialmente, necesita un RDC de alta velocidad para leer la salida.

Su preocupación sobre la precisión del codificador óptico se basa en el documento de un fabricante específico, pero eso es esencialmente una pieza de miedo. Las posibilidades de error son las mismas para todos los fabricantes, y el fabricante vinculado no es de alguna manera mejor que otros fabricantes. En general, para los codificadores de precisión, la precisión es lo mismo que la resolución.

Si bien es posible obtener codificadores ópticos con salidas paralelas, probablemente esté mejor con un codificador incremental y haciendo rodar su propio contador ascendente/descendente. Si sigue esta ruta, utilizará la señal de "inicio" para restablecer el contador de posición cada vez que encienda el sistema.

Gracias por una respuesta equilibrada y realista. Parece que debería darle una oportunidad a la codificación óptica/incremental y si funciona, estamos bien. También me gustaría saber qué piensa sobre el enfoque que describí en mi último párrafo usando un codificador magnético lineal junto con un anillo magnético multipolar del tipo recomendado en la hoja de datos del codificador.
@sasha: creo que debe observar muy detenidamente el proceso requerido para producir un anillo magnético. Dudo mucho que seas capaz de hacerlo por tu cuenta. Si bien la hoja de datos sugiere que se pueden usar tolerancias bastante relajadas, desconfiaría mucho de tal "algo por nada". Además, a menos que tenga las instalaciones para verificar la precisión a 3 min/80 micrones, creo que es mejor dejar que los profesionales se ocupen de las posibles imprecisiones. Tenga en cuenta el documento vinculado.
¡Señalado! Dicho esto, debería haberlo dejado claro: tenía la intención de utilizar el anillo magnético (multipolar) de diseño compatible prescrito por AMS en la hoja de datos AS5311; este es el anillo: ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128
@sasha: está bien, pero el problema que tengo es cómo montas el anillo de manera exactamente concéntrica con el eje del eje. Cualquier excentricidad aparecerá en el ángulo recuperado.

Creo que lo que OP sugiere no es una mala idea en absoluto. Lo que quiere usar es un anillo ya hecho: http://ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128 , tiene 128 polos = 64 pares de polos. La resolución es de 16 bits = 65536, máximo 305 rpm.
Si desarma un codificador óptico de alta resolución, descubrirá que es casi imposible alinear el detector sin herramientas especiales; de hecho, usar este nuevo método lo hace muy simple.
Necesitaría una máquina de tornear para hacer un ajuste adecuado para el anillo y luego colocar el sensor a una distancia cercana, no se requiere una alineación especial. El sensor en sí viene en versiones de kit ya soldadas en la placa de conexión, lo que necesitaría es un sensor de referencia adicional: un espacio con fotodetector, luego puede hacer referencia al codificador dentro de un par de polos con una combinación de salida de índice + sensor de referencia externo.

El "sensor de referencia adicional" es solo para la posición absoluta, ¿correcto? (similar al interruptor de límite en el caso del movimiento paso a paso CNC). ¿También puede explicar su sugerencia para el uso de una "máquina giratoria para hacer un ajuste adecuado"? ¿Quieres decir, como una ranura para que se asiente el anillo? Si es así, ¿cómo puede asegurarse de que la ranura esté en la posición perfecta, cuando el corte CNC en sí mismo podría no ser tan preciso?
@sasha Una máquina de torneado para colocar el anillo magnético, la ext. sensor para detectar la referencia. El sensor externo + pulso cero del codificador le asegurará que siempre tendrá la misma referencia absoluta, que en su caso podría no ser necesaria. Hice un montaje LIDAR con micropasos y engranajes planetarios, sin retroalimentación: la única posición absoluta eran los interruptores de límite para evitar girar y romper los cables. Suponga que tendrá que hacer referencia a un objeto determinado y luego hacer movimientos relativos, de esta manera funciona el LIDAR, si es así, no necesita una posición cero de referencia.

Dado que es una pregunta de lluvia de ideas, y WhatRoughBeast ya ha mencionado todo lo que consideraría, ¿por qué no agregar las unidades armónicas a la lista? En teoría (no he verificado con estimaciones empíricas o primeros cálculos), le permite obtener una relación de transmisión de 20: 1 fácilmente sin ningún contragolpe (100: 1 es común), lo que reduce la cantidad de pasos requeridos a 720 / rev . Podría ser algo que valga la pena echarle un vistazo. Los impulsores armónicos no son baratos, pero generalmente son mucho más baratos que los sensores de alta resolución, especialmente para esta relación de transmisión.

Si necesita una resolución en el eje de salida correspondiente a 13 bits, necesita más bits adicionales, al menos 1 bit para el control de bucle cerrado es imprescindible. El siguiente problema es que los fabricantes anuncian la resolución pero no la precisión . Necesita pedir persistentemente la precisión. Si el error es repetible, puede mejorar utilizando la corrección del software.

Otro problema si necesita una solución exterior resistente. En caso afirmativo, el codificador magnético es una opción. Pero el codificador magnético puede tener un error periódico repetible significativo, que debe eliminar en el proceso de calibración utilizando otro codificador óptico extensivo. Pero necesita una plantilla hecha incluso de mayor precisión.

La interpolación seno/coseno (óptica o magnética) aumenta la resolución pero también agrega algún error aleatorio.

Debe poder fabricar con la precisión deseada, particularmente concentricidad. También debe considerar el ancho de banda, ya que cuando aumenta la resolución, el movimiento más rápido puede exceder el ancho de banda permitido (por ejemplo, la frecuencia de la salida en cuadratura). Por el contrario, el control a cámara ultralenta es otra disciplina donde se pueden encontrar interesantes temas inéditos.

Si necesita la rotación del brazo de control (no solo la posición de la pista), entonces la resolución de la transmisión directa y el par es un problema. El bucle doble ayuda con el control, pero requiere un motor (codificador en el caso de una caja de engranajes o contador de pasos en el caso de un motor paso a paso) y detección de la posición del eje.

El codificador incremental frente al absoluto también es una decisión fundamental.

El consejo general es: si desea finalizar el proyecto, utilice componentes profesionales que son caros (p. ej., codificadores ópticos ATOM de Renishaw). Si está jugando por placer y el tiempo no es importante, puede disfrutar reinventando problemas (callejón sin salida), descubriendo problemas que no se pueden buscar en Google, etc. Verifique dos veces si puede fabricar aparatos con la precisión requerida.

Parece perfectamente adecuado para un calibrador digital, normalmente utilizado para medir distancias precisas, consulte:

¿Cómo funciona un calibrador electrónico?

Son similares a los codificadores capacitivos (que ya vio en http://www.digikey.com/en/articles/techzone/2012/apr/a-designers-guide-to-encoders ).

La parte electrónica de un calibrador digital lineal probablemente se puede reutilizar, por lo que solo necesitaría hacer un cuarto de disco con el patrón correcto.

PD: La precisión incluso le permitiría trabajar con uno lineal listo para usar.

Aquí está mi nueva idea, otra historia de motores paso a paso :-)

ingrese la descripción de la imagen aquí

Haga clic en la imagen animada para ver la resolución completa sin cambios. Aquí utiliza el motor paso a paso como una regla móvil. Hay un imán en la punta de la mano principal. Las líneas rojas muestran la dirección esperada del flujo magnético. Suponiendo que el motor paso a paso es como el de la wikipedia. Tiene un 3,6 grados de un paso completo. Para una porción supuestamente lineal del campo, necesita 3.6/0.05=72 combinaciones de 7 bits. Eso significa que un ADC de 10 bits de una MCU ordinaria hará muy bien el trabajo para un mayor rango no lineal. Una vez que haya hecho el mecanismo, analice el patrón de aproximación y elija la parte más lineal, con algún software de mapeo, linealícelo y elija los bordes de la regla para esa configuración en particular.

Los motores paso a paso no son perfectos. Según wikipedia pueden tener hasta un 5% de variación entre dientes. Para medir el error, puede extender los bordes principales de la regla con bordes secundarios, que solo deben seguir el patrón de gradiente del análisis anterior de su borde vecino.

Además, es mejor que accione el motor paso a paso con micropasos para evitar las aceleraciones +/- que pueden afectar las escalas de configuración, creo que al menos debe hacer medio paso a paso.

Es poco probable que los motores paso a paso sean mejores que los codificadores, y los micropasos son notoriamente no lineales.
Microstepping no es para hacer referencia a nada, no se requieren pasos intermedios estáticos. Es solo para evitar la aceleración. @ChrisStratton

Al tratar con la mecánica, comience primero con la mecánica.

ingrese la descripción de la imagen aquí

Girando el engranaje grande (R2) por un ángulo, el engranaje pequeño (R1) gira por un ángulo R2/R1 veces mayor.

Por lo tanto, si trata con una precisión de ángulo muy extrema en un radio dado (R), podría tratar con una precisión de ángulo n veces más gruesa en un radio n veces más pequeño (es decir, R/n).

En su caso, puede instalar un engranaje grande en el eje del brazo y conectarle un engranaje más pequeño y luego conectar un sensor más grueso al pequeño.

Muchos otros métodos de engranajes son conocidos y útiles, a partir de wiki .

Introduce un contragolpe y la fabricación precisa es un problema. En otras palabras, aumenta definitivamente la precisión, pero lo importante es la precisión.

Debe hacer un segundo mecanismo en el borde de la mano, para dividir los pasos del centro mediante un mecanismo lineal como el que se encuentra en el sistema óptico del controlador de CD-ROM. De esta manera, podría ser más fácil y suficiente implementar todo el sistema como un circuito abierto usando también un motor paso a paso en el centro y accionarlo mediante micropasos para evitar magnitudes de aceleración muy altas.

Las limitaciones físicas en el espacio alrededor del brazo móvil podrían excluir esta solución, pero aquí está: otro enfoque económico de visión artificial. La precisión se puede ajustar cambiando la ampliación de la lente.otro enfoque de visión artificial

No sé lo que consideras una fortuna, pero quizás quieras considerar http://www.inductosyn.com/

+ Estaba a punto de publicar para considerar resolvers o RVDT
Esta es una respuesta bastante débil, siendo esencialmente solo un enlace. Mejor si pudiera explicar un poco a qué se está vinculando.
@tcrosley: En este caso, en lugar de proporcionar un diseño completo y una descripción exhaustiva del circuito (como suele ser mi costumbre), elegí proporcionar el enlace porque alude a un dispositivo/sistema capaz de resolver 360 grados en 7200 partes por grado de ángulo, y dejó la mayor parte del trabajo preliminar y el esfuerzo de diseño al OP. ¿Por qué eso me convierte en un mal tipo?
@EMFields Mi problema no fue que no proporcionó su propio diseño, sino que no es una buena idea publicar un enlace aquí como respuesta porque puede salir mal en algún momento; uno debe publicar un enlace y algún tipo de texto adjunto para que un lector pueda buscar un elemento o tecnología similar incluso si el enlace ya no es válido. En su caso, publicó un enlace a la página de inicio de una empresa, que es menos probable que salga mal. Consulte "Proporcionar contexto para enlaces" en esta página .
@tcrosley: aprecio su punto, pero solo el nombre de marca "Inductosyn" (que bien puede estar cerca de un término genérico, por ahora) debería poner a un buscador sincero en el camino hacia la iluminación, ya sea que el objetivo del enlace esté vivo o muerto. Busque en Google "Inductosyn" y verá que hay mucha más información por ahí de la que me gustaría pasar una tarde repitiendo.

Otra opción muy interesante, si tu brazo se coloca habitualmente en una posición inicial (de reposo), es utilizar un ratón óptico (gaming) o, más concretamente, su sistema de sensores.

Monte su sensor en la punta de su brazo y proporcione un buen fondo (de grano fino, no reflectante) para deslizarse. Lea los datos a través de una interfaz de mouse USB estándar.

Necesitará un sensor simple para calibrar la posición inicial. Tendrías que experimentar para ver si esto funciona lo suficientemente bien. Debería funcionar principalmente independientemente del polvo y es fácil de mantener.

Quizás pueda considerar usar un codificador óptico lineal al final de su brazo de pivote y usar una tira de código flexible como esta , que tiene hasta 2000 líneas por pulgada. Si quieres ir súper barato, puedes usar un codificador lineal como este , pero solo sube a 150 líneas por pulgada, por lo que una resolución de 40 micras (ya que es un codificador de cuadratura). Si no es sensible a alguna fluctuación en el sistema de la unidad, entonces podría usar esto directamente. De lo contrario, podría extender el brazo debajo de su aplicación y colocar el código más lejos. Incluso puede imprimir su propia tira de código si tiene una impresora con un DPI de 1000 o más.

¡Buena suerte!