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 requieren una precisión angular de menos de 0.05 ° y una resolución similar.
Como @gbulmer señaló en los comentarios, eso es equivalente a seguir la punta del brazo en posición a lo largo de la circunferencia, con una precisión de (2 × π × 10cm) / (360˚ / 0.05) = 0.08 mm.
¿Existe 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 el más simple hasta el más complejo:
Brújula digital / magnetómetro: comencé con esto; pero obviamente no estoy cerca del rendimiento que estoy buscando.
Codificación rotativa: codificación basada en potenciómetro / sensor de efecto Hall: no se pudo obtener una resolución suficiente 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 la cámara (OpenCV) para rastrear la posición del marcador: no podía resolver muy bien las rotaciones muy pequeñas, 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 rotatorio magnético de AMS, colocado con el centro del sensor en la posición del eje del motor. Algo como esto:
Respuestas:
Lo que estás haciendo es posible, pero no veo cómo lo vas a hacer a bajo precio.
0.05 grados (3 minutos de arco) implica una resolución de 7200 conteos / rev, o el equivalente de 13 bits (8192). Peor aún, ya 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 desplazarse, el sensor de ángulo no lo detectará hasta que la salida esté un bit apagada. El bucle de posición hará retroceder el brazo hacia el otro lado y dejará de hacerlo cuando el error caiga a cero. Pero esto permitirá que el brazo gire hacia el otro lado hasta que obtenga un recuento en la dirección opuesta, etc. Entonces, por ejemplo, si desea que el brazo mantenga un recuento de sensores de 100, el sistema puede producir 100, 101, 100 , 99, 100, etc.
Sugiero que un codificador óptico sea su mejor opción, pero un codificador de 14 bits (16,384 ppr) no será barato. Otra posibilidad es un resolutor o sincronizador, con un RDC o SDC (resolutor / convertidor digital o sincronizador / convertidor digital) como segunda posibilidad, pero esto costará aún más. Los sincronizadores / resolvers 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 solucionadores de tamaño 23 generalmente se clasifican en aproximadamente 5-10 minutos de arco, por lo que necesitará una unidad de alta precisión y buena suerte para encontrar una.
Inductosyns le dará 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 por la precisión del codificador óptico se basa en el papel 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 la misma que la resolución.
Si bien es posible obtener codificadores ópticos con salidas paralelas, probablemente sea mejor con un codificador incremental y con su propio contador arriba / abajo. Si sigue esta ruta, usará la señal de "inicio" para restablecer el contador de posición cada vez que encienda el sistema.
fuente
Creo que lo que sugiere OP 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 desmonta un codificador óptico de alta resolución, descubrirá que es casi imposible alinear el detector sin herramientas especiales, de hecho, el uso de este nuevo método lo hace muy simple.
Necesitaría una máquina de torneado para hacer un ajuste adecuado para el anillo y luego colocar el sensor a corta distancia, 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 externa.
fuente
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 lo he verificado con estimaciones empíricas o primeros cálculos), le permite obtener una relación de transmisión 20: 1 fácilmente sin ninguna reacción (100: 1 es común), lo que reduce el número de pasos necesarios a 720 / rev. . Podría ser algo que valga la pena echarle un vistazo. Las unidades armónicas no son baratas, pero generalmente son mucho más baratas que los sensores de alta resolución, especialmente para esta relación de transmisión.
fuente
Si necesita 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 anuncian la precisión . Necesita pedir persistentemente la precisión. Si el error es repetible, puede mejorar utilizando la corrección de software.
Otro problema si necesita una solución para exteriores de servicio pesado. 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 extenso. Pero necesita una plantilla hecha incluso de mayor precisión.
La interpolación Sin / cos (de óptica o magnética) aumenta la resolución pero también agrega algún error aleatorio.
Debe poder fabricar con la precisión deseada, concentricidad particular. 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 salida en cuadratura). Por el contrario, el control de cámara ultra lenta es otra disciplina en la que uno puede encontrar problemas interesantes no publicados.
Si necesita la rotación del brazo de control (no solo la posición de la pista), entonces la resolución del accionamiento directo y el par es un problema. El bucle doble ayuda con el control pero requiere motor (codificador en el caso de la caja de engranajes o contando los pasos en el caso del paso a paso) y detección de posición del eje.
El codificador incremental versus absoluto también es una decisión fundamental.
El consejo general es: si desea finalizar el proyecto, utilice componentes profesionales que sean caros (por ejemplo, codificadores ópticos Renishaw ATOM). Si juegas por placer y el tiempo no es importante, entonces puedes disfrutar reinventando problemas (cul-de-sac), descubriendo problemas ingobernables, etc. Comprueba si puedes fabricar aparatos con la precisión requerida.
fuente
Parece perfectamente adecuado para una pinza digital, normalmente utilizada para medir distancias precisas, ver:
¿Cómo funciona un calibrador electrónico?
Son similares a los codificadores capacitivos (que ya viste 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 te permitiría trabajar con uno lineal estándar.
fuente
Aquí está mi nueva idea, sin embargo, otra historia de motor paso a paso :-)
Haga clic en la imagen animada para ver la resolución completa no marcada. Aquí usa el motor paso a paso como una regla de viaje. 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 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 normal hará el trabajo para un rango no lineal mayor muy bien. Una vez que hizo el mecanismo, analice el patrón de aproximación y elija la porción más lineal, con un poco de software de mapeo lineal, selecciónelo 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 los dientes. Para medir el error, puede extender los bordes primarios de la regla con bordes secundarios, que solo necesitan seguir el patrón de gradiente del análisis anterior de su borde vecino.
Además, es mejor que conduzca el motor paso a paso con micropaso para evitar las aceleraciones +/- que pueden afectar las escalas de configuración, creo que al menos debe hacer medio paso.
fuente
Tratando con la mecánica, comience con la mecánica primero.
Girando el engranaje grande (R2) para un ángulo, el engranaje pequeño (R1) gira para un ángulo R2 / R1 veces más grande.
Por lo tanto, si maneja una precisión de ángulo muy extrema en un radio dado (R), podría manejar una precisión de ángulo n veces más gruesa en un radio n veces menor (es decir, R / n).
En su caso, puede instalar un engranaje grande en el eje del brazo y colocarle un engranaje más pequeño y luego conectar un sensor más grueso al pequeño.
Muchos otros métodos de engranaje son conocidos y útiles, comience desde wiki .
fuente
Debe hacer un segundo mecanismo en el borde de la mano, para dividir los pasos del centro por 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 bucle abierto utilizando también un motor paso a paso en el centro y conducirlo por micropasos para evitar magnitudes de aceleración muy altas.
fuente
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 el aumento de la lente.
fuente
No sé lo que considera una fortuna, pero es posible que desee considerar http://www.inductosyn.com/
fuente
Otra opción muy interesante, si su brazo entra regularmente en una posición inicial (reposo), es usar un mouse óptico (de juego) o, más específicamente, su sistema de detección.
Monte su sensor en la punta de su brazo y proporcione un buen fondo (grano fino, no reflectante) para deslizarse. Lea los datos en una interfaz estándar de mouse usb.
Necesitará un sensor simple para calibrar la posición inicial. Tendría que experimentar para ver si esto funciona lo suficientemente bien. Debería funcionar principalmente independientemente del polvo y es fácil de mantener.
fuente
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 llega 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, puede usar esto directamente. De lo contrario, podría extender el brazo debajo de su aplicación y poner el código srip más lejos. Incluso puede imprimir su propia tira de códigos si tiene una impresora con un DPI de 1000 o más.
¡Buena suerte!
fuente