# Controlar dos motores por puerto serial



## danyelk6u5 (Oct 17, 2010)

Hola a todos, vengo con una dudota que espero puedan solucionar.

Tengo como tarea controlar dos motores utilizando el puerto serial, de manera que giren en dos direcciones. Analizando un poco el problema, me di cuenta que no es tan sencillo como imaginaba, ya que el puerto serial solo tiene una linea de salida (o dos a lo mucho), entonces no me imagino como poder hacer esta tarea, mediante el puerto paralelo me lo imagino facil, pues hay 8 salidas que pudiera manipular, pero en el serial.. no entiendo como sería, y si lo pongo en este foro es porque quisiera armar un circuito que realice todo esto sin utilizar microchips.

Espero que puedan ayudarme,


----------



## Saint_ (Oct 17, 2010)

Hola.
Desafortunadamente no puedes lograr tu comerido solo con el puerto serial y sin ayuda de circuiteria externa. lo mas recomendable es que uses un microcontrolador u el respectivo max 232 como interface entre PC y "micro", de otro tu tarea estaria encaminado fracaso...
Un saludo.


----------



## reyvilla (Oct 17, 2010)

a traves de un registro de dezplazamiento puedes pasar de serie a paralelo, claro necesitar llevar los voltajes del puerto a valores ttl, hay un circuito que hace esta conversion, aparte esta el max-232 como dice Saint. dejame ver si te consigo el adaptador de voltajes del puerto serie para empezar.saludosss

ok edito...

encontre este 






y traduje de la pagina origiral...

En la imagen de TX y RX están TTL el transmisor y el receptor, mientras que T, R y Gnd son el transmisor RS232 receptor, y las señales de tierra. 

Hay otras soluciones para la adaptación y los niveles TTL RS232 como el CI MAX232 o MAX233, pero este adaptador es fácil de construir y utilizar bajo costo y fácil de conseguir las piezas, tal vez las piezas que tiene alrededor de su mesa de trabajo. 

evalualo y si estas interesado te ayudo a mi me gustaria armarlo y probrarlo ya que ahorita me encuentro con un proyecto que tiene que ver con el puerto serie y me combendria hacer este...saludosss


----------



## danyelk6u5 (Oct 17, 2010)

Orale, gracias por las ayudas... estuve investigando, y efectivamente, no hay de otra, tengo que utilizar un micro para pasar de serie a paralelo, leyendo por ahi me tope con un micro pero que necesitaba ser programado y cuanta cosa, hasta ahorita me a interesado mas el max.232, parece sencillo, y al parecer no se tiene que programar verdad?
Y reyvilla el circuito que me haz mostrado para que serviria? haz dicho que es para pasar a paralelo, pero no le veo las 8 salidas...y no le entiendo mucho...explicate, puedes?


----------



## reyvilla (Oct 17, 2010)

no, el circuito es un adaptador de voltajes que maneja el puerto serial, es similar al max-232 el cual por cierto no se programa, entonces siguiendo con el circuito que coloque, lo que hace es adaptar las señales que envias por el puerto serial ya que el mismo manejas voltajes muy altos +13 y -13 por ejemplo, entonces ese circuito lo que se hace es llevarlo a 5volt. para transformar la salida de serial a paralelo con un registro de desplazamiento por ejemplo 74ls198, podemos lograr controlar 8 dispositivos distintos con el...saludos


----------



## Mandrake (Oct 17, 2010)

reyvilla dijo:


> a traves de un registro de dezplazamiento puedes pasar de serie a paralelo . . .


Muy bien, y luego pasa a un decodificador.
En "chibchombiano" significa que el driver esta configurado para reconocer determinados codigos.

Comprendes Mendez.


----------



## reyvilla (Oct 17, 2010)

como es para mover dos motores no creo que requiera decodificar, ya que con simples comandos de activacion no crees?


----------



## danyelk6u5 (Oct 17, 2010)

mmmm... nop, la verdad es que no comprendo mucho (y pensaran que soy muy tonto, pero esque mi carrera es ingenieria en sistemas, no es justificarme, pero de verdad que no estoy muy enfocado a creacion de circuitos) a ver, paso a paso (y a bajarse un poco a mi nivel porfa) utilizando el max-232, entonces podre enviar datos por el puerto serial y en las salidas del micro utilizarlo como paralelo???o necesito algo mas aparte del micro max 232??


----------



## reyvilla (Oct 17, 2010)

no el max232 mas que un decodificador yo lo veo como un adaptador de voltajes, fijate es esta imagen el conexionado no hay ningun pin libre lo unico que hace es pasar las señales que salen del puerto seria a valores logicos ttl.






y sigue siendo serial a la salidad RX RECIVE, TX ENVIA,  RS232 = +13 y -13 y otros... TTL 5VOLT.


----------



## Mandrake (Oct 17, 2010)

danyelk6u5 dijo:


> . . . y pensaran que soy muy tonto, pero esque mi carrera es ingenieria en sistemas . . .



Nadie piensa que usted sea tonto (usted lo hubiera especificado en el primer mensaje), la idea es sencilla: usted envia un codigo, el registro de desplazamiento lo convierte en paralelo y *un decodificador hace lo que esta programado*.

Hasta luego, ustedes quieren complicarse la vida.


----------



## danyelk6u5 (Oct 17, 2010)

ya veo, sigue teniendo 1 salida, cuando yo necesito 4, y existe algun micro que haga lo q yo quiero? es decir, que yo mande un determinado byte por el serial, y q lo represente como el paralelo con 8 salidas diferentes?



Mandrake dijo:


> usted envia un codigo, el registro de desplazamiento lo convierte en paralelo y *un decodificador hace lo que esta programado*.



ya veo... entonces... como seria el circuito decodificador?


----------



## reyvilla (Oct 17, 2010)

puede ser un microcontrolador si es para motores dc puede ser uno de los pequeños 12fxx o 12cxx, hay tambien otra forma que es haciendo todo por software, codificando un registro de desplazamiento se ahorraria un microcontrolador, pero el programa seria un poco mas largo...todo depende de que se le haga mas facil.


----------



## danyelk6u5 (Oct 17, 2010)

umm..ok ok, el problema esque lo necesito manipular en lenguaje ensamblador, que no es nada facil, asi que hacerlo por software me resultaria complicado, no tienes por ahi la serie del micro indicado para esto?


----------



## reyvilla (Oct 17, 2010)

si manejas lenguaje basic se te va hacer facil con picbasic pro, y el micro puede ser 16f628A que es uno de los basicos y tiene para comunicacion serial.


----------



## antiworldx (Oct 17, 2010)

Definitivamente no me complicaria la vida. Usaria un AVR o un pic de la familia 18F programado en C con su max232. Por la salida de un puerto controlaria dos puentes H, o usaria un puerto por cada puente H si no se quieren complicar codificando a un solo puerto.

Es sumamente sencillo, solamente hechenle la mano para configurar el serial. A mi ahorita la verdad me da pega ponerme a esculcar en mis codigos.


----------



## reyvilla (Oct 17, 2010)

si va ser lo mejor ya que de la otra forma es mas complicado me di cuenta que a juro es por protocolo, yo realice uno con un pic12f675 y picbasic pro, con serin y serout y todo lo de mas es facil.


----------



## thenot (Oct 18, 2010)

Aquí encuentras algo que te puede servir (sabia que se podía hacer, así que lo busque por la web hasta que encontré algo igual a lo que pensaba). Ahora dices que necesita que tu motores giren en ambos sentidos??? Con esto solo podrías controlar 1 motor, a menos que los motores estén SIEMPRE girando y solo necesites cambiar su dirección, en otras palabras, no podrás detener los motores, solo podrás cambiar la dirección de giro (sabiendo que son 2 motores lo que hay que hacer girar en ambas direcciones y con solo 2 lineas de datos).

Si te interesa o te sirve esto ultimo, me dices y te lo explico de mejor forma.

Saludos!!


----------



## danyelk6u5 (Oct 18, 2010)

umm...no´me sirve, tengo que apagar los motores en algun momento :S 
pero bueno, creo q al final de cuentas me inclinare por comprar el max232 y el pic que me convierta de serial a paralelo..
pero a ver si entendi:
Saco los datos del puerto serial al chip, el cual conectare al max 232 para ajustar voltajes y todo eso, y de ahi lo saco al pic f1684 lo que me convertira la salida que venia como un bytea 8 salidas de un bit, estoy en lo correcto?


----------



## thenot (Oct 18, 2010)

Haz programado alguna vez???

Creo que te haria bien leer esto.


----------



## danyelk6u5 (Oct 18, 2010)

Programado si, programado chips nunca. Pero e hablado con mi maestro, me ha dicho que el me ayuda a preparar el codigo y meterselo al chip


----------



## thenot (Oct 18, 2010)

Bueno entonces no se porque te complicas tanto con la programacion del chip o como trabajaras con el.
En pocas palabras esto lo debes hacer asi: primero debes tener un "protocolo" en tus datos, que puede ser tan simple a decir, cuando por serial envie un 1 entonces moveré el motor1 a la derecha, cuando envie un 2, moveré el motor1 a la izquierda, y asi... Ahora en el chip tendrás que estar a la espera de estos números, y cuando recibas uno, dirás si el numero es 1 entonces activo este pin del pic y este otro lo apago, si recibo un 2 apago (o lo dejo en estado bajo) un pin y activo otro y asi hasta que tengas todas las combinaciones que necesites para controlar tus 2 motores. En el pic cada pin que puede ser salida, mediante programación puedes dejarlo en estado alto o bajo. Así que la coneccion del pic al puerto serial sera como dejar un programa a la espera de que un usuario ingrese un valor por el teclado, cuando lo recibes y según sea lo que recibiste (comparación con if o lo que quieras) haces lo que necesites, osea poner en estado alto unos pines del pic o micro y otros en estado bajo (para darle dirección a los motores).

Espero te aclare un poco lo que quieres, sino avisas y trato de explicártelo de mejor forma.

Saludos!!


----------



## danyelk6u5 (Oct 18, 2010)

ummm... ok ok... ya entendi, pero si se necesita del max 232 supongo verdad?, o con solo ese pic basta para hacer el trabajo?


----------



## thenot (Oct 18, 2010)

El max232 lo necesitas ya que el puerto serial trabaja con voltajes cercanos a los 12 volts, y para el pic necesitas de 5 volts y para bajar ese voltaje entra en acción el max232, o el circuito que te mencionaron mas arriba.

Una consulta... necesitas enviar solo datos desde el pc al pic? o en ambos sentidos?? Lo digo, por que si es en un solo sentido mejor usas dl diagrama que te menciona Reyvilla y si es en un solo sentido (de pc a pic) necesitarias solo de la parte superior del circuito, osea 1 transistor y 3 resistencias y para el max232 necesitaras aparte de el, 4 condensadores, así que te conviene mucho mas hacerlo con el transistor, yo lo e usado y no hay diferencias entre el max y este. Bueno al final es decisión tuya, cualquiera de los 2 te funcionara sin problemas. Pero si o si necesitas de uno de estos, sea cualquiera de los 2.

saludos!


----------



## danyelk6u5 (Oct 18, 2010)

ok ok... que bien, pues como e dicho, no se mucho de circuitos, asi que creo que optare por el max232, pero bueno, mañana lo consulto con mis compañeros a ver que dicen, muchisimas gracias a todos los que han participado... muy buen foro, pocas veces me e topado con algun foro en el que te contesten asi de rapido y con muy buenas respuestas, cuando necesiten algo de programación, dense una vuelta por elhacker.net ese foro es igual muy bueno, y ahi estare también para responder con gusto XD
Un saludote a todos, y nuevamente mil gracias... 
seguramente me vean por aqui mas seguido


----------



## antiworldx (Oct 18, 2010)

Hasta eso puedo decir... que la calidad de las respuestas van en calidad de las preguntas... Saca tus conclusiones.

Solo te encargamos que des seguimiento a tu proyecto para los que tengan el mismo problema posteriormente y ya no tengan que esperar a la solucion como en tu caso.


----------



## thenot (Oct 18, 2010)

antiworldx dijo:


> Solo te encargamos que des seguimiento a tu proyecto para los que tengan el mismo problema posteriormente y ya no tengan que esperar a la solucion como en tu caso.



Iba a decir exactamente lo mismo, porque muy usualmente ocurre que hacen las consultas y no sabes si les funciono o no lo que querían hacer y otros que miran el hilo ven que no hay una solución clara y vuelven a preguntar lo mismo, o mucho tiempo después reviven temas pidiendo al autor del hilo que les proporcione ayuda con lo mismo o pidiendo la documentación de lo que se hizo.

Saludos y que todo te funcione de maravillas!


----------



## reyvilla (Oct 19, 2010)

seria bueno que lo colocaran como regla del foro ya que si se esta ayudando a alguien o nos estan ayudando a  nosotros, deberiamos de compartir esa informacion ya que forma parte de todos los que colaboraron para hacerlo...saludosss


----------



## antiworldx (Oct 19, 2010)

Esta muy facil obligar a que sigan retroalimentando el problema. No suelten la solucion de un solo golpe... hay que dar de poco a poco las soluciones de manera que se mantenga el interes. O siendo mas cruel, mantenerlos comiendo de gotitas.


----------



## reyvilla (Oct 19, 2010)

abeces es desesperante pero asi se aprende mas. porque uno se ve obligado a investigar y a resolver tambien parte del problema.


----------



## danyelk6u5 (Oct 19, 2010)

Esta bien, esta bien, lo are  ire posteando mis avances


----------



## danyelk6u5 (Oct 26, 2010)

Una preguntota, avanzando con mi proyecto me tope con una pagina, la cual proporcionaba el firmware del micro para que convierta una señal serial a paralela, pero lo que no me a quedado claro es el circuito, el circuito es este 






pero no veo por ningun lado  donde quedaria el max232, además no se que tipo de oscilador es el que usa, tengo entendido que son 2 tipo, el de cuarzo y....no recuerdo el otro, por favor si alguien pudiera ayudarme se lo agradecria mucho! 

Aqui la pagina de donde lo e sacado
http://www.pablin.com.ar/electron/circuito/mc/sertopar/index.htm


----------



## antiworldx (Oct 27, 2010)

Este indica que lleva el oscilador de cuarzo de 4MHZ ahi indicado... junto con los dos capacitores de 18pF.
La salida del max232 va a dar a la entrada serie, y quita la resistencia de 10K


----------



## albertoxx (Oct 27, 2010)

Para que complicarse si con los 2 pines de salida del puerto serial DTR y RTS y 2 flipflop 74LS73 como contadores binarios uno por cada puerto se puede digamos

0  0 -> motor apagado
0  1 -> motor izquierda
1  0 -> motor derecha
1  1 -> ... sin uso


----------



## antiworldx (Oct 27, 2010)

Si... y la sincronizacion? Si al encender la PC arroja pulsos? Si hay ruido en linea?
Ya lo armaste y lo usaste? 
Es mas, ¿Recuerdas como vienen codificados el paquete?


----------



## albertoxx (Oct 27, 2010)

he trabajado bastante con el puerto serial y  las rutinas del puerto te dicen en que estado estan los pines, ademas al encender la pc el puerto va a sus valores predeterminados y si necesito saber la sincronia puedo usar los pines DSR,DCD,CTS,RING para saber en que estado estan los motores


----------



## antiworldx (Oct 27, 2010)

Ha, estas usando los bits de sincronia... Eso ya es otra historia. Acostumbrado yo a usar solo dtx y drx


----------



## danyelk6u5 (Oct 27, 2010)

mmm... talvez sea lo más fácil, pero es que ya me faltaban las ideas para hacerlo, apenas empezaba a trabajar con el puerto serial, y no sabia que había mas de una salida, pero ya tengo el micro, ya tengo el firmware para hacer la conversión, hace un momento lo grabe ya tengo casi todos los materiales, solo me falta armarlo, y en eso estoy... 
(Además de que las salidas hacia el micro las tengo que hacer en ensamblador y nunca me tope con alguna interrupción para DTR y RTS) ya luego les cuento como me fue, espero que bien, sino volvere a preguntar 
Saludos!


----------



## albertoxx (Oct 27, 2010)

Si lo logras hacer hay subes la info al foro para cuando alguien quiera ayuda con algo similar ya lo encuentre echo


----------

