3. 性能调优与测试:换相延迟分析、速度环与换相协同、高频注入法调试、示波器实测波形解读

这一章,咱们来点真格的。代码写完了,电机也转了,但转得怎么样?有没有异响?效率高不高?这些才是真正考验功底的地方。我见过太多工程师,代码能跑就以为完事了,结果一上负载就露馅。

性能调优,说白了就是跟延迟、噪声、响应速度这三个“敌人”打仗。你想想看,换相时机差个几微秒,电机可能就多抖一下;速度环参数没调好,整个系统就像喝醉了酒。咱们一个一个来拆解。

3.1 换相延迟分析:找到那丢失的几微秒

换相延迟,是编码器换相算法里最隐蔽的坑。你以为你发了换相指令,电机就立刻换相了?没那么简单。

延迟主要来自三个地方:

  • 采样延迟:从编码器信号变化到CPU读到新值,中间有电气噪声滤波、边沿捕获延迟。
  • 计算延迟:换相算法本身要算角度、查表、算占空比,这些指令要花时间。
  • PWM更新延迟:就算算完了,还得等下一个PWM周期才能更新占空比。

我曾经在一个项目里,电机高速运行时突然丢步,查了两天才发现是PWM更新延迟导致的。当时用的定时器是中心对齐模式,换相指令刚好落在PWM周期中间,结果更新被推迟了半个周期。在低速时无所谓,转速一上去,这半个周期就是好几度电角度偏差。

延迟测量方法:

用示波器同时抓编码器Z信号和PWM输出。Z信号上升沿到PWM占空比变化之间的时间差,就是总换相延迟。我习惯把这个时间控制在5μs以内,超过10μs就要警惕了。

怎么优化?我个人的经验是:

  1. 硬件触发换相:用定时器的输入捕获直接触发DMA,绕过CPU中断响应时间。
  2. 预计算换相表:把换相角度对应的PWM值提前算好存表,中断里只做查表赋值。
  3. 调整PWM更新点:把更新时刻对齐到PWM周期起始,避免跨周期等待。

小技巧: 如果你用的是STM32,可以试试TIM的“立即更新”模式(UG位)。但要注意,这会导致PWM波形不完整,低速时可能引起电流尖峰。我一般只在高速时用这个模式。

3.2 速度环与换相协同:别让它们打架

速度环和换相环,是两个独立但又必须配合的环节。换相环负责“什么时候换”,速度环负责“换多快”。如果它们各自为政,系统就会振荡。

我遇到过最典型的问题:速度环输出突然增大,换相环还没来得及响应,结果电流瞬间过冲,电机“嗡”的一声就抖起来了。后来我加了一个换相同步标志位,速度环更新完占空比后,必须等换相完成才能进行下一次计算。

协同策略我总结了三步:

步骤 操作 说明
1 速度环计算新占空比 基于当前速度误差,算出目标占空比
2 等待换相完成 检查换相状态机是否处于“空闲”状态
3 同步更新PWM 在换相完成的同一时刻写入新占空比

说白了,就是让速度环“等一等”换相环。虽然会引入一点点延迟,但换来的是系统的稳定性。我做过对比测试:不加同步时,速度波动±5%;加上同步后,波动降到±1%以内。

注意: 同步等待不能无限期。如果换相环卡死了,速度环也会跟着死。我一般加一个超时计数器,超过10个PWM周期就强制更新,宁可抖一下也不能让系统死锁。

3.3 高频注入法调试:无传感器时的救命稻草

高频注入法,说白了就是在电机静止或低速时,往定子绕组里注入一个高频信号,通过检测响应来估算转子位置。这个方法调试起来很磨人。

我记得第一次调高频注入,电机死活不转,一直在那“嗡嗡”响。后来发现是注入频率选错了。我用的电机电感比较小,注入频率太高,信号全被电阻衰减了,根本检测不到。

调试步骤我建议这样来:

  1. 选频率:一般取PWM频率的1/10到1/20。比如20kHz的PWM,注入频率选1-2kHz。
  2. 调幅值:从5%占空比开始,慢慢往上加,直到电流采样能清晰看到高频分量。
  3. 调滤波器:带通滤波器的中心频率要对准注入频率,带宽别太宽,不然会把基波信号也滤进来。
  4. 验证位置估算:用手慢慢转动电机,观察估算角度是否跟随实际角度。

调试口诀: 频率选对,幅值适中,滤波精准,位置才准。我一般先用开环拖到一定转速,再切到高频注入闭环,这样能避免启动时的不确定性。

这里有个坑:高频注入在电机带载时效果会变差。因为负载电流会干扰高频信号的检测。我曾在电动工具项目里吃过这个亏,后来在重载时切到反电动势法才解决。

3.4 示波器实测波形解读:用眼睛“听”电机说话

示波器是电机调试的“听诊器”。波形不会骗人,关键是你得看得懂。

我一般会抓四组波形:

  • 相电流波形:看是否正弦,有没有畸变。
  • PWM输出波形:看占空比变化是否平滑。
  • 编码器信号:看A/B/Z脉冲是否干净。
  • 换相触发信号:看换相时机是否准确。

下面这张图是我总结的常见波形问题与对策:

示波器波形诊断流程图 抓取相电流波形 波形是否接近正弦? 是 检查换相时序 否 检查PWM占空比 换相点是否对齐? 调整死区时间 调整换相提前角 增大注入电流幅值 提示:波形畸变通常不是单一原因,建议从PWM占空比和换相时序两个方向同时排查 我习惯先调死区,再调提前角,最后才动注入参数

看波形时,我特别关注电流过零点附近有没有毛刺。如果有,说明换相时刻有偏差。毛刺出现在过零点之前,说明换相早了;出现在之后,说明换相晚了。

实战经验: 有一次客户反馈电机噪音大,我远程看波形,发现相电流在换相点附近有个小凹陷。后来查出来是死区时间设得太长,导致换相时电流中断。把死区从3μs调到1.5μs,噪音立刻消失。

嗯,波形解读这东西,说再多不如自己动手抓一次。我建议你准备一个双通道示波器,一个通道抓电流,一个通道抓编码器Z信号,然后慢慢转动电机,观察两者的相位关系。转得越慢,看得越清楚。

最后说一句:性能调优没有银弹。每个电机、每个驱动器都有自己的脾气。我的经验是,先保证换相时序准确,再调速度环参数,最后才碰高频注入。顺序搞反了,你会被各种耦合问题折磨到怀疑人生。