news 2026/4/28 11:34:11

FOC第二弹:为什么你的电机不转?一文搞懂 SVPWM 与神奇的“马鞍波”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FOC第二弹:为什么你的电机不转?一文搞懂 SVPWM 与神奇的“马鞍波”

前言:

在搞懂了 FOC 的电流环后,很多同学兴冲冲地写好了代码,结果电机不仅不转,MOS 管还烫得能煎鸡蛋。

问题往往出在“发波”环节。很多人试图直接把正弦波塞给 PWM 寄存器(这叫 SPWM),结果发现不仅电机没劲,母线电压还浪费了很大一部分。

现代 FOC 驱动无刷电机,100% 都在使用SVPWM(空间矢量脉宽调制)。今天,我们不扯枯燥的微积分,用最直白的话和核心代码,带你手撕 SVPWM 的正六边形魔法。

一、 为什么不用普通的正弦波(SPWM)?

SPWM 的思路很简单:你要三相交流电,我就给你生成三个正弦波形状的 PWM 占空比。

致命缺点:在 SPWM 中,相电压的最大幅值只能达到母线电压($V_{bus}$)的 $\frac{1}{2}$。也就是说,如果你用 12V 供电,电机内部真正感受到的有效电压连 6V 都不到!极大浪费了电源能力。

SVPWM 的降维打击:SVPWM 不是独立去看待三相电压,而是把三相逆变器的 6 个 MOS 管当成一个整体。它通过巧妙的开关组合,能在电机内部合成一个完美的圆形旋转磁场,并且母线电压利用率比 SPWM 高出整整 15.4%

二、 六边形结界:8 个基本矢量

无刷电机的驱动板有三个半桥(U、V、W),每个半桥有上下两个 MOS 管。

我们规定:上管开、下管关记为1;上管关、下管开记为0

这三个半桥一共有 $2^3 = 8$ 种开关组合。这 8 种组合在空间中会产生 8 个电压矢量:

  • 6 个非零矢量($V_1$ ~ $V_6$):它们互成 60°,刚好构成一个正六边形

  • 2 个零矢量($V_0, V_7$):三个上管全开,或者三个下管全开。电机引脚被短接,没有电压差,这就是“刹车”状态。

三、 魔法时刻:如何合成任意矢量?(时间拼凑法)

现在,PID 算法告诉我们:“我需要一个指向 45°、大小为 5V 的目标矢量 $V_{ref}$”。

但我们手里只有那 6 个固定在 0°、60°、120°... 的基本矢量,怎么办?

SVPWM 的核心原理:平行四边形法则 + 时间平均!

  1. 扇区判断(Sector):先看 $V_{ref}$ 落在哪个 60° 的扇区里(比如 45° 落在第一扇区,由 $V_1(0^\circ)$ 和 $V_2(60^\circ)$ 包围)。

  2. 时间分配(T1, T2):在极短的 PWM 周期(比如 100us)内,我们让逆变器先输出一段时间的 $V_1$(设为 $T_1$),再输出一段时间的 $V_2$(设为 $T_2$)。

  3. 塞入零矢量(T0):如果 $T_1 + T_2$ 小于总周期 100us,剩下的时间怎么办?全部输出零矢量($V_0$ 或 $V_7$)

靠着在微秒级时间里疯狂切换这三个状态,电机的电感会把它们“积分”平滑掉,最终电机感受到的,就是一个完美的 $V_{ref}$!

四、 灵魂代码:生成传说中的“马鞍波”

如果你把 SVPWM 最终算出来的 U、V、W 三相 PWM 占空比画出来,你会发现它根本不是正弦波,而是一个中间凹陷的“马鞍波”(Saddle Wave)

正是因为这个奇特的马鞍波(本质是注入了三次谐波),才让 SVPWM 突破了供电电压的限制。

核心代码实现(七段式发波精简版):

// 假设已计算出扇区 sector,以及作用时间 T1, T2 // T_pwm 为 PWM 总周期 void SVPWM_Generate(uint8_t sector, float T1, float T2, float T_pwm) { float Ta, Tb, Tc; // 三相的比较寄存器值 (占空比) float T0 = (T_pwm - T1 - T2) / 2.0f; // 零矢量平分,构成七段式发波,减小谐波 // 根据不同扇区,分配 MOS 管的导通时间 switch(sector) { case 1: Ta = T0; // A相先开 Tb = T0 + T1; // B相后开 Tc = T0 + T1 + T2; // C相最后开 break; case 2: Ta = T0 + T2; Tb = T0; Tc = T0 + T1 + T2; break; // ... (省略 case 3~6,原理相同,只是相序互换) } // 将 Ta, Tb, Tc 写入 STM32 高级定时器的 CCR1, CCR2, CCR3 寄存器 TIM1->CCR1 = (uint16_t)Ta; TIM1->CCR2 = (uint16_t)Tb; TIM1->CCR3 = (uint16_t)Tc; }
五、 总结

SVPWM 就是单片机里的“调酒师”。它手里只有 6 瓶烈酒(基本矢量)和 1 瓶白水(零矢量),却能通过精确控制每种液体的倒入时间,为你调出任意度数、任意口味的完美鸡尾酒(旋转磁场)。搞懂了 SVPWM,你的无刷电机才算真正拥有了灵魂。


今日互动:你在写 SVPWM 的时候,有没有遇到过“扇区判断错误”导致电机剧烈抖动、甚至烧 MOS 管的惨痛经历?你最后是怎么定位到 bug 的?欢迎在评论区对线!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 11:32:24

B站评论数据采集深度实战:你真的需要手动翻页吗?

B站评论数据采集深度实战:你真的需要手动翻页吗? 【免费下载链接】BilibiliCommentScraper B站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数 项目地址: https://gitcode.com/gh_mirrors…

作者头像 李华
网站建设 2026/4/28 11:28:37

暗黑2存档编辑器深度评测:单机玩家的终极游戏掌控工具

暗黑2存档编辑器深度评测:单机玩家的终极游戏掌控工具 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而疲惫不堪吗?想要快速体验不同职业的build却不想从头练级&#xff1…

作者头像 李华
网站建设 2026/4/28 11:27:39

Frpc客户端后台运行全攻略:除了NSSM,还有这几种Windows隐藏技巧

Frpc客户端后台运行全攻略:Windows系统下的6种隐身方案 在Windows环境下实现Frpc客户端的后台持久运行,远不止NSSM这一种选择。不同场景下——无论是临时测试、长期生产环境,还是受限于管理员权限的特殊情况——都需要匹配不同的技术方案。本…

作者头像 李华
网站建设 2026/4/28 11:24:28

降AI率工具实测:100%AI率直降0% 这款直接封神

2026年毕业季临近,知网、维普两大国内核心学术平台已完成AIGC检测算法的全面迭代升级:知网将AI检测模型更新至3.0版本,实现句子级精准识别,对AI生成内容的识别能力提升15-18个百分点;维普则重构检测逻辑,新…

作者头像 李华
网站建设 2026/4/28 11:24:01

基于微信小程序的一站式校园缴费平台设计与实现

第一章 项目背景与意义1.1 课题背景在信息化时代的大背景之下,移动互联网技术不断发展,智慧校园建设成了提高教育现代化水平的重要途径,校园缴费属于学校日常运转不可或缺的一部分,它的便捷性、高效性、安全性会直接影响学生、教…

作者头像 李华