Entendiendo la relación de Pulse y Stepper RPM

0

Tengo un script bastante simple que estoy usando para controlar los RPM de mi motor paso a paso:

void loop(){ 
  digitalWrite(PIN, HIGH);
  delayMicroseconds(wait);
  digitalWrite(PIN, LOW);
}

Como puedes ver, solo está produciendo un pulso bastante estándar, tengo mi Arduino conectado a un controlador que administra el motor. La variable wait proviene de una ecuación de segundo orden I derivada de medir las RPM con un tacómetro y ajustar el valor.

// From data RPM = 31729/x + 17.327 thus x = 31729/(RPM-17.527)
wait = M/(RPM-C);

Funciona bastante bien, obtengo lecturas consistentemente dentro de solo 1 - 2 rotaciones desactivadas. Pero la pendiente y la intersección me parecen completamente arbitrarias. ¿Hay alguna posibilidad de que tenga que ver con la velocidad de reloj del Arduino? Estoy usando uno y después de jugar con los números parece que no puedo encontrar una relación. Por lo que puedo decir, el controlador parece cableado, así que no creo que tenga mucho que ver con la ecuación.

¿Alguna idea de lo que significan estos valores, la pendiente / intercepción?

Ecuación: RPM = 31729/wait + 17.327

    
pregunta Dylan Madisetti

3 respuestas

0

La pendiente está relacionada con la cantidad de pasos que su motor necesita para hacer 1 revolución.

Por ejemplo, los steppers comunes con los que he trabajado dan 200 pasos por revolución. Si desea rotar a 100 RPM, entonces debe dar (100 * 200) pasos por minuto, o 333.33 pasos por segundo. Si quieres 50 RPM, entonces es (50 * 200) / 60 = 166.7 pasos por segundo.

El tiempo de [espera] controla la cantidad de pasos por segundo. Cuanto más espere, menos pasos obtendrá por segundo.

No estoy seguro de por qué obtuviste el valor de compensación que obtuviste. Eso implica que si su espera fuera infinita, (0 pasos por segundo) su paso a paso seguiría girando 17 RPM. Eso claramente no puede ser verdad. Sospecho un error de medición.

Recomiendo mirar la hoja de datos de su controlador paso a paso. Debe especificar el ancho de pulso mínimo y máximo y el tiempo de permanencia para la señal de paso. Con el ciclo cerrado que tiene, existe la posibilidad de que esté violando esas especificaciones y el comportamiento del controlador es impredecible.

    
respondido por el jwygralak67
1

Creo que lo que está encontrando con su ecuación lineal es lo mismo que podría observar con una configuración de prueba muy simple utilizando un generador de impulsos y un amplificador para impulsar el motor "manualmente". Hay dos efectos que tienen lugar en el motor paso a paso.

Primero: Suponiendo que el motor está en reposo en uno de sus polos, se mantiene allí por el magnetismo remanente de las piezas polares que comprenden el estator y el rotor. Para que el rotor se separe de esta condición, debe activarse durante un cierto tiempo con cierta fuerza. La fuerza proviene de la corriente conducida a través de la (s) bobina (s) y, por supuesto, será variable con la magnitud de esa corriente. El TIEMPO debe ser lo suficientemente largo para superar la fuerza de atracción de la posición actual del rotor (es decir, la posición actual) del polo y también lo suficiente para que la inercia desarrollada en el rotor por la fuerza aplicada le permita "saltar" o "avanzar". o ser atraído magnéticamente al siguiente polo, en secuencia, por el magnetismo remanente de ese polo "objetivo". Este es el factor "C" fijo en tu ecuación.

Lo que falta en tu ecuación es la magnitud de la corriente aplicada y el "factor de fuerza" de tu motor paso a paso. Es decir, cómo la magnitud de la corriente eléctrica se convierte en una magnitud de fuerza magnética atractiva o repulsiva. Tendría que resolver esto de manera empírica de una manera similar a cómo ha descubierto su ecuación actual. Probablemente terminaría con una familia de ecuaciones, una para cada corriente de unidad. Si planea usar una corriente de unidad fija, su única ecuación será adecuada.

Una vez que tenga el ancho de pulso de impulsión mínimo suficiente para que el motor paso a paso "salte" los polos, el resto es simplemente una tasa de repetición. Es decir, con qué frecuencia se aplican los pulsos a las bobinas de accionamiento. Ese es tu coeficiente "M".

Como otro comentarista ha señalado, está "faltando" un segundo retraso en su bucle. Al menos por los métodos tradicionales de este tipo de esquema de unidad temporizada. No obstante, su esquema de unidad tiene una secuencia "Unidad - Retraso con la unidad - Muy rápido en espera - Unidad - Retardo con la unidad - Muy rápido en espera - etc ...". Debido a que su comando Inactivo es simplemente pasar el secuenciador de la unidad a su próximo estado, nunca está permitiendo que el rotor se detenga por completo. O, la cantidad de tiempo que se está deteniendo es dictada por la cantidad de tiempo que el pulso del variador está "sobrepasando". Es decir, el tiempo que las bobinas están siendo accionadas mientras el rotor está colocado correctamente sobre el polo "objetivo". Esto produce calor innecesario porque no produce movimiento del rotor, solo pérdida por resistencia en las bobinas. Si incluye ese retardo de detención adicional en su bucle, probablemente encontrará que está gastando menos energía para hacer girar el motor. También tendrá que recalcular su coeficiente "M", y tal vez incluso su factor de compensación "C". El retraso adicional proporciona un tiempo de inactividad definido.

Si tiene una luz estroboscópica, puede aprender mucho sobre el movimiento del rotor con respecto a los impulsos de la unidad conectando un disco al eje del rotor, marcando el disco con algunas marcas de "radios" blancas igualmente espaciadas, y luego activando la luz estroboscópica de los impulsos de la unidad, o de los impulsos de salida del microcontrolador auxiliar, que puede variar con respecto a los impulsos de la unidad principal.

Por "apropiadamente" quiero decir suavemente, silenciosamente y eficientemente. "Suave" significa que el movimiento radial es lineal y no una secuencia de parada y parada brusca. "Silenciosamente" significa que el motor no está parloteando, ya que funciona porque no funciona correctamente. "Eficiente" significa que está permitiendo solo el tiempo de conducción suficiente para obtener el movimiento que necesita y no "sobrecargar" (como lo describí anteriormente) y, por lo tanto, simplemente agregar calor adicional al motor y desperdiciar la corriente de suministro y la energía. Parte del arte de aplicar motores paso a paso es determinar cuál de estos tres factores de rendimiento son importantes para su aplicación específica y personalizar el perfil del variador para optimizar estas cualidades operativas de suavidad, tranquilidad y eficiencia.

¡Buena suerte!

    
respondido por el FiddyOhm
0

Entonces, ¿por "pendiente" e "intercepción" realmente te refieres a las constantes en tu relación inversa? Significan que esos son los mejores parámetros de ajuste para cualquier función que estés usando.

La parte constante probablemente se debe al hecho de que las operaciones distintas de delayMicroseconds () toman tiempo para cada ciclo, aunque espero que sea negativo en una fórmula "perfecta".

La parte escalar proviene de la cantidad de microsegundos en un minuto, y de la cantidad de pasos por revolución en su motor (y, si está habilitada, la microstepping en el controlador).

Para dar la vuelta a la ecuación: Digamos que su motor tiene N pasos por revolución, y su controlador microaspas por M microsteps por paso. Además, hay 60,000,000 microsegundos en un minuto. La fórmula de RPM "perfecta" dada una demora (en microsegundos) entre pulsos es entonces:

RPM = 60,000,000 / (N * M * delay)

Puedes factorizar esto como:

RPM = (60,000,000 / (N * M)) / delay

Entonces, en su ecuación, 60,000,000 / (N * M) parece ser 31792, aunque todavía creo que su ajuste de curva tiene algún error.

En el diseño de sistemas típico, comenzará con las hojas de datos de su controlador y motor, y trabajará hacia adelante a las RPM que necesita. Mientras no sobrecargue su paso a paso (y pierda pasos), entonces el sistema es completamente determinista. Hay varias formas de evitar la sobrecarga de los steppers, incluyendo el uso de curvas de aceleración, caracterizando la carga adecuadamente, etc.

    
respondido por el Jon Watte

Lea otras preguntas en las etiquetas