jump to navigation

Circuito conversor de niveles RS-232 a TTL

Publicado el July 7, 2004 a las 11:54 Category Circuitos, Hardware

art84_t.jpgLos niveles de +/- 12V de la interfase RS232 de una PC no son muy compatibles con los niveles TTL de la mayoría de los microcontroladores o de otras aplicaciones como agendas electrónicas o celulares. Una solución es el archiconocido MAX232, pero este integrado es caro y en algunos casos difícil de conseguir. Les presentamos dos circuitos adaptadores de nivel basados en transistores sencillos y muy baratos.

Los puertos RS232 usan voltajes bipolares de +/- 12 V para representar los unos y os ceros, mientras que en TTL se usa 0 y 5V. Un popular integrado para hacer esta conversión es el MAX232 que usa algunos condensadores externos para generar estos voltajes a partir de una fuente de 5V. El MAX232 hace un excelente trabajo, pero no siempre tenemos uno en nuestra caja de componentes y en ocasiones es difícil de
conseguir. Lo que si todo aficionado a la electrónica tiene son transistores y resistencias, con estos y basándonos en una característica de los puertos RS232 modernos podemos hacer adaptadores de nivel a una fracción del costo.

Los puertos RS232 identifican los voltajes negativos entre -3V y -12V como 1´s y los positivos entre +3V y +12V como 0´s, en TTL 5 V es un uno y 0 V es un cero, de entrada notamos que es necesario una especie de inversión, pues no bastaría colocar un diodo Zener de 4.7v y una resistencia para adaptar los voltajes de salida en TxD. El circuito #1, es capaz de hacer el trabajo y usa el voltaje negativo del pin TxD para la entrada sin la necesidad de usar una fuente dual.

art84_1.jpg

Sin embargo, los puertos seriales modernos se sienten cómodos en la mayoría de los casos interpretando los valores de cero voltios en su entrada como unos. Usando esta característica podemos simplificar el circuito anterior y usar solo transistores NPN y configurarlos como inversores, es decir un valor de 0 voltios TTL da como resultado 5 voltios en el lado RS232 que se entiende como un cero lógico y 5 voltios TTL dan a la salida 0 voltios que es un 1 en RS232 para este caso. Basados en esto el circuito #2 solo usa NPN y elimina la conexión anterior entre RxD y TxD para obtener lo voltajes negativos.

art84_2.jpg

En mi experiencia personal el circuito #2 nunca me ha fallado y lo he empleado para interfases con teléfonos celulares, impresoras, agendas electrónicas, calculadoras y microcontroladores sin ningún problema, incluso usando portátiles.

Los que usamos microcontroladores PIC de Microchip como el multifacético 16F84 tenemos algo de suerte adicional. Gracias a lo diodos de protección presentes en las entradas es posible conectar directamente un puerto RS232 al microcontrolador únicamente usando 2 resistencias. Hay que recordar hacer las inversiones necesarias en el programa del micro tomando en cuenta lo anteriormente expuesto y conectar la tierra del puerto serial (pin 4 en un DB9) a la tierra del circuito. Si se emplean otros micros, es altamente recomendable usar los conversores de nivel RS232-TTL para evitar daños.

art84_3.jpg


Comments»

1.el papirikis - 23 February 2008

no se si sea un error en el circuito o corijanme pero creo que la tierra del rs232 es el pin 5

2.tecnotopia - 24 February 2008

El pin 4 es el pin de DTR y tiene que estar a tierra para que funcione la transmisión. la nomenclatura en el esquematico no hace referencia a el pinpout del DB9 sino a las señales del circuito. La tierra del circuito tiene que ser el pin 5 tal como mencionas. Muy buena acotación.

3.Nutriax - 18 May 2008

hola que tal, queria saber si probaste cualquiera de estos circuitos con una notebook sin puerto serie (es decir con un adaptador usb ->rs232) porque tengo entendido y lo he comprobado que el max232 no anda con dicho adaptador y aparentemente se debe a la mala alimentacion del usb y el max consume bastante o algo asi he leido en un foro… (cuando lo probe desde el pic a la pc anda al pelo pero de la pc al pic no!).
espero tu pronta respuesta porque estoy en ese aprieto y no se como hacer la comunicacion serie del pic a mi notebook que no tiene puerto serie.

4.Robin - 16 August 2008

BUENAS, NO TENGO MUCHO CONOCIMIENTO DE ELECTRONICA NADA MAS LO BASICO, Y MI PREGUNA ES LA SIGUIENTE; TENGO UNA INTERFACE PARA CARRO CON PUERTO RS232, CON EL DIAGRAMA QUE ESTA EN ESTA PAGINA SE LO PUEDO CAMBIAR O ADAPTARSELO POR USB

5.Gustavo - 5 February 2009

Hola, luego de varias horas peleándo contra mi conversor USB-RS232… he descubierto lo siguiente: el conversor es un Prolofic
no sé bien el modelo puesto que lo puse y como mi laptop es con windows vista, comencé a probar un driver atrás de otro
hasta que 1 funcionó. Pues bien, todo funciona perfecto cuando me comunico con otra PC… envío y recibo de maravillas,
sin embargo, en mi trabajo fabricamos equipos que son controlados por RS232 y cuando me conectaba con una de mis
placas base la alegría se transformaba en tristeza. En búsqueda de la solución probé de todo, les resumo: aparentemente
este adaptador (y supongo que alguno más también) tiene un problema de masas (conexión de tierra), es por esto que
cuando conectaba mi placa y una PC a la vez, ambas recibían lo que yo transmitía con mi laptop, cuando desconectaba la PC
mi placa ya no recibía. Medí tanto la carcasa como el pin 5 del DB9 contra la masa del USB y no hay ningún tipo de conexión.
La solución que encontré es conectar por fuera un cable que una la tierra de mi placa con la tierra del USB (o sea de la laptop).
Esto suena un tanto peligroso, y estoy en búsqueda de otra solución… pero evidentemente acá hay algo que no está claro
de estos equipitos tan necesarios!

6.Jordi Espada - 15 April 2009

Hola,
Solo queria decir que probé de montar el circuito 2 y funciono perfectamente con el bx24p-u

Un saludo y muchas gracias por la información 🙂

7.harpuli - 25 April 2009

pero si los niveles de RS232 dicen de +3v a + 25v y -3v a -25v en un nivel de cero a la salida del transistor no seria algo riesgoso de que el puerto serial indeterminara ese valor, sea cero o uno logico

8.seta43 - 12 July 2009

Hola

He estado probando los circuitos y he encontrado un error en el primer esquema.
El transistor BC557 esta mal colocado, el emisor tiene que estar donde está el colector y con eso funciona de maravilla.
El segundo esquema tambien lo he probado y también funciona.

Un saludo.
Seta43

9.Valiant-jesus - 17 May 2010

hola e estado probando el sircuito numero dos pero con un bc548 me parece que no funciona me puedes decir si no afecta en nada si ago este cambio

10.Rafael Gutierrez - 2 August 2010

Para algunos adaptadores USB serie no hay que conectar el pin 4 ya que ni lo usan.

11.Patricio - 7 February 2012

Hola quiero comunicar un pic16f628a con la pc puedo conectar directamente con las dos resistencias de 1k y 20k , podrias enviarme un ejemplo del codigo en el micro para hacer la inversion necesaria ?