ARTICLE DETAIL

资讯详情

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

FOC与BLDC无感控制实战:从原理到调试全解析

FOC与BLDC无感控制实战:从原理到调试全解析 搞电机控制的同行应该都有这种体会圈子里聊FOC必然绕不开BLDC聊BLDC又免不了被人追问你的FOC跑起来没有。今天不聊虚的把FOC和BLDC这一整摊事从头到尾捋一遍把我自己踩过的坑、反复验证过的调试方法全部摊开说清楚给刚入门无感FOC的朋友一条相对顺畅的路。FOCField-Oriented Control磁场定向控制和BLDCBrushless Direct Current Motor无刷直流电机这几年在无人机、机器人关节、电动车、风机水泵和家电变频驱动里基本成了刚需关键词。很多硬件工程师和嵌入式工程师第一次接触这个领域的时候都会被一堆概念砸晕Clarke变换、Park变换、SVPWM、反电动势过零检测、滑模观测器、高频注入……每个名词单独看都懂串在一起就不知道怎么下手。这篇文章适合准备上手FOC的硬件工程师、做算法入门的嵌入式工程师以及想搞清楚无感FOC启动策略和观测器原理的进阶玩家。1. 先分清BLDC、PMSM和FOC到底是什么关系1.1 无刷直流电机这个名字其实有点误导BLDC全称Brushless Direct Current Motor直译过来叫无刷直流电机但它在物理结构上并不是一台能直接用直流电源驱动的电机。它的转子上贴着永磁体定子上绕着三相绕组通常是星形连接外部必须通过一个三相逆变器来产生旋转磁场才能拖着转子转起来。说白了BLDC内部走的是交流电只是驱动方式从机械换向变成了电子换向所以叫无刷直流更多是历史习惯。很多新手在这里容易犯迷糊既然是直流母线供电为什么电机三相线上测出来是交流波形原因就在逆变器。母线电压是恒定的直流但MOSFET按照一定规律开关把直流斩成三相PWM电压等效到电机绕组上就是三相交流。电机本身只认电流不认你母线是直流还是交流它需要的是三相平衡的正弦电流或者梯形波电流这一点后面讲控制方式的时候很重要。这里还要区分一个概念BLDC和PMSMPermanent Magnet Synchronous Motor永磁同步电机。两者的转子都是永磁体差别主要在反电动势波形。BLDC的反电动势设计成梯形波PMSM设计成正弦波。反电动势波形不同最优的控制方式也不同。梯形波反电动势适合用六步换相法控制正弦波反电动势适合用FOC控制。实际工程上有些电机标称BLDC但反电动势接近正弦也有人直接拿FOC去控制它效果也不错。所以没必要在名称上死磕关键看反电动势波形和控制目标。1.2 六步换相和FOC的本质差异六步换相法是BLDC最经典的控制方式。原理很简单在任意时刻只给两相通电第三相悬空每60度电角度切换一次通电组合一个电周期内共6个状态。电机的霍尔传感器提供转子位置信号控制器根据霍尔状态决定开关管怎么导通。这种方式的优点是控制逻辑简单、不需要高分辨率的位置反馈、电流采样要求低一个比较器就能干活。缺点是转矩脉动大、噪声大、效率偏低。因为电流方向切换是阶跃式的电磁转矩不是恒定值在换相瞬间会产生明显的转矩跌落电机高速运行时听得见的嗡嗡声多数是这里来的。FOC的思路完全不同。它不搞两相通电、一相悬空而是让三相绕组在任意时刻都同时通电每一相的电流都按正弦规律变化三相合成的电流矢量大小恒定、方向跟着转子转。这样产生的电磁转矩是平滑的没有换相冲击噪声和效率都优于六步换相。我做一个简单的对比方便大家选型对比项六步换相法FOC位置反馈霍尔传感器60度分辨率编码器/霍尔观测器连续角度电流波形梯形波/方波正弦波转矩脉动大换相时有跌落小接近恒定噪声明显小效率中等高控制复杂度低高低速性能一般好成本低高1.3 到底什么时候必须上FOC不是所有BLDC项目都需要FOC。我见过不少产品用六步换相跑得好好的硬上FOC反而把项目搞黄了。做技术选型要实事求是风机、水泵、散热风扇这类负载对噪声和效率有一定要求但对动态响应要求不高很多方案用六步换相加超前角控制就能满足。无人机电调、机器人关节、云台电机、电动工具这类应用需要低速大转矩、高动态响应、低噪声这些是FOC的主场。如果电机本身反电动势波形是正弦或者接近正弦用六步换相会有额外的转矩脉动这时候FOC优势非常明显。还有一个现实问题你的MCU算力够不够。FOC每次电流环需要做两次坐标变换、三个PI运算和一次SVPWM计算再加上无感观测器的迭代对MCU的主频和ADC采样速率都有要求。STM32F103这种级别的芯片跑FOC有点吃力F303、F405或者G4系列会更从容。六步换相则随便一个便宜MCU都能跑。2. FOC核心原理与算法结构用大白话拆开讲2.1 Clarke变换和Park变换把交流变成直流FOC最核心的思想是解耦。三相电机的电流在物理上是三根线里流动的交流量幅值和频率都在变直接用PID去跟踪交流信号会非常头疼。FOC的做法是通过坐标变换把三相旋转坐标系中的交流量投影到随转子旋转的坐标系上变成两个直流量。第一步叫Clarke变换把三相静止坐标系ia、ib、ic变成两相静止坐标系iα、iβ。因为三相绕组的轴线在空间上相差120度任意一个空间电流矢量都可以用这三相电流的合成来表示。Clarke变换相当于把三维向量投影到二维平面公式如下iα ia iβ (ia 2*ib) / √3这里用了等幅值变换所以系数是2/3和1/√3这一组。如果三相电流是平衡的满足iaibic0就可以省掉一个电流采样通道用两相电流推第三相。第二步叫Park变换把静止坐标系中的交流量变成旋转坐标系中的直流量。这步需要知道转子电角度θ因为静止坐标系和旋转坐标系之间存在一个角度差id iα*cosθ iβ*sinθ iq -iα*sinθ iβ*cosθ变换完之后id和iq都是直流量。id代表的是转子磁链方向的电流分量控制它就能控制励磁iq代表的是垂直方向的电流分量控制它就能控制转矩。这就是FOC的精髓把怎么让电机转起来这个问题简化成了怎么控制两个直流量的问题。我经常跟身边同事打比方三相电机交流量就像一个人在操场跑圈速度时快时慢不好描述。但如果你跟着他一起跑看到的相对速度就是稳定的。Park变换做的就是这个跟着一起跑的事情。2.2 电流环、速度环、位置环层层嵌套FOC的控制系统通常分三层电流内环、速度中环、位置外环。电流环是基础响应速度最快速度环在电流环外面负责维持转速稳定位置环在最高层机器人关节这类应用才需要。电流环的核心是两个PI控制器d轴PI控制idq轴PI控制iq。最常见的控制策略是id0也就是让励磁电流为零所有电流都用来产生转矩。对于表贴式PMSM永磁体本身已经提供了足够的励磁id0就是最高效的策略。对于内置式PMSMIPM可以利用磁阻转矩id通常给负值这属于弱磁控制的范畴。PI参数的整定是调试重点。电流环的PI输出经过反Park变换得到Uα、Uβ再送入SVPWM模块生成三相占空比。整个链条上的每一个环节都会影响最终效果但电流环的参数决定了系统的根本性能。一个调得好的电流环电流给定阶跃响应应该又快又稳没有超调也没有振荡。速度环在电流环外面它的输出作为iq的给定值。速度环带宽通常比电流环低一个数量级这样内外环不会相互干扰保证系统稳定。2.3 SVPWM怎样用开关组合生成正弦电压电流环算出了Uα和Uβ这是两相静止坐标系下的电压矢量。SVPWMSpace Vector Pulse Width Modulation的任务就是把这个电压矢量变成三相逆变器六个开关管的占空比。三相全桥的开关管只有8种组合状态其中6个非零矢量和2个零矢量。SVPWM的思路是把期望的电压矢量分解到它所在扇区的两个相邻基本矢量上根据矢量作用时间合成。每个PWM周期内通过合理分配非零矢量和零矢量的作用时间让输出的平均电压等于期望电压矢量。具体实现步骤分三步根据Uα和Uβ判断电压矢量所在的扇区。计算相邻两个基本矢量的作用时间T1和T2。根据载波周期和死区时间生成三对互补的PWM信号通常是七段式输出。七段式是工业上用得最多的方案它的好处是每次开关切换只动一个桥臂开关损耗小电流谐波也小。算作用时间时有几个系数需要预先算好用查表法可以省掉在线开根号运算节省MCU算力。SVPWM相比传统的SPWM母线电压利用率更高。SPWM在正弦波调制下相电压峰值最高只能到母线电压的一半SVPWM可以通过注入零序分量实现过调制相电压峰值能到母线电压的0.577倍直观理解就是同样的母线电压SVPWM能让电机跑得更快或者同样的转速下母线电压可以更低。3. 硬件设计中的关键细节采样、驱动、位置反馈3.1 相电流采样位置、运放、电路实例FOC必须先采样相电流电流采样不准后面的算法全是白搭。常见采样方案有三种低端采样在三个下管MOSFET的源极和地之间各接一个采样电阻只在对应下管导通时采样。高端采样在母线正极串联采样电阻用差分放大器采集。三相桥臂采样在每个桥臂上分别采样最灵活成本也最高。低端采样是性价比最高的方案多数入门级FOC控制器都用这种方式。两个关键参数是采样电阻阻值和运放放大倍数。举个例子电机额定电流10A采选用10mΩ的采样电阻满量程压降是100mV。如果ADC参考电压是3.3V要留20%的裕量那么ADC满量程对应2.64V比较合适放大倍数就是2.64V/0.1V26.4倍取整选26倍或者28倍。运放选型上要注意三点带宽要够至少10MHz以上不然PWM开关瞬间的电流信号会失真偏置电压要小否则零电流时的采样偏置会直接影响PI控制要用轨到轨运放保证输出能接近ADC的满量程范围。还有一个新手容易忽略的地方采样窗口必须避开MOSFET开关瞬间的振铃。下管刚导通的几百纳秒内电流存在严重的振荡这时候采样得到的数据没有意义。必须在PWM定时器里配置采样触发点把ADC触发时间设置在PWM周期中间位置避开开关边沿。3.2 栅极驱动、死区时间与续流问题三相全桥的驱动芯片选型直接决定可靠性和EMI表现。栅极驱动芯片需要自带自举电路因为上管MOSFET的源极电压是浮动的必须用自举电容提供栅极驱动电压。自举电容的容量要够大否则高频下上管驱动电压跌落导致导通不充分、发热严重。死区时间Dead Time是上下管切换时防止直通的关键参数。理想情况下上管关断和下管导通应该同时发生但实际MOSFET有开关延迟如果同时给信号一瞬间上下管都导通母线直接短路这是真正会炸板的事故。死区时间一般设在200ns到2μs之间根据MOSFET的栅极电荷和驱动电流来确定。死区太短不安全太长会引入电压畸变需要在两者之间找平衡。死区期间电流怎么走这就引出续流问题。BLDC电机的绕组是感性负载电流不能突变。当上管关断、下管还未导通时电感会维持电流方向续流路径通过下管的体二极管或者外部并联的肖特基二极管形成回路。MOSFET内部的体二极管能完成续流但压降大、恢复速度慢。要求高的设计会在MOSFET外部反并联一个肖特基二极管降低续流压降减少发热。续流路径设计不好会导致母线电压尖峰。我在调试过程中测到过一次驱动芯片烧毁的案例原因就是续流回路寄生电感太大关断瞬间在漏极产生了超过MOSFET耐压的尖峰。后来在PCB布局上把功率环路的面积压缩到最小并且加了RC吸收电路问题才解决。3.3 霍尔传感器安装与相位偏置角校准位置反馈对FOC至关重要。坐标变换需要连续的电角度霍尔传感器只能提供60度的分辨率所以单纯用霍尔跑FOC需要把霍尔信号处理成连续角度最常用的是根据霍尔状态查表加插值或者用电角度增量累积。这里有个工程上的坑霍尔传感器的安装位置和电机反电动势之间可能存在固定的相位偏差。如果霍尔信号的跳变沿和反电动势过零点没有对齐FOC算出来的电角度就是错的轻则效率下降、电流变大重则电机带载转不起来。校准相位偏置角的标准做法是这样的用示波器同时测量霍尔A相输出和电机A相反电动势注意反电动势测量要在电机空载状态下用外力把电机转到稳定的速度。对比霍尔信号上升沿和反电动势过零点的位置测量两者之间的电角度差。把这个偏差角度作为补偿量写入程序在每次读取霍尔角度时加上或减去这个偏置。如果用的是编码器校准方式类似给电机通一个固定的d轴电流矢量让转子转到已知位置读取编码器值作为电角度零点把这个零点偏移量保存下来。增量式编码器每次上电都要重新找零绝对式编码器可以省掉这一步。常见的磁编码器如MT6701精度很高价格也合适现在很多机器人关节电机都用它。4. 无感FOC的实战要点从零开始把转速估出来4.1 反电动势过零点检测无感方案的地基无感FOC把霍尔和编码器都省掉了转子位置靠算法估算最经典的方法是反电动势BEMF检测。原理很简单转子永磁体转动时会在定子绕组中感应出与转速成正比的反电动势这个反电动势的方向和转子位置直接相关。检测到反电动势的过零点就能推算转子位置。工程上检测反电动势有三条路端电压比较法。在PWM关断期间检测非导通相的端电压与母线电压中点进行比较过零点就是反电动势过零点。虚拟中性点法。把三相绕组的中性点电压重构出来和反电动势比较抗干扰能力更强。低通滤波法。把端电压通过低通滤波器利用相移关系反推过零点。这种方法实现简单但滤波器带来的相位延迟需要补偿。反电动势检测最大的限制是低速。转速越低反电动势幅值越小信噪比急剧下降。当转速低到一定程度反电动势信号完全淹没在噪声里过零检测基本失效。所以纯粹靠反电动势的无感FOC做不到零速启动和极低速运行这是原理层面的限制不是调参能解决的。4.2 滑模观测器和龙伯格观测器更平滑的角度估算用反电动势过零检测只能获得离散的位置信息对于需要连续角度的FOC还不够。更好的方案是用观测器实时估计反电动势分量再从中提取连续电角度。滑模观测器SMO和扩展龙伯格观测器ELO是工程上最常用的两种。滑模观测器的思路是构造一个电流估计模型让实际电流和估计电流的误差通过滑模面逐渐收敛。由于滑模控制的特性系统在滑模面上会产生高频抖振需要在提取反电动势时加低通滤波器。滑模观测器的优点是鲁棒性强、对参数误差不敏感缺点是滤波延迟会导致角度估计滞后高速时要注意补偿。龙伯格观测器相比之下更温和它基于电机的电压方程用增益矩阵把估计误差反馈回去让状态估计不断逼近真实值。它的性能对电机参数定子电阻、电感比较敏感参数不准时估计角度会偏。实际产品中经常把两者结合起来高速用龙伯格观测器低速用高频注入切换点根据转速和负载条件来定。观测器输出的电角度还需要经过锁相环或者反正切函数提取位置。用锁相环的好处是能滤除高频噪声得到的速度信号更平滑用在速度环上更稳定。反正切方法简单但角度值噪声大速度环容易抖。4.3 无感启动策略预定位、开环强拖、切换闭环无感FOC最难的场景之一是启动。转子静止时反电动势为零观测器完全失效怎么让电机转起来工程上通用的流程分三步第一步是预定位。向定子通一个固定的电流矢量通常就是d轴电流转子会被这个磁场拉到已知位置。这个过程需要持续几百毫秒确保转子稳定到位。缺点是如果负载转矩大或者有外力干扰预定位会失败。第二步是I/f开环强拖。从预定位完成的位置开始给定一个逐渐增大的电流幅值和逐渐增大的电角速度让电流矢量带着转子转起来。这阶段不需要知道转子的实际位置但电流幅值必须足够大否则带不动负载太大又会过流或者导致转子失步。第三步是切换闭环。当转速升高到反电动势足以维持观测器正常工作的水平之后把控制权从开环切换到闭环。切换时机的选择很关键切换太早观测器角度不准电流会出现剧烈波动切换太晚电机可能已经失步。我常用的做法是在转速达到额定转速5%到10%时开始切换切换时用速度误差作为平滑过渡条件比如观测器速度连续跟得上给定速度一段时间后再正式切入。切换过程的平滑度直接影响启动成功率。一个实用的做法是在开环阶段就运行观测器但只用观测结果做诊断比较不参与控制当观测角度和开环给定角度差小于一定阈值时再平滑过渡到闭环。这样切换过程几乎是无感的我实测下来启动成功率能到95%以上。4.4 零速和低速下的转子初始位置检测有些应用不允许启动前先预定位比如机械臂关节在启动那一刻就必须输出力矩而且方向不能反。这时候需要高频注入法High Frequency Injection来检测转子初始位置。高频注入法的原理往定子绕组中注入一个高频电压信号通常是500Hz到2kHz的正弦或方波由于转子永磁体的磁路不对称性凸极效应注入信号在不同转子位置上的电流响应不同通过解调这个电流响应就能算出转子初始位置。高频注入对电机参数有要求。表贴式永磁电机SPM凸极率接近1高频注入效果不好需要利用磁饱和引起的等效凸极效应难度更大。内置式永磁电机IPM凸极率明显高频注入效果好得多。所以做无感FOC电机选型时就要考虑这个因素不能等程序写完了才发现电机不合适。我个人的建议是对于大多数入门项目不必一上来就啃高频注入。先把预定位加开环强拖的方案跑通这个方案对电机要求低控制逻辑简单80%的应用场景都够用了。等有空闲时间再研究高频注入它是一个独立的深水区需要大量的信号处理功底。5. 调试难点、常见问题与排查方法5.1 调试工具和调试顺序少走半年弯路FOC调试最忌讳一上来就全功能联调。我的调试顺序是固定的这套流程带过好几个新人基本都能顺利上手第一步先用开环V/F控制验证硬件。给一个给定的电压和频率不管位置、不管电流环先确认三相全桥PWM输出正常、电机能转、电流采样数据合理。这一步能隔离出硬件问题比如MOSFET焊接短路、采样电阻虚焊、PWM通道顺序接反。第二步标定电流采样偏置。把PWM占空比设为50%确保三相电流为零读取ADC采样值这个值就是软件偏置。FOC算法里必须扣除这个偏置否则PI控制器会一直输出电机静止时也有电流。第三步开环电流环。用固定的电角度和固定转矩电流手动控制电机转子位置验证Clarke变换、Park变换、PI控制器和SVPWM是否闭环正确。第四步切换到闭环位置或速度模式加入观测器逐步调高速度。调试工具方面示波器是必须的而且至少两个通道。我需要同时看相电流波形和PWM驱动波形判断采样点是否落在电流稳定区。电流探头能直观看到电流波形质量建议有条件就配一个没有电流探头可以用采样电阻两端电压波形代替。逻辑分析仪用来抓取霍尔信号和PWM信号的时序关系排查换相逻辑问题非常好用。5.2 高频问题速查表现象、原因、解决办法调试FOC过程中我整理了一份问题速查表。下面这些情况都是我实际遇到过或者帮别人排查过的覆盖80%的初学者踩坑场景现象可能原因排查方法电机不转有嗡嗡声PWM频率太低或占空比为0检查PWM配置确认占空比实际输出波形电机启动时反转一下预定位电流太小或时间太短增大预定位电流幅值延长定位时间电流波形严重失真呈锯齿状采样点落在开关振铃区域调整ADC触发时刻推迟到PWM周期中间电流环跟踪给定有静差PI积分限幅太小增大积分限幅检查d/q轴电流反馈是否正确高速时转矩下降电角度估计滞后增大观测器带宽补偿低通滤波器相位延迟空载正常带载启动失败开环强拖电流幅值不够增大强拖电流延长强拖时间再切闭环电机发热严重电流采样偏置未校准重新标定零电流偏置检查id是否跟踪给定运行中偶发过流报警死区时间太短导致桥臂直通增大死区时间检查MOSFET开关波形速度环振荡转速上下抖速度环PI参数过大降低速度环P适度减小速度环I相同PWM下不同电机表现差异大电机参数不匹配校准定子电阻和电感参数更新到观测器模型5.3 几个值得收藏的调试心得第一电流环的PI参数不要凭感觉凑。一个快速整定方法先设积分系数为零逐渐增大比例系数直到电流波形出现明显振荡这时把比例系数降到振荡临界值的60%~70%然后加入积分系数从较小的值开始增直到静态误差消失。这样得到的参数大概率能稳定运行后续再微调。第二调试时一定要看波形不要只看现象。我见过同事实测电流波形有明显交流分量但一直往PI参数上找原因最后发现是Park变换里的电角度符号反了。如果一开始就对比给定电流和反馈电流的波形这个问题半小时就能定位。第三母线电压采样很重要但经常被忽略。SVPWM占空比换算、电压前馈补偿都依赖母线电压的准确值。母线电压采样不准或者滤波太强导致响应慢会在负载突变时造成电流环响应迟钝。我一般用一个独立的ADC通道采样母线电压并在程序中做低通滤波和反向压降补偿。第四无感FOC的调试难度远大于有感FOC。如果你完全没有经验第一个项目建议先用带霍尔或者编码器的电机跑通闭环把坐标变换、PI控制、SVPWM这套搞清楚再切到无感方案。直接上无感出了bug你根本分不清是算法问题还是硬件问题。结尾做FOC和BLDC控制这几年我最深的体会是这个领域最大的难点不在某一个单一环节而在把所有环节串成一个稳定闭环的系统能力。硬件采样、坐标变换、环路控制、观测器、启动策略每一个环节单独拿出来都不算难但它们互相耦合任何一环出问题都会让整个系统看起来不正常。所以调试的时候要有耐心按部就班地分层验证不要想着一步到位把无感FOC跑起来。最后再分享一个小技巧遇到难排查的问题先停下来把电机的相序、编码器零点、霍尔相位偏置这些最基础的东西重新确认一遍。我踩过最大的坑就是在一个相序接反的电机上花了整整两天调PI参数。基础正确上层算法才有讨论价值。这套东西后续还可以往弱磁控制、MTPA最大转矩电流比、参数在线辨识这些方向深入先把基础闭环做扎实后面都是水到渠成的事。
返回列表