最近做了个项目,用的是三电平TL Boost,输入电压20V,输出30-50V可调。相比普通的Boost电路,TL Boost可以减少开关器件的电压应力,也可以提高效率,纹波也会有所降低。

查阅书籍找到以下资料:

资料1

资料2

进行拓扑的仿真:

资料3

最终主拓扑电路:

image-20260311224124164

调好开环后效果不错,效果如图:

ed7b2d096e9d62afdd2ab5984073a99d

775982a4fa9ab15585c7a610f71d59af

然后开始做闭环,一开始想的是用ina228来采集电压,但是由于这个拓扑的输出地与系统地不是一个电平的,所以ina228不能用了,普通的分压测量也不能用了,最后用ina826仪表放大器做了一个差分转单端的采样,设计图如下,适合我这次的要求(测量20-100V电压):

image-20260311222848702

这里面开始没有加电容,后来测试发现ADC_V的波形很有特点,可以看到很明显的开关频率,且峰峰值较大,所以加入了C1、C2、C3来抑制这个频率,然后发现该频率依旧存在,但是峰峰值明显减小,此时考虑是系统的3.3V耦合了开关频率,在ina826的供电端加入滤波电容,再次测试发现开关频率被有效抑制。

关于单片机,这次用的是STM32F1,为了移相180度,可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 在初始化的时候
uint32_t period = 3599;
uint32_t initial_duty = (period + 1) * 0.0f;
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, initial_duty);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, initial_duty);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
TIM2->CNT = 0;
TIM3->CNT = (period + 1) / 2;

// 更新占空比
uint32_t pulse = (uint32_t) (duty_cycle * 3600.0f);
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse);
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pulse);

实物图:

实物1

实物2