<table>
<tr>
<th rowspan="3">Inputs:</th>
<td>Hole dia</td>
<td><input id="dia" onkeyup="calculate()" type="text" value="18" name="dia"></td>
<td><select id="diaUnits" onchange="calculate()" name="diaUnits">
<option value="1">mil</option>
<option value="39.37" selected>mm</option>
<option value="0.03937">um</option>
</select></td>
</tr>
<tr>
<td>Plating thickness</td>
<td><input id="thickness" onkeyup="calculate()" type="text" value="1" name="thickness"></td>
<td><select id="thicknessUnits" onchange="calculate()" name="thicknessUnits">
<option value="1">mil</option>
<option value="39.37" selected>mm</option>
<option value="0.03937">um</option>
</select></td>
</tr>
<tr>
<td>Via length</td>
<td><input id="length" onkeyup="calculate()" type="text" value="60" name="length"></td>
<td><select id="lengthUnits" onchange="calculate()" name="lengthUnits">
<option value="1">mil</option>
<option value="39.37" selected>mm</option>
<option value="0.03937">um</option>
</select></td>
</tr>
<tr>
<th rowspan="2">Additional Inputs:</th>
<td>Applied current</td>
<td><input id="current" onkeyup="calculate()" type="text" value="1" name="current"></td>
<td>A</td>
</tr>
<tr>
<td>Plating resistivity</td>
<td><input id="resistivity" onkeyup="calculate()" type="text" value="1.9e-6" name="resistivity"></td>
<td>Ohm×cm</td>
</tr>
<tr>
<th rowspan="5">Results:</th>
<td>Resistance</td>
<td><input id="resistance" onkeyup="calculate()" type="text" name="resistance"></td>
<td>Ohm</td>
</tr>
<tr>
<td>Voltage drop</td>
<td><input id="voltage drop" onkeyup="calculate()" type="text" name="voltage drop"></td>
<td>V</td>
</tr>
<tr>
<td>Power loss</td>
<td><input id="power loss" onkeyup="calculate()" type="text" name="power loss"></td>
<td>W</td>
</tr>
<tr>
<td>Estimated ampacity</td>
<td><input id="ampacity" onkeyup="calculate()" type="text" name="ampacity"></td>
<td>A</td>
</tr>
<tr>
<td>Thermal resistance</td>
<td><input id="thermal resistance" onkeyup="calculate()" type="text" name="thermal resistance"></td>
<td>°C/W</td>
</tr>
</table>
<script language="javascript">
function calculate() {
// Getting input
dia = document.getElementById("dia").value;
thickness = document.getElementById("thickness").value;
length = document.getElementById("length").value;
current = document.getElementById("current").value;
resistivity = document.getElementById("resistivity").value * 1000 / 2.54;
// Getting units of input
dia_unit = document.getElementById("diaUnits").value;
thickness_unit = document.getElementById("thicknessUnits").value;
length_unit = document.getElementById("lengthUnits").value;
// Converting input to heterogeneous units, see http://www.wolframalpha.com/input/?i=um+to+mil;+mm+to+mil for details
dia *= dia_unit;
thickness *= thickness_unit;
length *= length_unit;
// Calculating
rhoth = 98;
area = Math.PI * (dia + thickness) * thickness;
resistance = resistivity * length / area;
thermal_resistance = rhoth * length / area;
voltage_drop = current * resistance;
power_loss = current * voltage_drop;
// IPC-2221 external layers constants
k = 0.048;
b = 0.44;
c = 0.725;
delta_t = 10;
ampacity = k * Math.pow(delta_t, b) * Math.pow(area, c);
// Output
document.getElementById("resistance").value = resistance.toPrecision(3);
document.getElementById("voltage drop").value = voltage_drop.toPrecision(3);
document.getElementById("power loss").value = power_loss.toPrecision(3);
document.getElementById("thermal resistance").value = thermal_resistance.toPrecision(3);
document.getElementById("ampacity").value = ampacity.toPrecision(3);
}
calculate();
</script>