XL4015 — понижающий DC-DC преобразователь (Arduino)

DC-DC преобразователь на основе чипа XL4015 представляет собой бюджетный и мощный модуль с высокой эффективностью (до 96%). XL4015 обладает защитой от короткого замыкания и перегрева, что позволяет автоматически отключать выход в случае превышения рабочей температуры.

Входное напряжение XL4015 составляет от 8 до 36 вольт, максимальный ток нагрузки может достигать 5 А.

Основные параметры:

  • Эффективность преобразования (КПД): до 96%
  • Частота переключения: 180 кГц
  • Входное напряжение: от 8 до 40 В
  • Выходное напряжение: от 1.25 до 32 В (регулируемое)
  • Защита: от короткого замыкания, от перегрева, ограничение выходного тока
  • Защита от переполюсовки: нет

Ниже показана схема источника питания с выходным регулируемым выходным напряжением от 0 до 25 В с функцией стабилизации тока.

XL4015 необходимо установить на небольшой теплоотвод. Дроссель — намотан на ферритовом кольце диаметром 25-30 мм, проводом 0,8-1 мм, намотка в один слой до заполнения.

Блок измерения тока и напряжения выполнен на платформе Arduino, плата контроллера основана на микроконтроллере LGT8F328 (LGT8F328P-LQFP32 MiniEVB). Этот микроконтроллер имеет 12-й битный АЦП, что дает возможность достаточно точно измерять ток и напряжение.

  • Плата разработчика LGT8F328P-LQFP32 MiniEVB, как использовать плату в среде программирования Arduino IDE рассказано в — http://rcl-radio.ru/?p=129966

Информация об установленном выходном напряжении, ток нагрузки  и режимы работы будут выводиться на дисплей OLED 1.3 128×64 (чип драйвера — SH1106  I2C).

Напряжения управления уровнем тока стабилизации и выходным напряжением, а так же усиленное напряжение шунта и напряжение на делителе напряжения R6 R7 находится в пределах 5 В, для совместимости с микроконтроллером. При применении шунта с сопротивлением отличным от указанного на схеме, подберите коэффициент усиления ОУ LM358 таким образом, что бы выходное напряжение ОУ не превышало 5 В.

После сборки ШИМ регулятора необходимо настроить коэффициенты измерителей тока и напряжения:

#define KALL_I_IZ 1.200 
#define KALL_U_IZ 0.730

Для настройки в выходу ШИМ регулятора подключите вольтметр, установите напряжение на выходе ШИМ регулятора 20 В, подстройкой коэффициента KALL_U_IZ добейтесь одинаковых показаний вольтметра и и измерителя напряжения.

Для настройки измерителя тока к выходу ШИМ регулятора подключите нагрузку. Ток нагрузки должен быть в пределах 70-90% от максимального тока ШИМ регулятора. Измерьте ток нагрузки амперметром, коэффициентом KALL_I_IZ добейтесь одинаковых показаний амперметра и измерителя тока.

Скетч

#define KALL_I_IZ 1.200 
#define KALL_U_IZ 0.730 

#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/
  
  U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);

  int n,m,m1;
  float i_dig,u_dig,i_dig1;
  float u_iz,i_iz,i_iz1;
  long i_sum,u_sum,i_sum1;
  bool w=1;

void setup(){
  delay(200);
  Wire.begin();
  analogReadResolution(12);// АЦП 12 БИТ
  analogReference(DEFAULT);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(13,OUTPUT);
  u8g.firstPage();  
   do {
  u8g.setFont(u8g_font_profont12r); 
  u8g.drawStr(30,10,"POWER SUPPLY");
  u8g.drawStr(30,25,"0-30V 0-3A");
  u8g.drawStr(30,55,"rcl-radio.ru");
  } while( u8g.nextPage() );
  delay(2000);
  }

void loop(){
  i_dig = analogRead(A0);
  i_sum = i_sum+i_dig;
  n++;if(n>9){n=0;i_iz=i_sum/10;i_sum=0;} 


  u_dig = analogRead(A1);
  u_sum = u_sum+u_dig;
  m++;if(m>9){m=0;u_iz=u_sum/10;u_sum=0;w=1;} 

  i_dig1 = analogRead(A2);
  i_sum1 = i_sum1+i_dig1;
  m1++;if(m1>9){m1=0;i_iz1=i_sum1/10;i_sum1=0;} 

  if(i_iz*1.05>=i_iz1){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}

  if(w==1){
  u8g.firstPage();  
   do {
  u8g.drawLine(0, 26, 128, 26);u8g.drawLine(0, 53, 128, 53);
  u8g.setFont(u8g_font_profont29r); 
  u8g.drawStr(0,22,"U");u8g.setPrintPos(35, 22);u8g.print(u_iz*KALL_U_IZ/100.0,1);u8g.drawStr(110,22,"V");
  u8g.drawStr(0,50,"I");u8g.setPrintPos(35, 50);u8g.print(i_iz*KALL_I_IZ/1000.0,2);u8g.drawStr(110,50,"A");
  u8g.setFont(u8g_font_profont12r);
  u8g.setPrintPos(75, 64);u8g.print(i_iz1*KALL_I_IZ/1000.0,2);
  u8g.drawStr(15,64,"I stab = ");u8g.drawStr(105,64,"A");

  } while( u8g.nextPage() );
  }
  }    

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=620

Добавить комментарий

Войти с помощью: