01 · Punto de partida
Anda acá, falla allá
El prototipo funciona perfecto sobre el protoboard. Lo pasás a una placa, lo metés en una caja, lo conectás a dos pilas y se lo dejás a alguien. Una semana después: se reinicia solo cuando prende el motor, se descarga en tres días, el integrado está tibio sin hacer nada y, si acercás la mano, la salida cambia. La lógica está bien. Lo que falló es todo lo que la tabla de verdad no incluye: la energía, la corriente, la tensión real de alimentación y la temperatura.
Una escena típica. Armás un sensor con un contador y un display. Con la fuente de laboratorio consume «nada». Con dos pilas AA, a 16 MHz, dura un día. Y además resetea cada vez que se enciende el backlight: el pico de corriente hundió la tensión del chip por un instante y el microcontrolador reinició.
Nada de eso se arregla con álgebra booleana. Se arregla con unas pocas reglas de oficio, que son las que fijan este tema.
- ¿Cuánto consume una puerta CMOS y de qué depende?
- ¿Cuántas entradas puede manejar una salida?
- ¿Por qué una entrada al aire consume y se comporta de manera errática?
- ¿Para qué sirve el condensador de 100 nF pegado a cada chip?
- ¿Qué temperatura soporta realmente un circuito dentro de una caja?
- ¿Cuánto dura una batería y cómo se hace que dure más?
02 · Consumo
Quieto no gasta, rápido sí
Una puerta CMOS (Tema 3) tiene un transistor arriba y otro abajo; nunca conducen los dos a la vez, así que en reposo casi no circula corriente. El consumo tiene tres orígenes:
| Origen | Cuándo aparece | Orden de magnitud | Qué lo reduce |
|---|---|---|---|
| Estático (fugas) | Siempre, aun sin cambiar | Microamperios por chip | Temperatura baja, chips de bajo consumo |
| Dinámico (carga y descarga de C) | En cada flanco de cada nodo | De microwatts a cientos de mW, según f | Menos frecuencia, menos tensión, menos actividad |
| Cortocircuito en la transición | Mientras la entrada cruza la zona intermedia | Pequeño con flancos rápidos; grande con flancos lentos | Flancos limpios; Schmitt en señales lentas |
| Cargas de continua | Un LED, una pull-up, un divisor que conduce | Miliwatts: a menudo supera a todo el chip | Menos corriente, pull-ups mayores, apagarlas |
El dinámico es el que se calcula y el que se puede diseñar. Cada vez que una salida sube, carga la capacidad que ve (la propia de la puerta, las trazas y las entradas que alimenta) desde Vcc: se toma una energía C·V² del suministro y la mitad se disipa al cargar y la otra mitad al descargar. Multiplicado por las veces por segundo que ocurre:
- N · C
- La cantidad de nodos que conmutan y la capacidad de cada uno. Para una puerta suelta con trazas cortas se usa un valor del orden de 50 pF (orientativo). En un chip grande, es la suma de todo.
- V al cuadrado
- La tensión pesa dos veces: la energía por carga crece con V y la corriente necesaria también. Pasar de 5 V a 3,3 V no ahorra 34 %: gasta (5 / 3,3)² ≈ 2,3 veces menos.
- f
- La frecuencia es lineal: el doble de rápido, el doble de potencia. Un reloj de 16 MHz cuesta mil veces más que uno de 16 kHz.
- α (actividad)
- Qué fracción de los nodos conmuta realmente en cada ciclo. Un contador cambia pocos bits por paso; un reloj cambia siempre (α = 1). Con α = 1 se obtiene el peor caso, que es lo que conviene presupuestar.
- Los glitches también cuestan
- Cada pozo o pico espurio (Tema 28) carga y descarga una capacidad sin aportar nada útil. Son parte de la actividad y una razón más para el diseño síncrono.
| Frecuencia | A 5 V | A 3,3 V | Factor |
|---|---|---|---|
| 1 Hz | 12,5 nW | 5,4 nW | 2,3× |
| 1 kHz | 12,5 µW | 5,4 µW | 2,3× |
| 1 MHz | 12,5 mW | 5,4 mW | 2,3× |
| 16 MHz | 200 mW | 87 mW | 2,3× |
03 · Fan-out
Hasta dónde llega una salida
El fan-out (ya apareció en el Tema 7) es el número de entradas que puede alimentar una salida. La respuesta cambia según se mire en continua o con la señal moviéndose:
| Destino | Carga que presenta | Qué limita primero | Fan-out práctico |
|---|---|---|---|
| Entrada HC (CMOS) | Fuga de ~1 µA y unos 3 a 10 pF | La capacitancia (velocidad) | Decenas en continua; menos si hay MHz |
| Entrada LS (TTL) | Hasta 0,4 mA a nivel bajo | La corriente (nivel bajo) | Unas 10 por salida HC |
| LED con resistencia | 2 a 4 mA | La corriente de salida | 1, con una corriente cómoda |
| Cable o bus largo | Decenas de pF por metro | La capacitancia y los reflejos | Pocos; mejor con buffer |
Las entradas CMOS casi no toman corriente continua, así que en continua el fan-out «sobra». El problema aparece cuando la señal se mueve: la salida tiene una resistencia interna (unas decenas de ohmios) y tiene que cargar la capacidad total C de todo lo que cuelga. Eso forma un RC (Tema 11) y el flanco deja de ser vertical:
- Qué se pierde
- Con más carga el flanco se redondea: tarda más en cruzar el umbral (más retardo, Tema 28), pasa más tiempo en la zona intermedia (más corriente de cortocircuito) y la potencia crece con C. Más fan-out es más lento, más caliente y más ruidoso a la vez.
- Regla práctica
- Que el tiempo de subida no pase del 10 al 20 % del período. Un reloj de 8 MHz (125 ns) tolera unos 12 a 25 ns; con 50 destinos tarda casi 60 ns, que ya es la mitad del período.
- Buffer dedicado
- Los relojes y las líneas de enable que llegan a muchos destinos salen de un buffer (Tema 7) pensado para esa carga, o se reparten en varios. Cada rama queda corta y con pocas entradas.
- Resistencia en serie
- Con trazas largas y flancos rápidos aparecen reflejos (ringing). Una resistencia de 22 a 33 Ω en serie con la salida, pegada a ella, amortigua el rebote a cambio de un flanco apenas más lento.
04 · Entradas
Flotantes, sobrantes y lentas
Una entrada CMOS tiene una impedancia altísima. Eso significa que, si no está conectada a nada, no vale nada en particular: recoge ruido de la red, acopla las señales vecinas y la carga estática de la mano que se acerca. Queda un buen rato en la zona intermedia, entre los umbrales, y ahí los dos transistores de la puerta conducen a la vez.
Entrada al aire
Errática y cara
La salida cambia sola, a veces oscila a alta frecuencia y el chip se calienta porque conduce desde Vcc a masa. Puede funcionar «por suerte» en el banco y fallar en el producto.
Entrada atada
Determinista
Con un 0 o un 1 definidos, la puerta está en un estado conocido y consume lo mínimo. Cuesta apenas un cable o una resistencia.
| Caso | Solución | Por qué |
|---|---|---|
| Puerta que no se usa (de las 4 de un 74HC08) | Las dos entradas a GND | Salida fija; consumo mínimo |
| Entrada de AND que no hace falta | A Vcc (el neutro de la AND es 1) | No altera la función (Tema 8) |
| Entrada de OR que no hace falta | A GND (el neutro de la OR es 0) | No altera la función (Tema 8) |
| Enable u OE que siempre está activo | Atarlo a su nivel activo | Que no dependa del ruido |
| Botón o interruptor abierto (Tema 11) | Pull-up o pull-down de unos 10 kΩ | Un nivel definido cuando nadie lo toca |
| Bus tri-estado sin nadie manejando (Tema 7) | Pull-up o pull-down en el bus | Que Z no sea un valor al azar |
| Señal lenta o ruidosa (RC, sensor, botón) | Entrada Schmitt (74HC14) | Cruza la zona intermedia sin oscilar |
- Salidas que se pelean
- Dos salidas activas con valores distintos sobre el mismo cable forman un cortocircuito entre Vcc y masa a través de ellas (contención, Tema 7). Se evita con buses tri-estado con un solo manejador activo por vez o con salidas de drenador abierto con pull-up.
- Niveles entre familias
- Una salida de 5 V no se conecta directamente a una entrada de 3,3 V: puede superar su máximo y dañarla. Se adapta con un divisor, un traductor o un chip tolerante a 5 V (74HC4050, Tema 7). El camino contrario (3,3 V hacia 5 V) a veces no llega al umbral alto: revisar VOH y VIH (Tema 3).
- Pines sin conectar en un chip programable
- Se configuran como salidas a un nivel fijo o como entradas con pull interno. Dejar una entrada sin configurar replica el problema de la entrada flotante.
05 · Alimentación
Picos de corriente y desacople
La corriente de un circuito digital no es constante. Cada vez que un conjunto de salidas conmuta, el chip toma un pico de decenas de miliamperios durante unos pocos nanosegundos, y después vuelve a tomar casi nada. La fuente está lejos y el cable que lleva la corriente tiene inductancia: se opone a los cambios rápidos de corriente.
| Camino de alimentación | Inductancia | Hundimiento |
|---|---|---|
| Cable de 15 cm desde la fuente | ≈ 150 nH | ≈ 1,5 V |
| Traza de 3 cm | ≈ 30 nH | ≈ 0,3 V |
| Traza de 1 cm (condensador pegado) | ≈ 10 nH | ≈ 0,1 V; y el condensador aporta la carga |
Una caída de 1,5 V sobre un chip que trabaja a 3,3 V lo deja en 1,8 V: fuera de rango y un reset garantizado. La solución es darle al chip su propia reserva de carga a pocos milímetros: un condensador cerámico que entregue el pico sin pedírselo al cable.
- 100 nF por chip, pegado
- Cerámico de 100 nF entre Vcc y GND, lo más cerca posible de los pines de alimentación (Tema 12): cuanto más corta la traza, menos inductancia. Con 100 nF y un pico de 50 mA × 5 ns la caída es de unos 2,5 mV. Es el elemento más barato y más importante de toda la placa.
- Condensador de volumen (bulk)
- Un electrolítico o cerámico de 10 µF o más por zona de la placa, para los cambios más lentos (un motor que arranca, un backlight que enciende). El 100 nF atiende los nanosegundos; el bulk, los microsegundos.
- Rebote de masa
- Lo mismo ocurre del lado de GND: cuando varias salidas pasan a 0 a la vez, la corriente de descarga levanta el potencial de masa local y una entrada «cree» ver otro nivel. Se mitiga con masa corta y ancha (plano de masa) y con menos salidas conmutando simultáneamente.
- Rango de Vcc
- Un 74HC acepta de 2 a 6 V, pero hay que medir con la carga conectada y con el osciloscopio, no con el multímetro en vacío. Una batería casi agotada y un hundimiento por un pico pueden unirse para sacarla del rango.
- Regulador lineal
- Un regulador lineal que baja de 9 V a 5 V disipa la diferencia: (9 − 5) × I como calor. A 80 mA son 320 mW perdidos, más que la lógica. Con batería conviene alimentar directo o usar un conmutado.
06 · Checklist
Temperatura y cinco puntos antes de cerrar
Todo componente tiene un rango de temperatura garantizado y todo circuito que consume se calienta por encima del aire que lo rodea. La temperatura de la juntura (el silicio) es la que cuenta:
| Grado | Rango típico | Ejemplo de uso |
|---|---|---|
| Comercial | 0 a 70 °C | Interior, electrónica de consumo |
| Industrial | −40 a 85 °C | Gabinetes, exterior, maquinaria |
| Automotriz / ampliado | hasta 125 °C | Compartimento del motor |
El rango se mide en el chip, no en el aire. Una caja cerrada al sol supera los 50 °C con facilidad y la lógica propia le suma su calentamiento. El derating es no usar un componente en su límite: se deja margen (un 20 % o más) y se elige un grado superior si el cálculo se acerca. La velocidad máxima también baja con el calor y con una Vcc menor.
Con todo lo anterior, el checklist se reduce a cinco preguntas. Si alguna falla, la placa no está lista:
- 1. Vcc en rango, con carga y sin picos
- HC: 2 a 6 V. Medir con todo conectado y con el osciloscopio, no en vacío. Revisar la batería casi agotada.
- 2. Desacople: 100 nF por chip, pegado
- Más un bulk por zona. A MHz, ningún chip sin su condensador (Tema 12).
- 3. Sin entradas flotantes
- Toda entrada a un nivel definido: puertas sobrantes, enables, buses sin manejador, botones con pull (Temas 3, 8, 11).
- 4. Salidas sin peleas y con carga razonable
- Ninguna salida contra otra ni contra Vcc o GND; tri-estados alternados; fan-out dentro de la corriente y la velocidad.
- 5. Temperatura y rango
- Ambiente de la caja + calentamiento de la juntura dentro del grado, con margen. Si no, derating o grado industrial.
| Síntoma | Sospechá primero de | Regla |
|---|---|---|
| Resetea cuando conmuta una carga | Hundimiento de Vcc | 2 y 1 |
| Cambia si acercás la mano | Entrada flotante | 3 |
| Integrado tibio sin hacer nada | Entrada flotante o contención | 3 y 4 |
| Flancos redondeados, falla a velocidad alta | Fan-out capacitivo | 4 |
| Falla solo con calor | Temperatura o margen de tiempo | 5 |
| Falla solo con la batería baja | Vcc fuera de rango | 1 |
| Pulsos fantasma en un contador | Glitches (Tema 28) o rebote de masa | Diseño síncrono; 2 |
07 · Simulador
Laboratorio: el bateriómetro
El simulador usa el modelo de esta lección: potencia dinámica P = N·C·V²·f con C = 50 pF y α = 1, más un resto del sistema de 0,5 mA mientras está activo (regulador, sensor, LED) y una corriente de sleep de 10 µA. Elegís cuántas puertas conmutan, la frecuencia, la tensión y qué parte del tiempo está despierto; con 2000 mAh de pilas, el laboratorio calcula la potencia, la corriente media, los días de vida y el calentamiento.
- Barra apilada: de qué se compone la corriente media. El verde es el consumo dinámico, el celeste el resto del sistema activo y el naranja el sleep.
- Calentamiento: θJA = 90 °C/W como cota orientativa para un DIP. Con ΔT mayor de 30 °C, el estado pasa a «Caliente».
- Pila corta: cuando la autonomía baja de 72 horas.
Bateriómetro
10 puertas · 1 MHz · 5 V · activo 100 %
10 puertas, 1 MHz y 5 V siempre activas.
Recorrido guiado (10 minutos)
- 1Mirá el estado inicial: 10 puertas, 1 MHz, 5 V, siempre activo.
12,5 mW dinámicos son 2,5 mA; con los 0,5 mA del resto son 3 mA. Con 2000 mAh duran unas 667 horas, 28 días. El verde ya es la mayor parte de la barra.
- 2Subí a 16 MHz.
La potencia se multiplica por 16: 200 mW y 40 mA. La frecuencia es lineal; la batería ya se nota.
- 3Subí las puertas a 20.
Otra vez el doble: 400 mW, 80,5 mA y apenas 25 horas de autonomía. El calentamiento pasa de 30 °C: «Caliente».
- 4Pasá a 3,3 V.
La potencia baja a unos 174 mW: 2,3 veces menos. Pero la autonomía solo mejora 1,5 veces, de 25 a 37 horas. La razón: los 0,5 mA del resto del sistema no bajan con V².
- 5Bajá la frecuencia a 1 kHz.
El consumo dinámico desaparece (unos 3 µA) y la barra es casi toda celeste: el resto del sistema manda. Más ahorro en la lógica ya no mueve la aguja.
- 6Con 1 Hz, mirá la autonomía.
0,5 mA constantes durante 4000 horas, unos 167 días. Lo único que queda es el resto del sistema.
- 7Ahora activá «10 %» y después «1 %».
Despierto una centésima parte del tiempo, la corriente media baja a unos 15 µA y la autonomía teórica pasa de los 15 años. El naranja (sleep) toma la barra: ahora manda el sueño.
- 8Probá «Nodo a pilas».
10 puertas a 1 kHz, 3,3 V y 1 % del tiempo activo. Es la receta de un sensor a pilas: poca frecuencia, poca tensión y dormido casi todo el tiempo.
- 9Volvé a «Sin cuidado: 16 MHz» y a 1 %.
Aun a 16 MHz, dormir el 99 % del tiempo trae la autonomía de horas a meses. Los «ciclos de trabajo» son más potentes que cualquier optimización fina.
- 10Cerrá con las cuentas.
Una buena regla de diseño: antes de elegir componentes, escribí el presupuesto de mA y las horas que querés durar; después comprobá que sale.
Preguntas para pensar
- Con 20 puertas a 16 MHz y 5 V, siempre activo, ¿cuánta potencia, cuánta autonomía y qué estado muestra?
- Pasá a 3,3 V: ¿en cuánto baja la potencia y en cuánto sube la autonomía? ¿Por qué no coinciden?
- Con 1 Hz y 100 % activo, ¿qué manda el consumo?
- Con 1 Hz y 1 %, ¿qué cambia y por qué?
Ver respuestas sugeridas
- 400 mW, 80,5 mA, unas 25 horas (un día) y «Caliente» (+36 °C). A MHz las pilas duran suspiros.
- La potencia pasa de 400 a 174 mW (2,3×, porque P ∝ V²), pero la autonomía solo sube a unas 37 horas (1,5×): los 0,5 mA del resto del sistema no dependen de la lógica, y la corriente dinámica cae solo como V (P/V), no como V².
- El resto del sistema (0,5 mA): la lógica es despreciable. Para bajar el consumo hay que actuar sobre el reposo, no sobre la frecuencia.
- La corriente media cae a unos 15 µA y la autonomía teórica a más de 15 años: el sleep (10 µA) pasa a mandar. Dormir es la mayor palanca; en la práctica manda la autodescarga de la pila.
08 · Consumo y diseño en código
Potencia, fan-out, autonomía, picos y auditoría
Los bloques calculan la potencia dinámica y el ahorro de bajar la tensión, el tiempo de subida y el consumo de un reloj según su fan-out, la autonomía de una batería con y sin sleep, el hundimiento de Vcc por un pico de corriente con y sin condensador, y la temperatura de juntura. Cierran con un auditor que aplica el checklist de cinco puntos a dos placas.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
Paso 1: potencia dinámica y el ahorro de V²
def p_dinamica_mw(n, c_pf, vcc, f_hz, alfa=1.0):
return alfa * n * c_pf * 1e-12 * vcc ** 2 * f_hz * 1000
print("P = alfa * N * C * V^2 * f (N = 10 puertas, C = 50 pF, alfa = 1)")
print("frecuencia 5 V (mW) 3,3 V (mW) ahorro")
for f in (1, 1e3, 1e6, 16e6):
p5 = p_dinamica_mw(10, 50, 5.0, f)
p33 = p_dinamica_mw(10, 50, 3.3, f)
print(f"{f:10.0f} Hz {p5:11.6f} {p33:12.6f} x{p5 / p33:.2f}")
print()
print("20 puertas a 16 MHz, 5 V, segun la actividad alfa (fraccion de puertas que conmutan):")
for alfa in (1.0, 0.25, 0.1):
print(f" alfa = {alfa:4.2f}: {p_dinamica_mw(20, 50, 5.0, 16e6, alfa):6.1f} mW")
La potencia es lineal en f (de 12,5 mW a 1 MHz a 200 mW a 16 MHz con 10 puertas) y el ahorro de pasar de 5 a 3,3 V es siempre 2,30×, sin importar la frecuencia. Con 20 puertas a 16 MHz son 400 mW si todas conmutan, 100 mW con α = 0,25 y 40 mW con α = 0,1: no mover lo que no hace falta rinde tanto como bajar la tensión.
Paso 2: fan-out, tiempo de subida y reloj
R_SAL = 50.0 # ohm, salida HC a 5 V (orientativo)
C_ENT, C_TRAZA = 10e-12, 30e-12 # entrada HC y trazas (orientativo)
def c_total(n_destinos):
return n_destinos * C_ENT + C_TRAZA
def t_subida_ns(c):
return 2.2 * R_SAL * c * 1e9 # del 10 % al 90 %
def p_reloj_mw(c, vcc, f_hz):
return c * vcc ** 2 * f_hz * 1000
F = 8e6
periodo_ns = 1e9 / F
print(f"reloj de {F/1e6:.0f} MHz (periodo {periodo_ns:.0f} ns), salida de {R_SAL:.0f} ohm, 5 V")
print("destinos C total subida % del periodo potencia corriente")
for n in (1, 4, 8, 20, 50):
c = c_total(n)
t = t_subida_ns(c)
p = p_reloj_mw(c, 5.0, F)
print(f"{n:8d} {c*1e12:6.0f} pF {t:6.1f} ns {100*t/periodo_ns:10.0f} % {p:8.1f} mW {p/5:7.1f} mA")
print()
print("regla orientativa: que la subida no pase del 10-20 % del periodo; si pasa, buffer o menos carga")
Con 8 destinos, C = 110 pF: el flanco tarda 12 ns (10 % del período), el reloj gasta 22 mW y toma 4,4 mA. Con 50 destinos, C = 530 pF: 58 ns (47 % del período), 106 mW y 21 mA solo para el reloj. Más fan-out es más lento y más caro.
Paso 3: autonomía con y sin sleep
def i_media_ma(i_activo, i_sleep, duty):
return duty * i_activo + (1 - duty) * i_sleep
def autonomia(i_ma, mah=2000.0):
h = mah / i_ma
return h, h / 24, h / 24 / 365
casos = (("siempre activo, 1 MHz", 3.0, 3.0, 1.0),
("siempre activo, 16 MHz", 80.5, 80.5, 1.0),
("10 ms cada 1 s, resto sleep", 5.0, 0.010, 0.01),
("10 ms cada 1 s, sin sleep (0,5 mA)", 5.0, 0.5, 0.01),
("1 s cada 60 s, resto sleep", 5.0, 0.010, 1 / 60))
print("caso I media horas dias anios")
for nombre, i_act, i_sl, duty in casos:
i = i_media_ma(i_act, i_sl, duty)
h, d, a = autonomia(i)
print(f"{nombre:36s} {i:8.3f} mA {h:9.0f} {d:9.1f} {a:8.2f}")
print()
print("el sleep manda: pasar de 0,5 mA a 10 uA de reposo multiplica la autonomia por", round(i_media_ma(5, 0.5, 0.01) / i_media_ma(5, 0.010, 0.01), 1))
Siempre activo a 1 MHz dura 667 h (28 días); a 16 MHz, 25 h. Un nodo que mide 10 ms cada segundo y duerme a 10 µA promedia 0,06 mA: unas 33 000 h, 3,8 años teóricos. Sin sleep real (0,5 mA de reposo) el mismo nodo dura 153 días: el reposo se multiplica por 9 la autonomía.
Paso 4: picos de corriente y desacople
def pico_inductivo_v(l_nh, di_ma, dt_ns):
return l_nh * 1e-9 * (di_ma * 1e-3) / (dt_ns * 1e-9) # V = L di/dt
def caida_capacitiva_mv(i_ma, dt_ns, c_nf):
return (i_ma * 1e-3) * (dt_ns * 1e-9) / (c_nf * 1e-9) * 1000 # dV = I dt / C
print("pico de corriente: 50 mA en 5 ns (varias salidas conmutando a la vez)")
for nombre, l_nh in (("cable de 15 cm (~1 nH/mm)", 150), ("traza de 3 cm", 30), ("traza de 1 cm", 10)):
print(f" inductancia de {nombre:27s} {l_nh:4d} nH -> pico de {pico_inductivo_v(l_nh, 50, 5):.2f} V")
print()
for c_nf in (10, 100):
print(f" con {c_nf:3d} nF pegado al chip: caida de {caida_capacitiva_mv(50, 5, c_nf):.1f} mV durante el pico")
print()
vcc_min_hc = 2.0
for pico in (0.1, 1.5):
vcc = 3.3 - pico
print(f" Vcc nominal 3,3 V con un hundimiento de {pico:.1f} V -> {vcc:.1f} V:", "ok" if vcc >= vcc_min_hc else "FUERA de rango (HC: minimo 2 V)")
Un cable de 15 cm entre la fuente y el chip hunde 1,5 V con un pico de 50 mA en 5 ns; una traza de 1 cm, 0,1 V. Un 100 nF pegado al chip aporta la carga con una caída de solo 2,5 mV (con 10 nF, 25 mV). A 3,3 V, el hundimiento de 1,5 V lo deja en 1,8 V, fuera del mínimo del HC: reset asegurado.
Paso 5: temperatura de juntura y auditor del checklist
THETA_JA = 90.0 # grados por watt, DIP (orientativo)
RANGOS = {"comercial": (0, 70), "industrial": (-40, 85)}
def t_juntura(t_amb, p_mw, theta=THETA_JA):
return t_amb + theta * p_mw / 1000
print("temperatura de juntura = ambiente + theta * P")
for t_amb, p in ((25, 12.5), (25, 400), (50, 400), (60, 400)):
print(f" ambiente {t_amb} C, {p:5.1f} mW -> {t_juntura(t_amb, p):5.1f} C")
REGLAS = (("vcc_ok", "Vcc dentro del rango con carga y sin picos"),
("desacople", "100 nF por chip, pegado a los pines"),
("sin_flotantes", "ninguna entrada al aire"),
("sin_peleas", "ninguna salida contra otra o contra Vcc/GND"),
("temperatura", "ambiente + calentamiento dentro del grado"))
def auditar(placa):
return [txt for clave, txt in REGLAS if not placa.get(clave, False)]
def temp_ok(t_amb, p_mw, grado):
lo, hi = RANGOS[grado]
return lo <= t_juntura(t_amb, p_mw) <= hi
placa_a = {"vcc_ok": True, "desacople": False, "sin_flotantes": True, "sin_peleas": True,
"temperatura": temp_ok(50, 400, "comercial")}
placa_b = {"vcc_ok": True, "desacople": True, "sin_flotantes": True, "sin_peleas": True,
"temperatura": temp_ok(40, 400, "industrial")}
for nombre, placa in (("placa A (gabinete a 50 C, grado comercial)", placa_a),
("placa B (desacople, gabinete a 40 C, grado industrial)", placa_b)):
fallas = auditar(placa)
print()
print(nombre, "->", "lista para cerrar" if not fallas else f"{len(fallas)} falla(s):")
for f in fallas:
print(" -", f)
A 400 mW, la juntura queda 36 °C sobre el ambiente: 61 °C en una mesa a 25 °C, pero 86 °C en un gabinete a 50 °C, por encima del grado comercial (y apenas pasando el industrial). El auditor marca dos fallas en la placa A (sin desacople y fuera de temperatura) y aprueba la B, que tiene el condensador y trabaja a 40 °C con grado industrial (76 °C).
09 · Analogía de programador
Presupuesto, capacidad y pre-deploy
| En software | En el circuito |
|---|---|
| Un presupuesto de memoria o de CPU por servicio | Un presupuesto de miliamperios por bloque |
| El costo del trabajo crece con las operaciones por segundo | La potencia crece con la frecuencia (P ∝ f) |
| Una optimización que escala al cuadrado de una variable | Bajar la tensión rinde al cuadrado (P ∝ V²) |
| Un servidor con un máximo de conexiones | El fan-out de una salida; en dc sobra, con carga se satura |
| Un caché local que absorbe ráfagas para no saturar el recurso remoto | El condensador de desacople que absorbe los picos de corriente |
| Una variable sin inicializar | Una entrada flotante |
| Dos hilos escribiendo en el mismo recurso sin exclusión | Dos salidas peleando sobre el mismo cable |
| Un modo de bajo consumo, un idle o suspend | El sleep: el ciclo de trabajo manda la autonomía |
| Una máquina que se estrangula (throttling) por calor | La temperatura de juntura y el derating |
| La lista de verificación previa al despliegue: tests, lint, migraciones | El checklist de cinco puntos antes de cerrar la placa |
| Un test que pasa en tu máquina y falla en producción | Un circuito que anda en la mesa y falla en la caja |
- 1El costo está en el cambio.
Una variable quieta no cuesta; reescribirla millones de veces por segundo sí. En CMOS pasa lo mismo: mantener un valor es gratis y cambiarlo se paga.
- 2Las condiciones de producción no son las del banco.
Entornos, cargas y tiempos distintos. Un buen diseñador piensa en el peor caso, no en el caso feliz.
- 3Lo sin definir es lo que falla.
Una entrada flotante es una variable sin inicializar: «a veces anda» es el peor tipo de bug. Definir todo estado es una regla tanto de código como de hardware.
Una diferencia importante: en software, un recurso agotado suele degradar con elegancia (más lento). En hardware, un recurso agotado (tensión fuera de rango, temperatura, corriente) puede dañar el componente o dejarlo en un estado indefinido. Por eso se deja margen.
10 · Comprensión
Confusiones frecuentes
«CMOS no consume»
En reposo, casi nada. Pero cada flanco carga una capacidad y a MHz eso suma cientos de mW (400 mW en el ejemplo de 20 puertas a 16 MHz). La frecuencia factura.
«Bajar a 3,3 V ahorra el 34 %»
La potencia dinámica baja con V², unas 2,3 veces (un 56 %). Y la autonomía total mejora menos, porque el resto del sistema (regulador, sensores, LED) no se reduce igual.
«El fan-out es un número fijo»
Depende de cómo se mire: en continua puede ser de decenas, pero con la señal en MHz lo limita la capacitancia total. Y no es lo mismo cargar entradas HC que LS o un LED.
«Una entrada sin conectar vale 0»
No vale nada: flota, capta ruido y puede oscilar o consumir. Si no se usa, se ata a GND o a Vcc, y las entradas de enable y de botones llevan una pull.
«El desacople es opcional»
A baja frecuencia se perdona; a MHz castiga: picos, glitches y resets. Un cerámico de 100 nF por chip, pegado, no se debate.
«Mido Vcc con el multímetro y está bien»
El multímetro promedia y se lee en vacío. Los hundimientos duran nanosegundos y aparecen con carga: hace falta un osciloscopio y medir con todo conectado.
«Si anda a temperatura ambiente, anda»
La juntura se calienta sobre el aire y una caja cerrada suma más. Un grado comercial (0 a 70 °C) puede quedar chico en un gabinete a 50 °C con 400 mW. Se calcula con θJA y se deja margen.
«USB alcanza siempre»
Los 500 mA de un puerto USB se acaban con LEDs, relés y MHz. La corriente se presupuesta como se presupuesta la memoria de un servicio.
11 · Práctica guiada
Ejercicios de presupuesto
Ejercicio 1: reloj a 8 destinos
Un reloj de 8 MHz, a 5 V, alimenta 8 entradas HC de 10 pF cada una más 30 pF de trazas. Con una salida de 50 Ω, ¿cuánto vale C total? ¿Cuánto tarda el flanco y qué porcentaje del período es? ¿Qué potencia y qué corriente consume solo el reloj? ¿Hace falta un buffer?
Ver solución razonada
C = 8 × 10 + 30 = 110 pF. Subida ≈ 2,2 × 50 × 110 pF ≈ 12 ns, el 10 % de los 125 ns del período: aceptable. Potencia: P = C·V²·f = 110e-12 × 25 × 8e6 = 22 mW, o sea 22 / 5 = 4,4 mA (cuidado con las unidades: el producto da watts, no amperios). Un buffer no es obligatorio para 8 destinos cercanos; sí si las trazas son largas, si llegan a varias zonas de la placa o si crecen a 50 destinos (58 ns, casi la mitad del período).
Ejercicio 2: nodo a pilas
Un sensor mide una vez por segundo: 10 ms activo a 5 mA y el resto del tiempo en sleep a 10 µA. ¿Cuál es la corriente media? ¿Cuánto duran 2000 mAh? ¿Y si el sleep fuera de 0,5 mA?
Ver solución razonada
Media = 0,01 × 5 + 0,99 × 0,010 = 0,0599 ≈ 0,06 mA. Autonomía = 2000 / 0,06 ≈ 33 000 h, unos 3,8 años teóricos (la autodescarga de la pila recorta el número real). Con 0,5 mA de reposo: 0,05 + 0,495 = 0,545 mA, o sea unas 3670 h, 153 días: el reposo manda y por eso se diseña dormido.
Ejercicio 3: auditar una placa
Una placa se reinicia cada vez que se enciende un relé. Aplicá el checklist de cinco puntos: ¿quién es el sospechoso número uno y cómo lo confirmás?
Ver solución razonada
Alimentación y desacople (puntos 1 y 2): la bobina del relé pide un pico que hunde Vcc local. Se confirma con el osciloscopio sobre el pin de alimentación del chip que se reinicia: se ve el hundimiento justo en el instante de la conmutación. Se arregla con 100 nF pegado al chip, un bulk de 10 µF o más cerca de la carga, masas en estrella y un diodo de rueda libre en la bobina.
Ejercicio 4: el valor de bajar la tensión
Un diseño de 20 puertas a 16 MHz y 5 V gasta 400 mW. Calculá el consumo a 3,3 V y a 3,3 V con la frecuencia a la mitad. ¿Qué precio se paga por bajar la tensión?
Ver solución razonada
A 3,3 V: 400 × (3,3 / 5)² ≈ 174 mW. Con 8 MHz además: 87 mW, casi 4,6 veces menos que el original. El precio: una puerta HC a 3,3 V es más lenta (la tensión baja la corriente de salida y el retardo de propagación sube, Tema 28) y los márgenes de ruido se achican. Hay que verificar el retardo máximo con la tensión elegida.
Ejercicio 5: ¿entra en el grado?
Un circuito disipa 250 mW en un gabinete que llega a 55 °C. Con θJA = 90 °C/W, ¿cuál es la temperatura de juntura? ¿Sirve un chip comercial? ¿Y uno industrial?
Ver solución razonada
Tj = 55 + 90 × 0,25 = 77,5 °C. Un chip comercial (máx. 70 °C) no sirve. Uno industrial (85 °C) sí, pero con solo 7,5 °C de margen: conviene bajar la potencia o mejorar la ventilación antes de confiar. Para quedar con un 20 % de margen sobre el límite, habría que quedar en unos 68 °C.
Ejercicio 6: un LED directo al pin
Un LED rojo (caída de 2 V) se conecta a un pin HC de 5 V con una corriente de 4 mA. Calculá la resistencia y compará la potencia que toma de la fuente con la de 10 puertas a 1 MHz.
Ver solución razonada
R = (5 − 2) / 0,004 = 750 Ω (un valor comercial: 680 Ω da unos 4,4 mA). La fuente entrega 5 V × 4 mA = 20 mW, más que los 12,5 mW de diez puertas a 1 MHz: un solo LED encendido consume más que toda la lógica. Si hay que ahorrar, el LED es el primer sospechoso (PWM, menos corriente, apagarlo cuando no se usa).
12 · Síntesis
Ideas para recordar
- En CMOS se paga por cambiar: P = α·N·C·V²·f. Lineal en la frecuencia y en la actividad, cuadrática en la tensión; pasar de 5 a 3,3 V gasta 2,3 veces menos.
- En reposo manda el estático y el resto del sistema; en rápido manda f·V². La autonomía de una batería se gana, sobre todo, durmiendo.
- El fan-out en continua sobra, pero con la señal en movimiento lo limita la capacitancia total: flancos lentos, más consumo y más retardo. Los relojes salen de buffers.
- Una entrada flotante capta ruido, oscila y consume: toda entrada va atada, los sobrantes a su neutro y los botones con pull.
- Los picos de corriente hunden Vcc sobre la inductancia del cable: 100 nF pegado a cada chip y un bulk por zona.
- La temperatura de juntura es la del aire más θJA·P: derating y grado industrial cuando el margen es escaso.
- Checklist: Vcc en rango, desacople, sin flotantes, sin peleas de salidas, temperatura con margen.
- Presupuestar los miliamperios como se presupuesta el código, y medir con carga y con osciloscopio.
¿Listo para el Tema 30?
Podés avanzar si sos capaz de responder esto sin mirar:
- Calcular la potencia dinámica a partir de N, C, V y f, y decir cuánto ahorra bajar la tensión.
- Estimar el tiempo de subida y el consumo de un reloj según su fan-out.
- Calcular la autonomía de una batería con un ciclo de trabajo y un sleep.
- Decidir qué hacer con cada entrada sobrante, flotante o lenta.
- Explicar para qué sirve el 100 nF y por qué se pone pegado al chip.
- Recorrer el checklist de cinco puntos y relacionar cada síntoma con su sospechoso.
Con el lado eléctrico claro, las piezas están listas para unirse. En el próximo tema armamos el primer proyecto completo: una cerradura digital con comparador, anti-rebote y las prácticas de este tema aplicadas desde el principio.