Разрабатываем регулированный блок питания с защитой от КЗ.

В данном проекте мы с Вами разработаем и соберем регулируемый блок питания.

Наше задание: Регулированный диапазон задания напряжения, ограничение рабочего тока, в случаи КЗ отключения блока питания от нагрузки.

По мере разработки мы с Вами будем добавлять функционал и определимся с диапазоном рабочих величин.

Прежде чем мы приступим к самой разработке, нам необходимо будет определиться с источником питания, у меня это будет трансформатор с тремя выходными обмотками,  две обмотки по ****В — для питания силовой части, причем я планирую ****, и третья обмотка для питания схемы управления на микроконтроллере (Вы можете использовать импульсный блок питания от зарядки телефона на 2А добавим в него фильтр по питанию). Таким образом предварительно схема силовой части у меня выглядит следующим образом:

******

схема

******

Теперь перейдем к схеме управления и для начала, мы подключим экран индикации, в качестве экрана возьмем WH1602, который подключим по шине I2C для экономии выходов, так же настроем два АЦП для измерения выходного напряжения и тока и два АЦП для задания выходного напряжения и тока ограничения. Так же нам необходимо будет подключить внешний ЦАП, для регулирования выходного напряжения.

В качестве микроконтроллера возьмем  **** , а в качестве среды программирования возьмем Arduino IDE.

Предварительная схема подключения будет выглядеть следующим образом:

……

Программный код для подключения экрана мы возьмем с  урока №19, а настройку АЦП с урока №15.

Таким образом у нас получается следующий программный код:

#include
#include

LiquidCrystal_I2C lcd(0x20,16,2); //настраиваем подключение экрана
float Uout=0;
float Iout=0;
float Urev=0;
float Irev=0;

void setup()
{
lcd.init();// инициализируем экран
lcd.backlight();// включаем подсветку
Serial.begin(9600);
}

void loop()
{
Uout = (float)(analogRead(A6) * 5.0) / 1024;
Iout = (float)(analogRead(A7) * 5.0) / 1024;
Urev = (float)(analogRead(A0) * 5.0) / 1024;
Irev = (float)(analogRead(A1) * 5.0) / 1024;
PrintLcd(Uout, Iout);
Serial.print(«Uout=»);Serial.print(Uout);
Serial.print(» Iout=»);Serial.print(Iout);
Serial.print(» Urev=»);Serial.print(Urev);
Serial.println(» Irev=»);Serial.print(Irev);
delay(500);
}

void PrintLcd(float U, float I){
lcd.setCursor(0,1);// положение курсора
lcd.print(«Uout=»);
lcd.print(U);
lcd.setCursor(1,1);// положение курсора
lcd.print(«Iout=»);
lcd.print(I);
}

Дальше мы с Вами подключим ЦАП, так как в микроконтроллере **** у нас нет ЦАП, при этом скорость нам не очень важна мы возьмем ЦАП с Урока по настройке ЦАП по типу 2R2 . Выход с ЦАП подключим к операционному усилителя, при этом настроим его коэффициент усиления так, что бы шаг регулирования выходного напряжения у нас был 0,1В.  И окончанием данной части у нас будет подключения силового транзистора, на выходе которого у нас будет регулированное напряжение. 

*****

схема

*****

Программный код:

Программа.

Теперь нам надо добавить пару индикаций: это режим работы блока питания, наличие аварийной ситуации (короткое замыкание, перегрев, большая просадка напряжения), ****.
Так же добавим в схему возможность считывать рабочий ток, и пропишем алгоритмы для разных режимов работы и что делать в аварийных ситуациях .

*****

схема

******

Программный код:

Программа

В заключении мы с Вами проделаем насколько тэстов, снимем пару характеристик, при необходимости скорректируем программный код.

СОДЕРЖАНИЕ