ARTE
BELLEZA Y BIENESTAR
ARTESANÍA
CULTURA E HISTORIA
ENTRETENIMIENTO
MEDIO AMBIENTE
COMIDA Y BEBIDAS
INGENIERÍA INVERSA
CIENCIAS
DEPORTES
TECNOLOGÍA
TECNOLOGÍA VESTIBLE
Burn-in and the Bathtub Curve
Paulice

Creado por

Paulice

28. agosto 2026US
1
0
0
0
0

Burn-in and the Bathtub Curve

Every packaging step in this batch introduced a way to fail. A wire bond can be under-welded. A die attach can have a void. A solder joint can be starved of paste. Every one of those defects produces a part that WORKS when tested and fails weeks later, and none of them is visible. That is the shape of the problem, and it produces the shape everyone knows: the bathtub curve. Early on the failure rate is high and FALLING, because a small population of parts carries latent defects and those parts die quickly. That is infant mortality. Then the rate settles to a low, roughly constant level of random failures. Then eventually it rises again as genuine wear-out mechanisms — electromigration, intermetallic growth, solder fatigue, oxide damage — accumulate. The crucial fact is that the first arm is a POPULATION effect, not a property of any individual part. A good part is not slightly weak at first and then fine; it is fine throughout. What changes is that the weak minority is progressively removed from the population by dying. So burn-in is not a treatment that improves parts. It is a filter that finds the weak ones on the factory floor rather than in the customer's product, by running everything hot and powered for a few hours and discarding whatever dies. And it has a real cost, which the enthusiastic version leaves out. The same stress that kills the weak parts also consumes some of the good parts' life. Burn in too long and you have shipped parts already partway up the wear-out arm, and you have paid for the electricity and the oven and the handling to do it. Deciding how long to burn in is an optimisation with a genuine minimum, not a case of more being better. You will build a burn-in chamber, stress a batch of parts, watch the failures cluster early, and fit the distribution that describes them.
Intermedio
5 hours plus an overnight run

Instrucciones

1

The three arms, and what causes each

The bathtub is three separate mechanisms drawn on one axis, and treating it as one curve is where people go wrong. Each arm has different causes, responds to different action, and appears at a different time. The diagram separates them, and traces each arm back to the specific assembly steps earlier in this batch that produce it. What is worth noticing is that almost every infant-mortality cause in the left-hand column is a defect in a process from blueprints six to nine — an under-welded bond, a voided die attach, a starved solder joint, a missed dam-bar cut. Burn-in is the last net beneath all of those, and its existence is an admission that no amount of process control catches everything. And notice what burn-in does NOT help with. It cannot touch the random middle arm, which is by definition not caused by anything a stress would reveal. It actively HURTS the right-hand arm, because every hour of stress is an hour of wear-out consumed. Burn-in is a tool for exactly one of the three regions, and applying it to the others is worse than useless.

Flow

Loading...

Herramientas necesarias:

Notebook and PencilNotebook and Pencil
2

Build a chamber and stress a batch

A burn-in chamber is a heated enclosure, a power supply for the parts under test, and something recording what happens. The recording is the part that matters — a chamber without logging tells you only how many survived, and the interesting information is in WHEN each one died. THE CHAMBER. An insulated box with a resistive heater — a few power resistors or a small PTC element — driven by a MOSFET, with a DS18B20 inside. 85 degrees is a standard burn-in temperature and is safely below anything that melts. Add a fan for uniformity: a chamber with a 20-degree gradient across it is stressing its parts by different amounts and the results mean nothing. THE PARTS. Choose something that degrades measurably rather than merely failing: LEDs lose output progressively, electrolytic capacitors lose capacitance and gain ESR, and resistors run near their rating drift. LEDs are the easiest — put a photodiode or an LDR opposite each one and the ADC reads its output directly. Use at least twenty parts. Reliability is a population statistic and six parts cannot show you a distribution. THE SKETCH does four things: holds temperature with hysteresis, baselines every device against ITSELF before the stress begins, samples each one every minute, and records the time at which each falls below 80 percent of its own baseline. BASELINING PER DEVICE IS THE IMPORTANT DETAIL. Parts vary between units by more than they degrade over a burn-in run, so an absolute threshold would condemn good-but-dim parts and pass weak-but-bright ones. Every device is measured against its own starting point. THE ABORT PATH IS NOT OPTIONAL. This runs unattended overnight with a heater in a closed box. The sketch cuts the heater and the device power if the chamber exceeds the target by 25 degrees, and latches off rather than retrying. Test that path before you leave it running: unplug the temperature sensor and confirm it aborts. RUN IT OVERNIGHT and collect the CSV. What you should see is failures clustering EARLY — several in the first hours, then a long quiet stretch. That clustering is infant mortality, in your own data, and it is the entire justification for the practice.
burnin.inocpp
// Burn-in controller and logger - stress a batch of parts and record when they die.
// Board: ESP32 DevKit v1.
//
// Burn-in exists because of one fact: a population of new parts does NOT fail at a constant
// rate. A small fraction carry latent manufacturing defects and fail early - the "infant
// mortality" arm of the bathtub curve. Running everything hot for a few hours kills those
// weak parts in the factory instead of in the field.
//
// Its cost is that it consumes some of the good parts' life too. Burn in too long and you
// ship parts already partway up the wear-out arm.
//
// WIRING
//   GPIO 25   heater MOSFET gate (through a driver) - the stress
//   GPIO 4    DS18B20 chamber temperature
//   GPIO 32-39  up to 8 device-under-test sense lines (ADC1)
//   GPIO 26   DUT power enable
//
// The DUTs here are whatever you choose to stress - LEDs, electrolytic capacitors,
// resistors run near their rating. Anything with a measurable degradation.

#include <OneWire.h>
#include <DallasTemperature.h>

#define HEATER_PIN    25
#define DUT_POWER_PIN 26
#define ONE_WIRE_PIN   4
#define N_DUT          6

const int DUT_PINS[N_DUT] = {32, 33, 34, 35, 36, 39};

#define TARGET_C       85.0f
#define HYSTERESIS_C    2.0f
#define SAMPLE_MS   60000UL
#define VREF           3.30f
#define ADC_MAX      4095.0f
#define FAIL_FRAC      0.80f   // below 80% of its own baseline = failed

OneWire oneWire(ONE_WIRE_PIN);
DallasTemperature sensors(&oneWire);

float baseline[N_DUT];
bool  failed[N_DUT];
unsigned long failedAt[N_DUT];
unsigned long lastSample = 0;
unsigned long startMs = 0;

float readDut(int i) {
  uint32_t acc = 0;
  for (int k = 0; k < 16; k++) { acc += analogRead(DUT_PINS[i]); delay(1); }
  return (acc / 16.0f) * (VREF / ADC_MAX);
}

void setup() {
  Serial.begin(115200);
  pinMode(HEATER_PIN, OUTPUT); digitalWrite(HEATER_PIN, LOW);
  pinMode(DUT_POWER_PIN, OUTPUT); digitalWrite(DUT_POWER_PIN, HIGH);
  for (int i = 0; i < N_DUT; i++) analogSetPinAttenuation(DUT_PINS[i], ADC_11db);
  sensors.begin();
  delay(2000);

  // Baseline EVERY device against ITSELF. Parts vary by more than they degrade,
  // so an absolute threshold would fail good parts and pass bad ones.
  Serial.println("# baselining at room temperature");
  for (int i = 0; i < N_DUT; i++) {
    baseline[i] = readDut(i);
    failed[i] = false; failedAt[i] = 0;
    Serial.printf("# DUT %d baseline %.4f V\n", i, baseline[i]);
  }

  startMs = millis();
  Serial.println("elapsed_min,chamber_c,dut,volts,frac_of_baseline,state");
}

void loop() {
  sensors.requestTemperatures();
  float t = sensors.getTempCByIndex(0);

  // bang-bang with hysteresis - a stress chamber does not need PID
  if (t < TARGET_C - HYSTERESIS_C)      digitalWrite(HEATER_PIN, HIGH);
  else if (t > TARGET_C + HYSTERESIS_C) digitalWrite(HEATER_PIN, LOW);

  // Runaway guard. A stuck heater with nobody watching is a fire, and this
  // is expected to run unattended for hours.
  if (t > TARGET_C + 25.0f || t < -50.0f) {
    digitalWrite(HEATER_PIN, LOW);
    digitalWrite(DUT_POWER_PIN, LOW);
    Serial.printf("# ABORT - chamber %.1f C, heater and DUT power off\n", t);
    while (1) delay(5000);
  }

  if (millis() - lastSample >= SAMPLE_MS) {
    lastSample = millis();
    unsigned long mins = (millis() - startMs) / 60000UL;
    for (int i = 0; i < N_DUT; i++) {
      float v = readDut(i);
      float frac = baseline[i] > 0.01f ? v / baseline[i] : 0.0f;
      if (!failed[i] && frac < FAIL_FRAC) {
        failed[i] = true; failedAt[i] = mins;
        Serial.printf("# DUT %d FAILED at %lu min\n", i, mins);
      }
      Serial.printf("%lu,%.2f,%d,%.4f,%.3f,%s\n",
                    mins, t, i, v, frac, failed[i] ? "FAILED" : "ok");
    }
  }
  delay(1000);
}

Materiales para este paso:

ESP32 Development BoardESP32 Development Board1 pieza
DS18B20 Temperature Sensor (Waterproof)DS18B20 Temperature Sensor (Waterproof)2 piezas
LED AssortmentLED Assortment1 juego
LDR Photoresistor (20-Pack)LDR Photoresistor (20-Pack)1 juego
Power Resistor Kit - 10W (25 pack)Power Resistor Kit - 10W (25 pack)1 juego
N-Channel MOSFET (IRLZ44N)N-Channel MOSFET (IRLZ44N)2 piezas
Aluminium Enclosure BoxAluminium Enclosure Box1 pieza

Herramientas necesarias:

Bench Power Supply (30V/5A)Bench Power Supply (30V/5A)
Digital Multimeter (Lab Grade)Digital Multimeter (Lab Grade)
Soldering Station (Temperature-Controlled)Soldering Station (Temperature-Controlled)
Infrared ThermometerInfrared Thermometer
Desktop ComputerDesktop Computer
3

Fit the Weibull, and find the optimum burn-in time

Loading Jupyter Notebook...

Herramientas necesarias:

Desktop ComputerDesktop Computer
Notebook and PencilNotebook and Pencil

Materiales

7

Herramientas requeridas

6
Total estimado
MX$98.00

Blueprints relacionados

Estos blueprints comparten conocimiento — técnicas, materiales o principios

CC0 Dominio público

Este Blueprint se publica bajo CC0. Eres libre de copiar, modificar, distribuir y usar este trabajo para cualquier propósito, sin pedir permiso.

Apoya al Maker comprando productos a través de su Blueprint, donde gana una Comisión del Maker establecida por los vendedores, o crea una nueva iteración de este Blueprint e inclúyela como conexión en tu propio Blueprint para compartir ingresos.

Discusión

(0)

Iniciar sesión para unirte a la discusión

Cargando comentarios...