SimpleFoc
SimpleFOC移植STM32(一)—— 简介
FOC控制的过程是这样的:
- 对电机三相电流进行采样得到 Ia,Ib,Ic。
- 将 Ia,Ib,Ic 经过Clark变换得到 I_alpha I_beta。
- 将 I_alpha I_beta 经过Park变换得到 Id,Iq。
- 计算 Id,Iq 和其设定值 Id_ref 和Iq_ref 的误差
- 将上述误差输入两个PID(只用到PI)控制器,得到输出的控制电压Ud、Uq。
- 将 Ud、Uq 进行反Park变换得到 U_alpha U_beta。
- 用 U_alpha U_beta 合成电压空间矢量,输入SVPWM模块进行调制,输出该时刻三个半桥的状态编码值(前文有提到)
- 按照前面输出的编码值控制三相逆变器的MOS管开关,驱动电机
- 循环上述步骤
无刷电机
- 磁铁同极相斥、异极相吸
- 通电螺线圈能够产生磁场
以A(U)为例,分析无刷电机驱动电路
分析A(U),B(V),C(W)得到8种状态
建立坐标系
建立ABC自然坐标系
经过矢量合成,得到合成后的电流和电压矢量,得到六个电压矢量U_dc,两个电压矢量0;通过调整六个电压矢量,来得到中间任意角度的电压矢量。
建立dq旋转坐标系,为了找到与内转子垂直方向的力,这时效率最高。
合成q轴电压矢量,通过调整不通过方向的电压矢量,比如U_4 U_6 以及U_0和U_7的频率占比来调整合成电压矢量的方向。
生成PWM
SVPWM
SVPWM能够解决“利用8个电压空间矢量来产生圆形旋转磁场的问题”
由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使电机电流波形尽可能接近于理想的正弦波形。
大部分文章的SVPWM的算法结果都是这样。这个结果主要是针对无感FOC的算法,无感FOC需要根据Vα和Vβ来确定扇区和角度,但是对于有位置传感器,特别是有编码器的电机来说可以直接获取角度,上面的推导计算过头了。