Interface RS-232/RS-485 Reversible

Interface RS-232 a RS-485 (Reversible)

Introducción

Ya que me han solicitado algun esquema de la conversión del Bus 232 al Bus 485, aqui les planteo el circuito típico comercial que se ofrece en el rubro. El circuito es reversible, es decir, puede usarse como conversor de cualquiera de las dos normas : de RS-232 a RS-485 y de RS-485 a RS-232. Es de muy facil construcción y con tan solo unos pocos componentes podemos lograrlo.

---------------------------------------------
Fuente : DISCA (Departamento de Informática de Sistemas y Computadoras)
Traducción :MaMu
Versión del Producto :2005
Licencia :Freeware (Debe respetarse la autoría del Hardware Libre)
DataSheet List :
MAX232 - http://www.disca.upv.es/aperles/web51/pdf/1798.pdf
SN75176B/SN65176B - http://www.disca.upv.es/aperles/web51/pdf/slls101b.pdf
LTC485 - http://www.disca.upv.es/aperles/web51/pdf/lt0485.pdf
MAX485 - http://www.maxim-ic.com/appnotes.cfm?an_pk=2116


---------------------------------------------

Módulo de Conversión

Con este módulo vamos a poder comunicarnos con otros sistemas, usando las normas de comunicación serie más habituales que existen en el entorno industrial. Estas normas son la RS-232 y RS-485, para las cuales se desarrollará un circuito que podrá funcionar con una u otra norma con pocos cambios.

DESCRIPCIÓN:

Todo microcontrolador de la familia 80x51 incluye un puerto serie que, mediante un sencillo hardware de adaptación de niveles de tensión, permite implementar un interfaz RS-232 y RS-485 Esto permitirá al micro que se comunique fácilmente con otros equipos y, en especial, con los PCs.
Se recomienda, en general, que los cables que interconectan los dispositivos no excedan de 15 metros. Para distancias mayores se recomiendan otros sistemas de interconexión, por ejemplo un RS-485.
El estándar RS-232-C describe 21 señales en un conector de 25 líneas tipo DB-25, pero ha degenerado y es normal encontrarlo con conectores de 9 patillas tipo DB-9 y con menos señales.

Las líneas que más interesan en este capítulo son TRANSMIT y RECEIVE (líneas 2 y 3). Estas líneas son compatibles (entre el computador o terminal y el módem) porque TRANSMIT es una señal de entrada al módem y de salida para el computador/terminal. Lo mismo ocurre con la señal RECEIVE.

El resto de líneas permiten conocer cuando se produce una llamada, manejar una comunicación full-duplex o half-duplex, evitar perdidas de datos cuando uno de los dos elementos no puede absorber más datos, etc.

En cuanto a los niveles de tensión, la norma RS-232-C define una tensión simétrica respecto a la referencia, y al menos 3 V para un nivel lógico 0 y -3 V. para un nivel lógico 1. En la práctica los niveles de tensión son de +12V y -12V.

El interfaz RS-232 utiliza una transmisión no balanceada, por lo que no es adecuada en ambientes industriales (ruido en modo común) y en longitudes de conexión largas (efecto crosstalk).

Las velocidades de transmisión más utilizadas son: 300, 1200, 2400, 4800, 9600 y 19200 bps. En la práctica se logran alcanzar hasta 115.200 bps.

Las limitaciones de la norma RS-232C se pueden superar con las mejoras que aportó posteriormente la norma RS-485 (hay normas previas como la RS-423 y RS-422). Su ventaja es que se trata de una transmisión balanceada o diferencial que aporta como beneficios inmediatos una mayor velocidad de transmisión, una gran longitud de línea del orden del kilómetro y una buena inmunidad al ruido.

El medio físico de transmisión es un par trenzado, con las ventajas de rechazo de ruido que aporta. Si al par trenzado se le añade un apantallamiento se estará en condiciones de tener un red de comunicaciones industriales bastante inmune al ruido (incluso sin el apantallamiento), por ello, la mayoría de buses de campo (redes industriales de control) emplean este tipo de cableado. Téngase en cuenta que se admiten hasta 32 estaciones en un sólo hilo y la comunicación es half-duplex. Será necesario poner una resistencia terminadora en cada extremo de 120 Ohms.

Esquema de una RS-485

En un RS-485 se transmite exactamente lo mismo que para un RS-232 así que suele haber en el mercado adaptadores entre las dos normas que capacitan, por ejemplo, a un PC para comunicarse con sensores y actuadores industriales.

En el esquema se presenta un hardware que permite al microcontrolador conectarse con un sistema RS-232 y con un sistema RS-485. Para la interfaz RS-232 se usará un clásico MAX232 que incorpora un bomba de tensión que permite obtener +/-10 voltios a partir de una única alimentación de +5V. Las únicas señales del estándar RS-232 disponibles serán la masa lógica (línea 5), la señal T (línea 3) y la señal R (línea 2), todo ello en un conector DB-9 según suele ser habitual últimamente. Para conectar el micro a un PC bastaría con implementar un NULL-MODEM cruzando las líneas 2 y 3.

Para la interfaz RS-485 se puede usar un SN75176 o un LTC485. En el sistema propuesto se selecciona si se desea usar la interfaz 232 o la 485 mediante unos jumpers y si se quiere conectar una resistencia de 120 Ohms si está en un extremo del par trenzado.

EJEMPLO:

Se puede usar un PC como terminal RS-232 para enviar órdenes al micro o recibir información. El hardware mostrado en este apartado lo permite fácilmente, recuérdese que basta con cruzar las líneas 2 y 3. Sólo falta establecer el mimo protocolo en los extremos.

El siguiente listado muestra una aplicación que configura el puerto serie a 2400 bps, 8 bits, sin paridad (cristal de 12 Mhz) y envía continuamente un mensaje al puerto serie aprovechando la función printf.

Código:
    /* serie3.c */ 
    #include <stdio.h>
    #include <io51.h>

    sfr ADCON = 08; /* solo ALTAIR 535 */ 

    #define DELAY 30000 

    void delay(int i); 

    void main(void) 
    {
        unsigned char i;
        /* en los ALTAIR hay que quitar el control del serie al S.O.*/
        EA = 0; /* SOLO ALTAIR535, deshabilitar interrupciones*/
        PSW.5 = 1; /* SOLO ALTAIR535, deshabilitar captura serie*/
        /* generador baudios con timer 1, modo autorrecarga */
        TMOD &= 0x0F;
        TMOD |= 0x20;
        PCON |= 0x80; /* SMOD=1 */
        TH1= 0xE6; /* 2400 baudios, 12Mhz */
        SCON=0x70; /* MODO 1 */
        ADCON.7 = 0; /* solo ALTAIR535, desconectar generador dedicado */
        TR1=1;
        TI = 1;
        while(1)
        {
            for (i=32;i<255;i++)
            {
                delay(DELAY);
                printf(">>> Codigo: %c\n",i);
            }
        }
    }
     

    void delay(int i) 
    {
        while (i--);
    }

Conectando la salida serie al PC como se ha indicado, se puede recibir la información desde cualquier software capacitado para leer los puertos serie del PC.
 

Adjuntos

  • 232to485_577.gif
    232to485_577.gif
    43.4 KB · Visitas: 3,854
  • placa1_940.jpg
    placa1_940.jpg
    40.3 KB · Visitas: 30,083
Hola, bueno nose si me pueden responder esto, pero n entiendo muy bien este circuito, dice conversor de rs232 a rs485 y viceversa, bueno el problema es ke no entiendo donde van conectados los pines en caso de ke sea de rs232 a rs485, es de los pines 11 y 12 del max232 y van a los pines 6 y 7 del max485, y la salida seria en los pines 3 Tx yRx?, pin 1?, seria de esa forma?, y si quiero enviar de rs485 a rs232 las conexiones serian las mismas?, si alguien me puede ayudar con esta duda por favor, gracias.
 
Observá el circuito, de JP1 a JP4, fijate que la solución y respuesta a tu pregunta se encuentra en como configuras estos terminales.

Saludos.
 
hola!, antes que nada quiero comentar que soy un poco novato en electronica....
Tengo un lector de targetas "HID MiniProx" y lo quiero conectar al Rs232... segun lo que estuve viendo tengo que hacerlo mediante este adaptador de 485 a 232... las salidas de mi sensor son:
A - Vcc
B - gnd
C - Data0
D - Data1/clock
E - Shield Ground
F - Green led
G - Red led
H - Beeper
I - Hold
J - Card present.

Mis preguntas son:
- Hay algun circuito mas simple o que sea directo de 485 a 232? (este circuito no lo entiendo bien)
- o no tendrian una imagen de las pistas de este circuito?
 
HOLA aniebuhr... me doy cuenta que estas un poco perdido.

Primero que todo, un lector de tarjetas HID MiniProx, utiliza un protocolo llamado Weigand para comunicarse con los paneles de control de acceso. Para eso utiliza los teminales Data 0, Data 1. Este protocolo no tiene nada que ver con la conversion de protocolo RS232/RS485.
 
VEN TENGO UNA DUDA Y ESPERO ME PUEDAS AYUDAR,, ES Q TENGO UNA DUDA ES Q LO Q NECESITO ES COMUNICAR UN DISPOSITIVO Q SE COMUNICA A TRAVES DE RS-245 CON UN PC POR EL RS-232,,, ENTIENDO Q ESTE CIRCUITO ME SIRVE????,, SERIA CONECTANDO AL CONTRARIO EN LOS JP1-JP4 CONECTANDO EL RX DEL 485 AL TX DEL 232 Y VICEVERSA,, ESTOY EN LO CORRECTO???,,, OTRA DUDA SI TENGO DUDA DEL CORRECTO FUNCIONAMIENTO DE LOS IC"S COMO VERIFICO EL SN 75176 O DEL MAX 232??,, Q VOLTAJES SE TRANSMITEN EN EL 485 O COMO SIMULO PARA VER SI EL INTEGRADO ESTA FUNCIONANDO BIEN????


GRACIAS
 
JAVIERCRUZ dijo:
VEN TENGO UNA DUDA Y ESPERO ME PUEDAS AYUDAR,, ES Q TENGO UNA DUDA ES Q LO Q NECESITO ES COMUNICAR UN DISPOSITIVO Q SE COMUNICA A TRAVES DE RS-245 CON UN PC POR EL RS-232,,, ENTIENDO Q ESTE CIRCUITO ME SIRVE????,, SERIA CONECTANDO AL CONTRARIO EN LOS JP1-JP4 CONECTANDO EL RX DEL 485 AL TX DEL 232 Y VICEVERSA,, ESTOY EN LO CORRECTO???,,, OTRA DUDA SI TENGO DUDA DEL CORRECTO FUNCIONAMIENTO DE LOS IC"S COMO VERIFICO EL SN 75176 O DEL MAX 232??,, Q VOLTAJES SE TRANSMITEN EN EL 485 O COMO SIMULO PARA VER SI EL INTEGRADO ESTA FUNCIONANDO BIEN????


GRACIAS

Efectivamente, los jumpers identifican el sentido de conversion. Bajando las hojas de tados de ambos IC's se especifica como usar el test point, y asi despejar todo tipo de dudas acerca del funcionamiento de los mismos.

Saludos.
 
hola, estoy armando el circuito que esta mas arriba, lo necesito para aumentar el alcance del cable de conexión, an sugido los siguientes inconvenientes,
1- el pin 1 del max485 a donde va conectado?
2- los borens 1 y 2 que vienen de las salidas 6 y 7 del max485, ?van a tx232, rx232, tx485 o rx 485 para luego salir por los JP1 a JP4?
desde ya, gracias por la ayuda.
Juan
 
La verdad que el circuito no esta para nada claro.
Estaría bueno (si no es mucho atrevimiento) que lo especifiques un poco más, por ejempo
La linea RO a donde va???

Creo que en el foro hay gente que no tiene mucha noción y se puede perder en el circuito.

Voy a tratar de hacerlo tomando algunos datos del mismo+ las hojas de datos de los integrados.

Es un comentario constructivo, espero no sea tomado a mal.

Gracias
 
eidtech disculpa que te pregunte, pero pudiste hacer funcionar el conversor con algun otro diseño, si no es molestia necesitaría algo de información sobre esto ya que tengo que armar algo así para un domo PTZ y la verdad que el tiempo me apremia.

Gracias
 
mafdan...

Yo estoy implementando RS485 en mis disenios basados en microcontrolador...

por lo tanto utilizo el 75176 de la siguiente manera:

El pin 1 lo conecto a la recepcion del micro..
El pin 2 y 3 juntos los conecto a un pin I/O del micro...
El pin 4 lo conecto a la transmision del micro...
5 y 8 Alimentacion
6 y 7 Lineas de Datos Diferenciales...

Y ya en el microcontrolador, cuando quiero transmitir... pongo el I/O que esta conectado al 2 y 3 del 75176 a "1" por el tiempo aproximado que vaya a durar la transmision... luego lo desactivo y listo...

Me arme varios convertidores con el control de flujo automatico y me dieron muchos problemas, por lo cual opte por llevar el control de flujo 'manual' y desde entonces no he tenido ningun problema.

Tambien toma en cuenta la resistencia de terminacion de 120 Ohms.

Lo que tu tendrias que hacer es conectar el 76176 a un MAX232... y llevar el control de flujo por una linea de control del puerto serial.
 
Hola, espero no lo tomen a abuso, solo que encontre las opciones MAX 485CPA y MAX485CSA, al igual con el MAX 232CPE, MAX 232ECPE y MAX 232CPE N, mi pregunta es cuales de ellos son los correctos, una disculpa pero soy muy nuevo haciendo comunicaciones ya revise las hojas técnicas y parece que son:

max485cpa y max232cpe ya que solo varía el pin package, podrían confirmarmelo,

saludos!!!
 
Que alguien me diga si me equivoco, pero creo que el circuito pubicado tiene un par de errores, al menos en la conexión del SN75176:

1. El pin 4 (D) no debe estar conectado a tierra. Este pin debe recibir los datos con niveles TTL que se van a trasmitir por el bus, por ejemplo deberia estar conectado al TX de un micro (como lo menciona eidtech)

2. Si el pin 1 (R) está conectado a nada, no hay forma de leer los datos que "alguien" esté transmitiendo en el bus. Este pin entrega (en niveles TTL) los datos que se reciben por el bus, por ejemplo deberia estar conectado al RX de un micro.

3. Pa' que se necesita el transistor en el pin 3 (DE).
 
Muchas gracias por la ayuda la verdad ya trabaje con esta interfaz y s produce un poco de ruido pero con un par de truquios se soluciona todo.
Atte
Guss F
 
Solo una duda, donde se conecta el RX al SN65176. solo eso lo demas ya lo estube probando y gracias por postearlo que pensaba comprar uno y estan algo caros mejor hacerlo.

Otra, se puede sustituir el SN65176B por un SN65LBC1
 
Buen dia, tienes el esquema de las pistas para construir el circuito?, porque yo veo 3 circuitos creo que deberian estar unidos? como se interconecta este circuito por completo?, espero tu respuesta te lo agradeceria mucho.

Saludos.
 
Hola que tal.... tengo una pregunta con respecto al protocolo RS485....

Tengo entendido que este protocolo, por su gran ventaja de transmisión a larga distancia, transmite (valga la redundancia) señales de corriente! ahora, la pregunta es: En este circuito se está haciendo el envio de señales de corriente o de voltaje?

Otra cosita! que conector físico se usaria para hacer una conexión de este protocolo---? Si en RS232 se usa el más común que es el DB9, que se usa en RS485?

Muchas gracias!

Atte: Enigma... La llanerita de Guayana :)
 
Atrás
Arriba