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.
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.
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).
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.
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.
Artículos relacionados:
- Como proyectar una plataforma móvil con un motor paso a paso (Primera parte)
- Potencia para step motor con entradas fotoacopladas
- Cómo funciona un puente para motores de corriente continua
- Unidad de potencia para motores de corriente continua
Indice de todos los artículos de Inventable
Los contenidos de este blog son originales y están bajo una licencia Creative Commons BY_NC_ND
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 🙂
HOLA AMIGO, ESTOY INTERESADO, EN TU PROYECTO, QUISIERA CONSTRUIRLO, Y SI ME PUEDES ENSEÑAR MUCHO MEJOR,,,,,,,,
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.
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.
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.
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 🙁
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!
Muchísimas gracias. es la información que necesitaba. ¡Saludos!
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. 🙂
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 😯
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. 🙁
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 🙁
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?
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 🙂
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
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
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.
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.
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.
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.
hola buenas,muy buen aporte para la comunidad, comento por una duda de diseño quisiera saber si este driver puede ser utilizado con un generador de pulsos por medio de plc (ST-200 CPU224)
Hola Jorge, es mejor la versión fotoacoplada
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
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?
Hola,
Así me lo ha vendido el fabricante.
Gracias y un saludo,
Jose
¿Tienes el número de modelo del motor?
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.
Gracias por todo
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).
Gracias
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.
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.
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 🙁
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
Hola
Qual software usa para desenhar a PCB e componentes?
Hola Luis, la respuesta está en las FAQ del blog, te dejo el enlace.
https://www.inventable.eu/faq/
Saludos
HJ