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