资讯详情

资讯详情

无感FOC零速低速控制:高频方波电压注入原理与参数整定实战

无感FOC磁场定向控制这几年在电机驱动圈里几乎成了标配话题尤其是做低成本驱动器、高速主轴、压缩机或者无人机电调的朋友没人不想省掉编码器又保住性能。但真上手你就会发现反电动势法在高速段确实好用一旦转速掉到额定值的5%以下甚至零速起转这套方案立刻失效——不是噪声大就是干脆失步。我前前后后折腾了两三个项目每次卡点都在低速启动和带载这一段。直到把高频方波电压注入真正吃透才算是把无感FOC最后一块短板补上。这篇文章就把我在这条路上踩过的坑、推过的公式和实测中管用的参数整定方法整理出来给正在做或者准备做永磁同步电机无感FOC的朋友当个参考。先说清楚这套方法能解决什么问题在不安装任何位置传感器的情况下让永磁同步电机在零速和低速段也能获得高精度的转子位置与速度信息进而实现平稳起动、强力矩带载并平滑过渡到中高速的反电动势观测模式。它适合搞伺服驱动、电动汽车辅助泵、家用电器变频方案、机器人关节模组的开发者也适合正在啃FOC源码但一直没打通低频注入细节的学生和工程师。只要你的电机内禀凸极率不是特别差这套方案就值得花时间掌握。1. 为什么无感FOC要攻低速零速这块硬骨头1.1 反电动势法在低速下的无力感基于反电动势的观测器不管是滑模、龙贝格还是扩展卡尔曼本质上都是根据电压方程去估计转子磁链方向。当转子转速比较高时反电动势幅值大信噪比好位置估算自然准确。但从公式上看反电动势正比于电角速度转速一跌信号立刻被噪声淹没。我实际测过一台额定转速3000rpm的电机在150rpm以下相电压里能分辨出的反电动势已经和死区时间引起的畸变差不多大根本没办法做可靠估计。这时候如果你强行让驱动器带负载起动最常见的现象就是电流忽大忽小、转速来回震荡严重时直接“咳嗽”一下跳故障。原因也很直白观测器在低速段的增益不够估算角度跟着反电动势一起失真FOC的坐标变换建立在错误角度上定子电流矢量就会乱掉。所以要做无感FOC就得先把低速零速的信息源找到而不是跟反电动势死磕。1.2 凸极效应才是低速段的救命信号永磁同步电机都有一个共性转子磁路在d轴和q轴方向上的磁阻不一样反映在电感上就是Ld和Lq不相等。这种凸极效应和转子位置强相关是天然的“位置信息载体”。问题在于低速零速时反电动势为零你没法直接从端电压里读出磁极方向但你可以主动向电机注入一个高频电压信号让转子在不转或者慢慢转的状态下“被迫”表现出d、q轴电感差异再通过响应电流把位置信息解出来。这就好比在一间黑屋子里你无法直接看到墙上的凸起但拿手电筒从固定角度照过去阴影的形状就会暴露凸起的位置。高频注入就是这个手电筒。它的好处是不依赖转速零速时照样有效所以成了低速无感FOC的标准起手式。而高频方波注入又是所有高频注入方案里实现最干净、动态响应最好的一种。2. 高频方波注入的核心原理从公式到可用的位置误差2.1 先建立高频等效电路和坐标系关系做数学推导前先把问题简化。在电角速度很低时电机的旋转电压项很小高频激励下的响应基本由电感和电阻决定。更关键的是在高频段感抗远大于电阻所以电阻项可以先忽略。这样永磁同步电机在dq旋转坐标系下的高频电压方程就变成v_d ≈ Ld * di_d/dt v_q ≈ Lq * di_q/dt注意这里用的是真实转子坐标系。但控制器里能用的只有估计坐标系它和真实坐标系之间存在一个角度偏差Δθ θ_r - θ̂_r。FOC的全部问题可以浓缩为把Δθ逼到零。高频注入要做的就是把Δθ映射到某个可测电量上去。实际系统中我们会在估计坐标系的d轴或者固定轴注入高频电压。由于两个坐标系之间差一个角度真实d、q轴上的分量就不是对称的响应电流也就带上了角度误差信息。这个推导过程我在纸上推过好几遍结论很有用。2.2 关键公式q轴高频电流与位置误差的关系设注入电压幅值为V_inj在估计d轴上施加。把电压转换到真实转子坐标系后在真实d、q轴上产生的高频电流分别为i_dh V_inj * cos(Δθ) / (jω_h * Ld) i_qh V_inj * sin(Δθ) / (jω_h * Lq)再把这两个分量转回估计坐标系提取q轴分量整理后就得到整个方法的核心公式î_qh ≈ V_inj * Δt * (1/Lq - 1/Ld) * sin(2Δθ) / 2其中Δt是方波注入半个周期的时间。当Δθ足够小时sin(2Δθ)约等于2Δθ于是q轴高频电流变成了一个正比于位置误差的角度信号。这就是后面无论用解调还是用锁相环都能把位置“揪”出来的根本依据。我在一张纸上自己验证过这个公式的数值合理性。假设一台电机Ld1mH、Lq2mH注入频率10kHz注入电压幅值10V那么Δt50µs误差信号前面的增益大约等于:V_inj * Δt / 2 * (1/Lq - 1/Ld) 10 * 50e-6 / 2 * (1/0.002 - 1/0.001) 2.5e-4 * 500 0.125 A/rad也就是说当位置误差为0.1rad时q轴高频电流幅值大约12.5mA。如果电机额定相电流是5A这个信号确实不大必须放进ADC的合理量程并经过滤波放大否则容易被噪声盖掉。这个数据也提醒我们注入电压幅值和采样精度的配合非常重要。2.3 为什么选方波而不是正弦波高频注入里也有正弦注入和方波注入两条路线。正弦注入是用DAC或PWM调制出一个固定频率的正弦载波注入频率通常选1~2kHz左右解调时要把高频电流和参考正弦做相乘再经过低通滤波器提取误差信号。这个方案的好处是理论成熟、资料多但坏处也很明显动态响应慢而且对滤波器的一致性要求高。方波注入的优势在于信号处理极其简单。方波的解调不需要乘法器只需要在每半个注入周期内对q轴高频电流做一次符号翻转和累加相当于同步采样天然滤掉了大部分噪声。另外方波注入的频率可以直接绑定开关频率比如10kHz或20kHz相比正弦注入的1kHz左右观测器可以获得更宽的带宽动态响应明显更好。实际项目里方波注入更容易做到位置估计带宽100Hz以上而正弦注入想要做到这个水平非常费劲。我做第一版方案时用的正弦注入后来换成方波起动带载的扭矩脉动肉眼可见地变小。3. FOC控制架构与注入参数设计实战3.1 整体控制回路和信号流高频方波注入并不是一个孤立的算法它嵌在完整的FOC控制环里。我习惯的结构是这样的最外层是速度环输出q轴电流给定中间是电流环负责跟踪d、q轴电流在高频注入模式下额外叠加一路注入电压到d轴输出端同时在反馈链路里同步采样电流专门做解调提取位置误差。位置误差信号送给PLL观测器得出估算角度和转速转速反馈回速度环角度用于坐标变换。这套结构的关键点在于注入信号和FOC控制信号必须互不干扰。注入电压叠加在d轴输出上但控制d轴电流的却是电流环输出所以实际上要先计算出电流环输出电压再叠加注入分量最终一起送往SVPWM或PWM调制。反馈侧的电流采样也要分开处理控制环用的是采样电流的基波分量注入解调则从同样的采样数据里提取高频分量。我见过有人试图用两套ADC分别采其实没必要共享采样值后在软件里做不同滤波即可。整个信号链路我总结成一句话注入电压走输出叠加通道高频电流走解调通道低频基波走电流环通道位置误差走PLL通道。四条通道互不打架系统才稳。3.2 注入频率、注入幅值和采样时序这三个参数是整个注入方案里最需要抠细节的地方。先说注入频率。工程上最常见的做法是把方波注入频率绑到开关频率或者开关频率的一半。比如开关频率20kHz注入频率就选20kHz每个开关周期翻转一次注入电压极性。这样做的最大好处是电流采样点整齐每个PWM周期的中点或者上下交替点采样采样到的电流正好对应脉动电流的峰值附近方便做差分。再就是注入电压幅值。太高会带来可闻噪声、铁损和扭矩脉动太低又提不出足够大的误差信号。我一般按下面这个流程选初始值先看额定相电流峰值把注入引起的高频电流纹波控制在额定电流的5%~15%以内。用前面那个例子额定电流5A我想把d轴纹波控制在0.5A左右那么注入幅值可以这样反算V_inj Δi_d * Ld / Δt 0.5 * 0.001 / 50e-6 10V这个10V就是初始注入幅值之后在实验里再细调。需要注意母线电压如果只有24V10V注入会吃掉不少调制余量这时候要么降低目标纹波要么提高注入频率或者接受低速带载能力打点折扣。直流母线电压越宽裕这方案越好做。最后是采样时序。方波注入解调的原理要求我们测出每个注入半周期的电流变化量而不是绝对电流值。所以采样点必须卡在方波翻转前后各一次两次采样值之差才能解调出位置信号。如果你的MCU的ADC转换速度够快可以在一个PWM周期内完成两次采样分别在计数器峰值和谷值附近。假如只能采一次也可以用上一个周期的采样值和当前值做差分效果略差但也能跑只是噪声会大一些。3.3 解调和滤波器的实现参考位置误差信号的提取用代码表示其实非常短。下面是我惯用的一个简化流程适合在中断里跑// 假设已通过ADC获取本次和上一次的q轴电流采样值 float diq_sample iq_now - iq_prev; // 根据当前注入方波极性做符号翻转 float err_raw ((inj_polarity POSITIVE) ? diq_sample : -diq_sample); // 简单平均滤波消除随机噪声 err_filtered err_filtered * 0.9f err_raw * 0.1f;这个err_filtered就是sin(2Δθ)的近似值送给PLL作为角度误差输入。符号翻转看起来简单实际写代码时最容易错很多人因为搞错了注入极性正负结果角度偏了180度电机一上电就反转。建议在注释里把方波极性和采样时机对应关系写清楚每次改完代码先做空载开环验证。滤波器方面我建议先用一阶低通截止频率设在注入频率的十分之一到五分之一之间比如10kHz注入就选1~2kHz。别一上来就上高阶滤波相位滞后大了会让PLL带宽缩水系统动态变差。等整套跑通了再根据效果决定是否上二阶巴特沃斯。4. 位置速度观测器PLL参数整定与启动流程4.1 PLL观测器参数怎么定得到位置误差信号之后需要用观测器把它收敛成平滑的角度和速度。常见的做法是锁相环结构也就是用PI调节器去跟踪角度。我把PLL视作一个简化的二阶系统输入是sin(2Δθ)输出是估算电角度和电角速度。工程上整定PLL参数我会先定带宽。位置估计带宽不能取得太高否则噪声会被放大又不能太低否则动态响应跟不上。对开关频率10kHz、注入频率10kHz的系统位置估计带宽我一般取50~150Hz。带宽定下来后比例增益的初始值大概按2π乘以带宽来估积分增益按比例增益的0.05~0.1倍起步再通过阶跃响应去微调。这句话的意思是你先给一个速度阶跃或者角度阶跃观察估算角度是否出现过冲和振铃过冲大就降比例增益静态误差大就加积分增益。还要注意PLL输入端的单位问题。前面提取的err_filtered实际上是电流量纲或无量纲比例量不能直接当作弧度误差所以控制器里必须留一个“位置误差标定系数K_err”把信号换算成弧度。这个系数可以从注入公式的理论增益推算初始值再在实验里校准。很多人忽略这一步直接拿ADC原始值喂给PLL结果带宽和增益毫无物理意义调参全凭碰运气。4.2 初始定位和磁极极性判断任何无感FOC起动前都得先解决一个问题转子到底朝向哪里。高频注入虽然能测出d轴方向但测出来的是磁极轴线不能直接区分N极还是S极也就是存在180°的相位模糊。这个必须靠初始定位消除。我的做法分两步。第一步先给定一个固定方向的d轴电流比如1A持续时间200ms让转子转到某个可预测的位置。第二步用高频注入的误差信号做一次极性测试分别在当前角度和相差180°的方向上施加极短的低频磁脉冲观察电流响应幅值。由于磁路饱和效应朝磁化方向推时Ld会略微减小电流响应偏大反方向则偏小。比较两个方向的响应就能确定真正的N极角度。极性判断这个环节我在实验室里单独写成一个小工具起动时自动跑一遍耗时不超过300ms。实测下来只要电流反馈精度正常判断可靠性非常高。如果发现偶尔判断反了多半是磁脉冲幅值给得太大把退磁风险都引出来了建议减小脉冲时间和幅值。4.3 零速闭环、带载起动和高速切换初始定位完成后就进入真正的零速闭环状态。这时候注入通道已经使能PLL估算出的角度被FOC使用电流环闭合开始出力。这个阶段有个关键点速度环先别急着用直接把q轴电流给定按斜坡爬升观察估算角度是否平稳。我带载实测过很多次发现只要位置误差信号干净零速时加额定扭矩的30%~50%都稳得住。但如果注入幅值不足或者采样点偏移位置误差里就会混入谐波表现为起动时电机小声颤抖。这种颤抖特别迷惑人因为电流波形看起来并不差只有把高频电流解调出来看才发现误差信号里叠了一个与电流相关的低频分量。等电机从零速加速到中高速范围注入方案该退休了。典型的切换阈值是额定转速的5%~15%我习惯切成10%左右再滞后切换防止来回跳。切换过程要做两个准备一是把反电动势观测器的状态量预热让它在后台先跑起来估计角度跟上后再接管二是把注入分量的幅值按比例逐渐减小而不是瞬间切断否则PLL输入突跳可能导致角度瞬变。我用过最稳的切换方式是一段约200ms的加权过渡前半段以注入估计为主后半段以反电动势估计为主权重线性倒换切换前后速度波动基本控制在1%以内。5. 调试实录波形判读、排查表和调参心得5.1 第一步先看高频电流响应拿到一套没调通的系统别急着盯位置波形先从电流采样下手。我把示波器或者调试器的存储深度开大同时记录相电流、经坐标变换后的q轴电流以及注入极性标志位。重点看两件事一是q轴电流是否在注入极性翻转的瞬间出现对应的跳变二是跳变的幅值是否在理论计算值附近。如果跳变幅值远小于理论值常见原因是采样点没对齐第二次采样落在了电流还没来得及变化的时刻。这时候去调整PWM中断里的ADC触发点把采样窗口卡准。如果跳变方向反了检查注入极性变量和实际输出电压是否一致尤其是软件里有没有取反这个bug我犯过一次花了两个晚上才查出来。5.2 典型故障现象速查表调试过程中我把遇到过的典型现象整理成了一张表每次新平台起调直接照着查省了很多时间。故障现象最可能原因检查顺序零速起动反转磁极极性判断反了1极性测试 2注入极性起动时高频啸叫过大注入幅值过高或注入频率落在谐振点1降幅值 2测阻抗谱带载后估算角度抖动位置误差信号混入电流谐波1采样时刻 2滤波器截止频率 3PLL带宽高速切换瞬间失步切换前反电动势观测器未预热1切换阈值 2加权过渡时间估算角度与实际相差固定角度相序或标定角度偏置有误1相序确认 2角度偏置校正加减速时跟不住PLL带宽过低1提高位置估计带宽 2检查滤波器相位滞后这张表看起来简单但每一条背后都是我实测过的坑。比如“带载后估算角度抖动”这个问题我最初以为是滤波器不够狠一路把截止频率往下压结果角度倒是稳了动态却烂得没法看。后来才意识到真正原因是电流环输出在注入频率处有残余脉动叠加到了解调信号上。解决办法是在解调口额外加一个只针对注入频率的梳状滤波而不是无脑加低通问题一下就解决了。5.3 我反复验证过的几个调参习惯最后分享几个经得起反复验证的习惯。第一注入幅值不要追求一次到位。先在空载、额定电流5%的小电流下把位置估计跑稳再逐步加注入幅值去试带载能力找到临界的20%余量就够了。第二PLL的积分增益别给太猛。我见过不少初学者把积分增益加到比例增益的0.2倍以上结果零速时角度低频振荡。从0.05倍开始每加一次看波形振荡出现就往回退。第三切换阈值必须留滞回区间。比如8%额定转速切出注入12%额定转速才切回注入不然负载扰动让转速在阈值附近晃系统会在两种模式之间反复跳那种突发失步最恶心。还有一个小技巧我在调每一套新电机时都会跑一次阻抗谱扫描固定注入频率从20V母线电压开始扫到额定母线电压同时记录q轴高频电流的有效值。如果某个电压点附近电流突然异常变大说明该点和电机寄生电容或铁磁谐振撞上了注入频率要及时躲开。这个步骤刚开始做觉得费时间后来发现能避免大量后期疑难杂症相当值。写在最后的一点体会这套基于高频方波电压注入的方案折腾下来我个人最大的体会是方法本身并不神秘难的是把注入参数、采样时序、滤波和PLL拧成一根绳。你单独看每个环节都很简单但它们之间的耦合关系才是真正决定成败的部分。每次换一台新电机我都会把从电感测量到参数计算的流程完整走一遍宁可多花半小时做理论估算也不直接盲调。这样做的回报也很实在项目从第一次上电到稳定带载起动最快一次只用了不到一个星期。如果你也在做类似的无感FOC项目建议你从本文的公式推导入手先用计算器把注入参数粗定下来再带着明确预期去调实测波形。这条路走通了低速段就再也不是无感方案的软肋了。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →