01 · Punto de partida
Un bit solo no dice cuándo
El Tema 1 decidió el valor; falta el cuándo: ¿cada cuánto se lee? ¿cuánto dura el 1? Un PWM de 490 Hz con 50 % está 1,02 ms arriba y 1,02 ms abajo. Sin timing, los bits son ruido ordenado.
- ¿Qué miden frecuencia, período y duty?
- ¿Qué es un flanco y por qué importa?
- ¿Cuánto dura un byte a 9600 baudios?
- ¿Qué timing ves con cada instrumento?
02 · Parámetros
Cuatro números por señal
| Señal | f | T | Nota |
|---|---|---|---|
| Parpadeo LED | 1 Hz | 1 s | Visible a ojo |
| PWM Arduino | 490 Hz | 2,04 ms | Motor/LED sin parpadeo |
| UART 9600 | 9600 baud | 104 µs/bit | Byte ≈ 1,04 ms |
| Clock 16 MHz | 16 MHz | 62,5 ns | Solo osciloscopio |
03 · Flancos
El momento exacto
Flanco de subida (0→1) y de bajada (1→0): la lógica secuencial (curso 6) cuenta flancos, no niveles. En la realidad el flanco tarda (rise/fall time, ns) y puede rebotar (ringing): por eso existen el Schmitt digital y el buen desacople.
04 · Ver el timing
Cada instrumento, su liga
- Ojo humano
- Hasta ~50 Hz: más rápido se ve fijo (persistencia). Un LED a 490 Hz parece siempre prendido a medio brillo.
- Multímetro
- Promedia: 50 % de 5 V lee ≈ 2,5 V. Útil para estimar duty, inútil para flancos.
- Osciloscopio/lógico
- Ven flancos, duty y jitter: a partir de kHz son obligatorios. El analizador lógico es el multímetro digital.
- Baud ≠ datos útiles
- 9600 baud con 8N1 dan ~960 bytes/s (10 bits por byte): start + 8 + stop. El protocolo come bits.
05 · Timing en código
Calcular antes de medir
Parámetros de cualquier señal periódica más el caso UART completo.
Python en tu navegador. Pasale tu frecuencia y mirá los tiempos.
def timing(f_hz, duty=0.5):
t = 1 / f_hz
mult, unit = (1, 's') if t >= 1 else (1000, 'ms') if t >= 1e-3 else (1e6, 'us') if t >= 1e-6 else (1e9, 'ns')
print(f"f={f_hz}Hz T={t*mult:.2f}{unit} ton={t*duty*mult:.2f}{unit} toff={t*(1-duty)*mult:.2f}{unit}")
return t
timing(490)
timing(16e6)
timing(1, duty=0.1)
490 Hz: T 2,04 ms. 16 MHz: T 0,0000625 ms (62,5 ns). ¿Qué duty conviene para un calefactor lento?
Byte a 9600 baudios
def uart(baud=9600, bits_trama=10):
t_bit = 1 / baud
t_byte = t_bit * bits_trama
print(f"bit={t_bit*1e6:.1f}us byte={t_byte*1e3:.2f}ms -> {1/t_byte:.0f} bytes/s")
return t_byte
uart()
uart(baud=115200)
06 · Analogía programador
Metrónomo y protocolo
- 1Clock = metrónomo.
Todos tocan al mismo tempo: sin clock compartido cada uno va por su lado (asíncrono = UART).
- 2Duty = porcentaje de CPU.
Fracción del tiempo activa: como un
load averagede la señal. - 3Flanco = evento.
Nivel es estado, flanco es evento: la interrupción vive de flancos, no de niveles.
07 · Exploración
Laboratorio: diseccionar una señal
Elegí frecuencia y duty: el laboratorio calcula T, ton, toff y te dice con qué verla.
Diseccionador
490 Hz · 50 %
490 Hz 50 %: T 2,04 ms.
Preguntas para explorar
- Con 1 Hz y 10 %: ¿ton? ¿Qué instrumento sobra?
- Con 16 MHz: ¿T en ns? ¿Flancos por segundo?
- UART 9600 con duty 50 %: ¿por qué el duty no importa en datos?
Ver respuestas sugeridas
- 100 ms encendido: el ojo sobra (hasta cronómetro). Multímetro leería ≈ 0,5 V.
- 62,5 ns; 32 millones de flancos/s. Solo osciloscopio rápido o lógico.
- Porque importan los bits a su tiempo, no el promedio: datos ≠ PWM. El duty manda en potencia, no en información.
08 · Comprensión
Confusiones frecuentes
«Más Hz = más datos»
Baud es símbolos/s; los datos útiles descuentan protocolo (9600 → 960 B/s). Y un clock rápido sin datos no informa nada.
«El flanco es instantáneo»
Tarda ns y rebota: a MHz el flanco es todo el diseño (terminaciones, desacople). Ideal solo en el simulador.
«Duty solo para motores»
Duty = información de potencia en LED, audio (clase D), calefactores: donde hay promedio hay duty.
«Con multímetro alcanza»
El tester promedia y esconde flancos, jitter y rebotes: a partir de este curso, el osciloscopio es el instrumento.
09 · Práctica guiada
Ejercicios de timing
Ejercicio 1: LED sin parpadeo
¿Desde qué frecuencia un LED deja de parpadear a ojo? Verificá con PWM de 100 Hz vs 1 kHz al 50 %.
Ver solución razonada
≈ 100 Hz: a 100 Hz algunos ojos notan; a 1 kHz nadie. Por eso Arduino usa 490/976 Hz: sin parpadeo y sin pérdidas de conmutación.
Ejercicio 2: byte lento
Sensor que manda 100 bytes/s por UART 8N1. ¿Baud mínimo? Verificá con uart().
Ver solución
1000 baud (100×10 bits): 1200 es el estándar siguiente ✓. 9600 sobra 8×.
Ejercicio 3: medir duty
PWM 490 Hz al 25 %: ¿qué lee el multímetro en dc? Medilo y compará con timing(490, 0.25).
Ver solución
≈ 1,25 V (25 % de 5 V): el tester promedia. Confirmar con osciloscopio: ton 0,51 ms.
10 · Síntesis
Ideas para recordar
- T = 1/f; ton = duty×T; flancos/s = 2×f.
- Nivel = estado; flanco = evento.
- 9600 baud 8N1 ≈ 960 bytes/s.
- Ojo < 50 Hz; tester promedia; scope ve todo.
- Duty manda en potencia, bits mandan en datos.
Tiempo dominado. Ahora los valores exactos: en el próximo tema, niveles lógicos TTL y CMOS.