Aumente el rendimiento del motor paso a paso.

0

Estoy conduciendo un motor paso a paso bipolar NEMA34 con las siguientes especificaciones:

  1. Par de retención 5.9 Nm
  2. Ángulo escalonado 1.8 °
  3. Resistencia / fase 0.33 ± 10% Ω
  4. Inductancia / fase 3.00 ± 20% mH
  5. Carga máxima axial 65 N
  6. Carga máxima radial 200 N

enlace

Está siendo impulsado por un plomo DM860 con una corriente de salida de 1.0 - 7.2A, y un voltaje de entrada de 24 - 80 VDC ( enlace ). Tengo el controlador configurado con una fuente de alimentación de 24 V, el conector de señal de control de señales PNP y el uso de un microstep de 4 (800 pulsos / rev). Intenté crear un código con ramp up y ramp down siguiendo este ejemplo (joan answer) enlace

Este es un ejemplo de mi código:

import time

import pigpio

def working(longLoop):
    START_DELAY=500
    FINAL_DELAY=155

    GPIO=20
    dirrection = 21

    pi = pigpio.pi()

    pi.set_mode(GPIO, pigpio.OUTPUT)

    pi.wave_clear()

    pi.write(dirrection,1)
    # build initial ramp

    wf=[]

    for delay in range(START_DELAY, FINAL_DELAY, -1):
       wf.append(pigpio.pulse(1<<GPIO, 0,       delay))
       wf.append(pigpio.pulse(0,       1<<GPIO, delay))

    pi.wave_add_generic(wf)

    # add lots of pulses at final rate to give timing lee-way

    wf=[]

    # add after existing pulses

    offset = pi.wave_get_micros()

    print("ramp is {} micros".format(offset))

    wf.append(pigpio.pulse(0, 0, offset))

    for i in range(100):
       wf.append(pigpio.pulse(1<<GPIO, 0,       FINAL_DELAY))
       wf.append(pigpio.pulse(0,       1<<GPIO, FINAL_DELAY))

    pi.wave_add_generic(wf)

    wid1 = pi.wave_create()

    # short waveform to repeat final speed

    wf=[]

    wf.append(pigpio.pulse(1<<GPIO, 0,       FINAL_DELAY))
    wf.append(pigpio.pulse(0,       1<<GPIO, FINAL_DELAY))

    pi.wave_add_generic(wf)

    wid0 = pi.wave_create()

    #ramp down

    wf=[]

    for delay in range(FINAL_DELAY,START_DELAY):
       wf.append(pigpio.pulse(1<<GPIO, 0,       delay))
       wf.append(pigpio.pulse(0,       1<<GPIO, delay))

    pi.wave_add_generic(wf)

    wid2 = pi.wave_create()

    # send ramp, stop when final rate reached

    pi.wave_send_once(wid1)

    time.sleep(float(offset)/1000000.0) # make sure it's a float

    pi.wave_send_repeat(wid0)

    time.sleep(longLoop)

    pi.wave_send_once(wid2)

    pi.wave_tx_stop()

    pi.stop()

working(1)

El problema es que, con mi código, el motor paso a paso no puede moverse alrededor de 2000 rpm (mi motor paso a paso se mueve por debajo de 2000 rpm). Si configuro FINAL_DELAY más bajo que 155, el motor paso a paso perdería el movimiento de paso y comenzará a vibrar. Entonces, ¿cuál es el problema en mi código? ¡Gracias!

así que esta es la configuración de mi interruptor

SW1 = on SW2 = on SW3 = on

    
pregunta Jan sebastian

2 respuestas

0

El factor que controla la estabilidad del motor paso a paso a alta velocidad es la resistencia efectiva visto por la parte trasera de EMF mirando hacia afuera del motor y regresando al conductor. Cuando el conductor esté "activo", la resistencia que mira hacia atrás será grande ... y el motor estará estable. Al seleccionar la corriente mínima, el controlador permanecerá "activo" a velocidades más altas que si se seleccionara una corriente más grande (¡ya ha seleccionado la corriente mínima!).

La otra cosa que PODRÍA ayudar es aumentar los pulsos por revolución a 1600. Luego, el conductor tiene un breve tiempo para "activarse" cuando la corriente se cruza cerca de cero. Esto no ocurriría si el conductor estuviera dando pasos completos ... y, entonces, el motor sería inestable.

Si esto no funciona, es posible que deba aumentar la tensión de alimentación, como se indica en la primera respuesta.

    
respondido por el whitegreg56
1

Un motor paso a paso giratorio actúa como un alternador; una tensión cuya magnitud es proporcional a las RPM (llamada fuerza electromotriz o back-EMF) se induce en los devanados. El controlador debe emitir más voltaje cuanto más rápido gire el motor para superar este EMF inverso, o la corriente disminuirá.

El par de torsión es directamente proporcional a la corriente, por lo que finalmente el motor alcanza una velocidad máxima donde el par generado es menor que el par de carga y se pierde la sincronización:

Es posible que deba aumentar aún más la tensión de alimentación del controlador para ir más rápido. El motor tiene una capacidad nominal de hasta 60 V.

    
respondido por el jms

Lea otras preguntas en las etiquetas