前言
问题:在对无刷电机进行FOC闭环控制时,发现电机转速一直达不到电机额定转速;额定为5400r/min,实际才跑到了1600r/min。
分析原因
无刷电机控制转速,基本就是通过调节电压、调节定子磁场频率进行调速。
为了排除原因,我把每次设置的Uq值设为定值,Ud为0v,这样就保证变量只有一个电机的电角度。
将Uq设为当前环境的最大值,发现依旧转速上不去,与额定转速相差甚远。
后初步猜测是控制器输出SVPWM的频率速度达不到,计算当前系统的每次设置电机相电压的周期为0.5ms-0.6ms;即一秒钟最多设置电机的三相相电压不超过2000次。经过查询资料,在ST论坛上找到了答案,就是主控处理速度的问题!!!!
ST论坛地址.
以一个正弦波采样12次为例,一般想用离散化数据表示一个相对圆滑的正弦波都需要10-12次,控制输出一个正弦波电机定子磁场转动一个电周期,那么以我使用的5对级电机来说,电机转动一个机械周期就需要切换125=60次相位,那么以额定转速5400r/min即90r/s来说,理想情况下电机每秒要切换9060 = 5400次相位,而我当前的系统,每秒最高控制输出的次数还不到2k,明显是当前的系统不足以支持高转速。
我使用的处理器没有FPU,不支持硬浮点,而FOC算法里面大量的sin cos atan计算需要进行浮点运算,肯定速度慢。
解决方法:优化其中的浮点运算,采用主频高、支持硬浮点计算的处理器。