Prender led por Puerto Serial

Hola,

Disculpen que pregunte esto, ya que he visto varios hilos de conversacion con referencia al puerto serial, pero el problema es que estoy encontrando programas bastante elaborados y algo complicados de entender para alguien no sabe mucho sobre la comunicacion de datos por el puerto serie.

Bueno, yo comumenmente uso el puerto paralelo y como sabran es bastante sencillo pasar datos por ahi, con un simple outport(registro, dato) (en Turbo C++) ya puedes prender un led, sin ningun circuito adicional.

Ahora, mi intencion es pasar a dominar el puerto usb, pero supongo que primero he de pasar a comprender el puerto serial, y buscando en la web encontré muchas formas -creo.

Encontré bastante teoria pero no me termina de ser muy claro todo esto, es decir, me gustaria encontrar una comparacion con el puerto paralelo, como para que sirve cada pin del puerto serial (el de 9 pines) y como simplemente prender un led desde un lenguaje de programacion X. Es decir, se usa alguna funcion tipo outport()? o alguna direccion de registro que haya que pasar como argumento?. Me gustaria me pusieran un ejemplo, lo mas simple que se pueda para poder comenzar a entender este tipo de transmision de datos.

Disculpen por toda la verborrea inicial, pero creo que a veces se molestan porque se tocan temas ya tratados.

Saludos.
 
simplemente asi, outportb(0x3fc,1) con esto encenderas el pin DTR del puerto serie si mal no recuerdo es el pin 4 y para encender el RST outportb(0x3fc,2) que creo que es el pin 7 y para apagarlo simplmente envias un 0, esto por supuesto en C y no en c++ por que la funcion outportb ya no existe pero se puede utilizar el API de Windows.

por si las moscas 0x3FC es la direccion para el manejo de los bit de control de flujo


ojo!!!!!!!!
la salida de los bits en un inicio se encuentra alrededor de -9v
cuando envias un 1 pasa alrededor de +9v esto es por que maneja el protocolo RS232
 
Última edición:
Para resumir, el puerto paralelo ya no sirve para nada, es lento, necesitas muchos pines, y poco practico.

El puerto serie, si bien es viejo, la comunicacion se realiza por cables Rx y Tx, y despues tenes varios pines que son de control (para empezar, no le des bola y usa el protocolo rs232). Entonces tu cable debera ser este:

Dispositivo 1 - Dispositivo 2
Tx1 -> Rx2
Rx1 <- Tx2
Gnd <-> Gnd

Es importante no equivocarse al conectar Tx1 con Tx2, ya que podrias quemar el puerto. Si no me equivoco en Pc el pin 2 es Rx y el pin 3 Tx, pero verificalo en la wiki.

Ahora, ya teniendo el cable, tendrias que tener una nocion de como funciona el puerto.

Basicamente el puerto manda 8 bits (si lo configuraste de esa forma) en forma serie, osea manda el 1er bit, luego el 2do, y asi hasta el ultimo. En el medio podes tener tambien bits de paridad y los bits de stop que le indican al puerto cuando termino de enviar un dato.

Supongamos que deseamos encender un solo led, usando el Tx1 podriamos mandarle la señal de encendido, pero para que este siempre encendido los 8 bits que mandamos tienen que estar en 1, sino el led se prendera y apagara constantemente (dependiendo de la velocidad, tal vez ni lo veas). Entonces, para no cargar el Tx1, se podria usar un transistor o una buffer para suministrarle la corriente al led y usar una fuente de 5 v:

Tx1 --> Rlim-Base -> Base Q1
5v -> Led -> Rlim-led -> Colector Q1
Emisor Q1 -> Gnd

En este ej. use un transistor npn. Con este simple circuito podrias encender un led usando el puerto serie. Cuando consigas hacerlo, podrias despues usar un shifter para encender mas leds o activar un rele, o usar uC para realizar algo.
 
Ya te dieron un poco de teoria de conexiones...
Te recomiendo que uses el max232 para recibir las señales del serial.
Este chip usa 5V, internamente aumenta el voltaje para enviar o lo disminuye al recibir. El chip hace todo, tu solo envias los datos normalmente de algun microcontrolador y los recibes. El diagrama de conexion del chip viene en el mismo datasheet. Solo usa 4 capacitores de 1uF si no recuerdo para funcionar.
La forma correcta es usando algun microcontrolador que te reciba los datos... Que microcontrolador sabes usar???'
 
Hola a todos, como mi propio nombre indica soy un principiante en todo esto.

Mi pregunta sería si puedo encender y apagar un LED directamente desde el pc con un programa en C# mediante un puerto serie o un puerto paralelo y ya de paso si se pudiera mediante puerto USB sin necesidad de utilizar un PIC, vamos usando los componentes mas sencillos.

Tiene que ser lo mas sencillo posible, vamos mandar una orden de que se encienda un LED y otra para que se apague.

Lo necesito urgente para el trabajo, la verdad es que he leido cosas pero estoy un poco confuso,si pudieran pasarme el programa en C#, el esquema de montaje del hardware o fotos y demas para ver como se hace y no morir en el intento jeje.

Muchas gracias a todos y siento molestarles para tan poca cosa.

Un saludo.
 
Si no te molestia, me acerco, te lo monto, te instalo el programa y te pago una caña...;)
Se supone que los foros están para ayudar no para dar soluciones a la carta. :unsure:

En serio, creo es mejor el "hágaselo usted mismo" en el buen sentido, claro: PRIMER PASO
El cuarto enlace el de vb-mundo parece que promete. :rolleyes:
Edición: Se ve que "gugel" cada vez lo saca en un orden, me refiero a esta página
 
Última edición:
Lo primero es pedirte disculpas, sabía yo que iba a molestar con mi petición y decirte que llevas razón.

Pero soy nuevo y todo me parece un mundo y me estan presionando mucho en trabajo y si no consigo hacer esto aunque parezca mu tonto puede que me despidan y tu tranquilo que la caña en todo caso te la pagaría yo.

Mira información si que tengo, es más el problema es que tengo demasiada!!

Me explico un poco, estamos diseñando un prototipo que funciona con smartcard para arrancarlo e identificar al usuario y en este prototipo van muchos accesorios y uno de ellos es simplemente un hardware que encienda un led como señal de aviso.

El aparato solo tiene puertos de usb, pero como he leido que es más dificil y complicado pues nada sería comprar un adaptador de cable usb a puerto serie o paralelo.

He visto que en paralelo se puede hacer con un esquema como este...

Encender-leds-con-el-puerto-paralelo.html


El mas sencillo esquema y sin pics ni nada, pero hay gente que dice que es peligroso y que no se puede hacer tan directo.

En serie he visto que se puede hacer así....

http://delphi.jmrds.com/?q=node/8

Y mas de lo mismo no se si se puede hacer directamente.

Otro problema sería que en mi trabajo no tengo nada para hacer placas y demás, por lo que si pido los componentes a no ser que los monte en un protoboard no podría realizarlo y quedaría un poco cutre, ¿¿no habría ningún hardware que se venda ya hecho?? para la programación de los puertos en C# ya me he informado un poco de como hacerlo con la librería Inport32.dll.

Muchas gracias y Scooter te agradezco que me hayas respondido.

Para el puerto paralelo no lo he puesto bien.
Quería poner esto para que se viera:

http://www.taringa.net/posts/apuntes-y-monografias/1533724/Encender-leds-con-el-puerto-paralelo.html
 
Última edición:
No me ha sentado mal, solo que me parecía demasiado "a la carta" la petición.
Si tienes que comprar un adaptador compra uno de puerto paralelo que te dará mas juego.
Si quieres mas corriente en el led puedes unir dos o mas salidas que iluminen el mismo led, para un led y una resistencia no te hace falta ni protoboard ni nada, los puedes pinchar el el "bujerico" del conector.
 
Gracias a todosss pero me acaban de cambiar el proyecto una barbaridad.

Ahora una vez que ya lo tenía solucionado o mejor dicho pensado, quieren cubrirse las espaldas y dejarlo todo mas abierto, me explico hacer un dispositivo que se maneje por el ordenador con C# y al que ademas de encender un LED (ahora quieren una bombilla) pues que el día de mañana se pueda conectar una camara o lo que sea.

Lo que he pensado de primeras sería con un transistor que se maneje con el pc alimentar un relé y este ya que alimente cosas mayores, pero claro como quieren trabajar ya con la red a 220V pues ya hay que tener un transformador que me coja la tension de 220V y me la saque a 12V de continua y algún que otro fusible......

Uuuffff ahora si que no se por donde buscar ni que hacer...me hechan segurooooo jeje.

Bueno buscaré más cosas por el foro(popr lo que no os asusteis si me veis por otros lados diciendo disparates) y si alguien me puede ayudar desde aquí se lo agradecería mucho, en serio.

Un saludoo
 
Por el lado del led no es peligroso
Por el otro lado si; hay 230V
Deberías de poner un fusible, diferenciales etc ya hay en tu casa, además los diferenciales no te van a proteger de un contacto directo.
 
Hola a todos estoy decidido a montar el circuito antes mencionado de la pagina de pablin.

Pero encesito que el circuito funcione como un interruptor, porque parece ser que cuando le mando un impulso al MOC 3041 desde mi pc al puerto paralelo se enciende su led y ya funciona el circuito, pero mi pregunta es:

Si dejo de mandarle pulsos al MOC3041 ¿se apaga el led y ya el circuito no funciona?

Si la respuesta es sí como me temo, que tengo que implementar al circuito para que cuando le mande un impulso desde el pc se quede el circuito cerrado y siga encendiendo una bombilla por ejemplo y cuando le de otro impulso me abra el circuito y se apague la bombilla.

Todo esto es para que no tenga que estar todo el rato mi ordenador mandandole datos al circuito.

Espero vuestras respuestas y gracias por todo, me estais ayudando mucho y espero que esto me salga!! por cierto hay alguna tarjeta ya hecha en el mercado que haga todo esto??
 
Eso depende del PC, yo no se si la señal que usas es continua o no. Según parece cuando le das una orden se enciende y cuando le das otra se apaga ¿no?
¿Quieres que funcione si apagas el PC? No entiendo muy bien que pasa.
 
Hola Scooter,

La señal del pc es simplemente un pulso por el puerto paralelo, que mediante un programa en C# se le da al circuito 1 si quiero que se encienda o 0 si quiero que se apague.

El problema es que le tengo que estar mandando todo el rato datos al circuito para que no se me apague no? o simplemente con un pulso se queda encendido el MOC 3041?.

Lo que quiero hacer es que dandole un pulso se quede encendido todo el rato sin tener que estar mandandole datos al circuito como si fuera un interruptor vamos y que cuando le vuelva a dar otro pulso se apague, no se si me he explicado bien.
 
Me he perdido. ¿No era por el puerto serie? ¿Si das un uno y no dices nada mas se apaga sola?
De todos modos por pulsos se puede, puedes poner un biestable JK o algo así.
 
No es por puerto paralelo, pero eso da igual ya que solo cambiaría la formar de mandar esos pulsos, pero bueno ya lo tengo mas o menos estudiado con el puerto paralelo aunque lo mejor sería con USB pero no se como hacerlo.

A tu pregunta de que si le dan un 1 y no le das a nada mas y se apaga, es lo que te preguntaba yo, supongo que si no? si le doy un uno al MOC 3041 se enciende el led y hace que conducuzca el circuito pero si no le mando nada mas se apaga digo yo.

Lo del biestable JK parece interesante me podrias decir como hacerlo mejor?y donde ponerlo?.

http://www.pablin.com.ar/electron/circuito/computer/triac220/
triac220


Lo que quiero hacer es que el circuito funcione como un interruptor pero que no haya nada d eso fisicamente, sino que cuando le de un pulso en el puerto me encendiera el MOC 3041 y aunque no le siga mandando pulsos siga encendido y que cuando yo quiera desde el puerto otra vez le mande un pulso y me apague el circuito.
 
Pues yo supongo que no. Si yo le digo a mi pc en cualquier lenguaje que A=1, entonces A=1 hasta que alguien o algo digan que vale otra cosa. Si A es la posición de memoria del puerto paralelo y le pongo el dato que sea, si nada ni nadie lo cambia se queda así hasta nueva orden.
 
Ya pero eso haría que el pc le estuviera mandando datos todo el rato por el puerto paralelo no?porque al fin y al cabo las señales son pulsos de valor lógico alto o bajo en este caso 5v o 0v, pero si yo le mando un 1 que serían esos 5v solo se manda una vez no quiero que se manden todo el rato ya que sino me cargaría el MOC 3041 no?
 
Atrás
Arriba