Depurar hardware: de la primera placa al fallo intermitente
Una placa que no arranca y otra que se reinicia una vez al día parecen problemas distintos. Se atacan con el mismo método, que Keysight resume en tres pasos en sus notas sobre fallos poco frecuentes: confirmar que el fallo existe, aislarlo de lo que funciona bien y reunir pistas (cuándo aparece, con qué frecuencia, en qué condiciones) hasta dar con la causa.
Antes de dar tensión
En el artículo de las siete comprobaciones antes del primer lote recomendábamos escribir un plan de primer encendido. En cada puesta en marcha que hacemos es lo primero que preparamos. Esta es la forma de ejecutarlo.
Lo primero que se mira son las alimentaciones. Con la placa sin tensión, mide la resistencia a masa en la entrada y en cada raíl, y compárala con una placa buena si la tienes. Algunos raíles leen bajo al principio y suben a medida que se cargan los condensadores. Si la entrada se queda cerca de 0 Ω, hay que investigar antes de alimentar. Es la comprobación que proponen también guías de fabricantes de PCB como JLCPCB.
Una buena práctica es poner ferritas (ferrite beads) en las alimentaciones de cada bloque. No solo ayudan con la compatibilidad electromagnética: también permiten desconectar un bloque durante el primer encendido y alimentar la placa por partes.
La fuente de laboratorio tiene que estar limitada en corriente. El valor depende del diseño y de lo que quieras comprobar en cada paso. Si no conoces el consumo, empieza bajo y ve subiendo. La señal de que todo va bien es que la fuente se queda en modo tensión constante y la corriente se estabiliza en lo esperado. Si la tensión cae y la corriente llega al límite, desconecta. Después, mide cada salida de los convertidores y reguladores antes de conectar lo que alimentan: una salida demasiado alta puede dañar los circuitos de baja tensión que cuelgan de ella.
Medir sin que la sonda te engañe
Antes de culpar a la placa, descarta la medida. La sonda y su cable de masa forman parte del circuito que estás midiendo.
El cable de masa
El cable de masa de la sonda es una inductancia. Junto con la capacidad de la sonda forma un circuito resonante que añade una oscilación amortiguada a los flancos rápidos. Cuanto más largo es el cable, más se nota. Un ejemplo clásico, que Tektronix muestra en su guía de sondas: el mismo pulso medido con la masa corta de la sonda y con un cable de masa alargado para no tener que moverla. En la segunda medida aparecen oscilaciones que no existen en la placa. La recomendación es usar siempre la masa más corta posible y no sustituir el adaptador de la punta por unos centímetros de cable soldado.
Ancho de banda y carga
Tektronix da dos reglas prácticas. Para medir amplitudes con precisión, el osciloscopio debe tener un ancho de banda unas cinco veces mayor que la frecuencia de la señal. Para medir flancos, el tiempo de subida de sonda y osciloscopio juntos debe ser de tres a cinco veces más rápido que el del pulso, y se puede estimar como 0,35 dividido por el ancho de banda.
La sonda también carga el circuito, sobre todo por su capacidad. Para la mayoría de las medidas basta una sonda 10X de 10 MΩ con 20 pF o menos. Una sonda 1X tiene bastante más capacidad, y en digital rápido puede hacer falta una sonda activa. Compensa la sonda cada vez que la conectes o cambies de adaptador.
El rizado de un convertidor
Para medir el rizado de salida de una fuente conmutada, TI indica apoyar la punta de la sonda en el punto de test y el anillo de masa de la propia sonda en el de masa, sin cable. Un cable de masa forma un bucle grande que recoge ruido.
El firmware como testigo
El microcontrolador sabe cosas de la placa que el osciloscopio no ve. En la primera placa conviene que el firmware de pruebas incluya unas pocas herramientas de depuración:
- Acceso de depuración. En los microcontroladores Arm®, SWD solo necesita dos líneas, datos y reloj, y da acceso a todas las funciones de depuración. Tiene que ser accesible con la placa montada.
- La causa del último reset. Los microcontroladores la guardan en un registro: pin de reset, watchdog, reset por software, bloqueo de la CPU... En los de Nordic, si no hay ninguna marcada, el reset vino del encendido o de una caída de tensión (brown-out). Léela y guárdala al arrancar, junto con un contador de reinicios. Un reinicio que nadie ha visto deja así su rastro.
- Un registro que no pare la CPU. Técnicas como RTT de SEGGER dejan los mensajes en un búfer en RAM que la sonda de depuración lee mientras el programa sigue ejecutándose. Según SEGGER, sin afectar al comportamiento en tiempo real.
- Comandos para encender cada bloque por separado. Junto con las ferritas, permiten aislar qué parte de la placa provoca un consumo extraño o un reinicio.
Hay una pista que, cuando aparece, casi se agradece: el fallo desaparece al parar en un breakpoint o al conectar el depurador. Nos ha pasado, y es una buena noticia, porque señala un problema de tiempos. Ahí es donde más valor tiene un registro que no detiene la CPU.
Acorralar el fallo intermitente
Un fallo que aparece una vez al día no se arregla mirándolo. Primero hay que poder provocarlo o, al menos, capturarlo cuando aparece. Es una parte habitual de nuestro trabajo de test y validación, también con equipos que ya están en el mercado.
Registrar antes de cambiar nada
Apunta cada aparición: hora, temperatura, qué estaba haciendo el equipo, cómo se alimentaba. La causa del reset y el contador de reinicios del firmware ayudan mucho aquí. El patrón puede aparecer en el registro antes que en el osciloscopio.
Capturarlo con el osciloscopio
Para esperar un evento raro, los osciloscopios tienen disparos avanzados, como el disparo por zonas de la pantalla, y memoria segmentada, que según Keysight guarda solo los tramos con actividad alrededor de cada disparo, con su marca de tiempo. Así se capturan muchos eventos sin agotar la memoria, y el tiempo entre ellos ya es una pista.
Forzarlo con temperatura y alimentación
Si el fallo depende de la temperatura, se puede buscar la zona. Enfriar puntos pequeños con spray congelante mientras el fallo está presente puede hacerlo desaparecer, y así señala el componente o la soldadura. Los fabricantes de spray lo describen como un choque térmico que abre las soldaduras frías o frágiles. Con calor suave y ciclos de frío y calor, los fallos térmicos suelen aparecer en la transición más que en régimen estable. El spray produce condensación: no alimentes una placa que se ha mojado.
Prueba también con la tensión de alimentación al mínimo de su rango. Dos sospechosos habituales:
- Condensadores cerámicos que han perdido capacidad. Murata explica que los de tipo X5R, X6S o X7R pierden capacidad respecto al valor nominal cuando se les aplica tensión continua, y los C0G no. Un desacoplo que en el esquema parece suficiente puede no serlo con la tensión real. La curva de cada referencia está en su hoja de características o en las herramientas del fabricante.
- Caídas de tensión. Si un pico de consumo hunde un raíl por debajo del umbral del microcontrolador, este se reinicia por brown-out. La causa del reset guardada por el firmware lo delata.
Lo que queda escrito
Toma notas durante la puesta en marcha: qué se midió, qué se cambió en la placa y qué queda para la siguiente revisión. En la fase de prototipos ese cuaderno es lo que convierte una placa que funciona a medias en la lista de cambios de la siguiente iteración.
Si tienes una placa que falla a veces y no sabes por dónde empezar, podemos ayudarte a acorralar el fallo.
Del primer encendido a la validación:Prototipado y puesta en marchaTest y validación
Fuentes
- Keysight, Finding the Cause of an Infrequent Glitch Using Oscilloscopes
- Keysight, Using a Scope's Segmented Memory to Capture Signals
- Tektronix, ABCs of Probes
- Texas Instruments, TPS51163 User's Guide (SLUU367A), medida del rizado
- Murata, cambio de capacidad con tensión continua en condensadores cerámicos
- SEGGER, RTT
- Nordic Semiconductor, causa del reset (nrfx)
- Microchip, Serial Wire Interface
- JLCPCB, PCBA First Power-On Troubleshooting
- SMTnet, Tech Tip 11