5.无霍尔BLDC转子预定位及同步加速
1.电机转子预定位
@1.要保证无刷直流电机能够正常启动,首先要确定转载在静止时的位置。在轻载条件下,对于具有梯形反电势波形的无刷直流电机来说,一般采用磁制动转子定位方式。系统启动时,任意给定一组触发脉冲,在气隙中形成一个幅值恒定、方向不变的磁通,只要保证其幅值足够大,那么这一磁通就能在一定时间内将电机转子强行定位这个方向上。在应用中,可以在任意一组绕组上通电一定时间,其中预定位的PWM占空比和预定位的时间的长短设定值可由具体电机特性和负载决定,在实际应用中调试而得。在预定位成功后,转子在启动前可达到预定的位置,为电机启动做好准备。
@2.软件方案实现
step1:设置PWM输出频率,软件上设置为12KHZ。此处说的PWM指控制电机三组上下桥臂导通的timer产生的PWM波形。
step2:设置转子预定位的最小启动占空比duty。当PWM频率固定后,电机输出的驱动能力的其中一项控制条件是占空比值的大小。而占空比的设置值不能随意设置,而是根据电机的特性以及是否带有负载以及负载的大小来实际测试结果来决定的。此处根据笔者的开发的电机类型,电机空载条件下选择了最小启动占空比start_pwm。
step3:有了上述2步的条件,第三步条件是选择电机的6步换向中的其中一个方向,让电机初始强制预定位到这个位置,此处笔者在软件上设置的是根据想让电机正转还是反转的方向来选择一个位置来定位。这个没有必要的要求,根据自己实际的项目使用方式来决定。
step4:执step3后需要等待一定时间让转子到达指定位置。这个等待时间需要根据电机特性和负载特性来决定。
@3.上述的说明就是电机预定位的方案及算法实现。
2.电机转子同步加速
@1.根据上述的说明,我们已经通过电机转子预定位方法,将电机固定在了某一个位置,这样,我们就知道了电机的起始位置。
@2.确定了电机转子的初始位置后,由于此时定子绕组中的反电动势仍然为零,所以必须人为的改变电机的外施电压和换相信号,是电机由静止逐步加速启动,这一过程称为外同步加速。对于不同的外施电压调整方法和换向信号调整方法,外同步加速可以划分为三类:换向信号频率不变,逐步增大外施电压使使电机加速,称为横频升压法。保持外施电压不变,逐渐增高换向信号的频率,使电机逐步加速,称为恒压升频法。在逐步增大外施电压的同时,增高换相的频率,称为升频升压法。
@3.笔者实现的方案是恒频升压法。因为在《电机转子预定位》已经将频率固定,所以频率恒定,调整占空比实际就是调整电机电压。
step1:将每次循环的换相程序实现
先判断是正转还是反转
正转为:
电机正转换向值 : V+U- W+U- W+V- U+V- U+W- V+W-
对应换向表下标值: 2 3 1 5 4 6
反转为:
电机反转换向值:V+U- V+W- U+W- U+V- W+V- W+U-
对应换向表下标值: 5 1 3 2 6 4
vu8 C_HallSign[] = {5,4,6,2,3,1,5,4};这个数组就是对应的换相表正反转下标值,而换向表数组如下:
/*
P:上半桥
N:下半桥
PWM00:PC5 [UP]
PWM10:PC4 [VP]
PWM20:PC3 [WP]
PWM01:PC2 [UN]
PWM11:PC1 [VN]
PWM21:PC0 [WN]
PMS_Config[0]:0x80, PXC_Config[0]:0xc0:未检测到霍尔信号,不做任何输出,上下臂全部处于悬空状态
PMS_Config[1]:0x9f, PXC_Config[1]:0xc4:W+V-
PMS_Config[2]:0xb7, PXC_Config[2]:0xc1:V+U-
PMS_Config[3]:0x9f, PXC_Config[3]:0xc1:W+U-
PMS_Config[4]:0xbd, PXC_Config[4]:0xd0:U+W-
PMS_Config[5]:0xbd, PXC_Config[5]:0xc4:U+V-
PMS_Config[6]:0xb7, PXC_Config[6]:0xd0:V+W-
PMS_Config[7]:0x80, PXC_Config[7]:0xc0:霍尔信号检测错误,不做任何输出上下臂全部处于悬空状态
*/
const vu8 PMS_Config[]={0x80,0x9f,0xb7,0x9f,0xbd,0xbd,0xb7,0x80};
const vu8 PXC_Config[]={0xc0,0xc4,0xc1,0xc1,0xd0,0xc4,0xd0,0xc0};
整体转换算法就是 PMS_Config[C_HallSign[HallPhase]];PXC_Config[C_HallSign[HallPhase]];
step2:接下来顺其自然的开始进行升频,升频的方法很简单,就是在启动的最小占空比基础上每次循环进行占空比值增加,可以根据实际的测试效果来决定
上图就是PWM占空比升频算法。每次在增加PwmAddStep值的基础上还进行了(loop>>1)的方式进行增加,这种算法不是每次循环在当前占空比的基础上增加一个固定的PwmAddStep值,而是再增加一个递增变量,相当于是一个等差递增数列,高数忘记的差不多了,好像是这么叫的。这样算法好处是,占空比增加不是一个第一象限的斜率固定的函数,而是像一个指数函数。类似下图这样的
每次设置完成占空比后,需要等待一个时间,让电机换向能够有足够时间到达目标位置。通过分析我们不难发现,占空比值越大,那么电机的换相能力就越强,驱动能力越强。那么每次循环的等待时间也是需要逐渐减小的,否则转速无法做到同步加速。整体示意图如下。等后续有时间了会用Python把算法演示模型添加进去,这里图画的太糙了,勉强能够表达清楚。
下图就是循环等待换向时间算法,和上图的曲线模型吻合。
step3:加速模型的算法就到这里了,此时可以切换到闭环换向的逻辑了,具体请查看《3.无霍尔传感器的BLDC换向原理》章节