嵌入式--所有电机控制的FOC的总结

本文深入探讨了磁场定向控制(FOC)的基本原理及其在永磁同步电机控制中的应用。详细介绍了通过调整三相交流电来实现旋转磁场,进而控制电机转矩的方法。此外,还对比了不同步进电机的操作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式–FOC的总结

 我们在很多设计上会用到FPGA控制电机,比如伺服电机,直流无刷电机,也有很多人用STM32来控制的,但是总的来说,一通百通,都没有离开控制的精华:FOC矢量控制,在此再次感谢那些默默无闻的数学家。还是那句话:不要迷恋哥,哥只是一个努力的永无止境开发者。

第一节:背景知识
第二节:永磁电机的FOC和SVPWM
第三节:死区。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.1物理背景

在这里插入图片描述(2)右手法则(想起了高中的物理老师)
如左图所示,当一条导线通上电之后,在其周围将会产生一个磁场,这个时候如果我们在导线周围施加一个定向磁场,那么导线将会受到一个力的作用,如左图中的红色箭头所示。
我们可以采用右手定则来确定这种力的方向,如右图所示。

1.2 磁场定向控制理论FOC

FOC在整个交流电机控制技术中,具有能够使电机平稳运行和快速的瞬态响应的特点。
假设我们现在手头上的电机是两相或者三相的交流电机,那么我们只要适当的实时去控制通向定子绕组的三相正弦电流(相为差120º),在定子内部将会产生一个旋转磁场,如左图动画所示。
旋转磁场的旋转的频率等于三相正弦交流电的频率。
从中间的动画中我们可以看出,假如此时我们把嵌有永磁体的转子放置在定子内部,那么由于产生的旋转磁场与转子内部永磁体的磁场的相互吸引,转子将会在旋转磁场的带动下开始旋转。
如右边的动画所示,黑色的旋转矢量是合成的定
子磁链的方向。
在这里插入图片描述1.2 磁场定向控制理论FOC
从左图的动画中,我们可以看到,定子磁链与转子磁链在同一条直线上,即两者角度为0或者180度。而从中间的这张图,我们可以看出此时转子受到的力矩是最小的。
但是在FOC中,我们往往希望转子能够得到最大的力矩,从中间这张图我们可以知道当定子磁链与转子磁链成+/-90度时,转子能够获得最大的力矩。
以电机逆时针转动为例,启动电机之后,转子磁链方向将滞后定子磁链90度,如右边的动画所示;当电机顺时针转动的时候,将超前90度。
在这里插入图片描述如果我们把转子磁链所在的方向定义为d轴,那么我们要做的就是时刻检测d轴所在的位置,并根据这个信息,我们要控制流入定子的三相正弦电流,使合成的定子磁链的方向始终与转子磁链的方向成+/-90度的关系,而合成的定子磁链与d轴成90度时的那个轴方向,我们称之为q轴。
如上所述,当转子逆时针转动时,d轴也跟着转动。所以,我们需要实时的校正定子电流,从而使定子电流合成的定子磁链的方向始终超前d轴90度。这种关系,我们可以从右边的动画中看出,红色的d轴代表转子磁链,绿色的q轴代表定子磁链。
所以,当我们想要获得更大的转矩的时候,我们只需要实时的增大定子电流,以增大定子磁链的强度,即使右图动画中的绿色q轴变长,但同时我们也要时刻保证q轴超前d轴90度。

1.3 两相混合式步进电机工作原理

在这里插入图片描述从左边的图,我们可以看到两相混合式步进电机的定子上有四个绕有线圈的磁极,相对磁极的线圈串联 组成两相绕组。
由于同一相绕组两个线圈绕线的方向相反,所以通过同一电流时,电流从相反方向流过同一相绕组产生的磁场方向也相反。
中间的动画是满步(Full Stepping)操作方式下的运行情况,右边的动画是半步(Half-stepping)操作方式的运行情况,后面将做一下简要描述。

在这里插入图片描述满步操作方式如左图的动画所示,就是分四步使转子转动一圈,一步转动90度,同时又分为单满步和双满步,四步一个循环。
单满步就是一步只通一相线圈的电,通电波形图如右上角的图所示,各相通电顺序为A–》B–》A’–》B’–》A–》……
双满步就是一步同时通两相线圈的电,通点波形图如右下角的图所示通电顺序为AB–》BA’–》A’B’–》B’A–》AB–》……
在这里插入图片描述

半步操作方式如左边的动画所示,就是以“单相—双相—单相—双相”的通电方式,使转子每一步转动45度角,八步一个循环。
通电波形图如中间的图所示,分别为A–》AB–》B–》BA’
–》A’–》A’B’–》B’–》B’A–》A–》……
在这里插入图片描述在这里插入图片描述定子绕组一般制成多相(三、四、五相不等),通常为三相绕组。三相绕组沿定子铁心对称分布,在空间互差120度电角度,通入三相交流电时,产生旋转磁场。
这一部分可以说是非常重要的,从下图动画中我们可以看到通向定子绕组的三相交流电相互影响,并产生一个旋转磁场。
并且,我们同时将三相定子绕组各自通以交流电后的效果图(空间相差120度)和三相正弦交流电(相位相差120度)的效果图给展现了出来。
从动画中,我们可以看到三相绕组各自产生的电磁矢量随着各自电流随正弦波向前跳变的过程中做同步变化。
从右下角的动画中,我们可以看到,如果我们把这三个随电流变化的电磁矢量相加在一起,那么将会同步合成一个旋转的电磁矢量,也就是我们的定子磁链,并且这个电磁矢量的幅值时刻保持不变,如动画中的粉红色矢量所示。
在这里插入图片描述并且,合成的旋转电磁矢量的频率等于正弦交流电的频率。
所以,从这些动画中,我们可以得到的一个非常重要的结论,即我们可以通过适当的调整定子的三相交流电来合成任意一个角度的旋转电磁矢量。
这就是FOC( field-oriented control )最最基础的本质原则。换句话说,就是我们必须以转子磁链的方向为参考基准,定向的控制由三相交流电合成定子磁链的方向超前或滞后于转子磁链90度的方向,以使电机能够更稳定的运转。

第二节 永磁同步电机的FOC及SVPWM

待续。

### 步进电机 FOC 控制算法实现原理 步进电机的磁场定向控制(Field-Oriented Control, FOC)是一种先进的电机控制技术,能够提高效率并改善动态响应性能。通过将定子电流分解成两个相互垂直分量——转矩分量和磁链分量,并分别对其进行独立调节,从而达到优化电机运行的目的。 具体来说,在FOC控制系统中: - 首先测量三相交流电输入到逆变器端口处的实际电压与电流信号; - 接着利用Clarke变换将三相静止坐标系下的电气变量转换至两相同步旋转坐标系下表示; - 经过Park变换进一步映射为直轴(d-axis) 和交轴(q-axis) 的直流分量; - 对这两个分量实施PI控制器调整后反向执行上述过程完成最终输出驱动脉宽调制(PWM)[^1]。 这种控制方法允许更精细地管理电动机内部产生的电磁场特性,使得即使是在低速运转条件下也能保持良好的扭矩表现和平稳度。 ### 代码示例 下面是一个简单的Arduino平台上的FOC库用于步进电机位置开环控制的例子。此例子展示了初始化设置以及基本的速度设定功能。 ```cpp #include "SimpleFOCLibrary.h" // 创建 SimpleFOCStepper 类实例 SimpleFOCStepper stepper; void setup() { Serial.begin(9600); // 设置电机参数 stepper.setup(); } void loop() { static unsigned long previousMillis = 0; const long interval = 10; // 更新频率 unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // 设定位移目标值 float targetPosition = /* 插入计算或读取的目标位移 */; stepper.move(targetPosition); // 执行一次迭代更新 stepper.iterate(); } } ``` 这段程序框架提供了基础结构来操作带有内置FOC支持硬件接口连接好的步进马达设备。请注意实际应用时还需要根据具体的硬件配置适当修改部分函数定义及其参数选项。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值