4、采样窗口设计:ADC采样保持时间与PWM开关周期的匹配
各位做工业控制的同行,今天咱们聊一个特别实在的话题——采样窗口设计。
说白了,就是ADC什么时候采样、采多久,才能不被PWM开关噪声干扰。我早期做变频器项目时,就吃过这个亏。采样点正好落在IGBT开关瞬间,结果电流波形上全是毛刺,PID调了半天都稳不住。后来才明白,这不是算法问题,是采样时机没选对。
4.1 采样保持时间与PWM周期的匹配原则
ADC采样保持时间,指的是采样电容充电到输入电压所需的时间。PWM开关周期,是功率管导通和关断的完整周期。
这两者怎么匹配?我个人习惯用一个简单公式:
采样保持时间 ≤ PWM周期 × 采样窗口占空比
举个例子。PWM频率20kHz,周期50μs。如果采样窗口占空比设为10%,那采样窗口就是5μs。ADC采样保持时间必须小于5μs,否则采样还没完成,窗口就结束了。
我在项目中遇到过一种情况:ADC采样保持时间设得太长,导致采样结果跨过了PWM开关沿。嗯,那数据基本没法用。所以我的建议是:
- 采样保持时间:取ADC数据手册推荐值的1.2~1.5倍,留点余量
- 采样窗口:占PWM周期的5%~15%,具体看开关噪声持续时间
- 窗口位置:避开开关沿前后各1~2μs的死区
核心原则:采样窗口必须完全落在PWM导通或关断的稳定区间内,不能跨越开关沿。
4.2 避免采样点落在开关噪声区
开关噪声区,就是功率管导通和关断瞬间,电压电流剧烈变化的那段时间。你想想看,IGBT或MOSFET在几纳秒到几十纳秒内完成开关,产生的di/dt和dv/dt会通过寄生电容耦合到采样回路。
我曾经调试一个电机驱动板,ADC采样值在PWM开关瞬间跳变超过10%。用示波器一看,采样保持电容上叠加了高频振铃。后来我把采样点往后移了3μs,问题就解决了。
怎么判断噪声区?我一般用这几种方法:
- 示波器测量法:在ADC输入引脚测波形,看开关沿前后噪声幅度
- 软件扫描法:让采样窗口在PWM周期内逐步移动,记录每个位置的采样值方差
- 经验估算法:开关噪声持续时间为开关时间的3~5倍,比如开关时间100ns,噪声区约300~500ns
小技巧:如果硬件上无法完全隔离噪声,可以在采样窗口内做多次采样取平均。我习惯采3~5次,去掉最大值和最小值再平均,效果不错。
4.3 死区时间内的采样规避
死区时间,是上下桥臂同时关断的那段空白期。目的是防止直通短路。但死区时间内,电流通过续流二极管续流,电压波形会有明显的台阶或振铃。
我记得有一次,客户反馈电流采样不准,导致过流保护误动作。查了半天,发现采样点正好落在死区时间内。死区内的电流是续流电流,和实际负载电流有偏差。把采样点移到死区外,问题就解决了。
死区时间内的采样规避,我总结了几条规则:
| 场景 | 规避策略 | 说明 |
|---|---|---|
| 单次采样 | 采样窗口避开死区前后各1μs | 留足安全裕量 |
| 多次采样 | 丢弃死区内的采样点 | 软件滤波剔除 |
| 同步采样 | 用PWM同步信号触发ADC | 硬件自动对齐 |
警告:死区时间通常只有几百纳秒到几微秒,但采样点落在里面,误差可能达到5%~20%。特别是高精度应用(如伺服驱动),必须严格规避。
4.4 知识体系与核心逻辑
下面这张图,是我自己总结的采样窗口设计逻辑。你看一遍,基本就明白整个流程了。
这张图的逻辑很清晰:先确认PWM参数,然后依次检查三个条件。任何一个不满足,就要调整采样窗口的位置或宽度。三个条件都满足,配置才算完成。
4.5 实战中的避坑指南
最后分享几个我踩过的坑,希望能帮你少走弯路:
- 坑一:采样窗口设得太宽。我曾经把窗口设到PWM周期的30%,结果采样值包含了开关噪声和稳定区,平均值反而更不准。后来控制在10%以内,效果最好。
- 坑二:忽略采样保持电容的建立时间。不同ADC的采样电容大小不同,充电时间也不同。我建议用示波器实测采样保持波形,确认电容电压在窗口结束前稳定。
- 坑三:死区时间内的采样点没完全剔除。软件滤波时,我习惯在死区前后各加一个采样点的屏蔽区,确保万无一失。
我的习惯:每次调试新板子,我都会先用软件扫描法找出最佳采样窗口位置。虽然多花半小时,但能省下后面几天的排查时间。你想想看,值不值?
好了,采样窗口设计就聊到这儿。记住三个核心:匹配时间、避开噪声、规避死区。做到这三点,ADC采样数据基本就干净了。