Расчёт элементов LDO стабилизатора.
Не путаем с расчётами для DC/DC .
У LDO напряжение Vref приложено к выводам Vout и Adj,
а у DC/DC напряжение Vfb между этим же выводом и GND.
R1,R2 делитель , напряжение снимается с выхода и подаётся на Vref.
R1 подключён между выходом и Vref, R2 - между Vref и GND.
Расчёты производятся по формулам:
R1=R2/(Vout/Vref-1)
R2=R1*(Vout/Vref-1)
Vref = Vout/(R2/R1 + 1)
Vout = Vref*(1 + R2/R1)
Вводим значения R1, R2, Vout, Vref, вместо неизвестного значения вводим 0.
Исходник на PascalABC:
program LDO;
//расчёт элементов LDO стабилизатора
// Vref,Vout
// R1,R2 делитель , напряжение снимается с выхода и подаётся на Vref.
// R1 подключён между выходом и Vref, R2 - между Vref и GND.
// R1=R2/(Vout/Vref-1)
// R2=R1*(Vout/Vref-1)
// Vref = Vout/(R2/R1 + 1)
// Vout = Vref*(1 + R2/R1)
var
R1, R2, Vref, Vout: real;
procedure find_R1 (const R2,Vout,Vref:real);
begin
writeln('R1=',R2/(Vout/Vref-1):3:2, ' Om');
end;
procedure find_R2(const R1,Vout,Vref:real);
begin
writelnformat('R2=R1*(Vout/Vref-1)={0}*({1}/{2}-1)={3}', R1,Vout,Vref,R1*(Vout/Vref-1));
end;
procedure find_Vout(const R1,R2,Vref:real);
begin
writeln('Vout = ',Vref*(1 + R2/R1):3:2, ' V');
end;
procedure find_Vref(const R1,R2,Vout:real);
begin
writeln('Vref = ', Vout/(R2/R1 + 1):3:2, ' V');
end;
// основная программа
begin
while true do
begin
writeln('Расчёт элементов LDO стабилизатора.');
writeln('R1,R2 делитель , напряжение снимается с выхода и подаётся на Vref.');
writeln('R1 подключён между выходом и Vref, R2 - между Vref и GND.');
writeln('Введите значения R1,R2,Vout,Vref.');
writeln('Вместо неизвестного значения введите 0.');
read(R1, R2, Vout, Vref);
writeln('R1=', R1, ', R2=', R2, ', VOUT=', Vout, ', Vref=', Vref);
if R1 = 0 then find_R1(R2,Vout,Vref )
else if R2 = 0 then find_R2(R1,Vout,Vref)
else if Vout = 0 then find_Vout(R1,R2,Vref)
else if Vref = 0 then find_Vref(R1,R2,Vout)
else begin writeln('Введены все значения, проверка:');writeln('VOUT = ', Vref, ' * (', R1, ' + ', R2, ') / ', R2, ') = ', Vref * (R1 + R2) / R2:3:2, 'V');end;
writeln();writeln();
end;
end.