ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从PWM调速到无感FOC:一本书串起电机控制全部知识链路

从PWM调速到无感FOC:一本书串起电机控制全部知识链路 最开始接触电机控制我以为“让电机转起来”就是全部。后来在实验室里做直流电机调速拧电位器改变PWM占空比轮子转速跟着变感觉已经掌握了电机控制的精髓。直到某天看到“FOC”这个词翻了一堆源码、技术文档和别人的项目笔记才发现自己手里全是碎片PWM是一套说法BLDC换相是另一套说法PMSM矢量控制又是一套天书谁跟谁都接不上。这篇文章想聊聊我推荐的一本能把电机控制知识串起来的书准确说是这类“串联型”书的正确打开方式。它不会教你某一个孤立功能而是把直流电机、PWM调速、坐标变换、电流环、SVPWM、无感观测器这些看似分散的东西按一条主线从头到尾接起来。如果你正处于“会调PWM但看不懂FOC代码”的阶段这篇内容应该能帮你把整个知识链路理顺。1. 从有刷直流到FOC这本书贯穿的是一条“进化主线”1.1 一台电机的前世今生机械换相、电子换相、正弦波驱动很多教程把直流电机、BLDC、PMSM分开讲结果就是每本书都只讲一段你学完之后依然不知道它们之间是什么关系。真正能把知识串起来的书一定会从电机本体开始把三代电机讲成一条演化链。有刷直流电机靠碳刷和换向器机械换相电枢电流的方向随着转子转动自动切换你只需要控制端电压的大小就能控制转速简单粗暴。到了无刷直流电机BLDC机械换向器被电子开关替代霍尔传感器告诉你什么时候该换相但反电动势是梯形波用六步换相法就能驱动。再到永磁同步电机PMSM反电动势是正弦波要求每一刻都知道转子角度并用正弦电流连续驱动这就是FOC的用武之地。这三代电机的区别可以从几个关键维度去看对比项有刷直流电机无刷直流电机 BLDC永磁同步电机 PMSM换相方式机械换相碳刷换向器电子换相六步换相电子换相需要连续角度反电动势波形与绕组结构有关梯形波正弦波驱动方式直流电压 / PWM方波 / PWM三相正弦电流SVPWM转子位置反馈不需要霍尔传感器即可编码器/观测器/高频注入控制复杂度低中高这条主线说明一个核心问题FOC并不是凭空冒出来的它要有刷直流电机的控制思路延续——让定子磁场和转子磁场始终保持在最优夹角附近。只是PMSM的转子在转你没办法像有刷电机那样靠机械换向自动保持角度所以必须用数学手段去实时计算这个角度。理解了这条演化链再看FOC它就是“把有刷直流电机的天然优势通过算法在无刷电机上人为地复现出来”。1.2 为什么大部分教材让新手越看越乱我也是被坑过之后才想明白这件事。传统教材分三块电机学讲磁场、绕组合电压方程电力电子讲PWM调制和逆变器自动控制讲PID和系统稳定性。三块知识本身都没问题可实际做电机控制时它们根本不能分开用。你调一个电流环既要懂电机绕组的电感电阻又要懂PWM占空比怎么换算成电压还要懂PI调节器的带宽和稳定性——这三件事分散在三本书里中间没有一座桥。而好的“串联型”书籍会在每一个环节都告诉你这个物理量从哪来经过哪个变换最后变成PWM波的哪个参数。它把数学方程、硬件电路、控制算法放在同一张桌子上讲而不是分成三个互不相干的科目。1.3 我选书的标准不看出身看它能不能“闭环”每个人推荐书都有自己的偏好我的标准很简单——这本书能不能做到“首尾相接”是否从直流电机的基本电压方程出发而不是一上来就摆三相坐标变换矩阵。是否在讲Clark变换和Park变换之前先讲清楚“为什么非变换不可”。是否把Park变换里的角度和转子实际位置、编码器读数对应起来而不是只给公式。是否在最后能落到SVPWM波形和代码层面告诉你算法怎么变成桥臂开关信号。是否包含无感控制相关内容至少把反电动势观测或高频注入的原理讲明白。按这个标准选出来的书不一定是最厚的但一定是最能帮你把知识串起来的。2. 直流电机部分PWM调速、H桥正反转和你的第一个闭环2.1 所有电机控制的起点直流电机的电压方程很多人觉得直流电机简单到不值一提但实际上FOC里所有的控制逻辑都能从直流电机的电压方程里找到影子。直流电机的电枢回路满足U E Ia·Ra La·(dIa/dt)其中E是反电动势正比于转速E Ke·ω电磁转矩T正比于电枢电流T Kt·Ia。也就是说电流决定转矩转矩通过转动惯量积分成转速转速又反过来产生反电动势。当系统稳态时端电压和反电动势基本平衡电流大小由负载决定。看到没有这就是最原始的“电流环”思想你控制端电压但真正决定电磁转矩的是电流。FOC之所以要加电流环正是因为电机本质上是电流驱动的器件电压只是产生电流的手段。这本书如果能把直流电机的这个方程讲透后面所有内容都有了根。2.2 PWM调速占空比、续流二极管、开关频率直流电机调速最常用的手段是PWM。电机本身是个大电感它不会响应几十千赫兹的高频开关只会响应电压的平均值。所以改变的占空比本质上是改变电枢两端的平均电压。PWM调压有几个细节是新手容易踩坑的续流二极管不能省。电机是感性负载开关管关断瞬间电流不能突变必须通过续流二极管继续流通否则开关管会被反向电动势击穿。开关频率的选择。太低会有电流纹波和可闻噪声太高会增加开关损耗。我做实验常用的范围是10kHz到20kHz根据使用的MOS管驱动能力和控制环采样频率来定。占空比和平均电压的关系在理想情况下是线性的但实际要注意PWM死区和功率管压降低速时尤其明显。单纯调PWM让电机转起来不难但要做到“占空比变化→电流可控→转速稳定”这一条链路的理解才算真的入门了直流电机控制。2.3 正反转控制继电器方案和H桥方案怎么选与“直流电机继电器正反转控制”对应的经典问题是让电机换向。常见两种做法继电器换向和H桥换向。继电器方案成本低、驱动逻辑简单用两个继电器切换电枢两端电源的正负极PWM只控制通断即可。缺点是继电器机械寿命有限切换频率不能太高适合对正反转频率要求不高的场合比如门窗电机、水泵。H桥方案用四个开关管通过上下桥臂的组合导通实现正转、反转和制动。H桥可以支持高频PWM同时实现方向和速度控制而且可以做到能量回馈。缺点是需要考虑死区、防直通保护和驱动电路。两者的取舍可以从下面这张表里看得很清楚对比项继电器正反转H桥正反转切换频率低机械寿命高可配合PWM控制方式继电器换向PWM调速四路PWM/逻辑组合电路复杂度低中高制动能力基本没有可主动制动/能耗制动典型成本低中我的建议是学习阶段可以先用继电器方案理解“方向和速度分开控制”的逻辑但真正做产品或者做FOC项目H桥是绕不开的基础拓扑因为三相逆变器本质上就是三个H桥的变体。2.4 第一个闭环直流电机速度环的PI调试把PWM调速做好之后就该加闭环了。用编码器或霍尔测速把当前转速和期望转速的误差送给PI调节器PI输出给PWM占空比电机转速就被“锁”在目标值附近。这个阶段要理解三个东西比例项负责根据当前误差快速反应积分项负责消除稳态误差如果P太大系统会震荡电机会忽快忽慢甚至啸叫如果I太大会出现超调甚至积分饱和。直流电机速度环调明白了后面FOC的电流环、速度环、位置环都是同一套思路只是反馈量从“转速”换成“电流”或“位置”控制周期从几十毫秒缩短到几十微秒。这个从直流电机到FOC的“闭环思路迁移”正是串联型书籍最值得讲的地方。3. FOC的数学地基从三相静止ABC到两相旋转DQ坐标3.1 为什么三相电机不能像直流电机那样直接控制到了PMSM这里情况变得麻烦。三相定子绕组通入正弦电流会产生一个旋转的定子磁场转子是永磁体它的磁场方向和转子位置绑定。电磁转矩的大小受定子磁场和转子磁场夹角的影响想要获得最大转矩必须让两个磁场的夹角保持在某个最优值附近。问题在于转子一直在转定子电流又是三相正弦波每一瞬间的电磁状态都在变化你没法像控制直流电机那样直接说“给多大电压就出多大转矩”。要想沿用直流电机的思路就得有一个数学工具把三相正弦量“折算”成一个类似直流电机的电枢电流和励磁电流。3.2 Clark变换把三相电流投影到两相静止坐标系三相绕组在空间上相差120度三相电流Ia、Ib、Ic是一组交流量。Clark变换把这三相电流投影到两相静止坐标系αβ坐标系相当于从“三根轴”变成“两根正交轴”。由于电机三相绕组星形连接或者对称通常有Ia Ib Ic 0所以等幅值Clark变换可以简化为Iα Ia Iβ (Ia 2·Ib) / √3从几何角度看Clark变换就是一个坐标投影原本在平面上的三相120度分布变成两个正交分量。经过这一变换电流仍然是交流量但它从“三相纠缠”变成了“两个正交的分量”后面方便做旋转坐标变换。这里有一个新手容易困惑的点变换结果跟参考方向、等幅值还是等功率有关看任何一个FOC工程时都要先确认它用的是什么约定否则对不上源码。3.3 Park变换跟随转子一起旋转的坐标系Clark变换只是“降维”真正让直流控制思想落地的是Park变换。Park变换的意义是以转子角度θ为旋转角把αβ坐标系里的交流量投影到与转子同步旋转的DQ坐标系。旋转之后的结果是原来随时间正弦变化的电流变成了两个直流量D轴电流Id它对应转子磁场方向的励磁分量Q轴电流Iq它对应与转子磁场垂直、真正产生转矩的力矩分量。对表贴式永磁同步电机来说转矩公式可以简化成T 1.5·p·ψf·Iq。也就是说只要让Id保持为0转矩就和Iq成正比控制Iq就等于直接控制转矩——这和直流电机“T Kt·Ia”的思路完全一致。这就是为什么FOC会让PI调节器去控制Id和Iq这两个直流量而不是直接控制三相交流电。直流控制下的PI带宽、稳定性、抗扰性都更容易设计。3.4 转子角度θ整套算法的心脏Park变换中有一个关键输入转子角度θ。这个角度直接决定坐标变换的准确性。有传感器方案用编码器或霍尔加角度解算无感方案用观测器估计角度。如果θ有偏差D轴和Q轴的电流会互相串扰表现为同一份力矩电流下实际产生转矩变小、损耗变大、甚至失步。很多新手在跑通FOC代码后遇到的第一个奇怪现象就是“电机发抖、发烫但转不起来”大概率是θ方向不对或者电角度初始偏差。所以看任何FOC资料都要时刻记住坐标变换是数学角度是连接数学和物理的桥梁。这本书如果能把“θ是怎么从编码器读数变成Park变换角度的”一步步写出来那它在串联知识这块就成功了一半。4. 三大闭环电流环、速度环、位置环怎么一层层调通4.1 三环嵌套的整体关系FOC控制器的经典结构是嵌套式三环最内层是电流环控制周期最短通常是PWM周期的整数分之一比如10kHz中间一层是速度环控制周期更长比如1kHz最外层是位置环通常再慢一档。从信号流向上看位置环输出目标转速速度环输出目标转矩即目标Iq电流环输出目标电压最后经过逆Park变换和SVPWM生成PWM波。电流环最“快”因为它直接面对绕组电感带来的电流延迟位置环最“慢”因为机械系统转动惯量比较大响应速度天然受限。4.2 电流环PI电感、带宽和采样频率电流环的难点在于电机绕组是RL负载电流对电压的响应有惯性。绕组电感和电阻决定了电流环的电气时间常数。设计PI时比例项Kp主要对应“电感带来的电压补偿”积分项Ki主要对应“电阻带来的稳态压降”。一个常用整定思路是先把Kp设置成L与PWM周期Ts的比值量级把Ki设置成R与Ts相关的量级然后在此基础上微调。我个人习惯的初值方向是参数作用初值量级调大时的现象Kp对电流误差的比例响应约 L / Ts响应更快过大则震荡Ki消除稳态电流误差约 R / Ts稳态误差变小过大会超调积分限幅防止积分饱和输出电压限幅的70%左右限幅过小响应变慢调试的时候一定要先把电流环单独测好给定一个Id和Iq看实际反馈电流能不能快速跟上波形有没有明显的震荡。电流环是速度环的基础这里调不好外环再折腾都白搭。4.3 速度环滤波、限幅和前馈速度环反馈来自编码器或者观测器转速。机械系统的转动惯量越大速度环带宽就越低比例增益不能给太大否则容易在反转或加减速时激起机械共振。实际工程里速度环的积分限幅也很重要——目标电流超出过流保护值时积分器继续积累只会让恢复过程更糟。调速度环的经验是先给比较大的比例增益看系统是否稳定然后逐步加入积分。如果转速在目标值附近来回振荡多半是比例太大如果总是差一点到不了目标再考虑加积分或检查摩擦补偿。4.4 位置环用比例控制前馈就够位置环最简单最常用的就是比例控制器有时加一个速度前馈来减小跟踪滞后。位置环的带宽至少要低于速度环的1/5到1/10否则会造成换向时的超调。做伺服定位项目时位置环的实际表现更多取决于速度环和电流环的品质而不是位置控制器本身有多花哨。到这里你会发现从直流电机的速度环到FOC的电流环控制器的设计逻辑是一模一样的先测反馈再算误差然后用PI去校正。区别只是反馈量的性质和控制周期。把这层“同构”关系想清楚三环嵌套就不难理解了。5. SVPWM与PWM波形从算法到功率级的最后一公里5.1 为什么FOC基本都用SVPWM而不是SPWM电流环产出的最终输出电压指令是DQ坐标系下的Ud和Uq经过逆Park变换得到Uα和Uβ接下来的事就是把它变成三个桥臂的占空比。最朴素的做法是SPWM用正弦波和载波比较生成PWM。但SPWM对母线电压的利用率不高输出相电压幅值最多到Udc/2线性区而SVPWM利用电压矢量的组合可以让线性区相电压幅值达到Udc/√3大约比SPWM高出15%。同时SVPWM的电流谐波更小直流母线利用率更高所以商用驱动器基本都用SVPWM。5.2 SVPWM的扇区判断和作用时间SVPWM的核心思想是逆变器八个开关状态对应八个基本电压矢量其中包括两个零矢量全上全下模式和六个非零矢量。任意目标电压矢量都可以用所在扇区的两个相邻非零矢量和零矢量按不同的时间比例合成。具体分三步根据Uα和Uβ判断目标矢量落在哪个扇区。计算相邻两个非零矢量的作用时间需要用到中间变量常见的有X、Y、Z三个变量不同扇区套用不同的组合公式。在两个非零矢量之间插入零矢量构成“七段式”PWM波形让桥臂切换尽量少减少谐波。七段式PWM的实质就是“在一个PWM周期内电压矢量从零矢量A出发经过相邻非零矢量再到零矢量B然后对称返回”。这种对称的开关序列能让电流波形更平滑。5.3 定时器配置互补PWM、死区时间和同步触发算法算出了占空比最终还是要靠定时器的PWM功能输出到功率管。以常见的STM32高级定时器为例FOC工程里几乎都会用到这些配置定时器工作在中心对齐模式计数方向交替增减方便在波形的中间点做ADC同步采样。开启互补PWM输出同时配置死区时间。死区的作用是防止上下桥臂同时导通导致直通短路。死区太小会击穿管子太大则增加波形畸变工程上常用几百纳秒到几微秒具体取决于MOS管/IGBT的关断延迟。用定时器的更新事件或比较事件触发ADC采样保证采样时刻和PWM波形的确定性对齐。代码层面这些配置并不复杂更重要的是理解“为什么要在中心对齐模式下采样”以及“死区为什么会引起电流谐波”。这类和硬件紧密结合的知识正是把算法串到实物上的关键环节。5.4 在PWM中点采样电流噪声最小的采样时刻电流采样是FOC最容易出问题的地方。三相逆变器的开关动作会让采样电阻两端的电压在开关瞬间剧烈跳变此时采样大概率采到一堆毛刺。业界标准做法是把采样点放在PWM周期中点也就是零矢量作用时间最长、开关噪声相对平静的位置。实际项目里ADC会由定时器触发触发时刻设在计数器达到周期值的中间位置同时采样保持时间要设置得足够长让采样电容稳定。三电阻采样还要注意两个采样电阻在采样窗口内都不能被短接这涉及到在不同扇区里对采样通道做切换很多芯片手册里有专门的表格说明。新手第一次跑FOC如果电流波形像刺猬先别急着调PI去看看采样时刻和触发配置对不对。6. 无感FOC滑模观测器、初始位置检测与三段式启动6.1 去掉编码器之后角度信息从哪来有感FOC依赖编码器安装成本高、可靠性也受环境限制。无感FOC的思路是不装转子位置传感器而是利用电机的电气特性反推转子角度。反电动势是一个天然的信息源转子转动时绕组会在反电动势里“刻”下角度信息。只要能从电压和电流估算出反电动势就能通过数学手段提取转子位置和转速。可问题也很明显转速越低反电动势幅值越小接近零速时几乎没有可用的反电动势信号。这也是无感FOC在启动阶段最有挑战性的原因。6.2 滑模观测器像一个不停纠偏的“开关”无感FOC中最常见的位置估计算法是滑模观测器SMO。它的原理可以这样理解根据电机模型用当前电压和电流估算出一个预测电流然后拿预测电流和实际采样电流做差如果存在误差就通过一个强非线性的开关函数典型是符号函数sgn把误差快速“压”回去让估算状态始终跟随实际状态。在这个强拽的过程中等效的低频控制量里隐藏着反电动势信息。得到反电动势的αβ分量之后可以用atan2计算出转子角度的原始估计值。由于开关函数会带来高频抖动角度估计通常还要经过一个锁相环PLL或低通滤波器来平滑处理。用生活化的类比来说滑模观测器就像一个人在暗暗的小路上走路一旦感觉左右偏了就立刻用很大的力度往中间修正走到最后他的修正信号里就包含了“这条路朝哪个方向弯”的信息。这是无感FOC最核心的数学机制。6.3 零速和低速的尴尬反电动势消失后怎么办滑模观测器在转速足够高时很有效但转速很低时反电动势几乎为零被淹没在噪声里。此时不能指望观测器直接工作必须先解决“初始位置”或“启动”。无感FOC的启动通常分两步走初始位置检测。如果系统允许转子固定不动可以采用预定位施加一个固定方向的电流矢量把转子强制拉到某个已知角度然后以此为起点。如果不允许启动前转子转动就需要高频信号注入——这个方法通过向D轴叠加上百赫兹到上千赫兹的高频电压观察Q轴的高频电流响应来判断磁极方向原理上能实现零速位置检测但计算量和调参难度都更大。三段式启动。常用策略是“预定位→I/f强拖→切换无感闭环”。先让转子停在已知位置然后用“电流频率比”的开环方式把转子逐步加速这阶段无需准确角度当转速达到反电动势足够明显的程度后再切换为无感闭环模式。切换条件是很容易被忽视的细节。如果切得太早观测器角度还没收敛电机会减速甚至卡死如果切得太晚I/f强拖的电流已经不稳定。工程上会监控观测器角度误差的收敛程度或者等转速到达一个阈值后再平滑切换。6.4 高频注入的补充说明与工程取舍高频注入零速检测听起来很高级但不是所有场景都需要。带载频繁起停且不允许转动的生活场景才更适合做高频注入普通风机、泵类负载启动时负载很小用预定位和I/f强拖就能解决没必要一开始就上最复杂的方案。这本书如果能把“无感FOC为什么要有这么多启动策略”讲清楚而不是直接甩一堆公式我认为它就算把知识串到位了。7. 实际项目里比算法更磨人的几个坑以及一条学习建议7.1 电流采样噪声最大的隐形杀手很多FOC项目明明算法没问题电机就是转得不顺问题往往出在采样电路。采样电阻太大会增加损耗太小信噪比不够运放带宽不够会淹没高频分量PCB布线、地线处理不当开关噪声会直接耦合进采样通道。调试时用示波器看电流波形如果噪声明显大于有效信号先别急着调PI把布线和采样滤波器搞好再说。7.2 电角度对齐编码器装歪了一切白费有感FOC用的编码器安装时电角度零点必须和电机模型的零位对应。如果编码器安装有偏差Iq指令产生的实际力矩方向就会偏电机表现为电流很大但输出无力。类似问题排查起来特别隐蔽经验是用一个已知角度的直流电流矢量去定位反推编码器的零点偏移再写入程序作为常量补偿。7.3 硬件过流保护不能全靠软件无论算法写得多好过流保护的响应速度都远超软件控制周期。电机相位短路或机械堵转时电流可以在几微秒内飙升到烧管级别。硬件比较器硬件封锁PWM输出的保护链路必须独立于控制程序存在。这个和算法无关但它是所有电机控制项目安全运行的底线。7.4 一条建议先让直流电机闭环再碰FOC如果让我给新手一条最实用的路线大概是先拿一台有刷直流电机做PWM调速和速度环随便用个小开发板就能完成再换BLDC上电机驱动器用霍尔做六步换相然后才有必要碰PMSM和FOC。每一步都是下一步的基础而且每一步都能在实体电机上看到直观效果。我见过太多人直接从无感FOC入门结果连“电流环响应慢是什么感觉”都没建立只能在报错日志里乱撞。最后再分享一点个人体会。知识串联的关键不在记公式而在建立“控制回路”的意识无论直流电机还是FOC核心动作都是“测物理量→算误差→按PI调整→输出能量”。一旦你从直流电机速度环里建立起这个回路感再看FOC的坐标变换、SVPWM、观测器就会发现它们都是在为这条回路服务。希望这篇能把那条线画清楚让你少走我当初走过的弯路。
返回列表