pcb_calc_track_current_capacity
Calculate PCB track current capacity using IPC-2221, returning sustainable current at multiple temperature rises plus DC resistance and voltage drop when track length is supplied.
Instructions
IPC-2221 current-carrying capacity for a PCB track.
Pure math, no Altium hit -- safe to call without an attached session. Returns the current the track can sustain at each of several temperature rises (1, 5, 10, 20, 30 °C above ambient), plus DC resistance if a length is supplied.
Formula (IPC-2221, also IPC-2152's curve-fit predecessor):
I = k × (ΔT)^0.44 × (h × w)^0.725
where h and w are in mils, ΔT in °C, and:
k = 0.048 for external layers (top, bottom)
k = 0.024 for internal layers (mid)
Internal-layer derating is the dominant correction; running a
signal that draws 5 A on TopLayer might be fine but on an
inner plane the same width only handles ~3 A at the same
ΔT because heat dissipates more slowly.
Copper thickness conversion: 1 oz/ft² ≈ 1.378 mils. So
copper_oz=1.0 → h = 1.378 mils, copper_oz=2.0 →
h = 2.756 mils.
Resistance: R = ρ × L / (h × w) with ρ = 6.7 × 10⁻⁷ Ω-mil
(annealed copper, 25 °C). Multiply current × resistance to
get voltage drop across the track.
Exposes the track-current math so the agent can apply it
across an entire power net after pulling track widths from
pcb_get_trace_lengths.
Args:
width_mils: Track width in mils.
copper_oz: Copper weight in oz/ft². Common values:
0.5 oz (HDI inner), 1.0 oz (standard), 2.0 oz (power
planes), 3.0 oz (heavy-current).
layer: "external" (top / bottom) or "internal"
(mid / inner planes). Defaults to external.
length_mils: If > 0, also returns DC resistance and
voltage drop at each temperature rise.
Returns:
Dict with:
- width_mils, copper_oz, thickness_mils, layer
- current_amps (dict, keys 1c, 5c, 10c,
20c, 30c)
- resistance_mohm (only if length_mils > 0)
- voltage_drop_mv (only if length_mils > 0, dict
keyed same as current_amps)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | external | |
| copper_oz | No | ||
| width_mils | Yes | ||
| length_mils | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||