stepgen - generación de pulsos de pasos por software
loadrt stepgen step_type=type0[,type1 ...] [ctrl_type=type0 [,type1 â¦]] [user_step_type=#, # ... ]
stepgen se usa para controlar motores paso a paso. La velocidad de paso máxima depende de la CPU y otros factores, y generalmente está en el rango de 5KHz a 25KHz. Si se necesitan tasas más altas, un generador de pasos de hardware es una mejor opción.
stepgen tiene dos modos de control, que pueden seleccionarse canal por canal utilizando ctrl_type. Los valores posibles son "p" para el control de posición y "v" para el control de velocidad. El valor predeterminado es el control de posición, que conduce el motor a una posición ordenada, sujeto a los lÃmites de aceleración y velocidad. El control de velocidad conduce el motor a una velocidad ordenada, nuevamente sujeta a lÃmites de aceleración y velocidad. Por lo general, el modo de posición se usa para ejes de máquina. El modo de velocidad está reservado para aplicaciones inusuales donde se desea un movimiento continuo a cierta velocidad, en lugar de moverse a una posición especÃfica. (Tenga en cuenta que el modo de velocidad reemplaza el componente anterior freqgen).
stepgen puede controlar un máximo de 16 motores. El número de motores/canales realmente cargados depende del número de valores type dados. El valor de cada type determina las salidas para ese canal. El modo de posición o velocidad se puede seleccionar individualmente para cada canal. Ambos modos de control admiten los mismos 16 tipos de pasos posibles.
Con mucho, el tipo de paso más común es ’0’, paso y dirección estándar. Otros incluyen arriba/abajo, cuadratura y una amplia variedad de patrones de tres, cuatro y cinco fases que se pueden usar para controlar directamente algunos tipos de bobinados de motor. (Cuando se usa con buffers apropiados, por supuesto).
Algunos de los
tipos de pasos se describen a continuación,
pero para obtener más detalles (incluidos los
diagramas de temporización) consulte la
sección stepgen del manual de referencia
de HAL.
tipo 0: paso / dir
Dos pines, uno para el paso y otro para la dirección. make-pulses debe ejecutarse al menos dos veces para cada paso (una vez para establecer el pin de paso TRUE y otra para borrarlo). Esto limita la velocidad de paso máxima a la mitad (o menos) de la velocidad que pueden alcanzar los tipos 2-14. Los parámetros steplen y stepspace pueden reducir aún más la velocidad de paso máxima. Los parámetros dirsetup y dirhold también se aplican a este tipo de paso.
tipo 1: arriba / abajo
Dos pines, uno para ’subir’ y otro para ’bajar’. Al igual que el tipo 0, make-pulses debe ejecutarse dos veces por paso, lo que limita la velocidad máxima.
tipo 2: cuadratura
Dos pines, fase-A y fase-B. Para avanzar, A conduce a B. Puede avanzar un paso cada vez que corre make-pulses.
tipo 3: trifásico, paso completo
Tres pines, fase-A, fase-B y fase-C. Tres pasos por ciclo completo, luego se repite. Solo una fase es alta a la vez: para el movimiento hacia adelante, el patrón es A, luego B, luego C y luego A nuevamente.
tipo 4: trifásico, medio paso
Tres pines, fases A a C. Seis pasos por ciclo completo. Primero A está alto solo, luego A y B juntos, luego B solo, luego B y C juntos, etc.
tipos 5 a 8: cuatro fases, paso completo
Cuatro pines, fases A a D. Cuatro pasos por ciclo completo. Los tipos 5 y 6 son adecuados para su uso con steppers unipolares, donde se aplica energÃa a la toma central de cada devanado, y cuatro transistores de colector abierto impulsan los extremos. Los tipos 7 y 8 son adecuados para steppers bipolares, conducidos por dos puentes en H.
tipos 9 y 10: cuatro fases, medio paso
Cuatro pines, fases A a D. Ocho pasos por ciclo completo. El tipo 9 es adecuado para el accionamiento unipolar, y el tipo 10 para el accionamiento bipolar.
tipos 11 y 12: cinco fases, paso completo
Cinco pines, fases A a E. Cinco pasos por ciclo completo. Consulte el manual de referencia de HAL para ver los patrones.
tipos 13 y 14: cinco fases, medio paso
Cinco pines, fases A a E. Diez pasos por ciclo completo. Consulte el manual de referencia de HAL para ver los patrones.
tipo 15: especificado por el usuario
Utiliza la forma de onda especificada por el parámetro del módulo user_step_type, que puede tener hasta 10 pasos y 5 fases.
stepgen.make-pulses (no de punto flotante)
Genera los pulsos de pasos, utilizando información calculada por update-freq. Debe llamarse con la mayor frecuencia posible, para maximizar la velocidad de paso alcanzable y minimizar el jitter. Funciona en todos los canales a la vez.
stepgen.capture-position (usa punto flotante)
Captura el valor de retroalimentación de posición del código de alta velocidad y lo pone a disposición en un pin para su uso en otras partes del sistema. Funciona en todos los canales a la vez.
stepgen.update-freq (usa punto flotante)
Acepta un comando de velocidad o posición y lo convierte en un formato utilizable por make-pulses para la generación de pasos. Funciona en todos los canales a la vez.
stepgen.N.counts s32 out
La posición actual, en recuentos, para el canalN. Actualizado por capture-position.
stepgen.N.position-fb float out
La posición actual, en unidades de longitud (ver parámetro position-scale). Actualizado por capture-position. La resolución de position-fb es mucho más fina que un solo paso. Si necesita ver pasos individuales, use counts.
stepgen.N.enable bit in
Habilita los pasos de salida: cuando es FALSE, no se generan pasos.
stepgen.N.velocity-cmd float in (solo en modo de velocidad)
Velocidad ordenada, en unidades de longitud por segundo (ver parámetro position-scale).
stepgen.N.position-cmd float in (modo de posición solamente)
Posición ordenada, en unidades de longitud (ver parámetro position-scale).
stepgen.N.step bit out (paso tipo 0 solamente)
Salida de pulso de paso.
stepgen.N.dir bit out (paso tipo 0 solamente)
Salida de dirección: baja para avance, alta para retroceso.
stepgen.N.up bit out (solo paso tipo 1)
Salida de cuenta, pulsos para pasos hacia adelante.
stepgen.N.down bit out (paso tipo 1 solamente)
Salida de cuenta regresiva, pulsos para pasos hacia atras.
stepgen.N.phase-A hasta phase-E bit out (pasos de tipo 2-14 solamente)
Bits de salida. phase-A y phase-B están presentes para los tipos de paso 2-14, phase-C para los tipos 3-14, phase-D para los tipos 5-14, y phase-E para los tipos 11-14. El comportamiento depende del tipo de paso seleccionado.
stepgen.N.frequency float ro
La velocidad de paso actual, en pasos por segundo, para el canalN.
stepgen.N.maxaccel float rw
El lÃmite de aceleración/desaceleración, en unidades de longitud por segundo al cuadrado.
stepgen.N.maxvel float rw
La velocidad máxima permitida, en unidades de longitud por segundo. Si no se puede alcanzar la velocidad máxima solicitada con la combinación actual de escala y el periodo del hilo de make-pulses, se establecerá al valor más alto posible.
stepgen.N.position-scale float rw
La escala de retroalimentación de posición, comando de posición y comando de velocidad, en pasos por unidad de longitud.
stepgen.N.rawcounts s32 ro
La posición en recuentos, actualizada por make-pulses. (Nota: esto se actualiza con más frecuencia que el pin counts).
stepgen.N.steplen u32 rw
La longitud de los pulsos de paso, en nanosegundos. Medido desde el borde ascendente hasta el borde descendente.
stepgen.N.stepspace u32 rw (solo tipos de paso 0 y 1)
El espacio mÃnimo entre pulsos de paso, en nanosegundos. Medido desde el borde descendente hasta el borde ascendente. El tiempo real depende de la velocidad de avance y puede ser mucho más largo. Si stepspace es 0, entonces step se puede afirmar cada perÃodo. Esto se puede usar junto con los pines de restablecimiento automático de hal_parport para emitir un impulso de paso por perÃodo. En este modo, steplen debe establecerse para un perÃodo o menos.
stepgen.N.dirsetup u32 rw (solo tipo de paso 0)
El tiempo mÃnimo de configuración de dirección a paso, en perÃodos de nanosegundos. Medido desde el cambio de dirección hasta el borde ascendente del paso.
stepgen.N.dirhold u32 rw (solo tipo de paso 0)
El tiempo mÃnimo de retención de la dirección después del paso, en nanosegundos. Medido desde el borde descendente del paso hasta el cambio de dirección.
stepgen.N.dirdelay u32 rw (solo los tipos de paso 1 y superiores)
El tiempo mÃnimo entre un paso hacia adelante y un paso hacia atrás, en nanosegundos.
Hay cinco parámetros de tiempo que controlan la forma de onda de salida. Ningún tipo de paso usa los cinco, y solo los que se usarán se exportan a HAL. Los valores de estos parámetros están en nanosegundos, por lo que no es necesario volver a calcular cuando se cambian los perÃodos de hilos. En los diagramas de tiempo que siguen, se identifican con los siguientes números:
(1) stepgen.n.steplen
(2) stepgen.n.stepspace
(3) stepgen.n.dirhold
(4) stepgen.n.dirsetup
(5) stepgen.n.dirdelay
Para el tipo de paso 0, se utilizan los parámetros de temporización 1 a 4. El siguiente diagrama de tiempo muestra las formas de onda de salida y lo que ajusta cada parámetro.
_____ _____ _____
STEP ____/ \_______/ \_____________/ \______
| | | | | |
Time |-(1)-|--(2)--|-(1)-|--(3)--|-(4)-|-(1)-|
|__________________
DIR ________________________________/
Para el tipo de paso 1, se utilizan los parámetros de temporización 1, 2 y 5. El siguiente diagrama de tiempo muestra las formas de onda de salida y lo que ajusta cada parámetro.
_____ _____
UP __/ \_____/ \________________________________
| | | | |
Time |-(1)-|-(2)-|-(1)-|---(5)---|-(1)-|-(2)-|-(1)-|
|_____| |_____|
DOWN ______________________________/ \_____/ \____
Para los tipos de paso 2 y superiores, el patrón exacto de las salidas depende del tipo de paso (consulte el manual de HAL para obtener una lista completa). Las salidas cambian de un estado a otro en un intervalo mÃnimo de steplen. Cuando ocurre un cambio de dirección, el tiempo mÃnimo entre el último paso en una dirección y el primero en la otra dirección es la suma de steplen y dirdelay.
El manual de usuario de HAL.