STM32 NUCLEO中级教程3: BLDC中H-PWM-L-ON驱动方式下的6路PWM波形输出

作者: fengye5340
上传时间为: 2014-12-10 04:59 PM
2014-12-10
阅读:

BLDC又称直流永磁电机,或永磁同步电机,采用电机控制器通过电子控制分配方式实现换向!直流无刷电机广泛应用于汽车、工具、工业工控、自动化以及航空 航天等行业!目前BLDC电机应用十分广泛,采用MCU输出6路PWM波形控制三相H桥电路驱动BLDC是一种十分重要的技术应用。在带HALL的BLDC中,常根据HALL值的变化,采用六步换向法来驱动三相H桥。这里面最常用的PWM控制方式就是H-PWM, L-ON的方式,也就是上桥臂MOS管上输出PWM,下桥臂MOS管保持常ON的方式。这一篇文章就来讲解一下H-PWM-L-ON驱动方式下的6路PWM波形输出,如有对BLDC驱动感兴趣,可以基于STM32-NUCLEO-072RB开发平台做一个扩展板,上面加载三相H桥电路和反馈电路进行深入测试。第一部分内容讲解一下带HALL的BLDC换向表分析。第二部分内容讲解一下代码实现。

一、带HALL的BLDC换向表分析

在带HALL的BLDC中,一般是由霍尔传感器测量转子的位置,然后由其输出的3位二进制编码去控制逆变器中6个功率管的导通实现换相。

下图是一个HALL传感器在电机转动一周的情况下输出值:

HALLA/B/C输出的值并不是安装顺序排列,而是安装0x05、0x04、0x06、0x02、0x03、0x01的方式出现。如果采集到的HALL值是反向顺序,则说明电机是反向转动了。

下面是利用示波器采集到的BLDC的HALL值输出:

下面是常用的三相H桥逆变电路:

根据六步换向原则,每步三个绕组中一个绕组流入电流,一个绕组流出电流,一个绕组不导通。确定通电顺序如下:

1.A+C-2.C+B-3.A+B-4.B+A-5. B+C-6.C+A-

每步磁场旋转60°,每6步磁场旋转一周,每步仅一个绕组被换相。

这样,在电机正转情况下,根据HALL值来确定的导通相和驱动管导通情况如下:

要想实现在HALL值出现时的驱动管导通相,6路PWM引脚必须提前一相配置下一个导通相的状态,并将参数存储在定时器的影子寄存器中,通过COM事件的产生,同步更新定时器各个PWM引脚的配置。下面是针对定时器要实现的预配置通道及导通相配置。

在设置参数中,要利用到STM32的COM事件:

COM事件是专门为电机控制用的,它只出现在高级定时器中!“当在一个通道上需要互补输出时,预装载位有OCxM、CCxE和CCxNE。在发生COM换相事件时,这些预装载位被传送到影子寄存器。这样你就可以预先设置好下一步骤配置,并在同一个时刻同时修改所有通道的配置。COM可以通过设置TIMx_EGR寄存器的COM位由软件产生,或在TRGI上升沿由硬件产生。” COM事件的触发有两种方式,一种是软件触发:利用库函数实现;另一种是硬件触发:利用STM32 定时器霍尔接口实现,由霍尔值改变来产生上升沿触发

下面讲解一下具体的软件实现过程。

二、Keil-mdk工程文件及代码实现

1、Keil-mdk工程模板中加入PWM.C文件,在includes.h文件中加入PWM.H头文件

2、在PWM.H头文件增加宏定义 --霍尔传感器引脚PC6/PC7/PC8

3、霍尔传感器接口 HALL_GPIO_Init()函数代码实现

霍尔传感器电路是一种OC门电路,需要增加上拉电阻才能有输出,在配置引脚端口时,可以内部不增加上拉,浮空即可。

霍尔传感器电路结构和霍尔接口电路

4、高级定时器初始化Timer1_Init()代码实现

配置好定时器,初始化是配置在定时模式,不能输出PWM,否则有容易引起MOS管短路的风险。

5、换向函数实现:BLDC_Hall_Convet()

这个是根据HALL值来进行换向,因为没用硬件H桥电路,这里仅是手动转动电机实现换向,所以COM事件通过软件来产生。

其他霍尔值的配置类似。

6、中断复位函数实现:

在COM事件中断中,进行换向判定:

7、主函数代码main.c代码实现

在main.c里面初始化定时器配置后,就要对电机HALL值进行判断,然后设置不同的PWM输出。

打印输出的HALL值:

实际输出的H-PWM-L-ON波形与STM32技术参考手册波形是一致的

一个硬件连线图:


全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示