← Índice del curso

Comunicación entre Dispositivos · Tema 4

Velocidad, baudios y sentido de la comunicación

«Este enlace va a 115 200» no alcanza para saber cuánto tarda un mensaje, cuántos datos útiles pasan por segundo ni si el enlace aguanta el tráfico de tu proyecto. Hay que distinguir bits de baudios, velocidad nominal de velocidad útil, y saber si los dos extremos pueden hablar a la vez.

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:

velocidad de bits = velocidad de símbolos × bits por símbolo  bits por símbolo = log₂(M)

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.

Casos en que la velocidad de símbolos y la de bits no coinciden.
EnlaceSímbolos por segundoBits de datos por símboloVelocidad de datos
UART a 9600 baudios (2 niveles)9600 Bd19600 bps (útiles: 7680 con 8N1)
Módem con 16 niveles2400 Bd49600 bps
Ethernet 10BASE-T (código Manchester)20 MBd0,5 (dos símbolos por bit)10 Mbps
Ethernet 100BASE-TX (4B/5B)125 MBd0,8100 Mbps
Ethernet 1000BASE-T (PAM-5 en 4 pares)125 MBd por par2 por par (8 en total)1000 Mbps
SATA I (8b/10b)1,5 GBd0,81,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:

t = (bytes × bits por byte) / velocidad  t(21 bytes, 8N1, 9600 Bd) = 21 × 10 / 9600 ≈ 21,9 ms
Tiempo de una línea de texto de 21 bytes (por ejemplo «Temperatura: 25.4 C» más CR y LF) en formato 8N1.
VelocidadTiempo de un bitTiempo por byteTiempo de la líneaLíneas por segundo
9600 Bd104 µs1,04 ms21,9 ms45
115 200 Bd8,68 µs87 µs1,82 ms548
1 MBd1 µs10 µs210 µs4761

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.

Qué se pierde entre la velocidad nominal y la útil en algunos enlaces.
EnlaceVelocidad nominalQué se descuentaVelocidad útil aproximada
UART 8N1 a 115 200 Bd115 200 bpsBits de inicio y de parada11 520 bytes/s (80 %)
SPI a 10 MHz10 MbpsCasi nada en el bus; sí la selección de chip y los comandos del dispositivoHasta 1,25 MB/s
I²C a 400 kHz400 kbpsUn bit de confirmación (ACK) por byte, la dirección, START y STOPComo máximo ≈ 44 kB/s (9 pulsos por byte)
Modbus RTU a 9600 Bd9600 bps11 bits por carácter, dirección, CRC y silencios entre tramasUna 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):
C = B × log₂(1 + SNR)  ejemplo: B = 3 kHz, SNR = 30 dB (1000) → C = 3000 × log₂(1001) ≈ 29,9 kbps

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:

ancho de banda ≈ 0,35 / tr  ejemplo: tr = 5 ns → 0,35 / 5 ns = 70 MHz

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.

Los tres modos de comunicación según el sentido En el modo símplex, una flecha va de A hacia B. En half duplex, hay una sola línea y dos flechas alternadas, una en cada sentido por turnos. En full duplex, dos flechas simultáneas, una en cada sentido, por líneas distintas. AB AB AB SÍMPLEX: un solo sentido, siempre de A a B HALF DUPLEX: ambos sentidos, pero uno por vez (misma línea) FULL DUPLEX: ambos sentidos a la vez (líneas distintas) sensor, control remoto, radio, GPS que solo emite turnos: cuando habla uno, el otro escucha UART con TX y RX, SPI, Ethernet con conmutador
Sentido de la comunicación de los enlaces que estudiaremos.
EnlaceSentidoPor qué
UART (TX y RX), RS-232, RS-422Full duplexUna línea para cada sentido
SPIFull duplexMOSI y MISO se mueven simultáneamente en cada pulso de reloj
I²CHalf duplexUna sola línea de datos (SDA) compartida
1-WireHalf duplexUn único cable para ambos sentidos
RS-485 de dos hilosHalf duplexUn par compartido por todos los nodos
CANHalf duplexUn par común: transmite un nodo por vez
Ethernet con conmutador (100BASE-TX y superiores)Full duplexPares separados para cada sentido
Wi-Fi, Bluetooth, LoRaHalf duplexLa misma frecuencia se usa para enviar y recibir
GPS que solo emite NMEA, control remoto IR de un televisorSímplexSolo 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:

carga = mensajes por segundo × bytes por mensaje × bits por byte  utilización = carga / velocidad del enlace

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 %.

Cómo interpretar la utilización de un enlace.
UtilizaciónEstadoQué ocurre
Hasta ≈ 50 %HolgadoMargen para picos, reintentos y mensajes de control
≈ 50 % a 70 %AceptableFunciona, pero con poco margen para crecer
70 % a 100 %JustoLos mensajes se encolan, la latencia sube y un reintento puede romper el esquema
Más de 100 %SaturadoSe 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.

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

  1. 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 %.
  2. 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 %.
  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.
  4. 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.
  5. 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.
  6. 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.
  7. 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

  1. Listá los flujos de datos. Para cada sentido: tamaño del mensaje, cuántos por segundo y si hay ráfagas.
  2. Calculá bits reales por byte. Incluí inicio, parada, paridad y, si hay otro protocolo encima, encabezados, direcciones y CRC.
  3. 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.
  4. 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.
  5. Revisá latencia. Sumá el tiempo de cada mensaje, el procesamiento del otro extremo, el cambio de dirección y los silencios del protocolo.
  6. 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.
  7. 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.