1 前言
在前面的文章中,已经介绍了Clark,Park,SVPWM,接下来是骡子是马,得拉出来溜溜了,理论终究还是理论,这一章就把这些理论用起来,先强行让电机转起来,来验证我们的算法到底对不对。
2 仿真
先将仿真搭起来,然后验证一下算法的正确性:
然后观察一下电机的电流波形以及转速有没有:
很正常,再观察一下Id和Iq:
可以看到Id和Iq并不等于设置的3和0,这种现象是正常的,原因是现在是开环,强行给的位置信号与电机转子的实际位置不同步。在MATLAB中验证正确后,后面就是直接将其移植到MCU中,让电机转起来。
3 让电机转起来
在移植程序之前,需要提前干两件事:
- 第一件事就是初始化好MCU的PWM模块,让其能够让其接收算法输出的比较器值tcm1,tcm2,tcm3值,然后输出理想的PWM波形,PWM波形的频率一般情况下在10K到20K左右吧,根据实际情况来。
- 第二件事情就是初始化ADC,采集到三相电流,一般情况下只需要采集两相电流即可,因为第三相电流可以根据三相电路之和等于0算出来。而在硬件上,又分为单电阻采样和双电阻采样,单电阻采样的采样电阻一般放在直流母线底线上,而双电阻采样的采样电阻则是放在相线上,至于单电阻采样和双电阻采样的实际操作及其原理这里就不多说了,感兴趣的小伙伴可以网上搜一下。
等这两件事做完之后就可以程序移植到MCU中(怎样将算法移植到MCU中,请参考《小猫爪:PMSM之FOC控制 番外篇1-使用Matlab生成代码,MCU验证》),让电机转起来了。
首先看看三相电流:
再来看看解耦后的DQ电流:
发现并不是两条直线,先不要慌,只需要调换一下其中两相电流的位置就好了。下面列出我的测试代码:
一目了然,这样就让电机开环转起来啦。
另外附上该章节所用到的仿真模型:
FOC_Control_OpenLoop.7z