01 · Qué vamos a hacer
Objetivo, materiales y requisitos
Vamos a medir el consumo de un nodo sensor a pilas como el de los temas anteriores: duerme casi todo el tiempo, y cada 2 segundos se despierta, mide con un sensor y transmite por radio. Queremos saber tres cosas, y saberlas con números: cuánto consume dormido, cuánto vale la corriente media de un ciclo completo y cuánto durará con dos pilas AA, con un margen de error honesto.
Materiales.
- La placa del nodo con su firmware de bajo consumo (tema 35), con un puente de medida (un jumper o un tramo de pista cortable) en serie con la alimentación.
- Un portapilas con dos pilas AA, o una fuente de laboratorio ajustada a 3,0 V.
- Un multímetro con escala de µA y mA, y un osciloscopio de dos canales (o un registrador de datos).
- Resistencias de medida de 1 Ω y 10 Ω (1 %, de baja inductancia), y una de 100 Ω o 1 kΩ para el reposo.
- Opcionalmente, un analizador de consumo (el tipo de herramienta que mide corrientes de nanoamperios a amperios con cientos de miles de muestras por segundo; hay varios en el mercado, como el Power Profiler Kit II de Nordic, el Joulescope o el Otii Arc). Hace casi todo este taller en un solo paso, pero entender el taller con los instrumentos básicos explica qué hace y cuándo creerle.
Requisitos. Como en el taller del tema 27, cada requisito tiene un identificador para poder rastrearlo hasta una medición:
| Id | Requisito | Se verifica con |
|---|---|---|
| E1 | La corriente de reposo de la placa completa no supera los 5 µA | Paso 3: medición con resistencia de 1 kΩ o con un analizador |
| E2 | La corriente media de un ciclo de 2 s no supera los 80 µA | Pasos 4 y 5: captura del perfil e integración |
| E3 | La autonomía con dos pilas AA, a 20 °C, es de al menos 2 años | Paso 6: cálculo con incertidumbre |
| E4 | La medición no puede reiniciar ni alterar el equipo | Pasos 2 y 4: la caída en la resistencia de medida |
El perfil del nodo es el de la Parte 2 del programa de este tema: 3 mA durante 10 ms (medición), 15 mA durante 6 ms (transmisión) y 2 µA el resto de un ciclo de 2 s. Su corriente media real, calculada a partir de esos valores, es de 61,98 µA; es la cifra que el taller debería permitir reconstruir.
02 · Paso 1
Los instrumentos y sus límites
La corriente se mide en serie: hay que abrir el circuito e intercalar el instrumento, lo contrario que con la tensión. Y todo instrumento de corriente se comporta, en el fondo, como una pequeña resistencia que mide la caída de tensión sobre ella (ley de Ohm: V = I · R). Esa resistencia tiene un efecto, la caída de carga (burden voltage): la tensión que se «roba» a la placa. Todo el taller es un equilibrio entre dos exigencias opuestas:
- Resistencia grande, para que la caída sea grande y el instrumento pueda leer corrientes chicas (2 µA × 1 kΩ = 2 mV, medible; 2 µA × 1 Ω = 2 µV, invisible).
- Resistencia chica, para que la caída no deje sin tensión al equipo cuando consume el pico (15 mA × 1 kΩ = 15 V, imposible; 15 mA × 1 Ω = 15 mV, inofensivo).
Ese conflicto, un rango de corriente de casi cuatro órdenes de magnitud (de 2 µA a 15 mA es un factor de 7500) con una sola resistencia, es la razón por la que medir el consumo de un dispositivo de bajo consumo es un problema real. Los instrumentos se distinguen por cómo lo resuelven:
| Método | Qué ve bien | Límites | Cuándo usarlo |
|---|---|---|---|
| Multímetro en serie | Corrientes estables (reposo, un consumo constante) | Promedia sobre su ventana de lectura (decenas a cientos de ms): no ve pulsos; la caída de carga es de cientos de mV en la escala de µA; al cambiar de escala puede abrir el circuito un instante | El reposo, con precaución; verificar fuentes y consumos constantes |
| Resistencia de medida + osciloscopio | La forma temporal: pulsos, duraciones, secuencia | La resolución de tensión del osciloscopio (típicamente de 1 mV a unos pocos mV) fija la corriente mínima que se distingue; con una sola resistencia no cubre todo el rango | El perfil de los picos; el tiempo de cada estado |
| Amplificador de medida de corriente (un circuito integrado que amplifica la caída sobre la resistencia) | Resolución mejor que con el osciloscopio solo; salida lista para un conversor o un osciloscopio | Ancho de banda y rango limitados; hay que calibrarlo | Instrumentación propia, medición continua en el campo |
| Contador de carga (coulomb counter, por ejemplo el LTC4150) | La carga total en un intervalo largo: integra por hardware | No muestra la forma ni los picos; resolución de carga limitada | Medir el consumo medio durante horas o días sin perder pulsos |
| Analizador de consumo (con resistencias conmutadas o un amplificador de ganancia automática) | De nA a A con muestreo rápido: reposo, pulsos y media, todo en una captura | Costo; hay que entender qué hace con los rangos (conmuta resistencias y puede introducir transitorios) | El perfil completo; la herramienta de trabajo para firmware de bajo consumo |
03 · Paso 2
Preparar la placa
Antes de conectar ningún instrumento hay que decidir qué se va a medir, porque el resultado depende de lo que esté conectado. La regla es medir el equipo en las condiciones en que va a funcionar, sin nada de más:
- Desconectar el depurador y el programador. Un depurador conectado mantiene relojes y dominios de depuración activos y puede inyectar corriente por las líneas de datos (tema 34). Se programa el equipo, se desconecta, y se corta y vuelve a dar la alimentación.
- Desconectar el adaptador USB-serie. Es el error más frecuente y el más engañoso: un adaptador conectado a los pines de la UART puede alimentar al chip a través de sus pines (por los diodos de protección de la entrada) o consumir corriente por ellos, y la medida da un valor que no es el del equipo solo. Si hace falta ver mensajes, se mide con el adaptador desconectado.
- Quitar o inhabilitar lo que no pertenece al producto: el LED de «alimentación» de una placa de desarrollo (que consume mA), un conversor USB-serie integrado o un regulador de placa que el producto final no tendrá. Si se mide una placa de desarrollo, hay que saber qué parte del consumo medido es del diseño y cuál de la placa.
- Alimentar con la batería real (o una fuente a su tensión) por el mismo camino que usará el producto. Si hay un regulador, el consumo que importa es el que sale de la batería, que incluye el reposo del regulador (tema 33), y no el que sale del regulador.
- Abrir el circuito en un solo lugar, en serie con la alimentación, con un puente cortable o un conector. Con un solo punto de medida, se puede intercalar el instrumento sin tocar nada más.
- Esperar a que el equipo se estabilice tras el encendido: los condensadores se cargan, los osciladores arrancan y el firmware entra en su régimen. Las primeras decenas de segundos no son representativas.
Dos decisiones de montaje afectan a todo lo que sigue:
- Dónde poner la resistencia. En el lado positivo (entre el positivo de la batería y la placa) el negativo de la placa y el de la batería quedan unidos, y la caída de tensión se ve con dos puntas, una a cada lado de la resistencia (con un osciloscopio, dos canales y la resta de los dos; o un amplificador diferencial). En el lado negativo (entre el negativo de la placa y el de la batería) basta una punta con la masa del osciloscopio en el negativo de la batería, pero la masa de la placa queda por encima de la masa de la batería en la caída de tensión: es aceptable con una resistencia chica y un equipo aislado, y peligroso si la placa está conectada a otra cosa (un USB, otro instrumento) que fuerce su masa.
- Un condensador en paralelo con la placa (de 100 µF a 470 µF, cerámico o de película, no electrolítico: sus fugas son del orden de µA y falsean la medición del reposo) aporta los picos de corriente, de modo que la fuente (y el instrumento) vean una corriente más suave y la caída en la resistencia durante el pico sea menor. Sirve para un multímetro, pero oculta la forma real de los pulsos: para el perfil temporal se mide sin él, o con uno muy chico.
04 · Paso 3
Medir el reposo
El reposo se mide cuando el firmware está dormido y la corriente es estable. Es la medida que verifica el requisito E1, y la que más lo necesita porque es la que más cuesta creer: los 2 µA de un chip dormido son una décima de milésima de la corriente de un pico, y cualquier cosa conectada a la placa puede ocultarlos o inflarlos.
Con un multímetro en la escala de µA, se lee la corriente cuando el equipo está dormido y no hay pulsos en la ventana. Es la única medida para la que un multímetro es confiable, y aun así con cuidados:
- Esperar a que el dato se estabilice (decenas de segundos): hay condensadores que cargar y el display oscila al principio.
- Saber qué hace el multímetro al medir. Su resistencia interna en la escala de µA es grande (la caída de carga a fondo de escala puede ser de unos cientos de mV), y si un pulso llega mientras el equipo está conectado a esa escala, la caída puede reiniciar el chip. Por eso este paso se hace con el equipo en un modo en que no haya pulsos (un firmware de prueba que solo duerma), o se usa el condensador del apartado anterior para que el multímetro vea una corriente suave.
- No cambiar de escala con el equipo funcionando: en muchos multímetros, el selector abre el circuito unos milisegundos al pasar de una escala a otra, y el equipo pierde la alimentación.
- Sospechar de una lectura que no cambia al reiniciar o de una que cambia al tocar los cables: son síntomas de fugas y de ruido, no de consumo.
Con un osciloscopio y una resistencia hay que elegir bien. La Parte 1 del programa de Python calcula, para una fuente de 3,0 V, un chip que se reinicia por debajo de 1,8 V y un instrumento con resolución de 1 mV:
| Resistencia | Caída con el pico de 15 mA | ¿Sigue vivo el chip? | Resolución con 1 mV | ¿Ve el reposo de 2 µA? |
|---|---|---|---|---|
| 1 Ω | 15 mV | Sí | 1000 µA | No |
| 10 Ω | 150 mV | Sí | 100 µA | No |
| 100 Ω | 1,5 V | No: se reinicia | 10 µA | No |
| 1000 Ω | (15 V: imposible) | No: se reinicia | 1 µA | Sí |
La tabla muestra el dilema en números: no existe una resistencia que sirva para todo. Las que dejan vivo al chip en el pico no ven el reposo, y la que ve el reposo lo reinicia en el pico. Las salidas son tres: medir por separado (el reposo, con una resistencia grande y con el equipo en un modo de prueba sin pulsos; los picos, con una chica); un amplificador entre la resistencia y el osciloscopio que multiplique la caída pequeña; o un analizador de consumo, que conmuta automáticamente entre resistencias de distinto valor según la corriente y resuelve el problema por hardware. Es, en el fondo, lo que hacen las herramientas profesionales y lo que explica su costo.
05 · Paso 4
Capturar el perfil
El perfil es la corriente en función del tiempo durante uno o varios ciclos completos. Es la medida que verifica E2 y E4, y la que alimenta el presupuesto del tema 33. Con la resistencia de 10 Ω (que deja vivo al chip y ve bien los pulsos de miliamperios), se captura con el osciloscopio la tensión sobre ella mientras el equipo corre su ciclo normal. Hay que tomar cuatro decisiones de captura:
| Decisión | Criterio | Con el nodo del taller |
|---|---|---|
| Frecuencia de muestreo | Que cada pulso caiga en varias muestras (el pulso más corto debería abarcar al menos 10 muestras) | El pulso más corto dura 6 ms: con 10 kHz son 60 muestras; con 100 Hz, 0,6 muestras |
| Duración de la captura | Al menos varios ciclos completos, y todos los estados del firmware, incluidos los eventos raros | 10 s = 5 ciclos de 2 s; los eventos raros (reintentos de la radio) pueden requerir minutos |
| Disparo (trigger) | Un umbral de la señal o una salida de sincronismo del firmware (un pin que sube al despertar) | Un pin de depuración que sube al despertar y baja al dormir da una referencia temporal exacta |
| Rango vertical | Que el pico más alto no sature la pantalla y que el reposo se distinga del ruido | Con 10 Ω, el pico de 15 mA son 150 mV; el reposo (20 µV) queda enterrado en el ruido y se mide aparte |
Con el pin de sincronismo, la captura tiene dos trazas: la tensión sobre la resistencia (corriente) y el pin (qué estaba haciendo el firmware). Eso permite asignar cada tramo de corriente a un estado: medición, transmisión, reposo. Sin el pin, se puede inferir de la forma, pero con más incertidumbre.
Una captura de una sola pantalla de osciloscopio muestra la forma de un ciclo, pero no sirve para calcular el promedio de largo plazo: lo que importa es el ciclo repetido, y los eventos que no ocurren en cada ciclo (una retransmisión, una sincronización cada tanto) cuestan en promedio aunque no aparezcan en la captura. Por eso, además del perfil de un ciclo, se mide la corriente media durante un período largo (apartado 8), y se comparan.
06 · Paso 5
De la captura a la corriente media
La corriente media se obtiene integrando la captura: sumando las muestras y multiplicando por el intervalo entre ellas, que da la carga total, y dividiendo por la duración. Es el cálculo del tema 33 aplicado a datos reales en lugar de a un perfil supuesto:
| Paso | Qué se hace | Fórmula |
|---|---|---|
| 1. Convertir a corriente | Dividir cada muestra de tensión por la resistencia de medida (y corregir el desfasaje de cero) | ik = vk / R |
| 2. Integrar | Sumar las muestras por el intervalo de muestreo | Q = Σ ik · Δt |
| 3. Promediar | Dividir la carga por la duración de la captura | Imedia = Q / Tcaptura |
| 4. Segmentar | Detectar las ráfagas (por un umbral) y medir la duración y la carga de cada una | Qráfaga = Σ i · Δt dentro de la ráfaga |
| 5. Asignar a estados | Usando el pin de sincronismo o la forma, atribuir cada ráfaga a una etapa del firmware | Reparto de la carga por estado |
| 6. Comparar con el presupuesto | Contrastar la media y el reparto con los del cálculo | Diferencia, en % de la media |
La Parte 2 del programa de Python hace exactamente esto con una captura sintética de 10 s a 10 kHz, con 1 µA de ruido: la corriente media sale en 61,51 µA contra los 61,98 µA reales (un error del 0,77 %, que viene del ruido y de la corriente de reposo mal estimada), se detectan las 5 ráfagas de los 5 ciclos, cada una de unos 16 ms y 0,12 mC de carga (los 30 + 90 µC de la medición y la transmisión), y la corriente de reposo sale en 2,01 µA.
Dos propiedades de este procesamiento vale la pena destacar. La integración se come el ruido: el ruido de 1 µA que hace que cada muestra de reposo sea inexacta se cancela al sumar miles de muestras, y por eso la media sale precisa aunque cada muestra no lo sea. Y la segmentación convierte datos crudos en el perfil del presupuesto: «una ráfaga de 16 ms con 0,12 mC por ciclo» es exactamente lo que había que comparar con el cálculo (3 mA × 10 ms + 15 mA × 6 ms = 120 µC). Si no coinciden, ahí está la discrepancia.
# Esqueleto del procesamiento de una captura (los valores reales los da el programa de este tema)
import numpy as np
v = np.loadtxt("captura.csv", delimiter=",", usecols=1) # tensión sobre el shunt, en voltios
dt = 1.0 / 10_000 # intervalo entre muestras (10 kHz)
i = (v - v[:100].mean()) / 10.0 # corriente en A: se resta el cero y se divide por R = 10 Ω
carga = i.sum() * dt # carga total en coulombs
print("corriente media:", carga / (len(i) * dt) * 1e6, "µA")
07 · Paso 6
La autonomía y su incertidumbre
Con la corriente media medida, la autonomía es la división del tema 33: capacidad útil sobre corriente media total (incluida la autodescarga). Pero un número solo («3,16 años») transmite una precisión que no existe. Cada término tiene una incertidumbre, y una promesa honesta es un rango, no una cifra. Las fuentes de incertidumbre, de mayor a menor peso habitual:
| Fuente | Magnitud típica | Cómo se acota |
|---|---|---|
| Capacidad real de la batería | Dispersión de fabricación, frío, corriente de pulsos, envejecimiento: del 10 % al 30 % por debajo de la nominal | Factor de seguridad (75 %); hoja de datos de la celda a la temperatura y corriente de uso; ensayo de descarga |
| Eventos raros no capturados | Reintentos de radio, reconexiones, actualizaciones: pueden subir la media un 5 % a un 50 % | Medición larga; contadores de eventos en el firmware |
| Temperatura | Las fugas del reposo crecen mucho con el calor; el frío reduce la capacidad | Medir a las temperaturas extremas de uso |
| Exactitud de la medición | De 1 % a 5 % (resistencia, instrumento, calibración) | Calibrar con una carga conocida; verificar con otro instrumento |
| Dispersión entre unidades | Tolerancia de componentes y de cada chip: del 5 % al 20 % en el reposo | Medir varias unidades, no una sola |
| Autodescarga | Depende de la química y la temperatura | Hoja de datos de la celda; se incluye como corriente equivalente |
La Parte 4 del programa de Python lo aplica con tres escenarios para las dos pilas AA (2500 mAh, 75 % utilizable, autodescarga de 5,70 µA):
| Escenario | Supuestos | Autonomía |
|---|---|---|
| Optimista | La corriente media es un 5 % menor que la medida | 3,31 años |
| Central | La medición es exacta; capacidad útil del 75 % | 3,16 años |
| Pesimista | La corriente media es un 10 % mayor (eventos raros, temperatura) y la capacidad un 15 % menor (frío, dispersión) | 2,46 años |
El requisito E3 pide al menos 2 años: el escenario pesimista (2,46) lo cumple con un 23 % de margen, así que se puede prometer 2 años con confianza (aunque el cálculo central dé 3,16). No se promete el número central: se promete lo que se cumple incluso en el escenario desfavorable. Y si el requisito fuera de 3 años, el pesimista (2,46) no lo cumpliría y habría que mejorar el diseño, aunque el cálculo central dijera que sí. Esa es la utilidad del rango: convierte una discusión de opiniones («a mí me da 3,2») en una de supuestos («¿qué temperatura asumimos?»).
08 · Paso 7
Validar con el tiempo
Todo lo anterior es una predicción. La validación es la medición de que se cumple, y consiste en niveles crecientes de confianza, cada uno más caro que el anterior:
| Nivel | Qué se hace | Qué descubre |
|---|---|---|
| 1. Perfil de un ciclo | Captura de ciclos de operación normal (apartados 5 y 6) | Si el presupuesto del tema 33 estaba bien armado |
| 2. Media de largo plazo | Medir la carga durante horas con un contador de carga o un analizador con integración, incluyendo todos los modos de operación | Los eventos raros que el perfil de un ciclo no muestra |
| 3. Condiciones extremas | Repetir en frío, en calor y con la batería usada (tensión baja) | Los picos que reinician el equipo con la batería gastada; el aumento de las fugas |
| 4. Varias unidades | Medir cinco o diez equipos | La dispersión entre unidades; el peor caso |
| 5. Descarga completa | Hacer funcionar el equipo hasta que se agote la batería, registrando la tensión y la carga entregada | La capacidad real utilizable y el comportamiento al final de la vida (tensión mínima, reinicios por brown-out, tema 37) |
La descarga completa es la prueba definitiva, pero dura lo mismo que la autonomía que se quiere verificar: no se puede esperar tres años antes de fabricar. Por eso se la reemplaza por una combinación: la media medida (niveles 1 a 4) más un ensayo de descarga de la batería sola con una carga equivalente (una resistencia o un perfil de pulsos simulado) para obtener su capacidad real a la temperatura de uso, y luego el cálculo. Y se registra la regla de oro: cuando el cálculo y la medición difieren más de un 10 %, se investiga el motivo antes de seguir. Una diferencia es información: un consumo oculto, un evento no previsto, un supuesto equivocado.
09 · Comprobar que funciona
Verificación y diagnóstico
| Req. | Prueba | Resultado esperado |
|---|---|---|
| E1 | Medir el reposo con el firmware dormido, sin depurador ni adaptador USB-serie, con resistencia de 1 kΩ o con un analizador | Menos de 5 µA; en el ejemplo, 2 µA |
| E2 | Capturar el perfil a 10 kHz durante varios ciclos e integrar | Corriente media menor que 80 µA; en el ejemplo, unos 62 µA, con cada ráfaga de 16 ms y 0,12 mC |
| E3 | Calcular la autonomía con los escenarios optimista, central y pesimista | El pesimista supera los 2 años; en el ejemplo, 2,46 años |
| E4 | Medir la tensión de la placa durante el pico de transmisión, con la resistencia de medida colocada | No baja del mínimo del chip ni del nivel de brown-out; el equipo no se reinicia durante la captura |
| Consistencia | Comparar la media medida con la del presupuesto del tema 33 | Diferencia menor que el 10 %; si no, buscar la causa |
| Repetibilidad | Repetir la medición varias veces y con varias unidades | Resultados dentro de la dispersión esperada |
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| El reposo medido es de cientos de µA, no de unos pocos | Adaptador USB-serie o depurador conectados; LED de la placa; regulador de la placa de desarrollo | Desconectar todo lo que no sea el producto; revisar el esquema |
| El multímetro muestra valores que saltan entre 2 µA y cientos de µA | Es un promedio sobre una ventana corta de una corriente de pulsos | Para el reposo, un firmware que solo duerma; para la media, un analizador o un contador de carga |
| El equipo se reinicia al conectar el instrumento de medida | La caída en la resistencia (o la resistencia interna del multímetro) deja sin tensión al chip en el pico | Una resistencia menor para los picos; un condensador cerca de la placa; un analizador |
| Medir el perfil «ayuda» a que el equipo funcione mejor | El condensador de apoyo o la resistencia cambian el comportamiento de la alimentación | Medir también sin ellos; comparar con una medición sin instrumento (con un contador de carga) |
| La media cambia mucho entre una captura y otra | Muestreo insuficiente, o eventos raros que entran en unas capturas y en otras no | Muestrear más rápido; capturar más tiempo; usar integración por hardware |
| El pico medido es menor que el real | La resistencia filtra con su inductancia, o el ancho de banda del instrumento es bajo | Resistencias de película de baja inductancia; revisar el ancho de banda y la frecuencia de muestreo |
| La corriente de reposo baja lentamente tras energizar | Condensadores que cargan, osciladores que se estabilizan, temperatura que cambia | Esperar a que se estabilice (decenas de segundos a minutos) antes de leer |
| La medida difiere entre unidades «iguales» | Tolerancias de componentes; dispersión entre chips | Medir varias unidades y usar el peor caso en el presupuesto |
10 · Analogía con programación
Probar el modelo en Python
El programa reproduce el taller completo con datos sintéticos, pero con las dificultades reales de la medición. Tiene cuatro partes: la elección de la resistencia de medida; el procesamiento de una captura de 10 s a 10 kHz con ruido (la corriente media, las ráfagas y la corriente de reposo); el efecto de muestrear poco, con 20 fases al azar y con un multímetro de ventana corta; y la autonomía como un rango.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar. La captura de 100 000 muestras tarda un par de segundos.
# Taller de medición: elegir la resistencia de medida, procesar una captura, ver el efecto del muestreo y expresar la autonomía con su incertidumbre.
import random, statistics
PERIODO, T_MEDIR, T_TX = 2.0, 0.010, 0.006 # un ciclo cada 2 s: medir 3 mA durante 10 ms, transmitir 15 mA durante 6 ms
I_MEDIR, I_TX, I_DORMIDO = 3000.0, 15000.0, 2.0 # en µA
T0 = 0.5 # instante del ciclo en que empieza la medición
def corriente(t): # corriente real (µA) en el instante t
x = t % PERIODO
if T0 <= x < T0 + T_MEDIR: return I_MEDIR
if T0 + T_MEDIR <= x < T0 + T_MEDIR + T_TX: return I_TX
return I_DORMIDO
I_REAL = (I_MEDIR * T_MEDIR + I_TX * T_TX + I_DORMIDO * (PERIODO - T_MEDIR - T_TX)) / PERIODO
print(f"Corriente media REAL del ciclo: {I_REAL:.2f} µA (la que habría que medir)")
print()
print("Parte 1: la resistencia de medida (shunt); fuente de 3,0 V, el chip se reinicia por debajo de 1,8 V, resolución del instrumento de 1 mV")
for r in (1, 10, 100, 1000):
caida = 15e-3 * r
resol_ua = 1e-3 / r * 1e6
estado = "el chip se reinicia" if 3.0 - caida < 1.8 else "el chip sigue vivo"
ve_reposo = "ve el reposo (2 µA)" if resol_ua <= 2 else f"no ve el reposo (resolución {resol_ua:.0f} µA)"
print(f" R = {r:>4} Ω: caída con 15 mA = {caida * 1000:7.0f} mV -> {estado:<20}; {ve_reposo}")
print()
print("Parte 2: procesar una captura (10 kHz, 10 s, ruido de 1 µA) para sacar el perfil")
FS, DURACION = 10_000, 10.0
rnd = random.Random(11)
muestras = [corriente(k / FS) + rnd.gauss(0.0, 1.0) for k in range(int(FS * DURACION))]
dt = 1.0 / FS
carga_total = sum(muestras) * dt # µA * s = µC
print(f" corriente media de la captura = {carga_total / DURACION:.2f} µA (real {I_REAL:.2f}, error {abs(carga_total / DURACION - I_REAL) / I_REAL * 100:.2f} %)")
segmentos, actual = [], None # segmentos «activos» (más de 100 µA)
for k, v in enumerate(muestras):
activo = v > 100
if activo and actual is None: actual = [k, k]
elif activo: actual[1] = k
elif actual is not None and k - actual[1] > 3: segmentos.append(tuple(actual)); actual = None
print(f" ráfagas detectadas en 10 s: {len(segmentos)} (se esperan {int(DURACION / PERIODO)} ciclos)")
for k, (a, b) in enumerate(segmentos[:2]):
tramo = muestras[a:b + 1]
print(f" ráfaga {k + 1}: dura {len(tramo) * dt * 1000:5.1f} ms, carga {sum(tramo) * dt / 1000:6.3f} mC")
reposo = statistics.mean(v for v in muestras[:int(0.4 * FS)])
print(f" corriente de reposo (antes de la primera ráfaga): {reposo:.2f} µA")
print()
print("Parte 3: qué pasa si se muestrea poco (20 fases al azar, ventana de 20 s)")
def estimar(fs, fase):
n = int(fs * 20)
return statistics.mean(corriente(fase + k / fs) for k in range(n))
for fs in (10_000, 1000, 100, 10):
ests = [estimar(fs, random.Random(s).random() * 0.1) for s in range(20)]
errs = [abs(e - I_REAL) / I_REAL * 100 for e in ests]
print(f" {fs:>6} Hz: estimaciones de {min(ests):8.2f} a {max(ests):8.2f} µA; error de {min(errs):6.2f} % a {max(errs):7.2f} %")
lecturas = [] # un multímetro que promedia 0,4 s por lectura
for s in range(40):
a = random.Random(100 + s).random() * PERIODO
lecturas.append(statistics.mean(corriente(a + k * 1e-4) for k in range(4000)))
print(f" multímetro con ventana de 0,4 s, 40 lecturas: de {min(lecturas):.1f} µA a {max(lecturas):.1f} µA; promedio de las lecturas {statistics.mean(lecturas):.1f} µA")
print()
print("Parte 4: la autonomía con su incertidumbre (2 pilas AA: 2500 mAh; autodescarga 5,70 µA)")
def anios(i_ua, cap_mah): return cap_mah / ((i_ua + 5.70) / 1000) / 8766
central = anios(I_REAL, 2500 * 0.75)
pesimista = anios(I_REAL * 1.10, 2500 * 0.75 * 0.85)
optimista = anios(I_REAL * 0.95, 2500 * 0.75)
print(f" optimista (corriente -5 %): {optimista:5.2f} años | central: {central:5.2f} años | pesimista (corriente +10 %, capacidad -15 % por frío y dispersión): {pesimista:5.2f} años")
print(f" lo que se promete: {pesimista:.1f} años como máximo, y se verifica con una medición larga")
Resultado: la corriente media real del ciclo es de 61,98 µA. Parte 1: con 1 Ω y 10 Ω el chip sigue vivo en el pico pero no se ve el reposo (resoluciones de 1000 y 100 µA); con 100 Ω se reinicia y resuelve 10 µA; con 1 kΩ se reinicia (la caída sería de 15 V) y resuelve 1 µA. Parte 2: la captura da una media de 61,51 µA (0,77 % de error), detecta las 5 ráfagas de los 5 ciclos (16,0 ms y 0,120 mC cada una) y un reposo de 2,01 µA. Parte 3: con 10 kHz y con 1 kHz la estimación es exacta (61,98 µA, porque los pulsos duran un número entero de milisegundos); a 100 Hz las estimaciones van de 16,99 a 91,98 µA (errores del 48 % al 73 %), según si la muestra cae o no dentro del pulso de 6 ms; a 10 Hz, de 2,00 a 751,90 µA (errores del 97 % al 1113 %); y un multímetro que promedia 0,4 s da, en 40 lecturas, entre 2,0 y 301,9 µA, con un promedio de 70,4 µA: ninguna lectura individual es la media. Parte 4: la autonomía es de 3,31 años en el escenario optimista, 3,16 en el central y 2,46 en el pesimista; se promete como máximo 2,5 años y se verifica con una medición larga.
Probá cambiar T_TX a 0,0065 (un pulso que ya no dura un número entero de milisegundos) y mirá que a 1 kHz el error deja de ser cero, o aumentá el ruido de la captura de 1 a 10 µA para ver que la media sigue saliendo bien pero el reposo medido se vuelve impreciso. Es la lección del taller en una línea: la media es robusta al ruido pero no al muestreo escaso.
11 · Exploración interactiva
Medir un perfil de pulsos
El laboratorio es un medidor virtual del nodo del taller (ciclo de 2 s: 3 mA durante 10 ms, 15 mA durante 6 ms, 2 µA el resto; corriente media real de 61,98 µA). Elegís la resistencia de medida y la frecuencia de muestreo, y el medidor calcula la caída que produce en el pico, si el chip sigue vivo, qué resolución tiene y qué corriente media estima en una ventana de 20 s. El instrumento tiene 1 mV de resolución y la fuente es de 3,0 V.
El medidor virtual
Elegí una resistencia y una frecuencia de muestreo.
Recorrido guiado
- Con los valores iniciales (10 Ω y 10 kHz), la caída en el pico es de 150 mV y el chip sigue vivo. La estimación sale en unos 60 µA, con un error de apenas el 3,5 %: el instrumento avanza de a 100 µA y no distingue el reposo de 2 µA, que toma como cero. Es el error que se cometería si se mide solo con esta resistencia.
- Cambiá a 1 Ω: la caída baja a 15 mV, pero la resolución empeora a 1 mA. El reposo sigue desapareciendo y los pulsos se leen en escalones de 1 mA. La estimación (unos 60 µA) coincide con la anterior porque los pulsos de 3 mA y 15 mA son múltiplos exactos del escalón; con corrientes que no lo fueran, se sumaría el error de redondeo.
- Cambiá a 100 Ω: la resolución mejora (10 µA), pero la caída con el pico de 15 mA es de 1,5 V y el laboratorio avisa: el chip se reinicia y la medida no vale. Un instrumento que reinicia lo que mide no mide nada.
- Con 10 Ω, bajá la frecuencia a 100 Hz y apretá «Otra fase de muestreo» varias veces: la estimación salta entre unos 15 y unos 90 µA, según la fase (el reposo ya se lee como cero con esta resolución), porque cada muestra representa 10 ms y el pulso de 6 ms cae entre muestras o se cuenta como de 10 ms.
- Bajá a 10 Hz: ahora cada muestra representa 100 ms y las estimaciones saltan entre 0, unos 150 y unos 750 µA, según qué pulso caiga en una muestra. El error llega a miles por ciento. Con 1 kHz o más, y pulsos de duración un múltiplo exacto del intervalo, el resultado es estable; en una medición real, las duraciones no son tan convenientes, y por eso se muestrea a decenas de kHz.
- Probá 1000 Ω: la resolución es de 1 µA (el reposo se ve) pero la caída con el pico sería de 15 V, imposible: el chip se reinicia. Ninguna resistencia sirve para todo; es la razón de ser de los analizadores con rangos conmutados.
Desafío: ¿cómo medirías el reposo y el pico con el mismo montaje?
Con dos mediciones separadas. Para el pico, la resistencia de 10 Ω y el osciloscopio a 10 kHz, con el firmware en su ciclo normal. Para el reposo, un firmware de prueba que solo duerma (sin pulsos) y una resistencia de 1 kΩ: con el equipo dormido, 2 µA × 1 kΩ = 2 mV, medible, y la caída es insignificante porque no hay picos. O bien un amplificador de medida de corriente entre una resistencia chica (1 Ω, que soporta los picos) y el instrumento, con una ganancia de 100 o 1000 que lleve los 2 µV del reposo a 200 µV o 2 mV, a costa del ancho de banda y del cero del amplificador. O un analizador de consumo, que hace esto con resistencias conmutadas. La conmutación de rangos tiene un detalle: durante la transición puede haber un transitorio breve en la alimentación, y por eso los analizadores especifican cuánto tarda en cambiar de rango y cómo se comporta con una carga que pulsa. Es la clase de pregunta que se verifica leyendo la hoja de datos del instrumento antes de creerle.
12 · Método de trabajo
Método: de la medición a la promesa
- Escribí los requisitos de energía con números (reposo máximo, corriente media, autonomía y condiciones) y un identificador para cada uno.
- Hacé el presupuesto antes de medir (tema 33): sin una predicción, no hay forma de saber si la medición sorprende.
- Preparé la placa para medir lo que es del producto: sin depurador, sin adaptador USB-serie, sin LED ni regulador de desarrollo, con un único punto de medida en serie con la batería.
- Elegí el instrumento según el rango: el reposo y los picos de un dispositivo de bajo consumo suelen requerir dos mediciones o un analizador de consumo. Entendé cómo resuelve el instrumento la caída de carga y los cambios de rango.
- Medí el reposo por separado, con el firmware dormido y esperando a que se estabilice.
- Capturá el perfil con el muestreo suficiente (diez muestras por el pulso más corto, como mínimo), varios ciclos y una señal de sincronismo del firmware.
- Integrá para obtener la corriente media; segmentá las ráfagas y asignalas a los estados; compará con el presupuesto.
- Medí un período largo con un contador de carga o un analizador con integración, para incluir los eventos raros.
- Repetí en las condiciones extremas y con varias unidades; tomá el peor caso.
- Expresá la autonomía como un rango (optimista, central, pesimista) y prometé el pesimista. Registrá los supuestos.
- Cuando medición y cálculo difieran más del 10 %, investigá antes de seguir: es la información más valiosa que da el taller.
13 · Comprensión
Confusiones frecuentes
«El multímetro me dice cuánto consume»
Solo para corrientes estables. Con una corriente de pulsos, la lectura es el promedio sobre su ventana de medición, que depende de dónde cae la ventana respecto de los pulsos: en el taller, el mismo equipo marca 2 µA o 300 µA en lecturas sucesivas, y ninguna es el promedio real (62 µA). Para pulsos hace falta un osciloscopio con una resistencia, un contador de carga o un analizador.
«Con una resistencia de medida más grande mido mejor»
Mide mejor las corrientes pequeñas, pero produce una caída mayor en los picos, que puede dejar al chip sin tensión y reiniciarlo. Una medición que cambia el comportamiento del equipo no sirve. El valor de la resistencia es siempre un compromiso entre resolución y caída de carga.
«Si mido con el depurador conectado es lo mismo»
El depurador mantiene relojes y dominios activos y puede dar o recibir corriente por las líneas. Lo mismo ocurre con un adaptador USB-serie conectado. Un consumo medido con ellos puesto es el del conjunto, no el del producto.
«Más muestras siempre es mejor»
Más muestras ayudan hasta que cada pulso está bien cubierto; después, solo aumentan el tamaño de los datos. Lo que importa es que el muestreo sea suficiente para el pulso más corto (diez muestras por pulso como mínimo), y que la captura dure varios ciclos. Y, para promediar, más tiempo vale más que más velocidad.
«El ruido arruina la medición de la media»
No: el ruido de cada muestra se cancela al integrar miles de muestras. En la Parte 2, 1 µA de ruido por muestra produce un error del 0,77 % en la media. Lo que sí arruina la media es el muestreo escaso, que no es un error aleatorio sino un sesgo que depende de la fase.
«La autonomía calculada es la autonomía real»
Es una predicción con incertidumbre: de la capacidad real de la batería, de los eventos raros, de la temperatura, de la medición y de la dispersión entre unidades. Una promesa responsable es el escenario pesimista, no el central, y se confirma con una medición larga.
«Una sola unidad medida representa a todas»
Los componentes tienen tolerancias y los chips, dispersión, sobre todo en el consumo de reposo. Se miden varias unidades y se usa el peor caso. Una unidad especialmente buena puede dar una autonomía optimista que las demás no cumplen.
«Si la medición no coincide con mi cálculo, la medición está mal»
Puede estarlo, pero lo más frecuente es que el cálculo omitiera algo: un consumidor externo, un evento raro, un estado del firmware que no se tuvo en cuenta. Una diferencia mayor al 10 % es una señal para investigar, no para descartar el dato incómodo.
14 · Práctica guiada
Ejercicios y variantes
1. Leer la tensión de la resistencia
Con una resistencia de 10 Ω, el osciloscopio muestra un pico de 120 mV y una meseta de 30 mV. ¿Qué corrientes son? ¿Cuánto vale la caída de carga máxima? Si el instrumento tiene una resolución de 1 mV, ¿qué corriente mínima distingue?
Ver solución
I = V / R: el pico es 120 mV / 10 Ω = 12 mA, y la meseta 30 mV / 10 Ω = 3 mA. La caída de carga máxima es la del pico: 120 mV (el equipo ve 120 mV menos de tensión durante el pico). Con 1 mV de resolución, el escalón es 1 mV / 10 Ω = 100 µA: no se distingue nada por debajo de eso, y el reposo de unos µA es invisible. Para ver 10 µA con la misma resolución haría falta una resistencia de 100 Ω, que con un pico de 12 mA caería 1,2 V.
2. La carga de una ráfaga
Una ráfaga se compone de 3 mA durante 10 ms y 15 mA durante 6 ms; el equipo duerme a 2 µA el resto de un ciclo de 2 s. Calculá la carga de la ráfaga y la corriente media del ciclo.
Ver solución
Carga de la medición: 3 mA × 10 ms = 30 µC. De la transmisión: 15 mA × 6 ms = 90 µC. Total de la ráfaga: 120 µC (0,12 mC). El reposo dura 2 − 0,016 = 1,984 s: 2 µA × 1,984 s = 3,968 µC. Carga del ciclo: 123,968 µC. Corriente media = 123,968 µC / 2 s = 61,98 µA. La ráfaga aporta 60 de esos 62 µA: casi todo, aunque dura el 0,8 % del ciclo.
3. Muestreo a 100 Hz
Se muestrea a 100 Hz. Cada muestra se toma como representativa de 10 ms. ¿Qué error de corriente media produce que el pulso de 15 mA y 6 ms sea captado por una muestra? ¿Y que no sea captado por ninguna? (Ciclo de 2 s.)
Ver solución
Si una muestra cae dentro del pulso, el pulso se cuenta como de 10 ms: 15 mA × 10 ms = 150 µC en lugar de 90 µC. El exceso es 60 µC por ciclo de 2 s: +30 µA de media (de 61,98 a unos 92 µA, un +48 %). Si ninguna muestra cae dentro del pulso, se pierden sus 90 µC: −45 µA (de 61,98 a unos 17 µA, un −73 %). Como el pulso dura 6 ms y las muestras están separadas 10 ms, cae una muestra dentro con probabilidad 60 %. Son los extremos de 16,99 y 91,98 µA de la Parte 3 del programa. Ninguno es el valor real, y el error no se reduce midiendo más tiempo: es un sesgo, no ruido.
4. Lo que ve el multímetro
Un multímetro promedia ventanas de 0,5 s. Si una ventana contiene entera la ráfaga de 0,12 mC, ¿qué marca? ¿Y si no la contiene? ¿Qué fracción de las ventanas, aproximadamente, la contiene?
Ver solución
Con la ráfaga completa dentro de la ventana: la carga de 0,12 mC (120 µC) más el reposo de 0,5 s, dividida por 0,5 s: 120 / 0,5 = 240 µA (más 2 µA de reposo: unos 242 µA). Sin la ráfaga: 2 µA. La ráfaga cae dentro de una ventana de 0,5 s con probabilidad 0,5 / 2 = 25 % (en un ciclo de 2 s). Entonces el multímetro marca unos 2 µA tres de cada cuatro lecturas y unos 242 µA una de cada cuatro. El promedio de muchas lecturas (0,75 × 2 + 0,25 × 242 = 62 µA) es la corriente media real, pero ninguna lectura individual lo es, y el display no avisa.
5. Prometer una autonomía
Con los escenarios de la Parte 4 (optimista 3,31 años, central 3,16, pesimista 2,46), ¿se puede prometer 2 años? ¿Y 3? ¿Qué harías si el cliente exige 3 años?
Ver solución
Para 2 años sí: el pesimista (2,46) lo supera con un margen del 23 %. Para 3 años no, aunque el cálculo central (3,16) lo cumpla: en el escenario pesimista el equipo se queda en 2,46 y falla. Para ofrecer 3 años hay que mejorar el diseño o reducir la incertidumbre. Hay que mover la autonomía pesimista de 2,46 a 3 años (un 22 % más): reducir la corriente media casi un 20 %, por ejemplo, acortando el tiempo de radio (tema 35) o agrupando transmisiones; usar una pila de litio-cloruro de tionilo (menos autodescarga y menos pérdida de capacidad con el frío); o reducir la incertidumbre midiendo varias unidades, a temperatura real y con una descarga completa de la batería. Se ofrece solo lo que el escenario pesimista cumple.
6. El condensador de apoyo
Para medir con un multímetro, se coloca un condensador de 470 µF en paralelo con la placa. La ráfaga completa consume 120 µC. ¿Cuánto cae la tensión del condensador si él solo aporta toda la ráfaga? ¿Por qué un condensador electrolítico falsea la medida del reposo?
Ver solución
ΔV = Q / C = 120 µC / 470 µF ≈ 0,255 V. Es una caída razonable: con una fuente de 3,0 V el chip ve unos 2,75 V durante la ráfaga (si el condensador aporta todo, lo cual es una cota superior). El condensador se recarga luego lentamente a través del instrumento, y por eso el multímetro ve una corriente mucho más suave que la real. Un electrolítico tiene una corriente de fuga del orden de µA que se suma a la del equipo: con un reposo real de 2 µA, una fuga de 1 µA es un 50 % de error. Por eso se usan condensadores cerámicos o de película para este fin, y se espera a que la fuga se estabilice. Y este montaje es útil para la media, pero oculta la forma de los pulsos: para el perfil temporal hay que medir sin él.
15 · Síntesis del bloque
Ideas para recordar
- Medir la corriente de un dispositivo de bajo consumo es difícil por el rango (de µA a decenas de mA, un factor de miles) y porque todo instrumento roba tensión (caída de carga): una resistencia grande lee el reposo pero reinicia el equipo en el pico, y una chica no ve el reposo.
- Se mide lo que es del producto: sin depurador, sin adaptador USB-serie, sin LED ni regulador de placa de desarrollo, con un solo punto de medida en serie con la batería y esperando a que el equipo se estabilice.
- El multímetro solo es confiable para corrientes estables: con pulsos, da el promedio de su ventana y puede marcar 2 µA o 300 µA para un equipo cuya media es de 62. Para pulsos: resistencia y osciloscopio, contador de carga o analizador de consumo.
- El perfil se captura con al menos diez muestras por el pulso más corto, varios ciclos y una señal de sincronismo. La corriente media sale de integrar: Q = Σ i·Δt; el ruido se cancela al integrar, pero el muestreo escaso produce un sesgo que no se corrige midiendo más tiempo.
- La autonomía es un rango: optimista, central y pesimista, con la incertidumbre de la capacidad real, los eventos raros, la temperatura, la exactitud de la medición y la dispersión entre unidades. Se promete el pesimista, y se valida con medición larga, condiciones extremas, varias unidades y, si se puede, una descarga completa.
- Cuando medición y cálculo difieren más del 10 %, se investiga: un consumo oculto, un evento no previsto o un supuesto equivocado.
- El bloque en conjunto: entender cómo se consume la energía y cuánto entrega la batería (33), dormir con los modos del chip y sus costos de despertar (34), diseñar el firmware para dormir casi siempre (35) y medir para confirmar la promesa (36). La energía no se optimiza por intuición: se presupuesta, se diseña, se mide y se compara.
¿Listo para el bloque siguiente?
Antes de avanzar, medí el consumo de un dispositivo que tengas a mano con el método del taller: prepará la placa sin lo que no es del producto, medí el reposo y el perfil, integrá la media, comparala con tu presupuesto y expresá la autonomía como un rango. Si la comparación te sorprende, ya aprendiste lo más valioso del taller: dónde estaba la diferencia entre lo que creías y lo que pasa.
En el próximo bloque pasamos de los recursos a la confiabilidad: qué hace un equipo cuando algo falla. Empezamos por las fallas y las causas de reinicio: brown-out, reinicio por software, causas de reset y cómo diagnosticarlas después de que ocurrieron.