细说SVPWM原理及软件实现原理,关联PWM实现
细说SVPWM原理及软件实现原理,关联PWM实现
文章目录
- 细说SVPWM原理及软件实现原理,关联PWM实现
- 1. 前言
- 2. 基础控制原理回顾
- 2.1 FOC 原理回顾
- 2.2 细说 SVPWM
- 2.2.1 矢量扇区计算
- 2.2.2 矢量作用时间计算
- 2.2.3 如何理解 U4 = U6 = 2/3Udc?
- 2.2.4 如何理解 U4max = 2/3 Udc?
- 3. 各矢量作用时间如何关联到PWM?软件如何实现?
- 4. PWM输出占空比计算
- 4.1 Ta Tb Tc 时间计算
- 4.2 针对低端采样补充分析
- 5. 总结
1. 前言
在本人之前的博客中,针对直流无刷电机的 FOC 控制算法进行了一个详细且完整的叙述,从理论推导到实际实现的全过程展示;但由于文章篇幅过长,有些小的细节可能没有得到详细叙述。
本文将针对FOC运算中最复杂的部分——SVPWM的理论原理以及具体的软件实现原理进行详细讲解,特别是SVPWM的实现如何与实际的PWM占空比连接起来。相信看过此篇文章对你一定有莫大帮助!
在这之前对于FOC控制不熟悉的同学,或者想要更深入了解的同学,均推荐可阅读本人精心编写的几篇博客内容,希望对你有所帮助:
-
专栏:电机控制专栏(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(一)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(二)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 实践(点击跳转)
-
博文:直流无刷电机FOC控制原语
2. 基础控制原理回顾
在细说 SVPWM 之前,我们先对 FOC 矢量控制的整个原理进行一个简单的回顾,以便于我们在后续更好的理解后续的 SVPWM实现 以及对应的 PWM 输出的计算,同时检验下大家对于 FOC 矢量控制的理解。
2.1 FOC 原理回顾
关于FOC矢量控制步骤主要如下:
- 通过电流采样,获取 U V W 三相的实时电流 Ia Ib Ic;
- 通过 Clack 变换 将 U V W 三相电流由 U-V-W 三相坐标系 转换到 α-β 直角坐标系 得到 Iα Iβ;
- 之后通过 Park 变换 将 α-β 直角坐标系 转换到旋转的 d-q 坐标系 得到 Iq_feedback Id_feedback,且经过 park 变换之后电流将由正弦变换状态变为直流状态;
- 之后在 d-q 坐标系 上进行 PID 计算,PID目标值为 Iq_target 和 Id_target,反馈为 Iq_feedback 和 Id_feedback,PID的输出结果为 Uq 以及 Ud;
- 得到 Uq 以及 Ud 以后进行 反 Park 变换,由旋转的 d-q 坐标系 转换到 α-β 直角坐标系 得到 Uα Uβ;
- 之后便是采用 SVPWM 去实现 Uα Uβ 咯 ~
这便是整个FOC的控制回顾,如果你不能快速理解上述过程,建议可以先阅读上文中介绍到的博文进行学习 ~
2.2 细说 SVPWM
接下来继续回归下 SVPWM 是如何实现 Uα Uβ 的吧。
2.2.1 矢量扇区计算
Uα 和 Uβ 是在 α-β 直角坐标系 上的两个坐标轴方向的矢量,将 Uα 和 Uβ 通过力矩合成可以得到 Uref ,这个其实是我们最终需要输出的 合成力矩(后文中也称之为合成磁力)。
根据由三个半桥组成的电机驱动电路,采用三三通电方式(也即同一时间必须有三个管子打开),一共可以由六种组合,这便是我们所能得到的六个基础矢量;这六个基础矢量将矢量输出切割出了六个扇区。
之后我们需要思考的便是 Uref 所在哪一个扇区;因为 Uref 落在哪一个扇区,决定了此矢量由哪两个基础矢量合成;
关于扇区的判断方式,我们有两种方式,简单叙述如下:
方式一: 通过假设等式计算得出:
方式二: 通过正余弦角度推理计算:
- 根据 Uα 和 Uβ 的正负判断所处四象限中的哪一个象限
- 之后根据 sin(θ) = Uβ / Uα 计算值与 sin(60°) 大小做比对进一步确认所处的扇区位置即可
通过以上方法便可得到 Uref 所处的扇区位置,便可知 Uref 将由哪两个基础矢量去进行合成!,之后便是计算基础矢量的作用时间了!
2.2.2 矢量作用时间计算
知道基础矢量是由哪 “两个” 矢量组成之后,剩下的便是计算此两个基础矢量的作用时间以及零矢量的作用时间了。
根据 Uα 和 Uβ 我们可以计算出 T4 和 T6 所作用的时间,如下图所示:
2.2.3 如何理解 U4 = U6 = 2/3Udc?
在上述计算中,我们有使用到一个条件:
这个条件是如何产生的呢?
如上图所示,紫色的六边形区域是我们通过控制基础矢量的大小能够实现的合成矢量(合成磁力)所覆盖的区域,如果我们始终保持输出的磁力始终为最大值,则输出的磁力将按照下图中的六边形外边缘轨迹输出,此时我们会发现输出的磁力大小将会不均匀!
那么为了使我们输出的合成磁力的大小保持均匀,我们在绘制此六边形的内切圆,即上图中的粉色区域,内切圆的边缘轨迹即为:最大的能均匀输出的合成磁力输出轨迹,因为需要有保证我们矢量的大小均匀的条件,故我们应控制我们输出的合成磁力落在上图中的红色圆内区域!
那红色圆区域最大的输出磁力 Uref max 是多少,如何计算呢?
好家伙,这里又引入了一个条件了: U4max = 2/3 Udc, 这个又是怎么来的呢? 继续!
2.2.4 如何理解 U4max = 2/3 Udc?
起始这个很好理解,U4max 即为电机相电压的最大值,注意是相电压,而不是线电压!
什么是线电压?什么是相电压?直接看下图,一目了然!
综上分析,我们已经彻底弄明白了 Uref 的分解是如何计算的,采用同样的方式,可计算出 Uref 在其他扇区时对应的基础矢量作用时间,如何所示:
那么得到 V4 和 V6 矢量的作用时间 T4 和 T6 以及零矢量的作用时间 T0 和 T7 之后,我们又如何与PWM的值关联起来呢?这便是本文所重点讨论的内容了!
3. 各矢量作用时间如何关联到PWM?软件如何实现?
通过上述计算,我们已经可以得出各基础矢量的公式了,但是这个公式看上去似乎很不尽人意,还是一点也想不到如何将这与PWM的占空比联系起来,更别说使用上述公式实现代码了!
上面这些公式看上去很复杂,其实是因为还没经过化简,那么如何化简呢?
我们继续以第一扇区的 T4 和 T6 举例,根据2.2.3章节可知,如果控制矢量在内切圆,则 Uref_max 的最大值为 Udc/sqrt3,而Uref又是由 Uα 和 Uβ 组成,故可知 Uα 和 Uβ 的范围为: ±Udc/sqrt3 !!!
markdown 不好打公式,那我还是继续使用word编辑好贴图吧~
通过上述化简,最终我们拿到的 T4 = Ts x (sqrt(3)/2 x Uα` - 1/2 x Uβ`) ,Ts 的整个控制周期,取定时器的ARR更新寄存器值,Uα` 和 Uβ` 为 -1 ~ +1 的标量!
这个时候再来看看 Uα` 和 Uβ` 从何而来?
Uα` 和 Uβ` 是通过来自 Uq 和 Ud 经过反Park坐标变化而来,因此 Uq 和 Ud 的取值范围也将是 -1 ~ +1!
再来看看 Uq 和 Ud 又是从何而来?
Uq 和 Ud 来自电流环的PID计算结果,故在进行电流环PID计算的时候,我们需要将电流环的输出限幅设置在 ±1!
当然,有时为了方便PID调参,PID输出目标值太小了,会导致PID参数值通常需要设置的非常小,而这会关联到一些精度丢失,浮点运算等等麻烦的事情,因此我们还可以进行下优化!
我们可以把 Ts 缩小 ARR 倍,及 Ts 取1,对应的 Uα` 和 Uβ` 的范围将由 -1 ~ +1 变为 0 - ARR,注意不是 -ARR - ARR,因为我们输出的是互补PWM,当占空比 >50% 的时候 U相为正, CCR:输出高电平
- 方式B:
- CNT
- CNT > CCR:输出低电平
注意,我们这里分析的输出P波均是面向上半桥,下板桥采用互补输出! 如果你要面向下半桥,会存在差异,需你自行再分析下,都掌握了之后对你应该也不难~
采用不同的方式,对应的通道 CCR 计算方式不一样;
- 以通道A举例:
- 采用方式A,通道CCR值应设置为:ARR - Ta
- 采用方式B,通道CCR值应设置为:Ta
4.2 针对低端采样补充分析
以上有两种发波方式,各有其优缺点,那么具体到实际应用中,又有哪些注意事项呢?
我们以三电阻或者两电阻的低端采样分析下;
低端采样有一个注意点,那便是采样时机的控制,务必要求在下半桥mos管打开的时候才去进行采样,这个时候有意思的就来了。回到我们上一小节描述的两种发波方式:
- 方式A:
- CNT
- CNT > CCR:输出高电平
- 方式B:
- CNT
- CNT > CCR:输出低电平
再次提醒,注意此发波为面向上桥臂,下桥臂采用互补输出自动发波。
针对方式A,在三角波的起始位置,及CNT=0时,上桥臂PWM输出低,下桥臂输出高,此时下桥臂全部打开,可以进行采样;因此每次电流采样可由定时器的更新中断触发,或者在更新中断内调用函数对ADC进行软触发;进行电流采集后进行FOC运算;
针对方式B,在三角波的中央位置,及CNT=ARR时,上桥臂PWM输出低,下桥臂输出高,此时下桥臂全部打开,可以进行采样;因此此方式电流采样需要配置定时器通道4,通道4的比较值设置为 ARR,当通道4的发生比较事件时,触发ADC采样,或者在通道4的比较中断内调用函数对ADC进行软触发,并进行FOC运算!
方式A,采样点在更新中断发生后,FOC也在更新中断内;
方式B,采样点在通道4的比较中断发生后,FOC计算位于通道4的比较中断内;
所以说P波可不是乱发的,选对合适的很重要~
相信这才是实战的经验吧!希望帮助到看到这里的每一个人~
5. 总结
综上,便是对于SVPWM之PWM输出占空比计算的的补充,欢迎大家讨论留言!也欢迎大家点赞关注+收藏,大家的支持是我创作的动力~
-
专栏:电机控制专栏(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(一)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(二)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 实践(点击跳转)
-
博文:直流无刷电机FOC控制原语
-
- 方式A:
- 以通道A举例:
-
















