3. 示波器实战:测量PWM信号占空比、上升沿/下降沿时间,排查信号完整性问题
示波器这东西,做嵌入式的人天天见。但说实话,很多人只会看个波形有没有,真要测占空比、量上升沿,反而手忙脚乱。我刚开始带项目那会儿,就吃过这个亏——PWM驱动电机,板子跑起来总是一抖一抖的,查了半天代码没问题,最后用示波器一看,上升沿全是毛刺。嗯,从那以后,我每次调PWM都会先过一遍示波器。
这一章,咱们就实打实地测几个关键参数。你跟着我走一遍流程,以后遇到信号完整性问题,心里就有底了。
3.1 测量前的准备:探头补偿与通道设置
别急着夹信号。先做一件事——探头补偿。我个人习惯,每次换通道或者换探头,第一件事就是拿探头自带的补偿信号(一般是1kHz方波)校准一下。
通道设置方面,我建议你这样配:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 耦合方式 | DC | PWM有直流分量,用DC才能看到真实电平 |
| 带宽限制 | 全带宽(或≥100MHz) | 测上升沿需要高带宽,别开20MHz限制 |
| 探头衰减 | 1× 或 10× | 低压信号用1×,高压用10× |
| 垂直刻度 | 1V/div ~ 2V/div | 让波形占屏幕60%~80% |
3.2 测量PWM占空比:自动测量 vs 光标测量
占空比,说白了就是一个周期里高电平占了多大比例。示波器测这个有两种主流方法,我分别说说。
3.2.1 自动测量法(最快)
现在的数字示波器基本都有自动测量功能。你按下 Measure 键,选 Duty Cycle,屏幕直接出数字。我一般还会同时打开 Frequency 和 Pulse Width,三个参数一起看。
操作步骤(以某品牌示波器为例):
1. 按 Measure → 添加测量项
2. 选择 Duty Cycle(正占空比)
3. 选择 Frequency
4. 选择 +Width(正脉宽)
5. 读取屏幕下方统计值
自动测量的好处是快,但有个坑——如果波形有抖动或者噪声,示波器可能抓到错误的周期。我建议你多测几次,看平均值。
3.2.2 光标测量法(最准)
当自动测量结果可疑时,我会切到光标模式。用两根光标分别卡住高电平的起点和终点,手动读时间差。
操作步骤:
1. 按 Cursor → 选择 Voltage 或 Time
2. 光标A:放在高电平起始点(上升沿50%处)
3. 光标B:放在高电平结束点(下降沿50%处)
4. 读取 ΔX(脉宽)
5. 再用光标测一个完整周期 ΔX'
6. 占空比 = (脉宽 / 周期) × 100%
3.3 测量上升沿/下降沿时间
上升沿时间,一般指信号从10%幅值上升到90%幅值所用的时间。下降沿同理。这个参数直接反映信号的驱动能力和走线质量。
示波器里通常有 Rise Time 和 Fall Time 的自动测量项。但我建议你手动确认一下示波器的“10%-90%”阈值设置对不对。有些示波器默认是20%-80%,测出来的结果会偏小。
| 信号类型 | 典型上升沿时间 | 说明 |
|---|---|---|
| GPIO(3.3V CMOS) | 2ns ~ 5ns | 驱动能力强,沿很陡 |
| PWM(MCU直出) | 5ns ~ 20ns | 取决于IO驱动配置 |
| PWM(经电平转换) | 20ns ~ 100ns | 转换芯片会拖慢沿 |
| PWM(经长走线) | 可能 >100ns | 走线电容太大,沿变缓 |
3.4 排查信号完整性问题
信号完整性问题,说白了就是波形“不干净”。我总结了三种最常见的PWM信号问题,你对照着看。
3.4.1 过冲与振铃
波形在上升沿之后冲过头,然后来回震荡。这通常是因为走线阻抗不匹配,或者驱动能力太强。
- 现象:上升沿顶部出现一个尖峰,然后衰减振荡
- 原因:阻抗不连续、走线过长、驱动电流过大
- 对策:串联22Ω~33Ω电阻(源端匹配),或者减小驱动电流
3.4.2 沿变缓(上升沿太慢)
波形像“爬坡”一样慢慢上去。这会导致开关器件工作在放大区,发热严重。
- 现象:上升沿时间超过信号周期的10%
- 原因:走线电容太大、驱动能力不足、上拉电阻太大
- 对策:增强驱动(加缓冲器)、减小走线长度、降低上拉电阻
3.4.3 噪声与抖动
波形上有毛刺,或者边沿位置在不停晃动。
- 现象:高电平上有尖峰脉冲,或者边沿位置随机变化
- 原因:电源噪声、地弹、串扰、时钟抖动
- 对策:加强去耦、改善接地、远离干扰源
3.5 知识结构图:PWM信号测量与排查体系
下面这张图,把整个测量流程串起来了。你以后拿到一个PWM信号,按这个思路走就行。
3.6 实战案例:一个真实的PWM问题排查
说个我自己的经历。有次调一个无刷电机驱动板,PWM频率20kHz,占空比50%。电机在低速时嗡嗡响,还发热。
我拿示波器一测,发现上升沿时间竟然有1.5μs。你想想看,20kHz的周期是50μs,上升沿就占了3%。这会导致MOS管在过渡区停留太久,功耗全变成热量了。
顺着走线查,发现PWM信号从MCU出来,经过一个10cm长的排线才到驱动板。排线本身有寄生电容,再加上驱动板输入端有个100pF的滤波电容,两者加起来把沿拖慢了。
解决办法很简单:在MCU输出端加一个74HC244缓冲器,增强驱动能力。改完后上升沿降到80ns,电机不叫了,温度也降了15°C。
3.7 本章小结
示波器测PWM,说白了就是三件事:占空比、沿时间、信号质量。你把这三点吃透了,大部分PWM相关的硬件问题都能搞定。记住,探头补偿是前提,光标测量是底线,波形形状是线索。下次遇到PWM异常,别慌,按这个流程走一遍,答案自然就出来了。