TL431 Flyback Output Voltage Calculator

Calculate the output voltage or resistor values in a TL431-based feedback network. Leave one field blank to calculate it.

Ω

Ω

V
mV


function calculateTL431() {
const Vref = 2.5; // TL431 internal reference voltage

let rUpper = parseFloat(document.getElementById(“rUpper”).value);
const rUpperUnit = parseFloat(document.getElementById(“rUpperUnit”).value);
rUpper = isNaN(rUpper) ? null : rUpper * rUpperUnit;

let rLower = parseFloat(document.getElementById(“rLower”).value);
const rLowerUnit = parseFloat(document.getElementById(“rLowerUnit”).value);
rLower = isNaN(rLower) ? null : rLower * rLowerUnit;

let vOut = parseFloat(document.getElementById(“vOut”).value);
const vOutUnit = parseFloat(document.getElementById(“vOutUnit”).value);
vOut = isNaN(vOut) ? null : vOut * vOutUnit;

const resultDiv = document.getElementById(“tl431Result”);

if ([rUpper, rLower, vOut].filter(v => v !== null).length !== 2) {
resultDiv.innerHTML = “⚠️ Please enter exactly two values.”;
return;
}

let result = “”;

if (vOut === null && rUpper !== null && rLower !== null) {
vOut = Vref * (1 + (rUpper / rLower));
result = `Output Voltage (Vout) = ${vOut.toFixed(3)} V`;
} else if (rUpper === null && vOut !== null && rLower !== null) {
rUpper = rLower * ((vOut / Vref) – 1);
result = `Upper Resistor (Rupper) = ${formatResistance(rUpper)}`;
} else if (rLower === null && vOut !== null && rUpper !== null) {
rLower = rUpper / ((vOut / Vref) – 1);
result = `Lower Resistor (Rlower) = ${formatResistance(rLower)}`;
} else {
result = “⚠️ Invalid or conflicting inputs.”;
}

resultDiv.innerHTML = result;
}

function formatResistance(value) {
if (value >= 1e6) return (value / 1e6).toFixed(2) + ” MΩ”;
else if (value >= 1e3) return (value / 1e3).toFixed(2) + ” kΩ”;
else return value.toFixed(2) + ” Ω”;
}

function clearTL431() {
document.getElementById(“rUpper”).value = “”;
document.getElementById(“rLower”).value = “”;
document.getElementById(“vOut”).value = “”;
document.getElementById(“tl431Result”).innerHTML = “”;
}

(adsbygoogle = window.adsbygoogle || []).push({});