做好SVPWM之后,就可以按照自己的项目要求,来确定自己的方向,是有霍尔FOC,还是有编码器FOC(伺服电机),还是无传感器FOC,从软件算法的角度来讲,无传感器FOC是比较难的,因为没有传感器去获取电角度,也就是位置信息。看下面的FOC控制框图:
从上图中便可看出FOC的几个关键部分:SVPWM,几个三相交流变两相直流的公式,以及速度/位置反馈,在有传感器的电机控制中,无论是霍尔还是编码器,编码器就更简单一些了,可以直接反馈出电角度,只需要自己对应好电角度与机械角度即可,霍尔传感器虽然没有编码器那么方便,但也是可以轻松霍尔电角度的,只是有霍尔FOC的控制策略需要稍加改变。 有霍尔FOC需要方波启动,然后切换到正弦波(SVPWM),我最开始也是先做了这种控制模式,先使用了简单一些的带霍尔的BLDC,使用方波启动,然后切换到FOC,切换过程需要调试一下霍尔传感器对应的电角度,这个调试并不是很难,0-359的电角度,就算是一个一个试,一天也能试出来了,大约有30个电角度的范围,都是可以正常切换的,也就是说,假如硬件上霍尔U相对应的电角度为60度,那么切换角度大约45-75度之内都是可以切换成功的,只是偏离得大了,电流会大,这个注意一下电源的电流即可,而且偏离得大,电流就不是那么正弦,用电流计观测示波器波形也可以测试出来。关于有霍尔FOC的方波切换正弦波,以后有机会再详细说明。 项目中要求使用无传感器BLDC电机,也就没有传感器去直接获取电角度,需要通过算法来重构出电角度与转速,只要获取到电角度,转速是比较容易的。相比之下,虽然驱动无传感器电机算法要难一些,但是对于有传感器电机,无传感器电机的优势也是比较明显的:
1.成本低,传感器的成本也是高的,尤其是伺服电机的编码器
2.在一些恶劣环境,比如高温环境,传感器是有可能会有失灵或不准确的情况的,此时使用无传感器电机要好很多。 同样,无传感器的BLDC电机的劣势也是显而易见的:
1.算法复杂,开发周期长
2.启动困难,在对启动不能抖动的应用场合,应用不方便
3.精度不高,在对控制精度有要求的应用场合,也基本不会选用无传感器电机 启动算法分析比较:业内承认的一个公认无感永磁同步机的难点---启动问题,无感电机的启动是一个世界性难题,当然,不是说无法启动,而是没有一个通用的方法能够比较好的启动所有电机,由于状态观测器重构电角度需要使用正弦电流来观测反电动势,进而观测电角度,在电机静止条件下,没有电流,也就无法观测出电角度,目前比较通用的做法是两种:强拖,或者高频注入。 1.强拖 强拖就稍微简单,好理解一些。强拖有一个致命的缺点,就是启动可能会反转,这是这种方法的固有缺点,使用SVPWM强拖,也可以做到全正弦,而且抖动比较小,但毕竟还是有抖动的,我也是采用的这种方法,因为我的应用场合是卡车水泵,因此启动的反转基本没什么影响,因此使用这种方法。 2.高频注入高频注入可以做到在电机零速或低速的时候检测到电角度,但是高频注入对于电机凸极率是有一些要求的,也就是说,对于一些电机,使用高频注入会非常难调,或者根本无法使用这种方法。除此之外,高频注入算法复杂,需要设计滤波器,对于一些低端芯片,或者说计算能力差一些的芯片,对编程能力是一个巨大的考验,我也不能说肯定写不出来这样的程序,毕竟ST用030都做出来高频注入了。
观测器的分析比较:分析各大做电机控制的半导体公司的方案,以及对现有资料的丰富度分析,如果我没记错的话,TI是使用的FAST观测器+反正切,ST是使用的龙伯格观测器+PLL,Microchip使用的是滑模观测器+PLL,新塘使用的滑模观测器+反正切+PLL,传统的方案是滑模观测器+反正切,或滑模观测器+PLL,因为滑模观测器比较简单,编程容易。 综上,根据项目需求以及软件算法综合比较,采用SVPWM强拖+滑模观测器+反正切+PLL的方式实现全正弦无感FOC。 滑模观测器主要包含三部分:
1.电机方程
2.滑模面选取
3.符号函数选取
第一步建立电机方程,有两种方式,第一种:利用静止的α-β坐标系建立电机方程,第二种:利用运动的d-q坐标系建立电机方程,我选用的是第一种,第一种比较简单一些。 第二步选取滑模面,选取估计电流与实际电流的差值作为滑模面。 第三步符号函数,符号函数我尝试了两种,饱和函数与连续函数,都可以调出来效果。 基本就是使用的传统SMO的方法,框图如下:
我加入了注释,应该对滑模+反正切算法的流程一目了然,之后便是各个具体步骤,
α-β坐标系下的电机模型:
结合之前的SMO控制框图,再看这个会比较容易一些 而符号函数的选取,有很多种,可以根据自己的实际芯片能力,以及实际效果来选取,鉴于我的芯片计算能力,我试了两种---饱和函数与连续函数。 观测器之后便是反正切,反正切也需要看自己芯片的计算能力,我使用的是103,计算能力不足,不可以直接使用atan函数,因此需要编写反正切的快速计算算法,实际效果也还行,因为我只需要计算出整数电角度与即可,也就是0-359度,最后测试快速计算算法时间也符合要求,差不多迭代3-4次即可计算出任意整数电角度:
在这些算法程序都编写好之后,便是观测器的调试,主要是符号函数与电机模型参数的调试,这个要看自己的实际情况而定,每个电机的参数都有所不同。 调试观测器的时候,因为此观测器是使用电流重构的,因此要保证电流采样的正确性,以及转速不能太低,转速过低的话是无法从强拖切换到观测器的,因此先调试强拖,转速先到一定水平,一般是电机额定转速的10%左右,之后就是调试电机模型,基本上电机模型调试正确,符号函数就很好调试,模型也就是电机的阻感参数,根据自己的电机类型,凸极式电机就调试Lq,Ld,Rs,表贴式电机就调试Ls,Rs,在知道电机类型,以及使用仪器实际测试电机参数之后,进行微调,切忌盲目调试。 可以参照我的调试方法:先使用有霍尔电机,用霍尔传感器实际测试出来的电角度对观测器的电角度进行验证,先对比一下调试结果是否可用,情况会好很多,我最开始调试的初步效果如下:
当然,这是是使用的有霍尔电机,目标电机是无霍尔电机,也就是说,阻感参数不一样,全部都要重新调试一遍,不过,掌握调试方法即可。 调试出的电流结果奉上:
|