3. 性能调优与测试:换相延迟分析、速度环与换相协同、高频注入法调试、示波器实测波形解读
这一章,咱们来点真格的。代码写完了,电机也转了,但转得怎么样?有没有异响?效率高不高?这些才是真正考验功底的地方。我见过太多工程师,代码能跑就以为完事了,结果一上负载就露馅。
性能调优,说白了就是跟延迟、噪声、响应速度这三个“敌人”打仗。你想想看,换相时机差个几微秒,电机可能就多抖一下;速度环参数没调好,整个系统就像喝醉了酒。咱们一个一个来拆解。
3.1 换相延迟分析:找到那丢失的几微秒
换相延迟,是编码器换相算法里最隐蔽的坑。你以为你发了换相指令,电机就立刻换相了?没那么简单。
延迟主要来自三个地方:
- 采样延迟:从编码器信号变化到CPU读到新值,中间有电气噪声滤波、边沿捕获延迟。
- 计算延迟:换相算法本身要算角度、查表、算占空比,这些指令要花时间。
- PWM更新延迟:就算算完了,还得等下一个PWM周期才能更新占空比。
我曾经在一个项目里,电机高速运行时突然丢步,查了两天才发现是PWM更新延迟导致的。当时用的定时器是中心对齐模式,换相指令刚好落在PWM周期中间,结果更新被推迟了半个周期。在低速时无所谓,转速一上去,这半个周期就是好几度电角度偏差。
延迟测量方法:
用示波器同时抓编码器Z信号和PWM输出。Z信号上升沿到PWM占空比变化之间的时间差,就是总换相延迟。我习惯把这个时间控制在5μs以内,超过10μs就要警惕了。
怎么优化?我个人的经验是:
- 硬件触发换相:用定时器的输入捕获直接触发DMA,绕过CPU中断响应时间。
- 预计算换相表:把换相角度对应的PWM值提前算好存表,中断里只做查表赋值。
- 调整PWM更新点:把更新时刻对齐到PWM周期起始,避免跨周期等待。
小技巧: 如果你用的是STM32,可以试试TIM的“立即更新”模式(UG位)。但要注意,这会导致PWM波形不完整,低速时可能引起电流尖峰。我一般只在高速时用这个模式。
3.2 速度环与换相协同:别让它们打架
速度环和换相环,是两个独立但又必须配合的环节。换相环负责“什么时候换”,速度环负责“换多快”。如果它们各自为政,系统就会振荡。
我遇到过最典型的问题:速度环输出突然增大,换相环还没来得及响应,结果电流瞬间过冲,电机“嗡”的一声就抖起来了。后来我加了一个换相同步标志位,速度环更新完占空比后,必须等换相完成才能进行下一次计算。
协同策略我总结了三步:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 速度环计算新占空比 | 基于当前速度误差,算出目标占空比 |
| 2 | 等待换相完成 | 检查换相状态机是否处于“空闲”状态 |
| 3 | 同步更新PWM | 在换相完成的同一时刻写入新占空比 |
说白了,就是让速度环“等一等”换相环。虽然会引入一点点延迟,但换来的是系统的稳定性。我做过对比测试:不加同步时,速度波动±5%;加上同步后,波动降到±1%以内。
注意: 同步等待不能无限期。如果换相环卡死了,速度环也会跟着死。我一般加一个超时计数器,超过10个PWM周期就强制更新,宁可抖一下也不能让系统死锁。
3.3 高频注入法调试:无传感器时的救命稻草
高频注入法,说白了就是在电机静止或低速时,往定子绕组里注入一个高频信号,通过检测响应来估算转子位置。这个方法调试起来很磨人。
我记得第一次调高频注入,电机死活不转,一直在那“嗡嗡”响。后来发现是注入频率选错了。我用的电机电感比较小,注入频率太高,信号全被电阻衰减了,根本检测不到。
调试步骤我建议这样来:
- 选频率:一般取PWM频率的1/10到1/20。比如20kHz的PWM,注入频率选1-2kHz。
- 调幅值:从5%占空比开始,慢慢往上加,直到电流采样能清晰看到高频分量。
- 调滤波器:带通滤波器的中心频率要对准注入频率,带宽别太宽,不然会把基波信号也滤进来。
- 验证位置估算:用手慢慢转动电机,观察估算角度是否跟随实际角度。
调试口诀: 频率选对,幅值适中,滤波精准,位置才准。我一般先用开环拖到一定转速,再切到高频注入闭环,这样能避免启动时的不确定性。
这里有个坑:高频注入在电机带载时效果会变差。因为负载电流会干扰高频信号的检测。我曾在电动工具项目里吃过这个亏,后来在重载时切到反电动势法才解决。
3.4 示波器实测波形解读:用眼睛“听”电机说话
示波器是电机调试的“听诊器”。波形不会骗人,关键是你得看得懂。
我一般会抓四组波形:
- 相电流波形:看是否正弦,有没有畸变。
- PWM输出波形:看占空比变化是否平滑。
- 编码器信号:看A/B/Z脉冲是否干净。
- 换相触发信号:看换相时机是否准确。
下面这张图是我总结的常见波形问题与对策:
看波形时,我特别关注电流过零点附近有没有毛刺。如果有,说明换相时刻有偏差。毛刺出现在过零点之前,说明换相早了;出现在之后,说明换相晚了。
实战经验: 有一次客户反馈电机噪音大,我远程看波形,发现相电流在换相点附近有个小凹陷。后来查出来是死区时间设得太长,导致换相时电流中断。把死区从3μs调到1.5μs,噪音立刻消失。
嗯,波形解读这东西,说再多不如自己动手抓一次。我建议你准备一个双通道示波器,一个通道抓电流,一个通道抓编码器Z信号,然后慢慢转动电机,观察两者的相位关系。转得越慢,看得越清楚。
最后说一句:性能调优没有银弹。每个电机、每个驱动器都有自己的脾气。我的经验是,先保证换相时序准确,再调速度环参数,最后才碰高频注入。顺序搞反了,你会被各种耦合问题折磨到怀疑人生。