# Bipolar stepper driver, pwm y temperatura



## seaarg (Dic 1, 2010)

Amigos,

Se que hay muchos hilos creados sobre el tema de motores steppers (paso a paso) pero no encontre ninguno en particular donde se hable de lo siguiente:

Fabrique un driver para motor bipolar de epson (em-258) cuyos datos son: 7v nominales, 0.7A

El driver son 2 puente H con mosfet IRF640 e IRF9640 alimentado a 12v y con un integrado L293B a modo de "driver" de los mosfets.

Dicho integrado tiene un pin de enable, el cual utilizo para hacer pwm sobre los motores, al estar en alto el funcionamiento es normal, al estar en bajo conducen los mosfets canal P solamente con lo cual hay 0 volts en las bobinas del motor.

Desde el pic que controla, genero un pwm a 20khz, que en los primeros 15 pasos de movimiento lo mantengo al 100% de duty cycle y al superar los 15 pasos el duty se reduce a un 30%.

Esta es la forma que se me ocurrio de regular la intensidad de corriente hacia los motores, segun el multimetro se utilizan 1.3 A aprox al arranque y luego baja a 0.5A

Al terminar el movimiento (2000 pasos por ejemplo, en motores de 200 pasos), se retira la corriente de los motores.

Funciona bien, no hay temperatura en los mosfets de potencia pero los motores calientan bastante luego de unos minutos de funcionar. Si bajo el duty cycle la corriente parece no ser suficiente y los motores pierden pasos. Si subo el duty los motores andan muy bien y rapido pero calientan que da miedo.

He leido que los drivers integrados con control de corriente utilizan un resistor shunt para medir la corriente instantanea sobre un bobinado y regulan (chopper) cuando llegan al valor deseado. Lamentablemente esto no lo supe como hacer. Si alguien puede aportar algo con componentes discretos bienvenido sea.

Queria preguntarles sobre sus experiencias: 
¿Es esta una buena forma de controlar la corriente la que estoy utilizando, asi por pwm?
¿Cual puede ser el motivo de la temperatura en los motores? Ademas, el hecho de que pierdan pasos se debe unicamente a falta de corriente? (el mecanismo esta razonablemente liviano)

Muchas gracias!


----------



## thenot (Dic 1, 2010)

Hola, 
Lo que te diré quizás no tenga fundamentos técnicos o por estudio, por que nunca e estudiado electrónica, pero sí por mucha practica (y muuuuuuuuuuuuuucha) en lo que son motores paso a paso.
Bueno... yo nunca e regulado el amperaje de los motores, solo le aplico el voltaje que piden y aplico sus pasos mediante pulsos, aquí la cosa importante es encontrar cual es el ancho del pulso JUSTO para que el motor realice el paso, si te pasas en ese ancho de pulso el motor se calentara, lo mismo si dejas el motor en estado alto cuando esta detenido, bueno, todo depende de como trabaja tu motor, si esta sosteniendo algo para detenerlo deberás dejarlo en estado alto las bobinas correspondientes al pulso (para que quede el rotor fijo y sostenga), en cambio si puedes dejar el motor en estado bajo (que el rotor queda libre) el motor no calentara (obvio ya que no esta consumiendo). 
Para ese motor que tienes yo uso un simple l293 y no calienta ni el motor ni el l293, pero como te digo hay que buscar el ancho de pulso justo para que las bobinas no están mas tiempo del necesario energizados y sean capaces de hacer el paso sin problema, también dejar el motor sin corriente cuando no se este usando o sea siempre que sea posible (como digo todo depende de como tengas montado el motor).

Saludos!!

------
A y si no da el paso como debe a mi me ocurría por 2 cosas, muy poco voltaje o muy corto el pulso.

---
a todo esto la información que tengo de ese motor es: 42 V y 0,35 Amp (no los 7 volts que dices tu), pero los hacia funcionar con 24V, incluso con 12V, pero el ancho de pulso parar los pasos debía ser mayor lo que hacia que el motor girara mas lento.


----------



## seaarg (Dic 2, 2010)

Bueno, la experiencia siempre sera muy importante, asi que te agradezco por compartirla.

La fuente de la impresora donde lo saque tira 41v asi que probablemente tu info es correcta. Los 7v nominales los saque de una pagina, no pude encontrar muchos datos de este motor. Asumo que la palabra "nominales" tiene mucho que ver, CREO que significaria que le podes dar hasta 7v como tension de enclavamiento, pero cuando lo haces girar, podes darle 42v para que ande rapido.

El primer circuito que hice para probarlos fue con L293 solito (con sus diodos de proteccion) pero si bien funcionaba, se recalentaban ambos, motor e integrado enseguida. De ahi hice numeros y pense: 

La bobina es de 8 ohms por lo tanto: 12v = I x 8 = 1.5A

Viendo la hoja de datos del L293, el mismo entrega 1A con picos de 2A por lo tanto me estaba pasando... pero no por mucho, entonces me puse a sacar cuentas de disipacion en W y ahi si vi el problema de calentamiento del integrado. Despues en este mismo foro y otras paginas, vi que con este integrado podriamos manejarlo en unos 300-600 ma por bobina.

Puse una resistencia de potencia en la alimentacion y ahi si dejaron de calentar tanto el integrado como los motores, pero con la resistencia podia calentar agua para tomar mate jeje.

Eso me llevo a fabricarme un driver con mosfets... una exageracion, lo se!

Ahora, como dato: Estoy manteniendo energizada cada bobina durante 1.5 ms, que es el tiempo que encontre donde puedo hacer girar mas rapido el motor sin que pierda pasos.

Asi lo haga con CC, o con PWM al 30%, estoy apagando los bobinados al terminar el movimiento, por lo tanto el calentamiento del motor lo tengo durante el mismo exclusivamente y me parece extraño, pero mas extraño aun me parece el hecho de que si reduzco aun mas el pwm ya no me alcanza para completar los pasos. Supongo que si aumento el delay durante cada paso alcanzara pero el motor ya se mueve bastante lento, ademas, estaria aplicando un menor pwm pero por mas tiempo asi que asumo resultado caluroso igualmente.

Ah! La secuencia que utilizo es: (BA= bobina A, BB = bobina B)
BABB
1010
1001
0101
0110

¿Mas ideas? es frustrante ver como la impresora maneja estos motores a todo lo que dan con un integradito y uno pone componentes super sobrados y va lento y caliente! Lo que hace la ignorancia jeje


----------



## thenot (Dic 2, 2010)

a todo esto... con que Voltaje alimentas los motores?? por lo que veo 12 volts, yo cuando los alimente con 12 me andaba pero como te dije el tiempo de la secuencia era mas largo, por lo tanto mas lento, prueba a 24 Volts o algo mas alto, yo con ello podía hacer la secuencia mas corta (motor girando mas rápido) y con ello también disminuía el calentamiento, pero desconectando rápidamente los motores cuando no se usan, e incluso aveces le agregaba una pausa entre cada secuencia cuando se me permetia hacerlo, así mantenía los motores muy tibios, un muy breve calentamiento nada de peligro, los dejaba trabajando por un par de horas luego comprobaba temperatura y se mantenía igual, nada para preocuparse. y para mantener tibio los l293 cuando desconectaba las bobinas(las ponía todas a bajo) al l293 ponía a bajo el enable (pin 1 y 9) y así lo mantenía a un temperatura respetable.

Ahora encuentras que es frustrante todo esto, yo estuve por 3 meses sin siquiera poder mover un de estos, eso si que era frustrante, luego cuando ya logre entender su funcionamiento empezaron las pruebas, en eso me pase 7 meses, haciendo pruebas con distintos motores, probar voltajes y comprobar que no se estuviera "comiendo" pasos, para ello se dejaba trabajando el motor por 1 hora en una polea andando hacia adelante cierta cantidad de pasos y las mismas hacia atrás, y así, también se comprobaba hasta que velocidad se podía llegar, se probaron puentes H con transistores, pero al final de todos los motores que se probaron el único que necesitaba si o si un puente H de mayor amperaje que un l293 era uno que se saco de una impresora de punto, el cual era capaz de mover 20 kilos sobre una mesa (el pedazo de motor), todos los demás con un l293 funcionaban impeque, buscando el voltaje y programación adecuada (buscar el ancho de pulso y las pausas sin carga necesarias) no era necesario otro puente H de mejores prestaciones. Cuando ya le tomes la mano veras que no es nada del otro mundo  Por cierto los mas simples son los motores unipolares, con ellos no tuve nunca problemas de calentamiento, y con unos simples Tip122 tienes de sobra para mover casi cualquier motor de estos, incluso podía hacerlos girar mas rápidos de lo que necesitaba, pero por lo general tenían menos torque que los bipolares (comparando en tamaños).

Saludos!!


----------



## seaarg (Dic 2, 2010)

Hice una prueba tomando en cuenta tus recomendaciones.

Trabajo con 12v de alimentacion gracias a que no puedo pasarme de 15v en el gate de los mosfets. Si vuelvo al esquema con solo L293 le podria dar muchisimo mas.

En esta prueba, lo que hice fue habilitar la alimentacion, dar el paso, hacer una espera de 1ms (el tiempo mas corto sin perder pasos. En 850us funciona pero pierde) y luego inmediatamente cortar alimentacion.

Esto funciona bastante mejor, la temperatura de los motores es alta pero no inmediata (ya pude hacer un dibujo simple en la mesa de pruebas... es un plotter).

Lo proximo a probar seria volver a los l293 solos alimentando con mas voltaje, para asi reducir el tiempo de bobina consumiendo. Aclaro que tontamente, la primera version asi mantenia los enable del integrado siempre activos. De ahi el calentamiento al principio.

Motores unipolares fue mi primera eleccion, pero solo pude conseguir de distintas caracteristicas. Me gustaban mas porque 1 era de 75 ohms y lo podia dejar clavado sin problemas. No me sirvieron solo por no conseguir iguales.

Tambien tengo uno de esos de impresora de puntos, de 120 columnas... una bestia.

En fin, ya avance algo gracias a tus datos, no hizo falta el pwm ni mucha complicacion. Bueno, en realidad al conectar antes del paso y cortar despues estamos haciendo una especie de pwm. Ahora a probar el integradito solo de nuevo con esta aproximacion distinta.

Muchas gracias!


----------



## cristian1 (May 23, 2011)

disculpa quiero controlar un motor unipolar ya pude hacer arranque ,paro y sentido de giro con un pic16f877a y usando el integrado l293d pero quiero controlar la velocidad mediante el pwm que tiene el pic pero la pata de salida del pic solo es una donde la conecto al integrado o al motor para poder variar la velocidad con los anchos de pulso


----------



## seaarg (May 24, 2011)

Hola Cristian y bienvenido al foro,

La velocidad de un motor stepper esta dada por el que tan rapido cambies la secuencia en los bobinados. Por lo dicho una pata de pwm no te va a servir para este proposito (eso es mas para motores comunes DC)

Si podes conseguir el integrado L297 te lo recomiendo. Este tiene toda la funcionalidad que necesitas, solo tenes que agregarle el driver de potencia (que en tu caso pueden ser 4 simples TIP120)


----------

