01 · Lo que RS-232 no resuelve
Los límites de una señal referida a masa
En el tema 22 vimos que RS-232 compensó las debilidades de TTL con una tensión mucho mayor (±5 a ±15 V) y un umbral de ±3 V. Pero seguía siendo una señal single-ended: cada línea es una tensión medida contra la masa, y esa masa tiene tres problemas que no se arreglan subiendo voltios:
- La masa no es igual en los dos extremos. Equipos conectados a distintos tomas, tableros o edificios pueden tener entre sí varios voltios de diferencia, que se suman a la señal.
- El ruido se suma tal cual. Un motor, un relé o un cable de potencia paralelo inducen una tensión en el conductor de señal, y el receptor la ve como parte del dato.
- Es un enlace punto a punto, lento y corto: 15 m a 20 kbit/s según la norma.
RS-422 (y su pariente RS-485, del tema siguiente) nacen para eso. Mantienen la UART y su trama de siempre (tema 7), pero la transportan como señal diferencial por pares trenzados. El resultado: hasta 10 Mbit/s en distancias cortas, o hasta 1200 m a velocidades bajas, con una inmunidad al ruido que RS-232 no tiene. Es el estándar de las comunicaciones serie industriales, de los instrumentos de medición a distancia y de la interfaz de muchos controladores de motores, codificadores y pantallas.
02 · La idea central
Restar para rechazar el ruido
El transmisor diferencial maneja dos salidas complementarias: cuando una sube, la otra baja. Las llamamos aquí V+ y V−. El receptor no mira ninguna de las dos contra masa: mira su diferencia Vd = V+ − V−, y decide por su signo, con un pequeño umbral de histéresis:
La otra cantidad importante es la tensión de modo común, el promedio de las dos: Vcm = (V+ + V−) / 2. Es la parte de la señal que es igual en los dos conductores, y es justamente donde cae el ruido: una interferencia que llega por acoplamiento a ambos conductores (un campo eléctrico o magnético que atraviesa el cable) desplaza V+ y V− por igual. La resta se la lleva puesta:
| Situación | V+ | V− | Vd = V+ − V− | Lo que lee el receptor |
|---|---|---|---|---|
| Sin ruido | +1,5 V | −1,5 V | +3,0 V | correcto |
| Ruido de modo común de +6 V | +7,5 V | +4,5 V | +3,0 V | correcto: la resta lo anuló |
| Ruido de modo común de +9 V | +10,5 V | +7,5 V | +3,0 V | Vcm fuera de rango (±7 V): el receptor puede equivocarse |
| RS-232 (±5,4 V) con el mismo +6 V | una sola línea: −5,4 V + 6 V = +0,6 V | — | indefinido: la señal se perdió | |
Dos cosas hay que notar. Primero, el rechazo de modo común no es infinito: tiene un límite de tensión, el rango de modo común del receptor (±7 V en RS-422). Más allá de eso, los transistores de entrada se saturan y la resta deja de ser válida, aunque la diferencia siga siendo de 3 V. Segundo, el rechazo solo funciona si el ruido llega igual a los dos conductores. Si uno recibe más ruido que el otro, la diferencia entre ambos no es cero: aparece un ruido de modo diferencial que sí pasa. Por eso los conductores deben ir lo más juntos y parecidos posible, y de ahí el par trenzado.
En números: si el ruido de modo común tiene una amplitud n y los dos conductores lo captan con una asimetría k (el 1 % en un par trenzado de calidad, el 10 % en dos hilos paralelos, hasta el 50 % si un conductor está pegado a la fuente de ruido y el otro lejos), el ruido que sobrevive es k · n. Con un ruido de 6 V de modo común y una señal de 3 V: un par trenzado deja 0,06 V (la señal queda en 2,94 V); dos hilos paralelos, 0,6 V (2,4 V); un conductor mal ubicado, 3 V (la señal queda en 0 V y se pierde).
03 · Un truco geométrico
El par trenzado
Trenzar los dos conductores hace dos cosas a la vez:
- Los pone a la misma distancia de cualquier fuente de ruido. En cada vuelta, cada conductor cambia de lado, así que en promedio ambos están igual de cerca de un motor o de un cable de potencia vecino. Eso mantiene la asimetría k en un valor muy bajo, y el ruido eléctrico llega por igual a los dos.
- Cancela el ruido magnético. Un campo magnético variable que atraviesa el par induce una tensión en cada lazo que forman los conductores. Como lazos vecinos tienen sentido opuesto, las tensiones inducidas en lazos sucesivos se restan y la suma a lo largo del cable es casi cero.
Algunas reglas de cableado que se desprenden de eso:
- Cada señal diferencial va en su propio par. Nunca se separan los dos conductores de un par ni se los saca de pares distintos: se pierde el trenzado y la simetría. Un enlace RS-422 de cuatro hilos usa dos pares, uno por sentido.
- La impedancia característica del par (la que ve una señal rápida que viaja por él) es de 100 a 120 Ω en los cables de comunicaciones. Un cable de red UTP (categoría 5) tiene 100 Ω; los cables específicos para RS-485/RS-422 tienen 120 Ω, con calibre típico AWG 24 y a veces malla de blindaje. La terminación (sección 06) se elige igual a ella.
- El blindaje (una malla que envuelve el par) reduce aún más el ruido eléctrico, pero se conecta a tierra en un solo extremo: si se conecta en ambos, las diferencias entre tierras hacen circular corriente por la malla, que se convierte en una antena.
- Separar los cables de comunicación de los de potencia, y cruzarlos a 90° si hay que cruzarlos.
04 · El estándar
Qué fija RS-422
RS-422 (formalmente TIA/EIA-422, antes RS-422-A) define un enlace diferencial unidireccional por cada par: un único transmisor puede manejar un par, y a ese par pueden conectarse hasta 10 receptores. Sus parámetros principales, junto a los de RS-232 y RS-485 para ubicarlo:
| RS-232 | RS-422 | RS-485 (tema 24) | |
|---|---|---|---|
| Tipo de señal | Referida a masa | Diferencial | Diferencial |
| Transmisores por línea | 1 | 1 | hasta 32 (carga unitaria) |
| Receptores por línea | 1 | hasta 10 | hasta 32 |
| Sentido | Full dúplex (2 líneas) | Full dúplex (2 pares, 4 hilos) | Half dúplex (1 par) o full (2 pares) |
| Tensión diferencial del driver | ±5 a ±15 V (a masa) | ≥ 2 V con 100 Ω de carga; máximo 6 V | ≥ 1,5 V con 54 Ω de carga |
| Umbral del receptor | ±3 V | ±200 mV | ±200 mV |
| Rango de modo común | — | ±7 V | −7 V a +12 V |
| Velocidad máxima | 20 kbit/s (norma) | 10 Mbit/s | 10 Mbit/s |
| Longitud máxima | ~15 m | 1200 m | 1200 m |
Las dos cifras de velocidad y longitud no se alcanzan a la vez: 10 Mbit/s es para unos 12 m y 1200 m para velocidades de 100 kbit/s o menos (sección 07). Y el rango de tensiones es chico (unos pocos voltios), lo que permite alimentar los transceptores con 5 V o con 3,3 V sin generar tensiones negativas con una bomba de carga como en el MAX232: RS-422 es una interfaz de baja tensión, y los chips son sencillos y baratos.
Los transceptores de uso común son el MAX490 (5 V, full dúplex, hasta 2,5 Mbit/s) y el MAX3490 (3,3 V, hasta 10 Mbit/s); los clásicos AM26LS31 (cuatro drivers) y AM26LS32 (cuatro receptores), y los módulos «TTL a RS-422» de bajo costo. En el lado de la lógica, un transceptor tiene una entrada de datos (DI), una salida de datos (RO), y en el lado de la línea dos pares de pines: las salidas del driver (Y y Z, o TX+ y TX−) y las entradas del receptor (A y B, o RX+ y RX−).
05 · Cuatro hilos
El enlace de cuatro hilos y la polaridad
Un enlace bidireccional entre dos estaciones usa dos pares trenzados: uno lleva los datos de A a B y el otro de B a A. Esto da full dúplex como en la UART: transmisión y recepción simultáneas. Las conexiones:
- TX+ de A con RX+ de B, y TX− de A con RX− de B (primer par).
- TX+ de B con RX+ de A, y TX− de B con RX− de A (segundo par).
- Una resistencia terminadora de unos 120 Ω entre los dos conductores, en el extremo del receptor de cada par (sección 06).
- Opcionalmente, un hilo de referencia (masa de señal) entre las estaciones, para mantener el modo común de los receptores dentro de ±7 V cuando las masas flotan. En ambientes industriales se conecta con una resistencia de unos 100 Ω para limitar la corriente de lazo, o se usan transceptores aislados.
A diferencia de RS-232, en RS-422 las conexiones se hacen «+ con +» y «− con −»: el transmisor de un lado va a la entrada del receptor del otro, sin cruzar dentro del par. El problema es que nadie se pone de acuerdo en cómo llamar a cada conductor:
| Nombre | Quiere decir | Dónde se ve |
|---|---|---|
| TX+ / TX−, RX+ / RX− | No inversor (+) e inversor (−) | Módulos y equipos RS-422 |
| Y / Z (driver), A / B (receptor) | Y = no inversor, Z = inversor; A = no inversor, B = inversor | Hojas de datos de transceptores (convención de varios fabricantes, como el MAX485) |
| A / B de la norma TIA/EIA-485 | Según la norma, A es el terminal negativo en reposo (marca) y B el positivo: A equivale a «inversor» | La propia norma; algunos fabricantes y equipos industriales |
Como la norma llama A a lo que la mayoría de los fabricantes de chips llaman B (o al revés), un A/B de un equipo puede ser el B/A del otro. Si se conectan «A con A y B con B» entre dos dispositivos de convenciones opuestas, la señal llega invertida. Este es el problema de campo más frecuente de RS-422 y RS-485. Cómo se reconoce: el receptor ve una línea en reposo que parece una señal continua en espacio (la UART detecta un BREAK constante o una cadena de bytes 0x00 con errores de trama), y los datos, cuando llegan, tienen todos los bits invertidos. La corrección es la más simple posible: intercambiar los dos hilos del par en un extremo. No daña nada.
La regla para evitar la confusión: identificar cada conductor por su función (no inversor o inversor, según la hoja de datos de cada transceptor) y no por la letra. Y en caso de duda, probar: si no hay comunicación o los datos salen negados, cruzar el par.
06 · Cuando el cable es largo
Reflexiones y terminación
A velocidades altas o distancias largas, el cable deja de ser un simple hilo y se comporta como una línea de transmisión. Una transición de la señal viaja por el par como una onda, a unos 200 000 km/s (alrededor de 5 ns por metro), y encuentra una impedancia característica Z0 de unos 120 Ω. Cuando esa onda llega al final de la línea:
- Si lo que encuentra tiene la misma impedancia Z0, la absorbe por completo.
- Si no, una parte rebota hacia atrás, y se suma a la señal original. El tamaño del rebote lo da el coeficiente de reflexión:
| Carga al final | Γ | Qué pasa |
|---|---|---|
| Abierta (solo el receptor, de alta impedancia) | +1,00 | Rebota toda la onda con el mismo signo: el flanco se duplica y luego aparecen oscilaciones |
| 120 Ω (terminación adaptada) | 0,00 | No rebota nada |
| 470 Ω | +0,59 | Rebote fuerte |
| 56 Ω | −0,36 | Rebote invertido |
| Cortocircuito | −1,00 | Rebota todo con signo contrario |
Los rebotes van y vienen por el cable hasta apagarse, y producen sobreimpulsos y ringing que pueden cruzar el umbral del receptor y generar bits falsos. La solución es una resistencia terminadora de valor igual a Z0 (100 a 120 Ω) conectada entre los dos conductores, en el extremo del receptor (el más lejano del transmisor). En un enlace punto a punto, solo ese extremo; el transmisor, que tiene baja impedancia de salida, no necesita nada.
¿Cuándo hace falta? Una regla práctica: cuando el tiempo de ida y vuelta de la onda (2 · L · 5 ns/m) es mayor que el tiempo de subida de la señal, la línea es «larga» y los rebotes se ven. Con un driver rápido (flancos de 10 ns), son unos 1 m de cable; con uno de pendiente limitada a 250 kbit/s (flancos del orden de 1 µs), hasta unos 100 m. No hace daño terminar una línea corta (cuesta 5 V / 120 Ω ≈ 42 mA de consumo en el driver con un nivel diferencial de 5 V, algo menos en la práctica), y es lo recomendado de rutina.
Además de la terminación, conviene: usar un solo cable troncal (nada de estrellas), con derivaciones muy cortas para los receptores adicionales (mucho menores que el tiempo de subida), y un único terminador en el extremo más lejano. La terminación también ayuda a la inmunidad al ruido: una carga de 120 Ω baja la impedancia que ve el ruido acoplado.
07 · Cuánto se llega
Distancia y velocidad
La distancia máxima depende de la velocidad, porque el cable tiene dos enemigos distintos:
- La resistencia del cobre, que atenúa la señal continua. Un conductor de calibre AWG 24 tiene unos 84 Ω por kilómetro, y la señal viaja por ida y por vuelta (dos conductores). La resistencia de lazo de 1200 m es de unos 202 Ω, que con la terminadora de 120 Ω y la impedancia de salida del driver forman un divisor de tensión. Con un driver equivalente a 50 Ω y 5 V de tensión de salida en vacío: Vrx = 5 V · 120 / (120 + 50 + 202) ≈ 1,6 V, todavía muy por encima del umbral de 200 mV. A 2000 m, 1,2 V: el límite no es la caída continua.
- La capacidad y las pérdidas dependientes de la frecuencia (efecto pelicular, dieléctrico del aislante). Redondean los flancos, que se vuelven demasiado lentos frente a la duración del bit y comen el instante de muestreo. A mayor velocidad, menor distancia.
La regla empírica que resume el gráfico de la norma es que el producto de la velocidad por la longitud es aproximadamente constante, del orden de 1,2 × 108 bit·m/s con un cable AWG 24 de buena calidad:
| Velocidad | Longitud máxima |
|---|---|
| 9600 bit/s a 100 kbit/s | 1200 m |
| 250 kbit/s | ≈ 480 m |
| 1 Mbit/s | ≈ 120 m |
| 2,5 Mbit/s | ≈ 48 m |
| 10 Mbit/s | ≈ 12 m |
Son valores de referencia, no garantías: un cable de peor calidad, conectores y derivaciones, o un entorno ruidoso, los recortan. En la práctica, la mayoría de las instalaciones industriales usan 9600 a 115 200 baudios, muy por debajo de estos límites, justamente para tener margen. Un detalle útil: los drivers con pendiente limitada (slew-rate limited, como el MAX3485 o el MAX487, hasta 250 kbit/s) generan flancos lentos que irradian menos y toleran terminaciones imperfectas, a costa de no poder ir más rápido.
Comparado con RS-232 (15 m), RS-422 permite desde 12 m a 10 Mbit/s hasta 1200 m a velocidades bajas, un enlace con aislamiento de ruido real y varios receptores en el mismo par.
08 · Cuando nadie habla
Reposo, líneas abiertas y receptores a prueba de fallas
Un receptor diferencial decide por el signo de Vd. ¿Qué pasa si Vd está entre −200 mV y +200 mV? La salida es indefinida, y puede ser un 0 o un 1 según el ruido. Hay tres situaciones en que eso ocurre:
- El cable está desconectado (entradas abiertas): el ruido cambia la salida sin sentido y la UART recibe una lluvia de caracteres falsos.
- El cable está en cortocircuito (Vd ≈ 0): lo mismo.
- Nadie maneja la línea (en RS-485, cuando todos los drivers están en alta impedancia; en RS-422 punto a punto no ocurre mientras el driver esté habilitado).
Los receptores modernos «a prueba de fallas» (fail-safe) garantizan una salida definida (un 1 lógico, o sea el estado de reposo de la UART) cuando la entrada está abierta, en cortocircuito o sin señal. Lo logran desplazando los umbrales: en lugar de ±200 mV, deciden con umbrales de −200 mV y −50 mV, de modo que Vd = 0 caiga del lado del «1». Los receptores antiguos (sin esa propiedad) necesitan resistencias externas de polarización (bias) que mantengan el par en un estado definido; las vemos con detalle en el tema 24.
Otras precauciones de instalación:
- Mantener el modo común dentro del rango. Las masas de los equipos pueden diferir por varios voltios. Un hilo de referencia, transceptores aislados o un ajuste cuidadoso de la puesta a tierra evitan que Vcm salga de ±7 V.
- Protección contra sobretensiones: los pines de línea reciben descargas electrostáticas y picos inducidos. Se usan transceptores con protección ESD de ±15 kV y diodos supresores de transitorios (TVS) en los pares.
- Alimentación de los transceptores desacoplada con un condensador cerámico de 0,1 µF junto al chip.
09 · Con el microcontrolador
Con el microcontrolador
Con un transceptor full dúplex como el MAX3490 (3,3 V), el microcontrolador se conecta casi igual que a un MAX3232, sin las conexiones de control: TX de la UART → DI (entrada del driver), RO (salida del receptor) → RX de la UART, y los dos pares hacia el cable. Desde el punto de vista del programa, la UART es la de siempre (tema 9): no hay nada especial que configurar.
El primer programa es una prueba de lazo del enlace de cuatro hilos: se unen con puentes las salidas del driver (Y y Z) con las entradas del receptor (A y B), sin cable de por medio. El programa envía un patrón, cuenta cuántos bytes vuelven correctos y avisa si parece una polaridad invertida (se recibe sobre todo 0x00 o los bits negados):
const int PIN_RX = 16; // RX de la UART 2 (salida RO del MAX3490)
const int PIN_TX = 17; // TX de la UART 2 (entrada DI del MAX3490)
void vaciar() { while (Serial2.available()) Serial2.read(); }
// Envía un patrón y analiza lo que vuelve: bien, incompleto, negado o distinto.
void pruebaDeLazo(const byte *patron, byte n) {
vaciar();
Serial2.write(patron, n);
Serial2.flush();
byte rx[32];
byte k = 0;
unsigned long t0 = millis();
while (k < n && millis() - t0 < 300) {
if (Serial2.available()) rx[k++] = Serial2.read();
}
if (k == 0) { Serial.println("Sin eco: revisar alimentación del transceptor, puentes Y-A y Z-B y terminación"); return; }
byte iguales = 0, negados = 0, ceros = 0;
for (byte i = 0; i < k; i++) {
if (rx[i] == patron[i]) iguales++;
if (rx[i] == (byte)~patron[i]) negados++;
if (rx[i] == 0x00) ceros++;
}
if (k == n && iguales == n) Serial.println("Lazo correcto: polaridad y velocidad bien");
else if (negados >= k / 2) Serial.println("Datos negados: polaridad invertida, cruzar los dos hilos de un par");
else if (ceros >= k / 2) Serial.println("Casi todo 0x00 (o BREAK): señal continua en espacio, polaridad invertida o línea en cortocircuito");
else { Serial.print("Datos distintos: "); Serial.print(iguales); Serial.print(" de "); Serial.print(n); Serial.println(" iguales; revisar velocidad y formato"); }
}
void setup() {
Serial.begin(115200);
Serial2.begin(115200, SERIAL_8N1, PIN_RX, PIN_TX);
}
void loop() {
const byte patron[] = { 0x55, 0xAA, 'R', 'S', '4', '2', '2', 0x0D, 0x0A };
pruebaDeLazo(patron, sizeof(patron));
delay(1000);
}
El patrón 0x55 y 0xAA alterna todos los bits, así que sirve para detectar un nivel pegado, una velocidad equivocada y una polaridad invertida: con la polaridad al revés, 0x55 llegaría como 0xAA (los bits negados). El comportamiento exacto de una línea invertida (bytes 0x00, un BREAK continuo, errores de trama) depende del chip y de la biblioteca, de modo que el programa mira las dos señales.
El segundo programa es el lado de recepción permanente de un enlace punto a punto con los dispositivos en las dos puntas (por ejemplo, un lector que manda líneas de texto a una placa). Agrega lo que un receptor de campo necesita: un tiempo máximo sin datos, para detectar que el cable se cortó o el otro equipo se apagó:
const unsigned long SIN_DATOS_MS = 5000; // más de 5 s sin nada: algo anda mal
unsigned long ultimoByte = 0;
bool enlaceCaido = false;
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, 16, 17);
ultimoByte = millis();
}
void loop() {
while (Serial2.available()) {
Serial.write(Serial2.read()); // lo que llega por RS-422 se ve en el monitor
ultimoByte = millis();
if (enlaceCaido) { enlaceCaido = false; Serial.println("\n[enlace recuperado]"); }
}
if (!enlaceCaido && millis() - ultimoByte > SIN_DATOS_MS) {
enlaceCaido = true;
Serial.println("\n[sin datos: ¿cable cortado, equipo apagado o polaridad invertida?]");
}
}
Con un transceptor sin «a prueba de fallas», un cable cortado produce una lluvia de caracteres falsos en lugar de silencio, y este perro guardián no se activa. De ahí la importancia de elegir receptores fail-safe o de polarizar la línea. Para la PC, hay cables y adaptadores USB–RS-422 (con chips de FTDI y otros) que aparecen como un puerto COM, de modo que el programa de la PC es el mismo que para RS-232.
10 · Analogía con programación
La línea diferencial en Python
La matemática de este tema se puede explorar en unas líneas: el rechazo del ruido de modo común y su límite, el ruido que sobrevive según la simetría del cable, la tensión que llega a un receptor lejano, la longitud máxima según la velocidad, el coeficiente de reflexión y el efecto de una polaridad invertida. El programa lo calcula con las mismas fórmulas del tema.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
UMBRAL = 0.2 # V: umbral del receptor diferencial
RANGO_MC = 7 # V: rango de modo común de RS-422
def par(bit, vod=3.0, vcm=0.0):
mitad = vod / 2
return (vcm + mitad, vcm - mitad) if bit else (vcm - mitad, vcm + mitad)
def recibir(vp, vm):
if abs((vp + vm) / 2) > RANGO_MC:
return "fuera del rango de modo común"
d = vp - vm
if d > UMBRAL:
return 1
if d < -UMBRAL:
return 0
return "indefinido"
def rs232(v):
return 1 if v < -3 else (0 if v > 3 else "indefinido")
def tension_en_receptor(largo, rt=120, ohm_por_m=0.0842, voc=5.0, rdrv=50):
r_lazo = 2 * ohm_por_m * largo # ida y vuelta
return voc * rt / (rt + rdrv + r_lazo)
def largo_max(bits_por_s):
return min(1200, 1.2e8 / bits_por_s)
def gamma(zl, z0=120):
return (zl - z0) / (zl + z0)
def longitud_critica(tr_ns, ns_por_m=5):
return tr_ns / (2 * ns_por_m) # ida y vuelta igual al tiempo de subida
SIGNO = {"TIA": -1, "no inversor": +1} # signo de «A» respecto de B en marca
def polaridad(tx, rx, cruzado):
s = SIGNO[tx] * SIGNO[rx] * (-1 if cruzado else 1)
return "correcta" if s > 0 else "INVERTIDA"
print("Ruido de modo común sobre un par diferencial (Vod = 3 V):")
for vcm in (0, 6, 9):
vp, vm = par(1, 3, vcm)
print(f" modo común {vcm:+d} V: V+ = {vp:+.1f} V, V- = {vm:+.1f} V, diferencia {vp - vm:+.1f} V -> {recibir(vp, vm)}")
print(" RS-232 (-5,4 V) con el mismo +6 V:", rs232(-5.4 + 6))
print()
print("Ruido de 6 V de modo común según la simetría del cable (peor signo):")
for nombre, k in (("par trenzado", 0.01), ("hilos paralelos", 0.10), ("junto a la fuente de ruido", 0.50)):
dn = 6 * k
vp, vm = par(1, 3, 6)
print(f" {nombre:27}: ruido diferencial {dn:.2f} V, queda {vp - vm - dn:+.2f} V -> {recibir(vp - dn / 2, vm + dn / 2)}")
print()
print("Tensión en el receptor (AWG 24, driver de 5 V y 50 Ω, terminador de 120 Ω o sin terminador):")
for largo in (100, 500, 1200, 2000):
print(f" {largo:5} m: {tension_en_receptor(largo):.2f} V terminado, {tension_en_receptor(largo, rt=12000):.2f} V sin terminador")
print()
print("Longitud máxima según la velocidad:", {f"{v:,}": f"{largo_max(v):.0f} m" for v in (9600, 250000, 1000000, 2500000, 10000000)})
print()
print("Coeficiente de reflexión (línea de 120 Ω):", {nombre: f"{gamma(z):+.2f}" for nombre, z in (("abierta", 1e9), ("120 ohm", 120), ("56 ohm", 56), ("470 ohm", 470))})
print("Longitud a partir de la cual hay que terminar:", {f"{tr} ns": f"{longitud_critica(tr):.0f} m" for tr in (10, 40, 1000)})
print()
print("Polaridad (A del transmisor, A del receptor, conexión):")
for tx in SIGNO:
for rx in SIGNO:
print(f" {tx:12} -> {rx:12}: A con A {polaridad(tx, rx, False):9} | cruzado {polaridad(tx, rx, True)}")
Resultado: con un par de 3 V, un modo común de 0, 6 o 9 V da siempre una diferencia de +3,0 V, pero con 9 V el modo común sale del rango de ±7 V y el receptor ya no garantiza nada («fuera del rango»); un RS-232 con el mismo +6 V queda en +0,6 V, «indefinido». Con 6 V de ruido de modo común, el par trenzado deja 0,06 V de ruido diferencial (la señal queda en +2,94 V) y se lee bien; los hilos paralelos, 0,60 V (+2,40 V), también; con un conductor pegado a la fuente de ruido el ruido diferencial es de 3,00 V, la señal queda en +0,00 V y el resultado es «indefinido». La tensión en el receptor con el terminador de 120 Ω es de 3,21 V a 100 m, 2,36 V a 500 m, 1,61 V a 1200 m y 1,18 V a 2000 m (sin terminador, en continua, casi los 5 V enteros: 4,97, 4,94, 4,90 y 4,84 V). La longitud máxima orientativa es 1200 m a 9600 bit/s, 480 m a 250 kbit/s, 120 m a 1 Mbit/s, 48 m a 2,5 Mbit/s y 12 m a 10 Mbit/s. Los coeficientes de reflexión en una línea de 120 Ω son +1,00 (abierta), +0,00 (adaptada), −0,36 (56 Ω) y +0,59 (470 Ω); y hace falta terminar a partir de 1 m con flancos de 10 ns, 4 m con 40 ns y 100 m con flancos de 1 µs. En la polaridad, dos dispositivos de la misma convención conectados «A con A» están bien y de convenciones opuestas quedan invertidos; cruzar el par corrige un caso y estropea el otro.
Observá que el rechazo del ruido tiene dos condiciones, ambas visibles en el modelo: que el modo común esté dentro del rango y que el ruido llegue igual a los dos conductores (la asimetría k). Y que el modelo de pérdidas mide solo la caída continua: la que de verdad limita a alta velocidad no está en el cálculo, es la que resume la regla de la longitud máxima.
11 · Exploración interactiva
Laboratorio: ruido, pérdidas, reflexiones y polaridad
El laboratorio tiene cuatro herramientas. La primera es el ruido de modo común: elegís la señal, el ruido y la simetría del cable, y ves qué lee un receptor diferencial y qué leería un RS-232 con el mismo ruido. La segunda calcula la tensión que llega a un receptor lejano y la longitud máxima para una velocidad. La tercera estima si una línea necesita terminación y cuánto rebota. La cuarta resuelve el problema de la polaridad entre dispositivos de distintas convenciones.
1. Ruido de modo común
Elegí la señal, el ruido y el cable.
2. Tensión en el receptor y longitud máxima
Elegí la longitud, el calibre, la terminación y la velocidad.
3. Reflexiones y terminación
Elegí la longitud, el driver y la terminación.
4. Polaridad entre fabricantes
Elegí las dos convenciones y la conexión.
En la herramienta 1, el ruido diferencial que sobrevive es la parte del ruido de modo común indicada por la simetría, tomada con el signo que más daña (peor caso), y el rango de modo común del receptor es de ±7 V. En la 2, el driver equivale a 5 V y 50 Ω, y se pide que lleguen al menos 0,4 V (el doble del umbral). En la 3, la línea tiene 120 Ω de impedancia y 5 ns/m de retardo, y se considera «larga» si la ida y vuelta supera el tiempo de subida. En la 4, «A» es negativo o positivo respecto de B cuando la línea está en marca (reposo).
Recorrido guiado
- Con los valores iniciales (3 V de señal, bit 1, sin ruido, par trenzado), el par entrega V+ = +1,5 V y V− = −1,5 V: diferencia de +3,0 V. El receptor lee un 1.
- Subí el ruido a +6 V: V+ y V− pasan a +7,5 V y +4,5 V, pero la diferencia sigue siendo prácticamente la misma (+2,94 V, con el 1 % de asimetría). El receptor lee un 1. Un RS-232 con el mismo ruido queda en +0,6 V: indefinido.
- Llevá el ruido a +9 V: la diferencia no cambia pero el modo común (+9 V) sale del rango de ±7 V: el veredicto avisa que el receptor ya no garantiza la lectura. El ruido diferencial no es el problema aquí, sino el modo común.
- Volvé a +6 V y cambiá el cable a hilos paralelos: ruido diferencial de 0,6 V, la señal queda en +2,4 V; todavía se lee bien. Con un conductor junto a la fuente de ruido: la señal queda en 0 V, indefinida. El rechazo depende de la simetría del cable.
- Con el bit 0 las tensiones se invierten (V+ = −1,5 V y V− = +1,5 V) y la lectura es un 0.
- En la herramienta 2, con los valores iniciales (500 m, AWG 24, 120 Ω, 100 kbit/s): la resistencia de lazo es de 84 Ω y al receptor llegan 2,36 V. La longitud máxima a 100 kbit/s es de 1200 m. «Cumple».
- Subí la longitud a 2000 m: 337 Ω de lazo y 1,18 V todavía son una señal fuerte, pero 2000 m superan los 1200 m de la norma. Con AWG 26 la resistencia de lazo sube un 59 %.
- Con 500 m y la velocidad a 1 Mbit/s: la longitud máxima baja a 120 m y el veredicto avisa que 500 m es demasiado para esa velocidad. A 10 Mbit/s, 12 m.
- En la herramienta 3, con los valores iniciales (100 m, flancos de 10 ns, sin terminación), la ida y vuelta es de 1000 ns, 100 veces el tiempo de subida: línea larga. Con la carga abierta, Γ = +1,00 y el rebote es de 3 V: «Necesita terminación». Ponele 120 Ω: Γ = 0, «Bien terminada». Con 56 Ω o 470 Ω, quedan rebotes de −36 % y +59 %.
- Con 1 µs de tiempo de subida y 10 m: ida y vuelta de 100 ns, solo el 10 % del tiempo de subida: línea corta, no necesita terminación. Con 1 µs y 100 m, la ida y vuelta es 1,0 veces el tiempo de subida: ya es larga.
- En la herramienta 4, con las convenciones iniciales (transmisor TIA, receptor «no inversor», A con A): la polaridad queda invertida. En reposo la UART ve un 0 continuo (BREAK) y los datos llegan negados. Cruzá el par: «Correcta». Con las dos convenciones iguales y A con A: correcta; cruzado: invertida.
Desafío: distancia con una señal de 1 V mínimo
Querés que al receptor lleguen al menos 1 V con un driver de 5 V y 50 Ω y una terminación de 120 Ω. ¿Qué resistencia de lazo máxima admite el cable, y cuántos metros de AWG 24? Planteando Vrx = 5 · 120 / (120 + 50 + Rlazo) ≥ 1: 120 + 50 + Rlazo ≤ 600, o sea Rlazo ≤ 430 Ω. Con 0,0842 Ω/m por conductor (0,1684 Ω/m de lazo), son 430 / 0,1684 ≈ 2550 m. Pero la velocidad manda antes: 1200 m a 100 kbit/s o menos.
12 · Un procedimiento
Diagnóstico de un enlace RS-422
La mayoría de las fallas de un enlace diferencial se localizan con una secuencia corta:
- Igualar velocidad y formato en los dos extremos (tema 8), como en cualquier UART.
- Prueba de lazo local en cada estación (salida del driver a la entrada del receptor con puentes cortos): separa un problema de transceptor o de programa de uno de cable.
- Revisar la polaridad. Si hay silencio o datos negados, cruzar el par en un extremo. Si hay un BREAK constante en reposo, es casi seguro una polaridad invertida.
- Medir con un multímetro: con el enlace en reposo, la diferencia entre los dos conductores debe estar cerca de ±2 a ±3 V (el driver activo); cerca de 0 V indica un cable cortado, un driver apagado o un cortocircuito. Cada conductor, respecto de la masa del receptor, debe estar dentro de ±7 V.
- Verificar la terminación: con el equipo apagado, medir la resistencia entre los dos conductores del par; debe leer unos 120 Ω (o 60 Ω si hay dos terminadores). Una lectura de 240 Ω indica terminador en un solo extremo de más; de infinito, ausente.
- Mirar la forma de onda de V+ − V− con un osciloscopio de dos canales (modo diferencia) o con un analizador diferencial: sobreimpulsos y ringing indican terminación o derivaciones; flancos muy lentos, cable demasiado largo o velocidad excesiva.
- Reducir la velocidad. Si a baja velocidad anda y a alta no, el problema es de longitud, terminación o calidad del cable.
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
No llega nada, o llegan solo 0x00 / BREAK | Polaridad invertida; driver apagado | Cruzar el par; revisar el enlace del lazo y la alimentación |
| Llegan los datos con todos los bits negados | Polaridad invertida | Cruzar los dos hilos de un par |
| Caracteres falsos con el cable desconectado | Receptor sin protección contra entradas abiertas | Receptor fail-safe o resistencias de polarización |
| Errores esporádicos a alta velocidad, bien a baja | Reflexiones por falta de terminación; derivaciones largas | Terminar en el extremo del receptor; acortar derivaciones |
| Errores que aparecen cerca de un motor o al arrancarlo | Ruido de modo común fuera del rango; cable sin trenzar o mal blindado | Par trenzado blindado, blindaje a tierra en un extremo, hilo de referencia o aislamiento |
| Anda con el cable corto y falla con el largo | Longitud excesiva para la velocidad; cable de baja calidad | Bajar la velocidad; cable de menor capacidad (AWG 24, 120 Ω) |
| Anda un tiempo y deja de andar tras una tormenta | Transceptor dañado por una sobretensión | Cambiarlo; agregar protección (TVS, ESD, aislamiento) |
13 · Comprensión
Confusiones frecuentes
«Una señal diferencial rechaza cualquier ruido»
Solo el que llega igual a los dos conductores (modo común) y mientras el modo común esté dentro del rango del receptor (±7 V en RS-422). El ruido que afecta a un conductor más que al otro pasa como diferencia, y un modo común demasiado grande satura la entrada.
«El par trenzado es un detalle de acabado»
Es lo que garantiza que el ruido llegue por igual a los dos conductores y que el campo magnético se cancele vuelta a vuelta. Dos hilos paralelos dejan pasar diez veces más ruido que un par trenzado, y un par destrenzado en los extremos pierde su inmunidad.
«RS-422 es lo mismo que RS-485»
Comparten los niveles diferenciales y los transceptores se parecen, pero RS-422 tiene un único transmisor por par (hasta 10 receptores), y RS-485 permite varios transmisores sobre el mismo par. Un enlace RS-422 de cuatro hilos es full dúplex punto a punto (o uno-a-muchos).
«A con A y B con B siempre es lo correcto»
Depende de las convenciones de cada fabricante. La norma TIA llama A al terminal negativo en reposo, y muchos chips llaman A al no inversor. Si las convenciones son opuestas, A con A queda invertido. Se corrige cruzando el par.
«Con un cable cortado el receptor deja de recibir»
Un receptor sin protección contra entradas abiertas interpreta el ruido como datos y entrega caracteres falsos. Solo los receptores fail-safe, o una polarización externa, dan silencio.
«La terminación se pone en los dos extremos de un enlace punto a punto»
En RS-422 de un solo transmisor por par se termina en el extremo del receptor. El extremo del transmisor no necesita nada (en RS-485 de un solo par, donde cualquier extremo puede transmitir, sí se termina en los dos extremos).
«A más voltios, más distancia»
En RS-422 no: el límite lo da la velocidad y la calidad del cable (flancos que se redondean), no la tensión. A 10 Mbit/s no se llega más lejos de unos 12 m por mucho que se suba el nivel.
«Puedo usar un cable de dos pares cualquiera, tomando un hilo de cada par»
No: cada señal debe viajar por los dos conductores de un mismo par trenzado. Tomar un hilo de un par y otro de otro destruye la simetría y el trenzado.
14 · Práctica guiada
Predecí antes de comprobar
1. Diferencia y modo común
Un receptor mide V+ = 4,5 V y V− = 1,5 V respecto de su masa. ¿Cuánto vale la tensión diferencial, cuánto el modo común, y qué lee?
Ver solución
Vd = 4,5 − 1,5 = +3,0 V (mayor que +200 mV: un nivel lógico bien definido). Vcm = (4,5 + 1,5) / 2 = 3,0 V, dentro del rango de ±7 V. Se lee sin problemas, aunque la señal esté «montada» sobre 3 V.
2. Un ruido de +8 V
Un motor induce +8 V de modo común sobre un par con una señal de 3 V (±1,5 V). ¿Qué tensiones aparecen y por qué puede fallar?
Ver solución
V+ = 9,5 V y V− = 6,5 V: la diferencia sigue siendo +3 V, pero el modo común es 8 V, fuera del rango de ±7 V del receptor. Sus transistores de entrada se saturan y la lectura deja de ser confiable. Se arregla con un hilo de referencia, transceptores aislados o reduciendo la causa del ruido (blindaje, separación).
3. Tensión en el receptor
Un enlace de 800 m con cable AWG 24 (0,0842 Ω/m por conductor), un driver equivalente a 5 V con 50 Ω de salida y un terminador de 120 Ω. ¿Cuánto llega al receptor?
Ver solución
Rlazo = 2 · 0,0842 · 800 ≈ 134,7 Ω. Vrx = 5 · 120 / (120 + 50 + 134,7) ≈ 1,97 V, casi diez veces el umbral de 200 mV. La caída continua no es el problema a esta distancia; sí lo sería una velocidad alta.
4. Velocidad y distancia
Con la regla L ≈ 1,2 × 108 / velocidad, ¿hasta dónde llegás a 3 Mbit/s? ¿Y qué velocidad podés usar para 300 m?
Ver solución
A 3 Mbit/s: 1,2 × 108 / 3 × 106 = 40 m. Para 300 m: velocidad ≈ 1,2 × 108 / 300 = 400 kbit/s; en la práctica, 115 200 baudios deja mucho margen.
5. Dos equipos, dos convenciones
Conectás un transmisor con terminales «A (no inversor) y B» a un receptor que sigue la norma TIA (A es el terminal negativo en reposo), con A con A y B con B. ¿Qué pasa y cómo se arregla?
Ver solución
Las convenciones son opuestas: el terminal A del transmisor (no inversor) cae en el A del receptor (inversor). La señal llega invertida: en reposo la UART ve un 0 continuo (BREAK), y los datos llegan con los bits negados. Se arregla cruzando los dos hilos del par en un extremo.
6. ¿Hay que terminar?
Una línea de 50 m con un driver de flancos de 40 ns. ¿Es «larga»? Con la carga abierta, ¿cuánto rebota una señal de 3 V, y qué cambia con un terminador de 120 Ω?
Ver solución
Ida y vuelta: 2 · 50 · 5 ns = 500 ns, unas 12 veces los 40 ns: es larga. Con la carga abierta Γ = +1 y rebota 3 V (una réplica completa del flanco), que se suma y oscila. Con 120 Ω, Γ = 0: no hay rebote. Hay que terminar.
7. Un maestro y cuatro esclavos
Un maestro tiene que hablar con cuatro esclavos que además contestan. ¿Sirve un solo par RS-422 compartido por todos?
Ver solución
El maestro → esclavos funciona: un transmisor y cuatro receptores en el mismo par (hasta 10 permitidos). Pero las respuestas no: los cuatro esclavos tendrían que transmitir por el mismo par, y RS-422 solo permite un transmisor por par. Haría falta un par de retorno por esclavo (cableado en estrella) o, mejor, un transceptor que se pueda apagar (alta impedancia) para compartir el bus: es justamente RS-485, el tema siguiente.
15 · Síntesis
Ideas para recordar
- Una señal diferencial viaja por dos conductores con polaridad opuesta y el receptor decide por la diferencia V+ − V− (umbral de ±200 mV). El ruido que llega por igual a los dos (modo común) se cancela en la resta.
- El rechazo tiene límites: el modo común debe estar dentro del rango del receptor (±7 V en RS-422), y el ruido que llega distinto a cada conductor (asimetría) sí pasa.
- El par trenzado mantiene simétricos los dos conductores y cancela el ruido magnético vuelta a vuelta; cada señal diferencial va en su propio par, de 100 a 120 Ω de impedancia característica, con blindaje a tierra en un solo extremo.
- RS-422: un transmisor por par, hasta 10 receptores, full dúplex con dos pares (cuatro hilos), driver de al menos 2 V diferenciales, hasta 10 Mbit/s o 1200 m (no a la vez).
- Velocidad y longitud se compran una a la otra: L ≈ 1,2 × 108 / velocidad, con tope de 1200 m. La caída continua del cobre rara vez limita; los que limitan son los flancos que se redondean.
- A velocidades altas o líneas largas la onda rebota en el extremo: un terminador del valor de la impedancia característica (100 a 120 Ω), en el extremo del receptor, anula los rebotes. Una línea es «larga» si el tiempo de ida y vuelta (5 ns/m) supera el tiempo de subida.
- Los nombres A y B no son universales: la norma y los fabricantes los usan al revés. Una polaridad invertida da silencio, BREAK constante o datos negados, y se corrige cruzando el par.
- Un receptor fail-safe da un 1 definido con la entrada abierta o en cortocircuito; si no, hace falta polarizar la línea. Para que varios transmisores compartan un par se necesita RS-485.
¿Listo para el siguiente tema?
Antes de avanzar, calculá qué ve un receptor diferencial (V+ = 7 V, V− = 4 V) y si el modo común está en rango; explicá por qué un enlace de 80 m con flancos de 10 ns necesita terminación y qué valor y dónde pondrías la resistencia; y decidí qué hacer si al conectar dos dispositivos de distintos fabricantes el receptor ve un BREAK constante. (Para la primera: Vd = +3 V y Vcm = 5,5 V, dentro del rango de ±7 V.) Si podés justificar las tres respuestas, tenés la base de los enlaces diferenciales.
En el próximo tema vemos RS-485: el bus multipunto que extiende RS-422 a varios transmisores sobre el mismo par, con half duplex, terminación en los dos extremos, polarización y control de la dirección de transmisión.