В данном проекте мы с Вами разработаем и соберем регулируемый блок питания.
Наше задание: Регулированный диапазон задания напряжения, ограничение рабочего тока, в случаи КЗ отключения блока питания от нагрузки.
По мере разработки мы с Вами будем добавлять функционал и определимся с диапазоном рабочих величин.
Прежде чем мы приступим к самой разработке, нам необходимо будет определиться с источником питания, у меня это будет трансформатор с тремя выходными обмотками, две обмотки по ****В — для питания силовой части, причем я планирую ****, и третья обмотка для питания схемы управления на микроконтроллере (Вы можете использовать импульсный блок питания от зарядки телефона на 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В. И окончанием данной части у нас будет подключения силового транзистора, на выходе которого у нас будет регулированное напряжение.
*****
схема
*****
Программный код:
Программа.
Теперь нам надо добавить пару индикаций: это режим работы блока питания, наличие аварийной ситуации (короткое замыкание, перегрев, большая просадка напряжения), ****.
Так же добавим в схему возможность считывать рабочий ток, и пропишем алгоритмы для разных режимов работы и что делать в аварийных ситуациях .
*****
схема
******
Программный код:
Программа
В заключении мы с Вами проделаем насколько тэстов, снимем пару характеристик, при необходимости скорректируем программный код.
СОДЕРЖАНИЕ