588,658 miembros*
4,828 online*
Registrase aquí GRATIS
Login
588,658 miembros
IndustryArena Foro > Fabricación Avanzada > Controladores numéricos CNC > Diseno de la Tarjeta Controladora Micro-Step Unipolar "Mardus-Kreutz"
Resultados 1 al 10 de 269

Vista Híbrida

  1. #1
    Gold Member
    Fecha de Ingreso
    26 Aug, 06
    Ubicación
    USA
    Mensajes
    2758
    Cita Iniciado por MVS Ver Mensaje
    Hola Kreutz, se que ya habeis comentado esto mismo en otro post pero no consigo entenderlo, tambien he leido todo el código y esto es lo que no entiendo:
    Estoy realizando una tarjeta basada en el A3986 (que tu conoces también....) y si pongo 1/16 micropaso y comienzo a enviar pulsos de forma individual necesito 16 pulsos para dar un paso completo ¿no es así?
    ¿Que pasa en vuestro diseño si pongo por ejemplo 1/8 paso y envio 8 pulsos a la entrada? Entiendo que debe dar un paso completo.
    ¿Que pasaria si envio 5 y giro al contrario?
    La única forma que entiendo que puede funcionar es que cuando envias un pulso a la entrada el motor da siempre un paso completo, lo que cambia es la forma en como lo da, es decir, el microcontrolador genera los micropasos necesarios segun como se haya configurado pero siempre que envio un pulso a la entrada doy un paso completo, ¿es así?. La verdad es que es dificil explicar esto con texto....

    Tengo un Gecko G203v y he probado con el Kcam (por que tiene esta función) a ir enviando pulsos a mano (con cada pulsación en el mouse envia un pulso) y para girar una revolución en un motor de 200 pasos he necesitado 500 pulsaciones. Esto tampoco me coincide con lo que marca el fabricante de 1/5 micropaso en baja velocidad,(200 pasos del motor X 5 micropasos=1000) ¿que estoy haciendo mal? Lo mismo que en tu caso, ¿como realizan el cambio de modo a alta velocidad sin perder pasos?
    Seguro que estoy perdiendo algún concepto básico......
    Gracias de antemano y un saludo
    Un motor de 200 pasos por revolucion tiene 50 pares de polos, un "full step" te llevaria de un polo al otro, o sea, una revolucion electrica (360 grados), el motor tiene 200 pasos porque toma una secuencia de 4 pasos para ir de un polo al otro, es decir, un "full Step" necesita 4 pasos (90 grados por paso).

    Cuando tu aplicas "micro-step" lo unico que haces diferente es regular la corriente que circula por los enrollados de forma de obtener una forma sinusoidal en lugar de los pulsos cuadrados de corriente que generaria la secuencia normal. (en realidad no son completamente cuadrados porque la corriente en la inductancia del enrollado sube linealmente con el tiempo)

    Es decir, la secuencia de conmutacion de corriente por los enrollados es exactamente la misma que en "Full step" pero la corriente es limitada siguiendo una aproximacion sinusoidal. Cada microstep produce solo un cambio de la corriente y no una conmutacion de enrollados, la conmutacion se realiza solo en los cruces por cero de la sinusoide.

    Siguiendo este razonamiento: 1/5 microstep daria 5 microsteps por cada paso, o 20 microsteps por cada Full Step (=5 x 4) 50 full steps x 20 microsteps = 1000 micro-steps por revolucion del rotor.

    En mi caso, yo solo cambio la forma de onda de corriente pero la secuencia de pulsos sigue siendo la misma. El cambio se realiza en los cruces por cero de la fase A y el micro-controlador sigue contando la cantidad de microsteps necesarios antes de incrementar o decrementar la secuencia de conmutacion de los enrollados.

    Por ejemplo: yo parto de cero y voy a usar 1/10 microstep comienzo a contar hacia delante y el primer cambio de enrollado (conmutacion de los mosfets) se realiza en el decimo conteo. Ahora continuo contando pero en el quinceavo micro paso decido cambiar la direccion, entonces cuento hacia atras (14, 13, 12...) y cuando llego al decimo vuelvo a la secuencia que tenia anteriormente.

    Durante ese tiempo en cada paso yo regulo la corriente a un valor diferente siguiendo una tabla de valores sinusoidales (90 grados /10 microstep = 9 grados por microstep, entonces mi tabla consiste en los valores: Seno(0), Seno(9), Seno(18), etc. En la otra fase los valores para cada paso serian: Coseno(0), Coseno(9), Coseno(18), etc.

    Esos valores me producen un voltaje de referencia que cambia sinusoidalmente con cada paso. Al ir hacia atras solo cambio el valor de corriente por el valor anterior en lugar del siguiente en la secuencia, por lo que efectivamente no existe un cambio brusco de torque al invertir el giro (el torque es proporcional a la corriente)

    Hace un tiempo publique en este "thread" una tabla con los graficos correspondientes para todos los valores de microstep hasta 1/16 incluyendo 1/5 y 1/10. y los valores de referencia correspondientes.

    En cuanto al cambio de forma de onda solo es un cambio de tabla con diferentes valores de referencia para cada paso.

    Ahora bien, no se por que, en tu caso, tu motor dio una vuelta completa con 500 pulsos a 1/5 microstep. Solo debio haber dado media vuelta.

    Me parece un poco extensa la respuesta y no se si quedo claro el concepto sin la ayuda de los graficos.

  2. #2
    Registered
    Fecha de Ingreso
    15 Feb, 07
    Ubicación
    Spain
    Mensajes
    11

    Cambio velocidad

    Hola de nuevo y muchas gracias por la explicación (y todo el tiempo que nos dedicas....).
    Tengo las gráficas desde hace tiempo de como se generan las señales de seno-coseno, hasta ahi todo bien (ya he realizado un par de controladoras antes con PIC´s pero sin micropasos), lo que no entiendo es a la hora del cambio de modo automático que tu has programado en base a la velocidad del motor:
    Si por cada pulso desde el ordenador generas un micropaso en el motor (de acuerdo a la configuracion de los jumpers), a la hora de configurar el programa (Mach por ejemplo) tienes que indicarle estos valores, es decir los pulsos que necesita para mover el eje 1milimetro. Hasta aqui todo bien, yo envio 9 pulsos y el motor da 9 micropasos, invierto el sentido y lo mismo.
    Pero que pasa cuando aumento la velocidad por encima de 5rps:
    - El motor ya no funciona en micropasos y si envio un pulso desde el programa, el motor ya no avanza lo mismo que antes. Además, que pasaria si el motor se detiene en un punto intermedio.
    Por lo que yo entiendo la unica forma de resolver esto seria que a cada pulso en la entrada, el motor avance 90 grados (de los 360 del paso completo) independientemente de como lo haga (en micropasos o de forma instantánea) y que el microcontrolador genere la secuencia necesaria para dar esos 90 grados. De lo contrario, si yo tenia configurado modo 1/10 en el MACh y para mover 1mm enviaba 10 pulsos, a alta velocidad con los mismos 10 pulsos se moverá 10mm (no sé si me explico).
    Otra forma sería que hasta que recibe 10 pulsos a la entrada no hace nada y al recibir el décimo da el paso, pero esto no nos vale.....


    Todo esto te lo planteo porque estoy diseñando una controladora basada en el A3986 y quiero instalar un microcontrolador con funciones auxiliares (cambio de modo, baja potencia tras un tiempo, etc...).
    Tambien estoy planteando la posibilidad de "traducir" vuestro código a C y utilizarlo en un PIC (es una arquitectura que ya conozco) pensando en realizar una controladora de este tipo para motores bipolares.
    Gracias de antemano, maestro....

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •