前面铺垫了很多的理论和仿真,像Clarke变换、Park变换、七段式SVPWM计算流程,SVPWM基于Simulink的仿真,stm32f4的基础外设操作等,经过这些理论与部分实践的结合,终于要迈进实质性接触电机的时候了——FOC电机开环转动。
再重新温习下FOC(Field-Oriented Control),磁场定向控制,也被称作矢量控制(VC,Vector Control),FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行“像素级”控制,实现很多传统电机控制方法所无法达到的效果~
有感FOC一般使用磁传感器,如霍尔,或者光学编码器或者磁编码器等传感器来感知转子位置和速度,使用此方式可以更在精确和稳定进行电机定位和转速控制。无感FOC通常采用单电阻,双电阻,三电阻等方式进行采样,或者采用反电动势进行电机转子位置计算,此方式对电机控制精度稍微,稳定性不如有感FOC,算法处理上更加复杂,但优势在于成本更低。
1、开环FOC控制流程
上图中先忽略PI控制器。
①对电机三相电流进行采样得到iα和iβ,
②将 iα,iβ, 经过Clarke变换得到iSα和iSα
③将 iSα,iSβ 经过Park变换得到 iSd和iSq,经过比例计算为Vd和Vq
④将 Vd、Vq 进行反Park变换得到 Vα Vβ
⑤用 Vα Vβ合成电压空间矢量,输入SVPWM模块进行调制,输出该时刻三个半桥的状态编码值
⑥按照前面输出的编码值控制三相逆变器的MOS管开关,驱动电机
⑦循环上述步骤
准备工作到现在,还差电流采集和角度θ的获取。电流采集我这用stm32外设ADC实现,角度θ如何处理?分两种情况,如果电机没有带测量角度的传感器,则直接给定自增;另一种带传感器如编码器,则通过传感器读取。这块要注意机械角度(编码器获取)和电角度的转换。下次打算用自增的试试水。
SVPWM算法可直接抄书《现代永磁同步电机控制原理及MATLAB仿真》。
2、Clarke变换勘误
之前的Clarke变换用纯数学方式推导(做投影),其实只是第一步,并不是实际控制中使用的。使用等幅值变换写成矩阵形式如下:
根据基尔霍夫电流定律(电路中任一个节点上,在任意时刻,流入节点的电流之和等于流出节点的电流之和,如下图),有:
ia+ib+ic=0
最终实际使用的式子:
欢迎关注:
电机马上就要转起来了~
FOC专题——什么是开环转?
https://blog.csdn.net/Anitawen/article/details/129850436
Clarke变换
http://dengfoc.com/#/dengfoc/%E7%81%AF%E5%93%A5%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E5%86%99FOC%E7%AE%97%E6%B3%95/3.1%E5%85%8B%E6%8B%89%E5%85%8B%E5%8F%98%E6%8D%A2