Автор Тема: Расчёт элементов LDO стабилизатора.  (Прочитано 64 раз)

decoder2000

  • приватная
  • Старожил
  • *****
  • Сообщений: 260
  • Саша
Расчёт элементов 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.
« Последнее редактирование: 14 Ноября 2017, 14:13:51 от decoder2000 »