拓冰建站拓冰建站
首页 / 资讯中心 / 正文

中心对齐PWM下FOC电流采样详解:单/双/三电阻方案选型与调试避坑

1. 为什么FOC调试一上来就先折腾电流采样做FOC磁场定向控制的朋友应该都有这种体会算法框架搭好了SVPWM波形也出来了电机也能转但一看电流波形全是毛刺毛刺一大过流保护就跳保护一跳电机就开始抽搐。折腾半天以为是PI参数没调好结果把代码翻了个底朝天最后发现是电流采样环节出了问题。FOC的核心本质是电流环控制电流采样就是这个控制环路的“眼睛”。眼睛看不清东西后面算得再漂亮都是白搭。而对于绝大多数电机控制方案来说电流采样都和PWM的触发方式强相关——尤其是使用中心对齐PWMCenter-Aligned PWM时单电阻、双电阻、三电阻三种采样方案在时序、硬件、重构算法上各有各的讲究也各有各的坑。这篇文章就围绕“中心对齐PWM下的电流采样”展开把单/双/三电阻三种方案的核心原理、接线方式、采样时刻点选择、最小采样窗口计算、硬件设计要点都过一遍重点说说那些容易让人踩坑的细节帮还在调车、调浆、调伺服的朋友少走弯路也尽可能避免“上电即炸机”的尴尬局面。适合谁看正在做FOC驱动器开发的嵌入式工程师、做航模电调/机器人关节模组/伺服驱动的开发者、以及刚入门无感FOC想自己搭一套控制板的学习者。如果你还没有接触过FOC建议先花点时间把Clark变换、Park变换和SVPWM的基本概念补上不然有些时序上的内容不太好对应。2. 三种采样方案选型前先搞清楚各自的原理和适用边界2.1 三电阻采样最直白、最稳妥的方案三电阻采样的思路非常朴素在电机三相桥臂的下桥臂分别串联或者并联一个采样电阻通过检测每个下桥臂导通时流过电阻的电流来得到三相电流。在三相逆变器中任意时刻都有两个下桥臂处于导通状态对应SVPWM中的两个有效矢量一个下桥臂处于关断状态对应零矢量。所以只要选对采样窗口三电阻方案每个PWM周期至少可以同时采到两相电流第三相电流通过基尔霍夫电流定律算出来。三电阻方案最大的优点就是简单、直接、鲁棒。采样时刻选得比较宽裕每个采样电阻上的电流波形相对对称不容易受死区时间影响的干扰。而且即使电机低速、低调制比运行也有足够的有效矢量时间来保证采样窗口存在。缺点也显而易见成本高一些需要三个采样电阻、三个运放调理电路占PCB面积三路采样通道都要进ADC对MCU的ADC资源要求也更多。2.2 双电阻采样性能和成本的折中双电阻采样用两个采样电阻采集任意两相电流第三相电流通过IaIbIc0计算得到。这个方法在目前的中低端伺服、机器人关节、无人机电调上用得非常多。它的关键点是必须在非零矢量期间完成两相电流的采样。也就是说采样时刻必须落在有效矢量区间内并且要保证此时恰好有两个下桥臂导通。这个窗口相对三电阻要窄尤其是在低调制比低频低速时有效矢量时间极短很容易出现采样窗口不足的问题。双电阻方案的优势是比三电阻省一路采样电路成本低一些同时比单电阻好做制约少抗干扰能力也还不错。2.3 单电阻采样极限省成本但重构复杂单电阻采样是所有方案里最省成本的只需要在直流母线侧放一个采样电阻通过检测不同开关状态下流过母线的电流脉冲结合SVPWM扇区信息重构出三相电流。原理上单电阻在一个PWM周期内需要至少两个不同的有效矢量采样时刻——分别在两个不同的非零矢量中间时刻采集母线电流再通过坐标变换重构出某一相或某两相电流最后算出三相信流。难点在于当两个有效矢量中的任意一个时间太短时低调制比或高调制比都有可能出现采样窗口不足ADC可能还没完成转换矢量就已经切换了。这种情况下只能做移相或者插入测量矢量等补偿处理算法复杂度明显上升。对新手而言单电阻方案并不是一个“好上手”的选择。2.4 在中心对齐PWM下三种方案的采样时刻怎么排中心对齐PWM有两种最常见的计数方式一种是先增后减另一种是先减后增。计数器到达峰值PRD/ARR或零点ZERO时比较匹配事件触发PWM翻转。典型的三相桥臂PWM生成方式就是分别用三对比较寄存器控制三路PWM的占空比和死区。在这种结构下一个PWM周期内有两个采样“静默点”计数器的峰值和零点。这两个位置对应着特定的开关状态。对三电阻采样来说通常选择在零点或峰值的中间位置触发ADC采样此时所有下桥臂要么全部开通低端调制要么全部关断高端调制流过采样电阻的电流对应已知状态可以一次采三路。对双电阻采样来说则要在有效矢量中间时刻触发ADC也就是SVPWM扇区切换过程中的某个特征位置。这个位置往往不等于计数器峰值或零点需要通过比较匹配事件来触发。单电阻采样更复杂一些需要在一个PWM周期内安排两个不同的触发点还要求这两个触发点对应的矢量时间都足够长。这个“采样时刻点的选择”是整个电流采样设计里最容易被初学者忽略也是最容易出问题的地方。很多人直接把ADC触发放在定时器更新事件上结果在中心对齐模式下采出来的电流波形乱七八糟原因就是没搞清楚自己用的到底是要在零矢量采样还是有效矢量采样的方案。3. 采样窗口的估算与最小采样时间这里算错就容易出问题3.1 最小采样时间由什么组成先说结论最小采样时间要同时满足三个环节的需求——死区时间、开关振铃时间、ADC采样保持时间和运放建立时间。在实际驱动器里PWM切换瞬间会产生一个电流尖峰这个尖峰来自开关管的寄生电容充放电以及续流二极管反向恢复。在尖峰存在的这段时间去采样采集到的必然是乱七八糟的高频分量。所以采样点必须避开这个振铃区间。这三部分加起来时间上大致可以估算为死区时间一般0.5~2us视开关管和驱动器的速度而定开关振铃时间一般0.5~1.5us看栅极电阻和回路寄生电感运放建立时间取决于运放带宽和压摆率一般0.2~1usADC采样保持时间取决于ADC采样时间配置一般在0.1~0.5us。所以最小采样窗口至少在2us以上稳妥一点3us以上。你可以直接测试一下把示波器探头夹在采样电阻两端让电机转起来可以开环给一个小占空比看看有效矢量期间采样电阻上的波形振铃要多久才能稳定。这个实测值最真实比任何估算都可靠。3.2 三电阻方案的最小采样窗口怎么算三电阻方案的最小采样窗口主要由SVPWM扇区内某一相下桥臂的最小导通时间决定。举个例子设PWM频率20kHz周期50us中心对齐模式下半个周期25us。如果调制比在某些位置很低某一个有效矢量的作用时间可能只有3~4us。扣除死区和振铃可用的采样窗口可能就只剩下1~2us了这就很紧张了。一般来说三电阻方案要求每个PWM周期中任意一个有效矢量的作用时间都要大于最小采样时间。如果算出来采样窗口不足可以考虑提高PWM频率不是好选择频率越高周期越短每周期可用的采样窗口反而越窄降低PWM频率能换来更宽的采样窗口但电流纹波会变大改用移相策略或者单电阻补偿算法在高调制比区域做额外处理在硬件上想办法缩短死区和振铃时间比如减小栅极电阻加快开关速度。所以在设定PWM频率和死区时间之前先自己算一遍最小采样时间再确认在所有调制比范围内采样窗口够不够这是“不炸机”的基本功。3.3 运放带宽对采样窗口的影响很多人容易忽略运放带宽的问题。电流采样电阻两端的信号是脉冲信号为了维持信号的边缘陡峭度运放的带宽必须足够高。如果运放带宽不够信号建立时间变长原本2us就能稳定的信号可能3us都稳定不了。极限情况下ADC触发时采到的还是一个没建立好的电压测出来的电流值偏低导致电流环增益不准表现出来就是电机高速运转时力矩忽大忽小甚至引发控制发散。运放带宽至少选择开关频率10倍以上才比较安全。20kHz的PWM运放带宽至少选200kHz实际推荐选1MHz以上比如常用的AD8606带宽10MHz、OPA2333带宽350kHz这类。注意OPA2333虽然零漂性能好但带宽偏低用于电流采样时要注意建立时间是否足够。高带宽运放如AD8606、MCP6V02零漂2MHz通常表现更好。4. 硬件电路设计细节采样电阻、滤波、布局与保护4.1 电流采样电路输入滤波怎么选电流采样电路一般都会在运放输入端加一个RC低通滤波器用来滤除高频开关噪声。但这个滤波器并不是越大越好因为RC低通会引入相位延迟导致采样信号建立时间变长。RC截止频率怎么选经验值截止频率放在开关频率的10~20倍左右比如20kHz开关频率RC截止频率取200kHz~500kHz。再算一个例子如果采样电阻为10mΩ运放输入端的滤波电阻选100Ω那么滤波电容C1/(2π×f_c×R)取f_c为300kHz左右时C大约5.6nF实际选4.7nF~10nF都可以。但也要注意RC滤波的R会与运放的输入电容形成另一个极点如果R太大容易和运放输入电容相互作用产生不必要的振荡。通常R建议控制在100Ω到1kΩ之间。4.2 采样电阻的选型阻值、功率与寄生电感采样电阻阻值的选择是矛盾的阻值大采到的信号幅值高信噪比好但阻值太大会导致功率损耗大、发热严重而且会改变电路的等效参数。通常做法是让采样电阻在额定电流下的压降不超过50~100mV。比如额定电流30A采样电阻取2mΩ满量程压降60mV功率PI²R1.8W必须选2W以上的功率电阻。如果要兼顾小电流精度可以考虑用两个电阻并联例如两个3mΩ并联得到1.5mΩ降低等效电阻并分散发热。采样电阻的寄生电感也很关键。对于低阻值采样电阻寄带电感在某些情况下反而会主导高频阻抗导致采样波形产生严重的振铃。建议选用合金电阻、锰铜电阻这类低感抗元件或者采用开尔文连接四线制方式把采样电阻的电流路径和电压检测路径分开避免大电流路径上的杂散压降被叠加到采样信号里。4.3 PCB布局一条走线位置不对也能毁掉整板电流采样的PCB布局核心就两个字短、净。“短”是指采样电阻到运放输入的距离尽可能短采样信号走线不要跨越功率区域不要和其他高di/dt的走线平行走线。“净”是指采样信号的参考地必须独立、干净。最好把采样电阻的“地”端直接引回到控制芯片的模拟地AGND并在靠近运放电源引脚放置去耦电容。采样信号走线尽量两侧包地防止耦合噪声。有一点几乎人人都踩过坑功率地和信号地直接在采样电阻一端短接导致功率回路上产生的压降全部叠加到采样信号参考地上最终在ADC读数里呈现在一个明显的电流偏置上。正确做法是采样电阻的功率电流路径和控制信号的地路径只在单点汇合最好在采样电阻的负载端附近直接短接且这个点要尽量靠近采样电阻本体。4.4 过流保护不能只靠硬件比较器如果你把过流保护完全寄希望于软件比如在ADC中断里判断电流值是否超限那你是给自己埋了一颗雷。ADC有采样周期和转换延迟加上中断响应时间整个闭环可能几百微秒甚至几毫秒才响应。在这个时间内开关管早就烧掉了。硬件上应该增加一个快速的比较器保护电路电压超过阈值直接关断PWM输出拉低使能或者触发刹车。这个比较器的响应时间应该在微秒级别。另外PWM故障保护要充分利用MCU的高级定时器刹车功能。STM32的高级定时器有BKIN刹车输入引脚可以在检测到故障时直接把PWM输出置为无效电平同时产生中断告知主控。这个功能的配置要在PWM初始化时就完成不要等出故障了再去开。5. 软件层面ADC触发时刻与中心对齐PWM的配合5.1 中心对齐PWM的模式配置在STM32中设置中心对齐模式主要是在TIMx_CR1中设置CMS位Center-aligned Mode Select。CMS01表示计数器在向上计数时比较匹配向下计数时不匹配CMS10表示向下计数时匹配CMS11表示向上和向下都匹配常用于产生对称PWM。FOC一般推荐使用CMS11这样PWM波形关于周期中点完全对称电流纹波最小谐波也低。在配置好PWM后还要记得设置死区Dead-TimeSTM32的刹车和死区寄存器BDTR中的DTG位来控制。死区时间不能为0否则上下桥臂可能出现直通短路这个在电机驱动里就是“炸机”的最大原因之一。5.2 采样时刻点怎么和ADC触发对齐中心对齐模式下计数器到达峰值或零点时ADC触发信号可以由定时器的TRGO触发输出事件给出。对于三电阻方案一般选择在峰值处或者在零点处触发ADC。此时三相下桥臂都处于导通状态低端调制或者都处于关断状态高端调制采样电阻上的电流可以正确反映相电流。这里有个很容易忽略的问题触发ADC的时刻和ADC真正开始采样的时刻之间有延迟一般几个时钟周期而且ADC不同通道之间也有通道间采样延迟如果是多通道规则组转换通道间会有间隔。如果PWM周期很短、半个周期内时间很紧这个延迟累积起来不小。建议ADC触发采用定时器的TRGO信号并且配置ADC为规则组或者注入组多通道采样采样通道顺序按照三相顺序排列。如果对时序要求极高可以把ADC配置在注入组Injected Group它可以在规则转换被抢占时强行插入采样对多通道FOC采样更方便。5.3 双电阻采样的触发点设置双电阻采样则不能简单在峰值/零点触发而是要在有效矢量期间触发。具体来说取决于SVPWM的扇区。这里以STM32定时器为例常规做法是使用定时器的比较匹配事件去触发ADC即把某个通道的比较寄存器设定为需要的采样时刻点。然而中心对齐模式下同一定时器的比较值在向上计数和向下计数时会各匹配一次因此需要利用“匹配时计数方向”的信息来决定是否触发。有些MCU支持在匹配时只从上升沿或只从下降沿触发或者采用两个不同的比较通道来区分上下半周期的采样点例如设一个比较值只在计数器向上计数的过程中匹配时触发ADC另一个比较值只在向下计数的过程中匹配时触发。这样可以更灵活地适应双电阻采样的时序要求。同时还要保证采样点落在有效矢量中间而非边缘避免在矢量切换瞬间采样。一般做法是在SVPWM软件里算出每个扇区需要采样的比较值然后直接更新到定时器的比较影子寄存器里。这种方法对实时性要求高但好处是采样点非常精准。实际工程中双电阻采样很少用固定的比较值因为不同扇区、不同调制比下有效矢量的分布完全不一样。5.4 采样窗口不足时的软件补偿手段无论哪种采样方案都会遇到采样窗口不足的极端工况。软件补偿主要有两条路一是插入测量矢量。在有效矢量时间不足的区间人为插入一段额外的电压矢量使该区间的下桥臂导通时间大于最小采样时间然后再通过坐标变换把插入的电压矢量对电流环的影响补偿回来。这个方法实现复杂而且会带来额外的电流纹波和损耗一般只在高性能伺服驱动里用。二是移相法。当某个矢量时间太短时把这个矢量的作用时间整体移到相邻的PWM周期的后半部分让它在“时间上”变长。这样可以在不增加纹波的情况下解决窗口不足的问题但会轻微增加电流谐波对控制频率的精度也有一定影响。对于初学者来说建议先用三电阻或双电阻方案避免一开始就陷入单电阻的补偿算法泥潭。6. 三种采样方案的对比总结与选型建议6.1 对比总结表对比维度三电阻采样双电阻采样单电阻采样硬件成本高3个采样电阻3路运放中2个采样电阻2路运放低1个采样电阻1路运放ADC通道需求3路2路1路电流重构复杂度低直接采两相算第三相中两相采样一相重构高需要母线电流重构三相低调制比时的采样窗口较宽裕可能出现窗口不足极易出现窗口不足采样时序复杂度中较高高适用场景工业伺服、对精度和可靠性要求高的场景机器人关节模组、直流无刷电调低成本电调、追求极致成本的小功率场合6.2 选型建议做小功率10A以内航模电调、无人机电调预算敏感的可以选择单电阻方案但要做好低调制比下采样失败的补救逻辑。做常规功率10A~60A的机器人关节、动力电机驱动双电阻方案是性价比最高的选择。成本只比单电阻略高但调试体验和可靠性好很多。做伺服驱动器、对动态响应要求高的场合毫不犹豫选三电阻方案。额外的成本换来的是更宽裕的采样窗口和更小的电流纹波调试省心性能上线也更高。6.3 时序设计流程清单从零搭建一个电流采样方案推荐的实施顺序如下确定PWM频率、死区时间、死区方式高有效还是低有效、中心对齐模式计算最小采样时间死区振铃运放建立ADC采样保持确定采样方案单/双/三电阻并列出所有扇区下的采样窗口值检查整个调制比范围内是否存在窗口不足的区间如果有是否需要软件补偿在定时器上配置好各个ADC触发点TRGO或比较匹配配置ADC采样通道、采样时间、DMA传输或注入组中断先不加电流环开环给一个小占空比让电机转起来观察电流波形是否干净确认电流波形干净后再接入电流环PI调节器从小增益慢慢往上调。7. 常见问题与排查技巧实录7.1 问题上电后芯片发烫PWM设置后桥臂直接冒烟最常见的原因是死区设置错误或PWM极性配置反了。尤其在使用STM32高级定时器时如果OCx和OCxN的极性配置不对可能在上桥臂导通的同时下桥臂也导通了产生直通短路。排查方法不接母线电压只接逻辑电源用示波器查看上下桥臂驱动波形确认存在死区时间且极性正确。再逐步加大母线电压测试但注意在输入端加限流电阻或电子负载保护。7.2 问题电流波形低频周期性抖动采样值看起来有嘴唇状的波形这通常不是采样本身而是采到了错误的时刻比如双电阻采样时采样点落在了矢量切换的边界上导致采到的是切换瞬间的电流尖峰。排查方法用示波器CH1测PWM波形CH2测采样电阻两端电压波形把ADC触发信号可以用示波器的解码功能或者直接观察比较事件触发引脚和电流波形叠加对比确认采样时刻是否落在平台期。7.3 问题电流波形整体偏大或偏小静态偏置明显这是运放失调电压或者零点校准没做好的问题。电流采样电路有模拟偏置时需要在系统初始化时自动校准零漂。排查方法在电机不转、PWM输出全部无效时采集1000次ADC值求平均把这个平均值作为零偏存在Flash里每次上电后先校准一次再投入使用。另外用示波器查看运放输出的直流电平确认是否和理论值一致。7.4 问题低转速下电机转矩波动明显似乎是采样值丢失低转速意味着低调制比有效矢量时间短采样窗口可能不足。双电阻和三电阻方案偶尔会出现某几次PWM周期内采样无效的情况。排查方法在代码里统计单位时间内ADC采样失败的次数如果失败率过高就需要考虑减低PWM频率或者增加最小矢量时间约束或者在失败时保持上一次采样值并平滑过渡。7.5 排查工具准备调试电流采样必备两样工具一个至少100MHz带宽的双通道示波器一个电流探头如果有条件的话。没有电流探头的话可以用采样电阻两端的电压波形做参考但要注意共模干扰的影响。个人经验不管方案设计得多么“理论上完美”上电后的第一步永远是拿示波器看真实波形。电流采样相关的很多问题只看代码是看不出来的必须结合实际的开关波形、死区波形和采样电阻波形一起对照才能快速定位。8. 我踩过的几个值得分享的坑最后挑几个我实际调试中印象比较深的教训给大家做个参考。第一个是关于采样点时机。最早做三电阻方案的时候我把ADC触发设置在了定时器更新事件上想着刷新率越高越好。结果电流波形上叠加了一层非常规律的“栅栏”状噪声后来才意识到中心对齐模式下定时器更新事件并不是采样窗口的平台期必须在峰值或零点处采样。程序里只差一个触发源的选择实际效果天差地别。第二个是关于运放带宽。有次用小带宽精密运放做电流采样低转速下一切正常一拉高速电流环就开始发散。排查了整整两天最后用示波器对比采样电阻两端信号和运放输出信号发现运放输出在三五微秒内都建立不到位信号被严重“拉圆”了。换高带宽运放后问题直接消失。从那以后我选运放先看带宽再看精度。第三个是关于PCB布局。有一版双层板为了布线方便把采样信号走线放在了功率管下方结果电机一转起来ADC读数就跳动。后来做第二版把采样信号走线挪到远离功率管的一侧并做了包地处理同样代码、同样的电路参数电流波形干净了一个数量级。硬件布局上的一个走线位置能让软件人员白忙好几天这话真不是开玩笑。第四个是关于采样窗口的动态评估。很多人包括曾经的我只在额定工作点校验采样窗口够不够但实际上电机运行时会穿越各种调制比区间某个区间采样窗口不足会让电流环在那个转速区间出现明显的抖动。后来我在代码里加了实时统计采样有效率的逻辑调试时配合上位机看曲线很快就定位到了问题转速段然后针对性地做了处理。FOC电流采样这件事说到底就是三板斧选对方案算好时序留好硬件裕量。方案选对了时序算准了硬件布局干净了电流环自然稳炸机概率就能降到很低。反过来任何一个环节偷懒最终都会在调试阶段加倍还回来。希望这篇文章能帮你少熬几个夜少烧几块板子。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门