¿Cómo se logra este paso de resolución extremadamente alta?

4

Esta pregunta pertenece a este video así como a este por la misma persona que demuestra sus resultados con un motor paso a paso (junto con un método de prueba realmente limpio que involucra un punto de láser en una pared a unos pocos metros de distancia). / p>

¿Cómo logró este tipo de comportamiento paso a paso de alta resolución de < ¿Pasos de 0.04 ° (con 1 segundo de retención en cada paso) en un motor paso a paso sin engranajes estándar de 1.8 °?

La persona afirma que usa "patrones de onda sinusoidal" con la función analogWrite de Arduino.

Estoy familiarizado con el microstepping, pero:

  • ¿Cómo se hace esto dentro de un bosquejo de Arduino y sin algún hardware como DRV8825 o L6470?

  • y ¿cómo es capaz de mantener la posición de manera tan clara y precisa, algo que los artículos sobre microstepping generalmente advierten que no está exactamente garantizado?

(Obviamente, no hay una forma clara de medir la precisión aquí con la información proporcionada limitada de los videos. Sin embargo, al aproximar la superficie plana de la pared como parte de un círculo centrado en el paso a paso, podemos ver que hay muy buenos pasos formados por el punto láser, así como una desviación bastante pequeña entre el ángulo esperado y observado para cada paso, especialmente en el segundo video que vinculé.)

    
pregunta sasha

2 respuestas

3

Si miras las notas en los videos, verás que está dando pequeños pasos. Afirma explícitamente que está conduciendo el paso a paso con ondas sinusoidales. La forma más sencilla de hacerlo es con las salidas PWM que alimentan el control de amplitud de los dos controladores paso a paso.

Comience observando que 1.8 grados divididos por .04 grados es ~ 45, y como una forma de onda cuadratura paso a paso estándar toma 4 pasos para completar un ciclo, esto implica una resolución de microstep de 4 x 45, o 180 microsteps por ciclo. De hecho, es bastante claro que está usando 64 microsteps nominales.

Si n es el conteo de pasos por revolución de excitación (es decir, microsteps por cada 4 pasos nominales), sea n = 0 a 255. Para cada n sucesiva, encuentre el ángulo de paso A = 360 / n. Luego encuentre $$ X = 127 \ sin (A) + 128 $$ y $$ Y = 127 \ cos (A) + 128 $$ y use la función analogWrite para producir las versiones PWM de estas cantidades. Cuando se aplica a las entradas de control a los steppers estándar de 1.8 grados, obtendrá un tamaño de paso nominal de $$ S = \ frac {4 \ times {1.8}} {256} = .028 \ text {degrees} $$

También tenga en cuenta que, si observa detenidamente los videos, la distancia paso a paso no es constante, y eso es de esperar.

    
respondido por el WhatRoughBeast
2

Dado que el espejo que se está utilizando presenta una carga mecánica muy pequeña, el microstepping tiene cierta medida de precisión posicional. Cuando el motor está cargado, eso no aguanta.

El L6470 tiene micropasos de 128 pasos, que serían alrededor de 1.8 / 128 = 0.014 grados / paso. Hay bibliotecas de Arduino disponibles para controlar este chip.

Editar: Sobre el comportamiento de analogOut: Microstepping es solo una aproximación de una corriente o voltaje fraccional al cortar la señal entrante. Es posible que solo esté usando un par de DAC y un amplificador en lugar de un controlador de microinterrupción. Nunca lo hice yo mismo, pero no veo ninguna razón por la que no funcionaría.

    
respondido por el Daniel

Lea otras preguntas en las etiquetas