01 · Punto de partida
¿Qué tan rápido es rápido?
Cuando programás una consulta a una base de datos o una descarga, pensás en latencia y en ancho de banda sin darte cuenta: cuánto tarda en responder, cuántos megabytes por segundo llegan. En un enlace entre chips esas mismas preguntas se responden con unas pocas cuentas, y conviene hacerlas antes de armar el circuito. Un sensor que genera 100 lecturas por segundo puede ser inviable a 9600 baudios y trivial a 115 200.
El vocabulario de la velocidad se presta a confusión. «Velocidad», «baudios», «bits por segundo», «ancho de banda» y «caudal» se usan casi como sinónimos y no lo son. En este tema los ordenamos y sumamos una segunda dimensión que decide qué se puede hacer a la vez: el sentido de la comunicación.
02 · Dos unidades distintas
Bits por segundo y baudios
La velocidad de bits (bit rate) cuenta cuántos bits se transmiten por segundo; se mide en bits por segundo (bps, o bit/s). La velocidad de símbolos (baud rate) cuenta cuántos símbolos se envían por segundo, y se mide en baudios (Bd). Un símbolo es el estado que toma la señal durante un intervalo: un nivel de tensión, una fase, una frecuencia.
Si cada símbolo transporta más de un bit, las dos cifras difieren:
donde M es la cantidad de estados distintos que puede tomar la señal. En una línea que solo usa dos niveles (alto y bajo), M = 2 y cada símbolo lleva un bit: baudios y bits por segundo coinciden. Por eso en la UART se habla indistintamente de «9600 baudios» y de «9600 bps». Con 16 niveles distintos, cada símbolo lleva 4 bits y 2400 baudios producen 9600 bps.
| Enlace | Símbolos por segundo | Bits de datos por símbolo | Velocidad de datos |
|---|---|---|---|
| UART a 9600 baudios (2 niveles) | 9600 Bd | 1 | 9600 bps (útiles: 7680 con 8N1) |
| Módem con 16 niveles | 2400 Bd | 4 | 9600 bps |
| Ethernet 10BASE-T (código Manchester) | 20 MBd | 0,5 (dos símbolos por bit) | 10 Mbps |
| Ethernet 100BASE-TX (4B/5B) | 125 MBd | 0,8 | 100 Mbps |
| Ethernet 1000BASE-T (PAM-5 en 4 pares) | 125 MBd por par | 2 por par (8 en total) | 1000 Mbps |
| SATA I (8b/10b) | 1,5 GBd | 0,8 | 1,2 Gbps (150 MB/s) |
Los dos primeros casos muestran la idea básica; en los demás aparece una segunda causa de diferencia: la codificación (Manchester, 4B/5B, 8b/10b) agrega símbolos para garantizar transiciones y recuperar el reloj, como vimos en el tema anterior. Hay más símbolos en la línea que bits de datos. Para el programador, la cifra que más importa es la de datos, pero las especificaciones de capa física hablan de baudios, y por eso conviene saber leerlas.
03 · Números concretos
Velocidades habituales y tiempo de un mensaje
Las velocidades de la UART forman una serie histórica, heredada de los teletipos y las primeras computadoras. Estas son las que vas a encontrar:
- 1200, 2400 y 4800 baudios: módulos antiguos o de muy bajo consumo.
- 9600 baudios: la velocidad por defecto de muchos módulos GPS, Bluetooth serie y ejemplos de Arduino.
- 19 200, 38 400, 57 600 y 115 200 baudios: el uso común para depuración y comunicación con una computadora. 115 200 es la cifra habitual.
- 230 400 baudios a 1 Mbaud y más: enlaces rápidos entre microcontroladores y conversores USB-serie.
Otros buses tienen sus propios números. I²C tiene modos estándar (100 kHz), rápido (400 kHz), rápido plus (1 MHz) y de alta velocidad (3,4 MHz). SPI no tiene velocidades normalizadas: depende del dispositivo, desde cientos de kHz hasta decenas de MHz.
Cuánto tarda un mensaje
La cuenta que más vas a usar es el tiempo que ocupa un mensaje en la línea. Cada byte ocupa b bits (10 en el formato 8N1), así que:
| Velocidad | Tiempo de un bit | Tiempo por byte | Tiempo de la línea | Líneas por segundo |
|---|---|---|---|---|
| 9600 Bd | 104 µs | 1,04 ms | 21,9 ms | 45 |
| 115 200 Bd | 8,68 µs | 87 µs | 1,82 ms | 548 |
| 1 MBd | 1 µs | 10 µs | 210 µs | 4761 |
Este cálculo tiene una consecuencia práctica: un programa que imprime por el puerto serie puede quedar bloqueado esperando. La biblioteca Serial de Arduino guarda lo que enviás en un buffer de transmisión (64 bytes en un Uno) y la UART lo saca poco a poco. Mientras haya lugar, Serial.print vuelve casi al instante; si el buffer se llena, la función espera y tu loop() se detiene al ritmo del puerto. Mandar mucho texto a 9600 baudios puede estropear una lectura de sensores que requiere tiempos precisos.
04 · Realismo
Velocidad nominal y velocidad útil
La cifra que anuncia un enlace es su velocidad nominal (o de línea): cuántos bits pasan por el cable mientras se transmite. Pero no todos esos bits son tus datos. La velocidad útil (throughput o goodput) es la que queda después de descontar todo lo que el protocolo agrega y todo el tiempo en que el canal está ocupado sin transportar datos.
| Enlace | Velocidad nominal | Qué se descuenta | Velocidad útil aproximada |
|---|---|---|---|
| UART 8N1 a 115 200 Bd | 115 200 bps | Bits de inicio y de parada | 11 520 bytes/s (80 %) |
| SPI a 10 MHz | 10 Mbps | Casi nada en el bus; sí la selección de chip y los comandos del dispositivo | Hasta 1,25 MB/s |
| I²C a 400 kHz | 400 kbps | Un bit de confirmación (ACK) por byte, la dirección, START y STOP | Como máximo ≈ 44 kB/s (9 pulsos por byte) |
| Modbus RTU a 9600 Bd | 9600 bps | 11 bits por carácter, dirección, CRC y silencios entre tramas | Una consulta cada 25 ms (unas 40 por segundo) |
El caso de I²C da una idea de cuánto pesa la sobrecarga en mensajes cortos. Leer un registro de dos bytes en un sensor requiere: dirección con escritura, número de registro, nueva dirección con lectura y dos bytes de datos, cinco bytes en total de 9 pulsos de reloj cada uno (8 bits más ACK), más START, START repetido y STOP. Son unos 45 pulsos de reloj, es decir, ≈ 113 µs a 400 kHz y ≈ 450 µs a 100 kHz para obtener dos bytes que, a la velocidad nominal, deberían tomar 40 µs. Si leés un sensor mil veces por segundo, esa diferencia importa.
05 · Los límites del canal
Ancho de banda y límites del canal
Si se pudiera subir la velocidad indefinidamente, no habría tantas tecnologías. Pero el canal físico (un cable, una pista, el aire) se comporta como un filtro que deja pasar bien las frecuencias bajas y atenúa las altas. El rango de frecuencias que transmite sin degradar demasiado la señal es su ancho de banda, medido en hertz, y es la causa física del límite de velocidad.
Dos resultados clásicos de la teoría de la información dan órdenes de magnitud:
- Nyquist. En un canal sin ruido de ancho de banda B, la velocidad máxima de símbolos es 2 × B. Un canal de 1 MHz admite como mucho 2 millones de símbolos por segundo.
- Shannon. Con ruido, la capacidad máxima del canal, en bits por segundo, depende del ancho de banda y de la relación señal/ruido (SNR):
El ejemplo corresponde a una línea telefónica clásica, y explica por qué los módems analógicos se estancaron cerca de los 33,6 kbps. Mejor relación señal/ruido o mayor ancho de banda dan más capacidad; ninguna técnica supera ese techo. Para el programador, la lección práctica es cualitativa: más velocidad exige mejor canal, o sea, cables más cortos y apantallados, menos ruido y conexiones de calidad.
De la velocidad al ancho de banda
Una señal digital es una onda casi cuadrada, con flancos muy rápidos, y para conservarlos el canal debe pasar frecuencias mucho mayores que la velocidad de bits. Una regla práctica relaciona el tiempo de subida tr de un flanco con el ancho de banda analógico que lo preserva:
Si el cable o la placa limita el ancho de banda a 25 MHz, los flancos más rápidos que 14 ns se redondean, y a velocidades de bit altas los bits empiezan a «mezclarse» con sus vecinos (interferencia entre símbolos). Es la razón por la que un UART que funciona a 115 200 baudios con 30 cm de cable puede fallar con 15 metros del mismo cable: la señal llega deformada, no hay error en el programa.
06 · Quién habla y cuándo
Símplex, half duplex y full duplex
La otra dimensión de un enlace es el sentido: si la información circula en un solo sentido, en ambos pero por turnos, o en ambos al mismo tiempo.
| Enlace | Sentido | Por qué |
|---|---|---|
| UART (TX y RX), RS-232, RS-422 | Full duplex | Una línea para cada sentido |
| SPI | Full duplex | MOSI y MISO se mueven simultáneamente en cada pulso de reloj |
| I²C | Half duplex | Una sola línea de datos (SDA) compartida |
| 1-Wire | Half duplex | Un único cable para ambos sentidos |
| RS-485 de dos hilos | Half duplex | Un par compartido por todos los nodos |
| CAN | Half duplex | Un par común: transmite un nodo por vez |
| Ethernet con conmutador (100BASE-TX y superiores) | Full duplex | Pares separados para cada sentido |
| Wi-Fi, Bluetooth, LoRa | Half duplex | La misma frecuencia se usa para enviar y recibir |
| GPS que solo emite NMEA, control remoto IR de un televisor | Símplex | Solo el dispositivo emite hacia el otro |
Consecuencias para el diseño
- Símplex. Es lo más barato y simple: no hay que decidir turnos. Pero el emisor nunca sabe si el mensaje llegó, así que no puede haber confirmaciones ni reintentos.
- Half duplex. Ahorra líneas, a costa de reglas: hay que decidir quién habla y cambiar la dirección del transceptor. En RS-485, el programa debe activar el transmisor antes de enviar y desactivarlo apenas termina para que el otro pueda responder. Si dos nodos hablan a la vez hay una colisión, y por eso estos buses usan un maestro que da la palabra (Modbus) o arbitraje (CAN).
- Full duplex. Permite que cada extremo hable cuando quiera, pero exige líneas separadas o técnicas más sofisticadas. Gigabit Ethernet transmite y recibe simultáneamente por los mismos pares, separando las señales con un circuito que resta la propia transmisión.
07 · Dimensionar
Utilización, latencia y saturación
Para saber si un enlace alcanza, se compara lo que tu aplicación quiere enviar con lo que el enlace puede llevar. La carga es la cantidad de bits por segundo que tu programa genera, y la utilización es la fracción de la capacidad que ocupa:
Un ejemplo: un sensor manda 50 mensajes por segundo de 8 bytes (en texto, 6 caracteres más fin de línea). A 9600 baudios en 8N1 la carga es 50 × 8 × 10 = 4000 bps y la utilización es 41,7 %. Si la frecuencia pasa a 100 mensajes por segundo, la utilización sube a 83,3 %, y a 115 200 baudios baja a 6,9 %.
| Utilización | Estado | Qué ocurre |
|---|---|---|
| Hasta ≈ 50 % | Holgado | Margen para picos, reintentos y mensajes de control |
| ≈ 50 % a 70 % | Aceptable | Funciona, pero con poco margen para crecer |
| 70 % a 100 % | Justo | Los mensajes se encolan, la latencia sube y un reintento puede romper el esquema |
| Más de 100 % | Saturado | Se acumulan datos sin límite: el buffer se llena y se pierden mensajes o el programa se bloquea |
Las cifras son referencias de diseño, no leyes: lo importante es el criterio. Un enlace de baja utilización responde con rapidez; uno cercano al 100 % parece funcionar hasta que un pico de tráfico llena el buffer.
En half duplex, el tráfico se suma
En un enlace full duplex, cada sentido tiene su canal, y el que limita es el más cargado. En half duplex, el canal es único y se reparte: la utilización es la suma de la carga de ida y la de vuelta. Un mismo tráfico puede entrar con holgura en full duplex y saturar un enlace half duplex de igual velocidad; lo comprobás en el laboratorio.
Latencia y ciclo de consulta
En un esquema de consulta y respuesta (un maestro pregunta y un esclavo contesta), el tiempo de una transacción no es solo la suma de los tiempos de los dos mensajes: incluye el procesamiento del esclavo, el cambio de dirección si el enlace es half duplex y los silencios que el protocolo exige. Ejemplo con Modbus RTU a 9600 baudios (11 bits por carácter): una consulta de 8 bytes y una respuesta de 7 ocupan 15 × 11 / 9600 ≈ 17,2 ms. Se agregan dos silencios obligatorios de 3,5 caracteres (4 ms cada uno) y el ciclo llega a unos 25 ms: como máximo 40 transacciones por segundo, aunque el cable aguantaría muchas más bits. El tema 25 lo desarrolla.
08 · Con el microcontrolador
Configurar la velocidad y controlar la dirección
En Arduino, la velocidad de la UART se fija con Serial.begin(). El formato por defecto es 8N1; se puede cambiar con un segundo argumento. Los dos extremos tienen que coincidir en ambas cosas:
void setup() {
Serial.begin(115200); // 115 200 baudios, formato 8N1
// Serial.begin(9600, SERIAL_8E2); // 9600 baudios, 8 datos, paridad par, 2 bits de parada
}
void loop() {
Serial.println("Temperatura: 25.4 C"); // 21 bytes con CR y LF
// El println vuelve enseguida si cabe en el buffer de 64 bytes…
Serial.flush(); // …y flush() espera a que salga el último bit:
// 21 × 10 / 115200 ≈ 1,8 ms
delay(100);
}
En un enlace half duplex el programa debe controlar además la dirección. Con un transceptor RS-485, una línea (DE, unida a /RE) habilita el transmisor. El ejemplo muestra la secuencia correcta: activar, enviar, esperar a que salga el último bit y volver a escuchar.
const byte PIN_DE = 4; // DE y /RE unidos al mismo pin
void setup() {
pinMode(PIN_DE, OUTPUT);
digitalWrite(PIN_DE, LOW); // por defecto: escuchando
Serial.begin(9600);
}
void enviarRS485(const char *texto) {
digitalWrite(PIN_DE, HIGH); // tomar el bus
Serial.print(texto);
Serial.flush(); // esperar a que salga TODO, incluido el último bit
digitalWrite(PIN_DE, LOW); // soltar el bus para que el otro pueda responder
}
Sin flush(), print devuelve mientras los últimos bytes todavía están en el buffer: el programa soltaría el bus antes de terminar y el mensaje llegaría truncado. Es uno de los errores más comunes de RS-485, que veremos en el tema 24.
09 · Analogía con programación
Calcular el enlace antes de montarlo
Las cuentas de este tema caben en pocas funciones de Python. Sirven para decidir la velocidad antes de cablear nada: tiempo de un mensaje, utilización de un enlace para un tráfico dado, símbolos y bits, y capacidad de un canal de Shannon.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
import math
def bits_por_caracter(datos=8, paridad=False, parada=1):
return 1 + datos + (1 if paridad else 0) + parada # inicio + datos + paridad + parada
def tiempo_mensaje(n_bytes, baud, bpc=10):
return n_bytes * bpc / baud # segundos
def utilizacion(msgs_por_s, n_bytes, baud, bpc=10):
return msgs_por_s * n_bytes * bpc / baud
def shannon(ancho_hz, snr_db):
return ancho_hz * math.log2(1 + 10 ** (snr_db / 10)) # bits por segundo
linea = "Temperatura: 25.4 C\r\n"
for baud in (9600, 115200):
t = tiempo_mensaje(len(linea), baud)
print(f"{len(linea)} bytes a {baud} baudios: {t * 1000:.2f} ms ({1 / t:.0f} líneas por segundo)")
print()
for baud in (9600, 115200):
for msgs in (50, 100):
u = utilizacion(msgs, 8, baud)
estado = "SATURADO" if u > 1 else "justo" if u > 0.7 else "holgado"
print(f"{msgs:3d} msg/s de 8 bytes a {baud:6d}: utilización {u * 100:5.1f} % ({estado})")
print()
print("16 niveles, 2400 baudios ->", int(math.log2(16) * 2400), "bps")
print(f"Shannon, 3 kHz y 30 dB -> {shannon(3000, 30) / 1000:.1f} kbps")
print(f"Shannon, 1 MHz y 20 dB -> {shannon(1e6, 20) / 1e6:.2f} Mbps")
Resultado: la línea de 21 bytes tarda 21,88 ms a 9600 baudios (45 líneas por segundo) y 1,82 ms a 115 200 (548 por segundo). Con 50 mensajes por segundo la utilización es de 41,7 % a 9600 y se vuelve «justa» (83,3 %) con 100; a 115 200 queda en 6,9 %. Los 16 niveles a 2400 baudios dan 9600 bps, y Shannon pone el techo en 29,9 kbps para 3 kHz y 30 dB, y en 6,66 Mbps para 1 MHz y 20 dB. Cambiá paridad y parada en bits_por_caracter y mirá cuánto cuesta cada bit extra.
Estas funciones suponen que el enlace se usa en un solo sentido y sin esperas. Si hay respuestas, silencios o reintentos, los tiempos reales son mayores; las cuentas dan el mejor caso y sirven para descartar diseños imposibles.
10 · Exploración interactiva
Calculadora de enlace
Este laboratorio calcula cuánto ocupa un tráfico en un enlace serie. Elegí la velocidad, el formato de carácter y el sentido, y definí los dos flujos de la aplicación: los mensajes que van de A a B y los que vuelven de B a A, con su tamaño y su frecuencia. Verás la carga de cada sentido, la utilización según el modo, la espera máxima por línea ocupada y un veredicto. La tabla inferior compara los tres modos con el mismo tráfico.
Velocidad, formato y sentido
Cambiá cualquier valor: los resultados se calculan al instante.
| Sentido | Qué ocupa la línea | Utilización | Estado |
|---|
El enlace símplex solo lleva el tráfico de A a B, así que la respuesta no se transmite: se ignora su carga. Los porcentajes se calculan sobre la velocidad de línea y suponen mensajes repartidos de forma uniforme; con ráfagas, los picos serían más altos.
Recorrido guiado
- Con los valores iniciales (9600 baudios, 8N1, half duplex, 20 bytes a 10 por segundo de ida y 10 bytes a 10 por segundo de vuelta), la carga es de 2000 bps de ida y 1000 bps de vuelta. La utilización en half duplex es 31,3 %, y en full duplex y símplex, 20,8 %.
- Subí la frecuencia de ida a 40 mensajes por segundo. La carga de ida pasa a 8000 bps: el half duplex llega al 93,8 % (justo) y el full duplex, al 83,3 %.
- Con 50 mensajes por segundo la ida pide 10 000 bps, más de lo que da el enlace: queda saturado en los tres modos. Ningún cambio de sentido arregla un enlace que no tiene capacidad.
- Con esos 50 mensajes, subí la velocidad a 115 200 baudios. La utilización cae a menos del 10 % y el enlace queda holgado. Cuando falta capacidad, casi siempre la solución es acelerar.
- Volvé a 9600 baudios y 40 mensajes por segundo en full duplex (83,3 %). Cambiá el formato de 8N1 a 8E2: la utilización sube al 100 %. Un bit de paridad y otro de parada extra se pagan con 17 puntos de capacidad.
- Ahora poné 20 bytes y 30 mensajes por segundo en ambos sentidos a 9600 baudios, 8N1. En full duplex la utilización es de 62,5 % (cada sentido usa 6000 bps). En half duplex se suman y el enlace está al 125 %, saturado. El mismo tráfico y la misma velocidad dan resultados opuestos según el sentido.
- Con ese tráfico en half duplex, mirá la «espera máxima por línea ocupada»: mientras el otro extremo habla, tu mensaje debe esperar hasta 20,8 ms. Con full duplex es cero, porque cada sentido tiene su línea.
Desafío: el límite del half duplex
Con 9600 baudios y 8N1, un maestro half duplex hace consultas de 8 bytes y recibe respuestas de 7. Sin contar silencios ni tiempo de procesamiento, ¿cuántas consultas por segundo caben? Cada transacción ocupa 15 bytes × 10 bits = 150 bits y el enlace da 9600 bps: 64 transacciones por segundo como máximo (a 100 % de utilización). Con los silencios del Modbus real y el 70 % de utilización recomendado, el número práctico baja a unas 30.
11 · Método de trabajo
Cómo dimensionar un enlace
- Listá los flujos de datos. Para cada sentido: tamaño del mensaje, cuántos por segundo y si hay ráfagas.
- Calculá bits reales por byte. Incluí inicio, parada, paridad y, si hay otro protocolo encima, encabezados, direcciones y CRC.
- Obtené la carga y comparala con la velocidad nominal. Apuntá a una utilización de 50 % a 70 %; más allá, los reintentos y los picos no tienen margen.
- Decidí el sentido. Si el tráfico es bidireccional intenso, preferí full duplex; si hay muchos nodos y poco tráfico, un bus half duplex con un maestro es más económico.
- Revisá latencia. Sumá el tiempo de cada mensaje, el procesamiento del otro extremo, el cambio de dirección y los silencios del protocolo.
- Verificá el canal. Comprobá que la velocidad elegida es posible con la longitud del cable y el ruido del entorno; si no, bajá la velocidad o cambiá de capa física.
- Medí. Usá un analizador lógico para ver el ancho real de los bits, la duración de los mensajes y los silencios entre ellos.
Una última regla: no elijas la velocidad máxima por costumbre. Para 10 lecturas por segundo, 9600 baudios sobran y son mucho más robustos con cables largos. Subir la velocidad solo cuando hace falta es un seguro contra los errores.
12 · Comprensión
Confusiones frecuentes
«Baudios y bits por segundo son lo mismo»
Solo coinciden cuando cada símbolo representa un bit, como en la UART. Con varios niveles, fases o con codificaciones que agregan símbolos, la cifra de baudios y la de bits difieren. Los módems y Ethernet lo muestran.
«A 115 200 baudios paso 115 200 bits de datos por segundo»
Con 8N1 son 11 520 bytes por segundo, es decir, 92 160 bits de datos. Y eso sin contar los espacios entre mensajes, los comandos del protocolo ni el tiempo que tarda el programa en prepararlos.
«Full duplex duplica la velocidad»
Permite usar los dos sentidos a la vez, pero cada uno tiene la velocidad nominal. Si tu aplicación solo transmite en un sentido, full duplex no la acelera.
«Un enlace sin respuestas no puede ser fiable»
Un enlace símplex no confirma, pero se puede compensar con redundancia: enviar el mensaje varias veces, incluir un CRC y numerar los mensajes para que el receptor detecte pérdidas. Es lo que hacen muchos sensores inalámbricos de bajo costo.
«Si el enlace tiene suficiente velocidad, no habrá retardos»
La velocidad determina cuánto tarda cada mensaje, pero la latencia incluye además el procesamiento, los cambios de dirección y las esperas. Un enlace rápido y poco cargado puede responder lento si el esclavo tarda 20 ms en preparar su respuesta.
«Si funciona a una velocidad, funcionará a una velocidad mayor con otro divisor»
El divisor puede no dar la velocidad pedida con exactitud (error de baudios), el cable puede deformar los flancos más rápidos y el receptor puede no seguir el ritmo del programa. Cada subida de velocidad hay que validarla.
13 · Práctica guiada
Predecí antes de comprobar
1. Tiempo de un mensaje
Enviás «Temperatura: 25.4 C» más CR y LF (21 bytes) en formato 8N1. ¿Cuánto tarda a 9600 y a 115 200 baudios? ¿Cuántas líneas por segundo caben a 9600?
Ver solución
Son 210 bits. A 9600: 210 / 9600 = 21,9 ms. A 115 200: 1,82 ms. A 9600 caben 1 / 0,0219 ≈ 45 líneas por segundo. Si tu programa imprime una línea cada 10 ms a 9600 baudios, el buffer se llena y el loop() se frena.
2. Baudios y bits
Un enlace usa 8 niveles de tensión y transmite 3000 símbolos por segundo. ¿Cuál es su velocidad en baudios y en bits por segundo? Y Ethernet 10BASE-T, con Manchester: ¿cuántos baudios tiene si transmite 10 Mbps?
Ver solución
3000 baudios; bits por símbolo = log₂(8) = 3, así que 9000 bps. En Manchester cada bit ocupa dos símbolos (dos mitades con distinto nivel), por lo que 10 Mbps requieren 20 MBd.
3. Capacidad de Shannon
Un canal tiene 1 MHz de ancho de banda y una relación señal/ruido de 20 dB. ¿Cuál es la velocidad máxima teórica?
Ver solución
20 dB equivale a SNR = 102 = 100. C = 106 × log₂(101) ≈ 106 × 6,66 ≈ 6,66 Mbps. Es un límite superior: los enlaces reales se quedan por debajo.
4. Clasificar el sentido
Indicá si cada enlace es símplex, half duplex o full duplex: I²C, SPI, UART con TX y RX, RS-485 de dos hilos, un control remoto infrarrojo de televisor, Ethernet 100BASE-TX con conmutador.
Ver solución
Half duplex: I²C (una línea de datos) y RS-485 de dos hilos. Full duplex: SPI (MOSI y MISO), UART con TX y RX, Ethernet con conmutador. Símplex: el control remoto infrarrojo, que solo emite.
5. ¿Alcanza el enlace?
Un sensor envía 100 muestras por segundo, cada una de 6 bytes de texto más CR y LF. ¿Alcanza una UART a 9600 baudios 8N1? ¿Y si la muestra pasa a 12 bytes? ¿Qué velocidad estándar conviene?
Ver solución
Con 8 bytes: 100 × 8 × 10 = 8000 bps, utilización 83,3 %: funciona, pero sin margen. Con 12 bytes (más CR y LF = 14 bytes): 100 × 14 × 10 = 14 000 bps, 146 %, saturado. Con 115 200 baudios, 8000 bps es el 6,9 % y 14 000 bps el 12,2 %: holgado en ambos casos. La opción estándar es 115 200 (o 57 600 si el cable es largo).
6. Ciclo de consulta
Un maestro Modbus RTU consulta a un esclavo con una trama de 8 bytes y recibe una respuesta de 7 bytes. A 9600 baudios y 11 bits por carácter, ¿cuánto tarda la transacción sin silencios? ¿Y con dos silencios de 3,5 caracteres?
Ver solución
Sin silencios: 15 × 11 / 9600 = 17,2 ms. Cada silencio dura 3,5 × 11 / 9600 ≈ 4 ms, así que con dos queda en ≈ 25,2 ms: unas 40 consultas por segundo a un solo esclavo. Con 10 esclavos, cada uno se consulta unas 4 veces por segundo.
14 · Síntesis
Ideas para recordar
- La velocidad de bits (bps) cuenta bits; la de símbolos (baudios) cuenta cambios de señal. Coinciden solo si cada símbolo lleva un bit, como en la UART.
- El tiempo de un mensaje es bytes × bits por byte / velocidad; en 8N1 cada byte ocupa 10 bits y 115 200 baudios dan 11 520 bytes por segundo.
- La velocidad nominal no es la útil: inicio, parada, direcciones, confirmaciones, CRC y silencios consumen capacidad, sobre todo en mensajes cortos.
- El ancho de banda del canal limita la velocidad; la capacidad de Shannon (C = B log₂(1 + SNR)) fija el techo teórico, y más velocidad exige mejor canal.
- Símplex es un solo sentido, half duplex ambos por turnos sobre la misma línea, y full duplex ambos a la vez por líneas separadas.
- El half duplex exige decidir quién habla y cambiar la dirección del transceptor; el full duplex cuesta más líneas pero no se disputa el canal.
- La utilización (carga / velocidad) debe mantenerse entre el 50 y el 70 %; por encima del 100 % el enlace se satura y se pierden o bloquean los mensajes.
- En half duplex las cargas de ida y vuelta se suman; en full duplex, el sentido más cargado es el que limita.
¿Listo para el tema 5?
Antes de avanzar, calculá cuánto tarda en enviarse un mensaje de 32 bytes a 115 200 baudios en 8N1, decidí si una UART a 9600 baudios soporta un sensor que envía 30 mensajes por segundo de 25 bytes y explicá en qué cambia el cálculo si el enlace es half duplex y el otro extremo responde con la misma cantidad. Si podés justificar las tres respuestas, ya sabés dimensionar un enlace.
En el próximo tema estudiamos las señales y niveles lógicos: qué tensiones representan un 0 y un 1 en TTL y CMOS, cómo conectar dispositivos de 3,3 V y 5 V sin dañarlos, y por qué las señales diferenciales aguantan mejor el ruido.