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.
¿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:
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.
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.
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 :-)
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.
Al tratar con la mecánica, comience primero con la mecánica.
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 .
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.
No sé lo que consideras una fortuna, pero quizás quieras considerar http://www.inductosyn.com/
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!
Eugenio Sh.
Eugenio Sh.
Sasha
gbulmer
Sasha
Eugenio Sh.
Sasha
gbulmer
Eugenio Sh.
Sasha
KyranF
gbulmer
gbulmer
Sasha
Eugenio Sh.
gbulmer
Sasha
Eugenio Sh.
gbulmer
Sasha
Sasha
Eugenio Sh.
gbulmer
lior bilia
Marko Bursic
walyku