Pequeña unidad de potencia para step motor

motor-driver-conexion.jpg

Mi artículo anterior trataba sobre la proyectación de una plataforma móvil con un motor paso a paso (step motor). Ahora describo la realización di uno de los módulos electrónicos que la componen: la unidad de potencia del motor.

Existen muchísimas soluciones para construir el modulo de potencia, el modelo que yo propongo es bastante simple y fácil de hacer. No obstante ello posee ciertas características que lo distinguen respecto a otros módulos símiles como por ejemplo la posibilidad de programar la corriente del motor en movimiento y en estado de reposo.

motor-driver-circuito.jpg

El proyecto se basa en el circuito integrado de la Motorola MC3479, un driver completo para el control de motores paso a paso bipolares que necesita muy pocos componentes adicionales para funcionar. El circuito que propongo es esencialmente el propuesto en la hojas técnicas del componente pero con algunas mejoras. La principal consiste en el sistema de control programable de la corriente del motor a través de dos trimmer.

Como descripto en mi articulo anterior un driver profesional tendría que tener las entradas fotoacopladas pero esto no nos permitiría la conexión directa de un micro. Por lo tanto, en este caso propongo esta solución simple que permite de conectar cualquier plaqueta con micro sin salidas amplificadas como por ejemplo Arduino.

motor-driver-pcb.jpg

El MC3479 regula la corriente del motor en base a la resistencia conectada entre el pin 6 y masa. Esto nos permite de disponer de una buena gama de potencias y también de poder usar el driver con motores de distintos tamaños recordando que la corriente máxima de salida del integrado es de 500mA por cada bobina. El MC3479 dispone internamente de diodos de protección para cargas inductivas por lo tanto no es necesario agregar diodos de clamp externos (como en el caso de otros CI como por ejemplo el L298).

motor-driver-pcb-pictorico.jpg

La parte del circuito que nos permite de activar y regular la corriente del motor está compuesta por la entrada "ENA" (enabled), las resistencias respectivas, el transistor BC548 y el trimmer de 100K. Para que el sistema funcione correctamente, la tarjeta que controla el driver tiene que poner a positivo la entrada "ENA" (mas de 1V) antes de mover el motor. Por otro lado, el trimmer de 470K sirve para regular la corriente del motor cuando este no se mueve manteniéndolo frenado y sin desperdiciar potencia.

El MC3479 permite tres modalidades de funcionamiento: paso entero, medio paso (puente Full/Half) y medio paso a baja energía (puente OIC). En este último modo, la mitad del tiempo, una de las dos bobinas se encuentra desconectada (alta impedancia). La selección de las distintas modalidades de trabajo se realiza a través de dos puentes. Yo aconsejo de probar los tres modos.

motor-driver-foto.jpg

En un próximo artículo presentaré otra versión mas profesional de esta plaqueta con las entradas fotoacopladas que se puede observar en la última fotografía.

Mis otros artículos sobre este argumento:

Proyecto de una plataforma movil con motor paso a paso (parte 1)

Proyecto de una plataforma movil con motor paso a paso (parte 2)

 

32 pensamientos en “Pequeña unidad de potencia para step motor”

  1. Hola estimado
    veo muy interesante y nutrido tu circuito, no te has animado por hacer un driver para motor Unipolar de 6 hilos?
    un fuerte abrazo

    Mijael

    Hola Mijael, no he tenido necesidad de hacer driver unipolares porque no tengo en mi laboratorio motores de este tipo.
    Gracias de tus palabras 🙂

  2. Hola quisiera que me ayuden asi puedo contruirlo para la escuela, quiero hacer un braso robotico, sera que se pude? como lo controlo? con algun jostyc? de que manera? alguien puede explicarme como se usa la plaqueta, tengo varios motores pap que saque de impresoras, una fuete de pc atx que modifique para usarlo como fuente de laboratorio, muchas herramientas y si es necesario una netbook. gracias.

  3. Muy buen proyecto, no me queda claro como se modifica el sentido de giro del motor pap. Me podrias aclarar esta duda..Saludos y gracias!

    Si Gonzalo, te explico. El motor gira en un sentido o en el otro cambiando el nivel de tensión de la entrada CW/CCW. CW es la sigla en inglés de clockwise (giro en sentido horario) mientras que CCW es counterclockwise (giro en sentido antiorario). Hasta pronto.

  4. tengo un motor pap de uso industrial de 6 hilos, 5.0 v 4.0A DC, como seria la construccion de su drive, gracias

    Tu motor es de tipo unipolar. No he hecho proyectos para este tipo de motor pero en internet se encuentran muchos ejemplos.

  5. oye amigo este circuito me podrá servir para PROBAR una válvula IAC DE AUTOMÓVIL GRACIAS

    No conozco como está hecha una válvula IAC y no se decirte si este circuito puede servirte. Lo lamento 🙁

  6. Saludos Sr.

    Disculpa,como se usa este circuito, es decir entiendo el armado y las conexiones al motor y a la fuente de alimentacion, pero como lo acciono? ENA va a algun swicht para poner el motor en marcha? o se tienen que enviar pulsos a ENA, positivos?

    Hola Alfonso, el driver está pensado para ser conectado a una tarjeta de control con salidas lógicas de 5V. La entrada ENA cuando está en 5V aumenta la corriente del motor. En la entrada STEP tiene que haber impulsos de 5V y a cada uno de ellos el motor gira de un paso. Por último, CW/CCW en base al nivel lógico (0V o 5V) hace girar el motor en un sentido o en el otro. Si desees probar el driver sin necesidad de una tarjeta de control puedes conectar STEP a un generador de onda cuadrada (por ejemplo uno hecho con un CI 555) mientras que ENA y CW/CCW conectados a dos interruptores conectados a 5V.
    Hasta pronto!

  7. felicidades muy buen circuito de casualidad tendras algun circuito como el que mencionas con el 555 no se mucho de electronica y no tengo idea de como hacerlo ya compre el 555 pero no entiendo el esquematico para generar los pulsos.. esperamos mas proyectos interesantes como este saludos

    Hola Cesar. No tengo nada ya hecho pero puedo ayudarete en el proyecto ¿Como quisieras controlar el circuito? Explicame mejor como piensas usarlo. 🙂

  8. como muchos,creo que estamos interesado en poder controlar el sentido de giro y puede ser la velocidad también o sea con un generador de de pulsos incorporado.
    las válvulas IAC basicamente es un motor bipolar que regula la entrada de aire a un motor de combustion interna,de un auto para que este pueda regular por lo general a 1000rpm.

    Hola Pedro. Yo no he tenido la exigencia de proyectar un generador de impulsos porque los drivers para motores paso a paso los controlo con microcontroladores y programas desarrollados especialmente para la ocasión.
    Ahora entendí que cosa es un IAC pero en internet no he encontrado especificaciones técnicas del motor (entre ellas la corriente) por lo tanto no se si el driver es adecuado 😯

  9. hola como estas me parece muy buen proyecto
    sabes me gustaría saber si con eso podría probar iac de autos
    el iac es un motor de paso bipolar de 4 cables abcd tienen 12v
    explícame mas sobre el giro el cw lo aterrizo ?? como cambio el giro y necesito variar la velocidad. te agradesco de antemano

    Hola Cesar. Lamentablemente este driver necesita ser conectado a un unidad de control que genere los impulsos para mover el motor y dé el sentido de giro. CW y CCW significa: sentido orario o antiorario. Quizás publique algún proyecto en el futuro pero por ahora no tengo nada. 🙁

  10. hola muy buena y compelta tu informacion una preguntano has echo algun circuito para un motor paso a paso de 6 hilos estoy construyendo un brazo robotico y los motores que tengo son todos de 6 hilos 😐

    Lamentablemente no Gabriel 🙁

  11. sabes amigo, independientemente de tema, pero con el mimo interes de los motores a pasos, tengo un duda. que sucede cuando o que condicion se nececita para ponerlo en home o punto de inicio, orige a un motor de este tipo?
    y de antemano gracias por tu ayuda. 😛

    Hola Fallul. No entiendo tu pregunta 😯 ¿Puedes explicarte mejor?

  12. buen proyecto ! hola amigo DIOS te bendiga me gustaría saber si tu proyecto funciona igual que el chip pololu a4988 espero tu pronta respuesta te cuidas

    Hola Angel, si, es así aunque si el pololu es mucho más sofisticato porque permite de mover hasta 16 micropasos por cada paso mientras que el mio logra solamente 1/2 paso. Por lo tanto con el pololu el motor tendría un movimiento más suave y preciso. Muy buena indicación la tuya, no sabía nada de este módulo, quizás compre uno para probarlo, muchas gracias 🙂

  13. hola, mira con esta placa se puede que el motor con un botón gire a la derecha y con otro botón a la derecha , si no se puede me podes recomendar alguna placa que lo haga , gracias

  14. hola que tal bonito proyecto pero como genero ls señales STP Y DIR con un microcontrolador en lenguaje c muchisimas grasias 🙁

    Hola Marco Antonio, yo trabajo en lenguaje máquina y no en C. Para uno que tiene un poco de conocimiento de programación de C es bastante fácil. Lamentablemente no puedo explicártelo como respuesta a un comentario porque hay muchos factores que es necesario considerar como la plataforma, el compilador y las librerias C que usas. En asm sería algo así:

    inicio:
    bsf PORTB, 0 ; pone la pata de salida a 1
    call delay ; retardo
    bcf PORTB, 0 ; pone la pata de salida a 0
    call delay ; retardo
    goto inicio

  15. hola sabes de un rremplazo facil de conseguir para el mc3479 no lo encuentro en mi ciudad gracias

    Lamentablemente no conozco ningún reemplazo Edwin. Quizás algún lector de inventable conoce alguno.

  16. Hola, quería consultarte de que manera puedo conectar el PIC16F628A a este circuito. O si es que con un 555 me sirve para hacer rotar el motor en ambas direcciones.

    Otra cosa, si quisiera conectar fines de carrera, dónde debería hacerlo? Gracias.

    Hola Cristóbal, como explico en los artículos como-proyectar-una-plataforma-movil-con-un-motor-paso-a-paso, todo depende de la complejidad del movimiento del motor. Sería útil que explicaras que quieres hacer así puedo orientarte mejor.

  17. Tratará de un pequeño artefacto que estará anclado a una plataforma, esta plataforma deberá llegar hasta cierto punto, el cual debo indicar mediante los fines de carrera. Vale decir que debo dejar el motor en un estado fijo al momento que la plataforma toque uno de los fines de carrera, pero luego debo reanudar nuevamente el giro del motor en estado inverso.

    Algo así es lo que quiero hacer, si tienes algún correo para plantearte mejor mis dudas y el mismo proyecto, sería de mucha ayuda.

    Saludos.

  18. hola quería saber como se podría hacer para que se le pueda aumentar la corriente se salida a por lo menos 2amper.por que tengo un motor que consume esa corriente. Si pudieras ayudar seria de mucha ayuda. Es para un proyecto escolar.desde ya muchas gracias

    Hola lihuel, sería necesario agregar un “driver” de potencia como por ejemplo el L298 pero para los detalles de como hacerlo te aconsejo de hacer la pregunta en el foro.

  19. Hola,
    Estoy intentando controlar un motor paso a paso bipolar de paso 1.8º con un pic12f629, pero no consigo que llegue a funcionar correctamente. Utilizo un driver L293D, las salidas del pic pines 6,7, 3 y 2. Según la formula NP=grados/grados paso motor, para un motor de paso 1.8º necesitaría 50 pasos para hacer un giro de 90 grados, pero me gira 360 grados. Con 25 pasos me da un 180 grados.
    Te agradecería tu ayuda, pues tienes mas experiencia que yo en estos pics.
    Gracias un saludo

  20. Hola, ayer te comentaba el problema que tenia en el control de un motor PAP. Te adjunto el programa por si me puedes indicar donde tengo el fallo. No consigo que se mueva 90º.

    Programa:
    LIST P=PIC12F629

    _INTRC_OSC_NOCLKOUT equ 0x3FFC
    _WDT_OFF equ 0x3FF7
    _PWRTE_ON equ 0x3FEF
    _MCLRE_OFF equ 0x3FDF
    _BODEN_OFF equ 0x3FBF
    _CPD_OFF equ 0x3FFF
    _CP_OFF equ 0x3FFF

    __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _CPD_OFF & _CP_OFF

    ;————————————————————
    ; Declaración de Registros
    ;————————————————————

    w equ 0x0000
    status equ 0x0003
    gpio equ 0x0005
    pclath equ 0x000a
    cmcon equ 0x0019
    ciclo equ 0x0021
    _np_tiempo equ 0x0022
    _np_tiempo1 equ 0x0024
    _np_tiempo2 equ 0x0025
    _np_tiempo3 equ 0x0026
    trisio equ 0x0085

    ;————————————————————
    ; Declaración de Bits
    ;————————————————————

    c equ 0 ;carry / borrow bit
    gp0 equ 0 ;bit 0 del puerto
    gp1 equ 1 ;bit 1 del puerto
    gp4 equ 4 ;bit 4 del puerto
    gp5 equ 5 ;bit 5 del puerto
    rp0 equ 5 ;registrer bank select bit
    rp1 equ 6 ;registrer bank select bit
    z equ 2 ;bit cero

    ;————————————————————
    ; Inicio
    ;————————————————————

    reset org 0
    goto Inicio

    ;————————————————————
    ; Programa Principal
    ;————————————————————

    Inicio
    bcf status,rp0 ;cambiar a banco 0
    clrf gpio ;configurar el puerto a como xxssesss
    movlw b’00000111′
    movwf cmcon
    movlw b’00001000′
    bsf status,rp0 ;cambiar a banco 1
    movwf trisio
    Principal
    bcf status,rp0 ;cambiar a banco 0
    clrf ciclo
    movlw d’50’
    movwf ciclo
    Giro_Izquierda
    bsf gpio,gp0
    bcf gpio,gp1
    bsf gpio,gp4
    bcf gpio,gp5
    movlw .5 ;temporizador 5 mse
    call delay01
    bsf gpio,gp0
    bcf gpio,gp1
    bcf gpio,gp4
    bsf gpio,gp5
    movlw .5 ;temporizador 5 mse
    call delay01
    bcf gpio,gp0
    bsf gpio,gp1
    bcf gpio,gp4
    bsf gpio,gp5
    movlw .5 ;temporizador 5 mse
    call delay01
    bcf gpio,gp0
    bsf gpio,gp1
    bsf gpio,gp4
    bcf gpio,gp5
    movlw .5 ;temporizador 5 mse
    call delay01
    decfsz ciclo,1
    goto Giro_Izquierda ;cierra el ciclo
    movlw .5 ;temporizador 5 seg
    call delay02
    goto Principal ;cierra el ciclo

    ;————————————————————
    ; Subrutina TIME DELAY 02
    ;————————————————————

    delay02
    movwf _np_tiempo
    goto delay02_1
    delay02_bucle2
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    delay02_1
    movlw .10
    movwf _np_tiempo1
    delay02_bucle1
    nop
    nop
    movlw .99
    movwf _np_tiempo2
    delay02_bucle0
    nop
    nop
    nop
    movlw .200
    movwf _np_tiempo3
    delay02_bucle
    nop
    nop
    decfsz _np_tiempo3,1
    goto delay02_bucle
    nop
    nop
    nop
    decfsz _np_tiempo2,1
    goto delay02_bucle0
    nop
    nop
    nop
    decfsz _np_tiempo1,1
    goto delay02_bucle1
    decfsz _np_tiempo,1
    goto delay02_bucle2
    return

    ;————————————————————
    ; Subrutina TIME DELAY 01
    ;————————————————————

    delay01
    movwf _np_tiempo
    goto delay01_1
    delay01_bucle1
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    delay01_1
    movlw .246
    movwf _np_tiempo1
    delay01_bucle2
    nop
    decfsz _np_tiempo1,1
    goto delay01_bucle2
    nop
    nop
    nop
    nop
    nop
    decfsz _np_tiempo,1
    goto delay01_bucle1
    return

    ;————————————————————
    ; FIN PROGRAMA
    ;————————————————————

    End

    Gracias y un saludo.

    Hola Jose, el ciclo de control full step parece correcto. ¿Seguro que el motor es de 1,8 grados?

  21. El fabricante es “microPAP” y el modelo es el siguiente: SY39ST38-0564A.
    Un saludo,
    Jose

    Si, es de 1,8 grados. Yo no se que decirte ahora. Puedes abrir un hilo en el foro.

  22. Hola,
    He cambiado el MPAP Bipolar por uno Unipolar y consigo girarlo en cualquier angulo, pero quisiera saber si me puedes orientar como puedo posicionar el motor al iniciar el programa en un punto exacto.
    Te adjunto el programa:
    ;————————————————————
    ; Código assembler generado por Niple V5.2.0
    ; Proyecto: control_PAP
    ; Autor: Jose Carlos Juan Gimenez
    ; Fecha: 01/07/2014
    ; PIC: 12F629
    ; Velocidad de reloj: Int 4 Mhz
    ; Descripcion: Control Motor PAP Unipolar
    ;————————————————————
    (sigue el código)

    Hola José, es necesario que agregues un sensor (o interruptor) de fin de carrera y que en el momento de encendido, dar la orden que el motor gire en un sentido hasta que encuentre el sensor de fin de carrera. Hay muchas consideraciones para hacer en un proyecto así como explico en mis artículosComo proyectar una plataforma móvil con un motor paso a paso (Primera y segunda parte). Pienso que será necesario que organices mejor tu código creando subrutinas (por ejemplo para el movimiento).

  23. hola como estas tengo unas dudas con tu circuito ya que se me es muy util en mi proyecto.
    este circuito puedo adaptarlo a un arduino y como entrarian los pulsos de los puertos?

    Si las salidas de Arduino son de 5V, puedes conectarlo directamente (no se como serán las últimas versiones). Los impulsos debes generarlos a través del programa.

  24. hola buenas, una consulta estimado

    a este circuito le puedo agregar unos transistores de potencia en las salidas L1, L2, L3 y L4 para aumentar la potencia del circuito digamos para motores de 2A

    si es asi cuales podrían ser?

    PD: a pesar de que so se actualiza muy seguido tienes proyectos muy bien presentados
    me gustaría ver algún día un driver de 3 ejes para una fresadora casera
    saludos que estes bien

    Hola Jose, quizás con un driver con salidas en puente como por ejemplo el L298 pero la conexión no sería directa porque los L298 tienen 3 entradas para cada puente mientras que aquí disponemos solo de dos salidas. Lo veo medio complicado. Yo espero de poder publicar en futuro otro driver con salidas más potentes, cuando tenga tiempo para poder escribir.

  25. Hola amigo, enhorabuena por tu trabajo.
    Me gustaría saber si has proyectado una controladora que gobierne el driver para motores pap y que reciba las órdenes desde un pc a través del puerto paralelo. Gracias de antemano.

    No Jose 🙁

  26. saludos, me gustaria saber si tienes algun circuito de un control de velocidad de motores asincronos sobretodo los que son controlados por transistores a 110v

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*