| Ваш IP: 18.204.227.117 | Online(35) - гости: 19, боты: 16 | Загрузка сервера: 0.6 ::::::::::::

STM32 ШИМ регулятор напряжения 0…25 В 2,5 А (Arduino)

В статье https://rcl-radio.ru/?p=77435 был рассмотрен пример создания ШИМ регулятора постоянного напряжения на базе Arduino, в этой статье будет рассмотрен пример создания ШИМ регулятора на базе отладочной платы STM32 (STM32F103C8T6). Характеристики ШИМ регулятора аналогичны предыдущему проекту, но благодаря высокому быстродействию микроконтроллера STM32F103C8T6 по сравнению с ATmega328 (Arduino Nano), улучшена стабильность работы ШИМ регулятора, повышена точность установки и поддержания напряжения (12 бит) при различной токовой нагрузке.

Управление ШИМ регулятором происходит при помощи трех кнопок, первая кнопка «ON/OFF» отключает и включает выходное напряжение, остальные кнопки регулируют выходное напряжение. Регулировка выходного напряжения может осуществляться в двух режимах, с отключенным выходным напряжением и включенным. В ШИМ регуляторе предусмотрена токовая защита от КЗ выхода на уровне 4,5 А от тока потребления ШИМ регулятора. Фактически ШИМ регулятор может выдавать ток в нагрузку до 6-7 А, но только незначительный период времени (сильный нагрев транзисторов и дросселя), при длительном использовании ток нагрузки не должен превышать 2,5 А.

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

При КЗ выхода выходное напряжение пропадает, на 5 секунд и выводится сообщение Err0, после чего выходное напряжение восстанавливается.

При включенном выходном напряжении на индикаторе отображается установленное напряжение U10.0 , при выключенном выходном напряжении индикатор отображает выставленное напряжение без символа U.

Сборка:

Транзисторы КТ818Б и КТ815Б необходимо установить на теплоотвод.
Дроссель — намотан на кольце диаметром 25-30 мм, проводом 0,8-1 мм, намотка в один слой до заполнения.

Настройка:
1. Установить значение 20 В, подключить к выходу вольтметр, подобрать значение переменной float pop (вольтметр должен показывать 20+/-0,05 В)
2. При выходном напряжении 20 В, подключить нагрузку 10 Ом, подобрать значение переменной float pop1 (вольтметр должен показывать 20+/-0,05 В).
3. Выходное напряжение во всем диапазоне выходных напряжений должен иметь погрешность +/-0,1 В  с подключенной нагрузкой и без нее.

Перед заливкой скетча в STM32 Вам необходимо ознакомиться со следующей статьей — STM32 Arduino IDE

  // Библиотека Arduino_STM32-master.zip
#include <STM32_TM1637.h> // https://rcl-radio.ru/wp-content/uploads/2020/02/STM32_TM1637_V1_3.zip
 STM32_TM1637 tm(PB10,PB1);// CLK, DIO
 #include <EEPROM.h>
 HardwareTimer pwmtimer3(3);
 
 int u_dig,w,off;
 float u_ust=10;
 int h,reg=0;
 const float pop = 7.79; // поправочный коэффициент калибровки напряжения без нагрузки
 const float pop1=0.1; // поправочный коэффициент калибровки напряжения под нагрузкой
 unsigned long times,times0;
 
void setup() {
  pinMode(PB0, PWM);  // имп. выход
  pinMode(PA5, INPUT_ANALOG);
  pinMode(PA0, INPUT); // up
  pinMode(PA1, INPUT); // down
  pinMode(PA2, INPUT); // OFF/ON
  tm.brig(7); // ЯРКОСТЬ 0...7
  pwmtimer3.pause();
  pwmtimer3.setPrescaleFactor(3); //1 - 72 кГц, 2 - 36 кГц, 3 - 24 кГц     
  pwmtimer3.setOverflow(1000-1);        
  pwmtimer3.setCompare(TIMER_CH3, h);// ШИМ 0-1000
  pwmtimer3.refresh();
  pwmtimer3.resume();
  if(float(EEPROM.read(0))/10>25){EEPROM.update(0,0);}
  u_ust = float(EEPROM.read(0))/10;
  tm.print_float(u_ust,1, 0b00111110,0,0,0);
}
 
void loop() {
  if(off==0){
  while(3.30/4095*analogRead(PA5)*pop > u_ust+float(h*pop1)/1000){h--;if(h<0){h=0;}
        pwmtimer3.setCompare(TIMER_CH3, h);}
 
  while(3.30/4095*analogRead(PA5)*pop < u_ust+float(h*pop1)/1000){h++;if(h>1000){h=1000;}
        if(h>900){h=0; tm.print_float(0,0, 0b01111001,0b01010000,0b01010000,0);
        pwmtimer3.setCompare(TIMER_CH3, h);delay(5000); tm.print_float(u_ust,1, 0b00111110,0,0,0);times=millis();}
        pwmtimer3.setCompare(TIMER_CH3, h);}
  }
 
  if(digitalRead(PA0)==HIGH&&millis()-times>150){u_ust+=0.1; if(u_ust>25){u_ust=25;}
  if(off==0){tm.print_float(u_ust,1, 0b00111110,0,0,0);}else{tm.print_float(u_ust,1, 0,0,0,0);}times=millis();times0=millis();w=1;} 
  if(digitalRead(PA1)==HIGH&&millis()-times>150){u_ust-=0.1; if(u_ust<0){u_ust=0;}
  if(off==0){tm.print_float(u_ust,1, 0b00111110,0,0,0);}else{tm.print_float(u_ust,1, 0,0,0,0);}times=millis();times0=millis();w=1;}
 
  if(digitalRead(PA2)==HIGH&&off==0&&millis()-times>300){off=1;tm.print_float(u_ust,1, 0,0,0,0);times=millis();pwmtimer3.setCompare(TIMER_CH3, 0);}  
  if(digitalRead(PA2)==HIGH&&off==1&&millis()-times>300){off=0;tm.print_float(u_ust,1, 0b00111110,0,0,0);times=millis();pwmtimer3.setCompare(TIMER_CH3, h);}  
 
  if(w=1&&millis()-times0>5000){w=0;EEPROM.update(0,round(u_ust*10));}    
 
}// loop

Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=1263#p1263

Тестирование

Установленное напряжение Без нагрузки Ток нагрузки С нагрузкой

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

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

Случайные статьи

  • Бестрансформаторный источник питания 1,5 В/2 мА

    Источник бесперебойного питания для кварцевых электронно-механических часов приведен на рис. Такие часы обычно питают от одного гальванического элемента напряжением 1,5 В. ИП вырабатывает напряжение 1,4 В при среднем токе нагрузки 1 мА. Напряжение, снятое с делителя С1/С2, выпрямляет узел на элементах VD1, VD2, СЗ. Без нагрузки напряжение на конденсаторе С3 …Подробнее...
  • Индикатор заряда аккумуляторной батареи на PIC12F675

    Индикатор заряда аккумуляторной батареи на PIC12F675

    На микроконтроллере PIC12F675 можно сделать простой индикатор заряда аккумуляторной батареи 14,4 В. В качестве индикаторов используются светодиоды, которые отображают напряжение аккумуляторной батареи. Первый светодиод горит когда напряжение на клеммах аккумуляторной батареи от 11 до 12 В, второй загорается когда напряжение от 12 до 13 В, третий от 13 до 13,5 …Подробнее...
  • 1182ЕМ2 — СЕТЕВОЙ ИМПУЛЬСНЫЙ ПРЕОБРАЗОВАТЕЛЬ НАПРЯЖЕНИЯ

    1182ЕМ2 — СЕТЕВОЙ ИМПУЛЬСНЫЙ ПРЕОБРАЗОВАТЕЛЬ НАПРЯЖЕНИЯ

    Микросхема 1182ЕМ2 является представителем класса высоковольтных электронных схем. Основное назначение ИС — непосредственное преобразование переменного напряжения сети 220 В в выпрямленное постоянное. Благодаря уникальной технологии возможно применение микросхемы для сети переменного тока до 264 В. Особенности применения Широкий диапазон входного переменного напряжения от 18 В до 264 В Широкий диапазон входных частот от 50 …Подробнее...
  • Полицейская сирена на LM324

    Полицейская сирена на LM324

    Данная схема издает звук напоминающий полицейскую сирену. Схема основана на ОУ LM324 представляющий собой генератор ЗЧ. При нажатии на кнопку SA1 начнет быстро заряжаться С1, сирена начнет издавать звук. При размыкании контактов SA1  сирена будет работать до тех пор пока не разрядится через R2 конденсатор С1. Источник — http://www.eleccircuit.com/police-bicycle-siren-circuits/Подробнее...
  • Простой радиомикрофон

    Простой радиомикрофон

    Дальность действия радиомикрофона более 300 метров вне помещения. Несмотря на низкое напряжение питания 3В радиомикрофон достаточно мощный, сигнал уверенно приминается от него на радиоприемник через 3 этажа здания. Частотный диапазон радиомикрофона от 87 до 108 МГц. Прием радиосигнала возможен на любой FM радиоприемник. Катушка (L1)  3мм в диаметре, имеет 5 …Подробнее...