PWM and Buck-Boost

本文介绍了如何使用STM32CubeIDE编程STM32F103,通过TIM1和TIM3定时器生成200kHzPWM波形,并通过串口动态调整占空比。同时讨论了Buck-Boost电路的应用,警告了基础PWM可能导致MOS管损坏的问题。
摘要由CSDN通过智能技术生成

 目标:使用STM32CubeIDE编程,控制STM32F103输出200KHz的PWM波形,且占空比可通过串口动态调节。

basic PWM

    之前的博客已经解决了串口中断接收的bug,本篇文章主要设置占空比,调节buck-boost电路输出电压。我选择使用STM32F103 TIM1(APB2)定时器 channel1,TIM3(APB1)定时器 channel1,channel2产生PWM波形。首先,配置相关时钟,使用STM32CubeIDE可以直观的看到时钟的配置,具体内容如下图。

        接着,设置周期和占空比,通过设置Prescaler,Count_Period参数,设置周期,具体关系如下:T=1/( 时钟频率/(Prescaler+1)/(Count_Period +1)),以64M总线时钟,0分频,319计数周期为例,T=1/(64M/1/320)=1/200KHz=5us。时钟周期为5us,脉冲频率为200KHz,

上面的做法,可以生成指定频率的波形,再通过__HAL_TIM_SET_COMPARE函数,即可设置指定占空比的波形。具体的代码示例如下。

  TIM_HandleTypeDef htim3;
  MX_TIM3_Init();
  HAL_TIM_PWM_Init(&htim3);
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  //50%,320    set duty, period is 320, duty = x/period
  __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,x);  
  __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,x);  

这里需要分别设置timer3定时器的通道1,通道2的占空比,并将通道极性分别设置为不同数值,才能做到PWM1,PWM2互补输出(占空比互补,且两个PWM波同一时刻电平不同,即不同时为高电平或低电平)。

Buck-Boost

​​​​​​干货| BUCK-BOOST 电源原理及工作过程解析 - 知乎 (zhihu.com)

HAL库 PWM功能实现并不困难,难点在于如何配合电源转换芯片和Buck-boost电路,实现升降压控制。Q1Q2占空比互补,Q3导通,buck模式,降压电路,Vout=Vin*d1(Q1接入的PWM占空比);Q1导通,Q3,Q4占空比互补,boost模式,升压模式,Vout=Vin/d2。升压模式时,要注意,如果搞混了Q3,Q4的线序,建议从50%占空比,向两极扩展,这样可以找到正确的连线。

Warning

用基础PWM来控制Buck-Boost电路,会导致MOS管烧毁。这是因为PWM波形翻转需要时间,以Buck模式为例,在电平翻转过程中,上下2个NMOS管(Q1,Q2)可能会同时导通,致使Vin直接与地短接,瞬时大电流会烧毁NMOS管。升压电路没有试过,使用基础PWM没有过多测试,不确定会出现什么现象。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值