Circuito Serial RS-232 a USB

Tengo un circuito diseñado para ser conectado al ordenador por el puerto serial RS232, que hace falta para conectarlo al puerto USB¿?

Saludos... :)
 
Si, esoy de acuerdo que es la mejor opcion, pero para progrmar-lo como es? porque el cicuito que estoy diseñando para serial abarca 10 sensores y 2 acuadores... y no se como hacerlo para que el ordenador lo reconozca... en principio pensaba hacer el circuito ya directametne para USB pero pense que seria mas facil empezar por lo basico con serial...ya que no encontre algun PIC que tuviera tantos pines I/O suficientes y tampoco se el funcionamiento de todo esto...

Saludos... :)
 
Que tal, mira si recien comienzas te recomiendo que hagas un enlace serial (RS-232) Una vez que esto esta funcionando comprando un conversor SERIE-USB comercial te será transparente ya que viene con un driver que genera un COMM "virtual" y puedes seguir usando el mismo programa en la PC que se comunica serie a traves de ese COMM "virtual" y por supuesto del lado del hardware también dispondrás de un COMM RS-232.
Si quieres ir mas allá puedes comprarte un PIC18F4550 Que tiene 32 Patas de I-O + puerto USB incorporado. De la página www.microchip.com te puedes bajar bastante información acerca del STACK USB, su implementación tanto del lado Microcontrolador como del lado PC...
Suerte !!!
 
hola:
soy nuevo en este foro, y solo quería agradecer la ayuda, yo creo que represento a muchos que solo revisan el foro y no comentan por saber muy poco de electronica.
En especial, este tema ha sido de gran ayuda
 
Nacho dijo:
Lo mas fácil es comprar el adaptador USB a RS-232, por economía y simplicidad.

Mira este enlace:

http://www.ramelectronics.net/html/usb_serial.htm

Utiliza el circuito integrado Prolific PL-2303 (USB to Serial Bridge Controller) que difícilmente lo consigues y fuera de eso tienes que programarlo.

cuando conecto un pendrive (por ejemplo) el Pc lo reconoce, cuando conecto una impresora por USB me pide un software de instalación; me refiero a que el computador "sabe" lo que le estoy conectando porque se lo digo, no tendría ese problema con el adaptador?
 
Hola a todos.... necesito de su ayuda.... tengo una impresora Hp con puerto serial y tengo que conectarla a un laptop por puerto usb, existe algun adaptador que me sirva para tal fin?. Compre uno que es de usb a serial rs232 y obviamente no sirve, hay alguna manera de modificarlo para poder utilizarlo como les dije anteriormente?. Muchas gracias. Saludos
 
Nacho dijo:
Lo mas fácil es comprar el adaptador USB a RS-232, por economía y simplicidad.

Mira este enlace:

http://www.ramelectronics.net/html/usb_serial.htm

Utiliza el circuito integrado Prolific PL-2303 (USB to Serial Bridge Controller) que difícilmente lo consigues y fuera de eso tienes que programarlo.

Compras esos cables para celulares genericos Samgsun por 10 u$s que te viene con el pl-2003 bajas el software de la pagina de prolific actualizado y te emula un puerto COM perfectamente (ya que para el telefono no funciona)

Saludos
 
hola soy pame

yo tengo una duda sobre este tema, tengo un circuito que ya se comunica de forma serial con la pc pero quiero que la comunciacion sea via usb, con un conversor serial- usb es suficiente para la comunicación o necesito hacer algun cambio en la programación, programo en picbasic

gracias por su ayuda
 
Compre un Picstart Plus con entrada RS232 el cual mi ordenador no tiene su respectiva a entrada, compre un cable adaptador de USB a RS232 y venia con su respectivo driver, lo instale, pero al conectar el programador no lo reconoce, intente en el panel de control>add new hardware pero es inutil, alquien ha solucionado este tipo te problemas?
 
Gracias esta interesante, de hecho ya resolvi mi problema al hacer que MPLAB reconociera el Picstart Plus solo me pedia el numero de COM, solo tuve que ir a Control Panel>System>Hardware>Device Manager>Ports (COM & LPT), cheque donde estaba el cable RS232, volvi a MPLAB>Programmer>Settings...>Communications e indique el com y listo, Gracias
 
Tengo un problema parecido:

Se trata de que si uso la UART, es decir, el puerto COM del PC, funciona mi proyecto, pero si uso un adaptador USB->RS232 me encuentro que no puedo controlar de manera independiente los bits de entradas y salidas. Dicho de otro modo, no puedo hacer OUT o INP a dicho puerto.

Por ejemplo, si haces

Out &h3FB, 64

pones la patilla T a uno
si ese 64 lo cambias por un cero, se pondría a cero.

Alguien sabe cómo manejar los bits DTR, RTS, T... etc., de forma directa mediante un adapatador USB a COM(x)?

El adaptador que estoy usando lleva una FT232, ya sabéis, las famosas FTDI

Saludos y gracias.
 
Hola amigos,

me compré unos convertidores de USB a RS-232 y cuando quise usarlos como si estuviera comunicándome con una UART me llevé la sorpresa de que no entiende.

Alguno de vosotros sabe cómo manejar los bits RST, DTR, DCD, etc... del convertidor USB a RS232 de forma directa con algún lenguaje de programación?

He intentado de todas las formas posibles haciendo Inp y Out, pero "nanay" de la china.

Saludos.
 
hola; tengo una duda, se pueden conectar mas de un dispositivo a un puerto seria? estoy diseñando una minicelda de manufactura donde programo las funciones de un brazo robot por el puerto serial y ahora queremos conectar una pantalla tactil para monitoreo y esta tambien se comunica por rs232. la idea es que la computadora solo intervenga para darle nuevas ordenes al brazo o controlarlo manualmente y que la pantalla solo reciba el estado del brazo.
 
Para manejar los Bits de forma independiente en un FTDI FT232xx o su homónimo PL232xx:

Salidas: DTR - RTS
Entradas: CTS - DSR - (RI*) - DCD


* ("RI" sólo es compatible con la UART (Com[x]) que viene en el PC; en los FTDI no suele tener implementada esta patilla, porque sólo se usan en los antiguos Modem)

He comprobado la frecuencia máxima de cambio de estado con un osciloscopio. Si pones a cambiar el estado sólo una de las salidad (DTR ó RTS) se obtiene una frecuencia máxima de 166 Hercios. Y si usas los dos a la vez (DTR y RTS), la frecuencia es de 85 hercios. Esto es muy pobre, y para lo que necesitaba no me es factible, pero comunico los resultados por si alguien le encuentra alguna función a todo esto.

El programa está escrito en FreeBasic. No sé cómo se hace en otros lenguajes de programación. Si no puedes acceder al zip que adjunto, copio aquí los dos programas. Hace parpadear dos LED conectados al DB9 del FTDI (también es válido para la UART del PC, pero hay otras formas mucho más sencillas de manejarlo, directamente con la instrucción "Out puerto, dato" [has de abrir el puerto de comunicaciones previamente con 'Open com "com1:2400,8,n,1,rs,ds,cd" as #1' si estás en plataformas de SO de 32 ó 64 bits como el Win XP; en win98 no hace falta abrir el puerto porque el kernel del SO es de 16 bits, es decir, tipo msdos] y puedes alcanzar más de 20KHz de parpadeo). Las conexiones están en el JPG que adjunto. En pantalla no sale nada porque se trata de ver el parpadeo de los LEDs. Antes de ejecutar el programa has de averiguar en qué puerto Com está tu FTDI; lo puedes encontrar en: Inicio > Panel de Pontrol > Sistema > Hardware > Administrador de Dispositivos > Puertos Com & LPT > y pulsas en el símbolo '+', ahí verás la referencia del puerto donde esté. Si quieres tb puedes cambiar el Com a otro que tu quieras mientras esté libre, pulsando con el botón derecho y le das a "Propiedades" y después pulsas en la pestaña "Configuración del puerto". Pulsas sobre el botón "Opciones avanzadas" y verás abajo de esa ventana que te permite cambiar el Com a otro puerto si está libre.

En cualquiera de los dos programas has de pulsar "Escape" para salir.

Puedes descargar los códigos fuentes, esquema y los ejecutables aquí:
http://sites.google.com/site/proyectosroboticos/manejo-de-pines-del-ftdi-ft232

Pines:
RTS -----> patilla 7 del DB9
DTR -----> patilla 4 del DB9
Masa ----> patilla 5 del DB9

Manejo de RTS y DTR:

Código:
#Include "windows.bi"
#Include "file.bi"

Dim Letra  As String 
Dim h      As HANDLE
Dim ComX   As Integer
Dim Puerto As String

Screen 9

Locate 10,1: Input "Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX

Cls

Locate 10,1
Print "Observa el cambio de estado de los LED. Ha de parpadear"
Print "primero uno y luego el otro, un segundo de tiempo cada uno."
Print
Print "Pulsa 'Escape' para salir. Igual tarda 2 segundos en tener efecto"
Print "hasta finalizar la temporizacion." 

Puerto="Com"+Str(ComX)

Open Com  Puerto+":9600, N, 8, 1, CS, DS, RS, CD" As #1
' El valor 9600 puede ser cualquier otro valor porque no estamos haciendo comunicaciones asincronas.


While Letra <> Chr(27)
	
	Letra=InKey()
	
	h = Cast(HANDLE, FileAttr( 1, fbFileAttrHandle ))
		 
	EscapeCommFunction( h, SETDTR )  ' DTR=1
	
	Sleep 500
		 
        EscapeCommFunction( h, CLRDTR )  ' DTR=0
   
        Sleep 500
   
        EscapeCommFunction( h, SETRTS )  ' RTS=1
   
        Sleep 500
		 
        EscapeCommFunction( h, CLRRTS )  ' RTS=0
   
        Sleep 500

Wend

Close #1
 
End

Y ahora el programa para leer las entradas. Si las patillas de entrada (CTS - DSR - DCD) están sueltas lo interpreta como un 1. Hay que llevarlas a masa para que se ponga a cero. Los resultados podrás leerlo en el monitor.

Patillaje de entradas:

CDC -----> patilla 1 del DB9
DSR -----> patilla 6 del DB9
CTS -----> patilla 8 del DB9
RI -----> patilla 9 del DB9 (opcional)
Masa ----> patilla 5 del DB9

El programa está escrito en FreeBasic, no sé cómo se hace en otros lenguajes de programación. En el ZIP adjunto los ficheros fuente y ejecutable.

Manejo de las patillas CDC DSR y CTS del FTDI FT232xx ó PL232xx:

Código:
#Include Once "windows.bi"

Dim Letra     As String
Dim hCom      As HANDLE
Dim modemStat As Dword
Dim ComX      As Integer

Screen 9

Locate 10,1: Input "Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX

Cls

hCom = CreateFile( "Com" + Str(ComX), GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL )
    
While Letra = ""
	 
	Letra=InKey()
		
	GetCommModemStatus( hCom, @modemStat )
		
	Locate 10,10
		
	If modemStat And MS_CTS_ON  Then Print "CTS=1 ";  Else Print "CTS=0 ";
	If modemStat And MS_DSR_ON  Then Print "DSR=1 ";  Else Print "DSR=0 ";
	If modemStat And MS_RING_ON Then Print "RING=1 "; Else Print "RING=0 ";
	If modemStat And MS_RLSD_ON Then Print "RLSD=1"   Else Print "RLSD=0"  
	   
	Print modemstat          
			
Wend

CloseHandle( hCom )

End
 
Última edición por un moderador:
Atrás
Arriba