应广PMS120B项目中,万用表测得分压点电压正常,ADC读数却偏低、跳动,甚至切换通道后首个数据总是异常。问题未必来自12位ADC本身,也可能是信号源阻抗过高,内部保持电容在一个ADCLK采集窗口内来不及稳定。
先给答案:PMC-APN001与PMS120B规格书共同指向同一结论:ADC前端不能只看输入电压范围,还要检查信号源能否在采集窗口内提供足够电荷。PMS120B建议ADCLK为2μs,并在500kHz输入条件下把模拟信号源最大阻抗控制在10kΩ以内。超出边界时,应降低等效源阻抗、延长建立时间、增加合适的储能/滤波电容,或使用低输出阻抗缓冲器。
原创实拍风格场景图:相同目标电压下,低阻信号源与高阻信号源的建立速度不同。图片由AI生成,用于解释测试场景,不代表特定量产电路。
一、ADC输入阻抗很高,为什么仍会读错?
“ADC引脚输入阻抗很高,所以前级用多大的电阻都没关系”是常见误解。静态测量时,引脚漏电流可能很小;但ADC开始采样后,内部开关会把采样保持电容接到引脚。外部信号源需要在很短的采集时间内转移电荷,让电容电压逼近真实输入。
等效阻抗 Rext
等效阻抗 Rint
等待转换
应广应用笔记PMC-APN001把这个过程抽象为 Rext + Rint 给约10pF内部电容充电。源阻抗越大,RC时间常数越长;如果采集窗口先结束,ADC锁住的就是尚未稳定的电压。典型表现包括:
- 输入电压上升时ADC结果偏低,下降时又可能偏高;
- 切换到电压差较大的通道后,首个样本带有上一通道“记忆”;
- 降低ADC时钟或增加等待时间后,读数明显接近万用表;
- 在ADC脚增加小电容后数据变稳,但响应速度随之变慢;
- 室温样机正常,全温度、低电压或批量器件上误差扩大。
应广应用技术的原理具有通用性。Microchip的ADC采集要求同样指出,源阻抗与内部采样开关阻抗会直接影响保持电容的充电时间;NXP的AN12217 ADC应用笔记也把源电阻列为采样未充分稳定时的关键误差来源。本文以应广科技单片机应用为主,其他资料仅用于交叉核验采样保持原理。

二、把PMC-APN001公式变成可执行的设计门槛
对阶跃输入,采样电容的充电误差会按指数规律衰减。应用笔记用输入失真度Δ描述未充满的比例:
按10位精度估算,应用笔记取Δ小于0.001,近似得到 ln(1/Δ)≈6.9。当内部等效电容约10pF时,公式可简化为 R < T/(6.9C)。关键不在背公式,而在正确确定T、R和目标精度。
| 条件 | 有效充电时间T | 10位理论R上限 | 工程解释 |
|---|---|---|---|
| 取样周期2μs,半周期充电 | 1μs | 约14.5kΩ(包含Rint) | PMC-APN001建议外部输入阻抗最好控制在10kΩ以内,为内部阻抗和偏差留余量 |
| 取样频率1kHz | 0.5ms | 约7.25MΩ | 理论上允许更高阻抗,但漏电、噪声、PCB污染和通道切换会成为新限制 |
| 取样频率100kHz | 5μs | 约72.5kΩ | 频率提高后可用建立时间减少,前端驱动能力要求上升 |
2.1 10位估算与12位保守设计要分开
PMC-APN001采用Δ≈1/210得到6.9系数,适合复现原应用笔记的10位估算。如果项目把误差目标定为小于0.5LSB,更保守的系数应写成 ln(2N+1);12位目标时约为9.01。以1μs有效建立时间、10pF等效电容估算,总阻抗上限约11.1kΩ。考虑Rint、温度和器件偏差后,PMS120B规格书给出的外部源阻抗不超过10kΩ,正好提供了更可执行的设计边界。
2.2 PMS120B ADC配置基线
| PMS120B规格项 | 规格书信息 | 对前端设计的含义 |
|---|---|---|
| ADC资源 | 12位R型ADC,最多12路外部模拟输入 | 12位转换码不等于整机12位有效精度,必须把前端、参考和噪声计入误差预算 |
| ADCLK与TACQ | ADCLK可选CLK÷1至CLK÷128;TACQ为一个ADCLK;建议ADCLK=2μs | 8MHz系统时钟可选÷16,4MHz可选÷8;改变系统时钟后必须同步复核 |
| 转换时间 | 12位转换为16个ADCLK | ADCLK=2μs时单次转换约32μs,通道等待、首样丢弃和滤波还会增加总周期 |
| 源阻抗建议 | 输入频率500kHz时,模拟信号源最大阻抗不要超过10kΩ | RTH、串联保护电阻和其他等效阻抗应共同纳入Rext预算 |
| 参考电压 | ADCRGC可选择VDD、4V、3V、2.4V、2V、1.6V或1.2V | 量程和保护设计必须对应实际参考源,并验证参考误差与供电条件 |
| 模拟引脚 | 输入模式、关闭上下拉、PADIER/PBDIER相应位清零 | 避免数字输入缓冲和弱上下拉对高阻模拟节点引入额外漏电或扰动 |
10kΩ是条件化建议,不是无条件精度保证。PMS120B的采样电容、开关阻抗、参考误差、漏电流、温度、输入频率与PCB环境都会影响结果。PMC-APN001用于建立第一版预算,PMS120B规格书用于确定配置边界,最终放行仍需依靠目标板的最坏条件测试。

三、Rext不是分压电阻相加,而是从ADC端看到的等效阻抗
计算电阻分压器时,很多人把上、下电阻直接相加,或者只拿上拉电阻作为源阻抗。这两种做法都不准确。把理想电压源短路后,从ADC节点向外看,分压网络的戴维南等效阻抗为:
电容不能直接并入直流戴维南电阻公式。对采样瞬间,它能在本地提供电荷;对真实输入变化,它又与RTH形成低通。设计时要分别检查“ADC内部小电容能否充满”和“外部大电容能否跟上被测信号”。
四、工程案例推演:24V风扇板为什么万用表正常、ADC却偏低?
假设一块24V直流风扇控制板需要监测18V至28V母线,ADC参考电压为3.3V,目标10位有效分辨率,ADC采样周期为2μs。电压结果用于欠压降档、堵转恢复和电源异常记录。首版硬件使用100kΩ/12kΩ分压,满量程28V对应3.00V,静态比例没有问题。
首版:比例正确,驱动余量不足
RTH = 100kΩ ∥ 12kΩ = 10.71kΩ
它已超过应用笔记“外部最好10kΩ以内”的建议。再加串联保护电阻、芯片内部阻抗与温度变化,总建立时间可能越过边界。
功能修正:保持比例,降低等效阻抗
RTH = 68kΩ ∥ 8.2kΩ = 7.32kΩ
28V对应约3.01V,分压比例基本不变,源阻抗回到10kΩ以内。但它只解决正常量程下的采集建立问题,对36V浪涌几乎没有ADC输入余量。
4.1 为什么这不是一个“几十个ADC码”的小问题?
以3.3V参考、PMS120B 12位转换计算,ADC端1LSB约0.806mV;经过约9.29倍分压换算,母线端每LSB约7.5mV。但“码值更细”不会自动消除模拟建立误差:若系统误差达到2%,28V母线仍可能偏差约0.56V,足以把稳定电源误判为欠压,使风扇反复降档、重启或触发故障记录。
4.2 仅更换电阻还不够,还要处理PWM噪声
风扇PWM边沿会通过电源、地和走线耦合到分压节点。若在ADC脚增加10nF电容,配合7.32kΩ等效源阻抗,外部时间常数约73μs,截止频率约2.17kHz。对25kHz PWM基波,一阶RC理论衰减约21dB;但母线突变需要更长时间才能反映到ADC。
4.3 量产版要按浪涌而不是正常电压定分压比
若设计输入只覆盖28V,36V浪涌会把68kΩ/8.2kΩ分压节点推到约3.87V,可能超过3.3V系统的安全范围。更稳健的首版可用100kΩ/8.2kΩ分压,并在ADC前串联1kΩ限流:28V对应约2.12V,36V对应约2.73V;分压网络RTH约7.58kΩ,加1kΩ后Rext约8.58kΩ,仍处于10kΩ建议范围内。上方100kΩ可拆成两个49.9kΩ,以分担浪涌电压和单颗电阻功耗。
| 工程决策 | 直接收益 | 新增代价 | 验证门槛 |
|---|---|---|---|
| 量产候选100k/8.2k,并串联1kΩ | 兼顾10kΩ源阻抗建议和36V浪涌量程 | 正常量程只使用部分ADC范围 | 按参考电压、阻值容差、浪涌和钳位电流核对安全余量 |
| ADC脚增加10nF | 提供瞬态电荷,抑制PWM高频分量 | 母线变化响应变慢 | 上电、欠压阶跃和短时掉电不能漏判 |
| PWM稳定区间采样 | 避开开关边沿和地弹噪声 | 软件调度与定时器耦合 | 覆盖全部占空比和频率组合 |
| 软件中值/均值滤波 | 抑制离群点和随机噪声 | 增加延迟,不能修复固定建立误差 | 比较滤波前后响应时间与误判率 |
案例结论:低阻分压解决“采样电容充不满”,浪涌量程与钳位设计解决“异常输入伤害ADC”,同步采样和RC解决“PWM把采样节点弄脏”,阈值回差解决“临界点反复跳变”。四类措施对应不同失效机理,不能用增加平均次数互相替代。
五、100k NTC采样:低功耗设计最容易忽略的阻抗边界
100k NTC配100k上拉电阻,在25℃附近的戴维南等效阻抗约为50kΩ。它对低功耗温度检测很常见,但在PMS120B建议的2μs ADCLK条件下明显高于10kΩ源阻抗边界。直接切换通道后立即转换,可能得到偏差或通道记忆。
更合理的两种路径
- 慢信号路径:在ADC节点增加10nF电容。50kΩ与10nF形成0.5ms时间常数;按PMC-APN001的10位估算等待6.9τ约需3.45ms,按12位0.5LSB保守目标等待9.01τ约需4.51ms。温度每秒采样一次时,这个量级通常可接受。
- 快速或多通道路径:保留高阻NTC网络以降低功耗,在其后增加低偏置、轨到轨、能稳定驱动电容负载的运放缓冲。ADC看到低输出阻抗,但要增加BOM、静态电流和运放误差预算。
不要只按25℃计算。NTC阻值跨温度变化,RTH也随工作点改变;ADC漏电、PCB表面污染和保护器件漏电在高阻节点上更容易转化成电压误差。最坏情况通常出现在阻值高、温度极端和板面潮湿同时发生时。
六、四种解决方案怎样取舍?
| 方案 | 适合条件 | 核心优势 | 主要风险 |
|---|---|---|---|
| 降低分压/传感电阻 | 允许增加少量静态功耗 | 简单、确定、无需增加器件 | 待机功耗上升,传感器自热可能增加 |
| 延长采集时间或降低ADC时钟 | MCU支持配置采集窗口,信号带宽低 | 不改BOM,直接增加建立时间 | 降低吞吐率,不能消除PWM耦合和漏电误差 |
| ADC脚增加电容 | 被测量变化慢,允许响应延迟 | 同时储能和低通滤波,成本低 | 电容过大会延迟故障响应,通道扫描需重新评估 |
| 运放电压跟随器 | 高阻传感器、高速采样或高精度 | 隔离前级,给ADC提供低阻驱动 | 增加成本、功耗、失调、稳定性和上电时序问题 |
工程上更有效的顺序是:先确认规格书的采集时间和推荐源阻抗,再计算最坏RTH;如果超限,优先判断能否延长采集时间,其次在响应速度允许时加电容,最后才用运放。盲目堆器件会把一个阻抗问题变成稳定性、功耗和启动时序问题。
6.1 不同应广单片机应用的前端检查重点
| 应用 | 常见高阻来源 | 优先处理 | 不能忽略 |
|---|---|---|---|
| 电池/母线电压 | 大阻值分压与串联保护电阻 | 按浪涌定分压比,计算RTH并设置RC | 参考电压变化、钳位电流和电阻耐压 |
| NTC温度 | 高阻NTC与低功耗分时供电 | 外部电容、毫秒级预充电或运放缓冲 | 全温阻值、自热、板面漏电和故障开短路 |
| 光敏/液位传感 | 传感器输出电流小、线缆长 | 缩短高阻走线,增加缓冲与抗干扰 | ESD、潮湿漏电、工频与射频耦合 |
| 电阻按键 | 电阻梯形网络整体阻值过大 | 按最小档位间隔分配误差预算 | 按键容差、接触电阻和同时按键状态 |
| 电流采样放大器 | 输出隔离电阻与抗混叠滤波器 | 确认放大器能稳定驱动ADC电容负载 | 共模范围、零点偏置、饱和恢复和PWM同步 |
| 电位器/模拟旋钮 | 电位器总阻值与滑动端串阻 | 选低阻值或增加节点电容 | 滑动噪声、断路状态和响应延迟 |
七、多通道ADC核心代码:把建立时间写进调度
硬件满足条件后,软件仍要正确配置PMS120B的模拟引脚、ADCLK和结果寄存器,并给通道切换留出建立时间。下面的代码沿用PMS120B规格书中的寄存器与宏写法,以PB3采母线、PB2采NTC为例。
#define ADC_FILTER_SAMPLES 5
void AdcInit(void)
{
PBC = 0B_XXXX_0000; /* PB0~PB3设为输入 */
PBPH = 0B_XXXX_0000; /* 关闭弱上拉 */
PBPL = 0B_XXXX_0000; /* 关闭弱下拉 */
PBDIER = 0B_XXXX_0000; /* 关闭数字输入缓冲 */
$ ADCM /16; /* Fsys=8MHz时,ADCLK=2us */
$ ADCRGC VDD; /* 示例参考电压;量产按量程选择 */
}
WORD AdcReadPB3Once(void) /* PB3:24V母线 */
{
WORD data;
$ ADCC Enable, PB3;
delay_us(8); /* 连续供电且节点已稳定时的通道建立 */
AD_START = 1;
while (!AD_DONE) NULL;
data$1 = ADCRH;
data$0 = ADCRL;
return data >> 4; /* 右移得到12位结果 */
}
WORD AdcReadPB2Once(void) /* PB2:NTC */
{
WORD data;
$ ADCC Enable, PB2;
delay_us(8);
AD_START = 1;
while (!AD_DONE) NULL;
data$1 = ADCRH;
data$0 = ADCRL;
return data >> 4;
}
PBC、PBPH、PBPL、PBDIER、ADCM、ADCRGC、ADCC、ADCRH和ADCRL均来自PMS120B规格书。delay_us()属于项目辅助函数;8μs是示例建立时间,必须由Rext、通道跨度和样机时间扫描确定。
WORD ReadNtcPowered(void)
{
WORD v[ADC_FILTER_SAMPLES];
BYTE i;
NTC_POWER = 1;
delay_ms(5); /* 50kΩ×10nF,按12位目标取约4.51ms */
(void)AdcReadPB2Once(); /* 丢弃切换后的首样 */
for (i = 0; i < ADC_FILTER_SAMPLES; ++i) {
v[i] = AdcReadPB2Once();
}
NTC_POWER = 0;
sort5_word(v); /* 项目需实现固定5点排序 */
return v[2]; /* 中值只抑制离群点 */
}
若NTC网络长期供电且节点始终稳定,不需要每次等待5ms;若通过GPIO或MOSFET分时上电,则外部RC预充电和ADC内部采集是两个不同阶段,不能用8μs通道等待代替毫秒级预充电。
代码能解决什么,不能解决什么?
- 丢弃首样可降低通道切换残留,但会增加转换时间和功耗;
- 中值滤波能去除少量尖峰,不能修正每次都偏低的固定建立误差;
- 标定能补偿可重复的增益/偏置误差,不能覆盖温漂、漏电和随机耦合;
- 阈值回差能防止状态抖动,但不能把错误的模拟前端变正确。
八、量产前验证:不要只在室温看一个稳定数字
- 做阻抗对照:保持输入电压不变,分别用低阻源和目标高阻源驱动ADC;若结果随源阻抗变化,先查采集窗口。
- 做时间扫描:逐步增加通道切换后的等待时间,绘制ADC码值与等待时间曲线,寻找真正的稳定区。
- 做阶跃测试:在量程低端与高端之间切换,观察首样、第二样和稳态值,确认通道记忆与响应延迟。
- 做噪声同步:覆盖风扇PWM的最小、最大和中间占空比,对比异步采样与固定相位采样的峰峰值。
- 做环境极限:覆盖供电上下限、目标温度范围、传感器阻值极限、板面潮湿与器件容差。
- 做故障注入:模拟分压开路、对地短路、ADC饱和、参考电压异常和运放未上电,检查系统是否进入安全状态。
| 放行指标 | 建议记录 | 不能接受的现象 |
|---|---|---|
| 稳态精度 | 参考表值、平均值、偏差、温度、电源 | 误差随源阻抗或等待时间明显变化 |
| 重复性 | 峰峰值、标准差、异常点比例 | PWM边沿附近频繁出现离群码 |
| 响应时间 | 阶跃至阈值所需时间 | 外部电容导致欠压或过温保护明显迟滞 |
| 通道隔离 | 切换顺序、首样与稳态差值 | 前一通道电压改变后一通道结果 |
| 故障覆盖 | 开短路、饱和、参考异常、软件超时 | 错误ADC值直接驱动执行器进入危险状态 |
实测数据边界:本文的电阻、RC、量程和误差均为可复算的工程推演,不冒充已完成的PMS120B样机数据。正式项目应保存修改前后ADC原始码、参考仪器读数、等待时间扫描、PWM相位、温度、电源和样板编号;只有这些记录满足产品误差预算,方案才能从“计算可行”进入“量产放行”。
九、真正的用户价值:不是ADC数字更漂亮,而是整机行为更可信
输出阻抗看起来只是一个模拟前端参数,最终却会穿过整条产品价值链:
如果源阻抗设计错误,失效代价不止是一组ADC码偏差,还可能包括错误保护、风扇频繁重启、售后误判、返板改阻值和批量校准时间。前期多做一次RTH计算和阶跃测试,往往比后期增加软件补丁更便宜。
最终判断:ADC精度是“参考电压、模拟前端、采集时间、PCB、算法与标定”的共同结果。PMC-APN001最重要的价值不是给出10kΩ这个数字,而是提醒团队:必须把信号建立过程纳入设计,而不是等样机读数异常后再靠平均滤波补救。
十、ADC输出阻抗与采样误差常见问题
应广PMS120B模拟信号源阻抗应控制在多少?
PMS120B V0.00规格书建议,在输入频率500kHz条件下,模拟信号源最大阻抗不要超过10kΩ;同时建议ADCLK以2μs工作。10kΩ是对应条件下的设计边界,最终仍需按实际前端和精度测试确认。
ADC输入阻抗很高,为什么还要求信号源输出阻抗低?
静态输入阻抗高,不代表采样瞬间不取电荷。内部采样开关闭合后,外部信号源必须在有限时间内给保持电容充电;源阻抗过高会使电容未稳定就开始转换。
电阻分压接ADC时,输出阻抗怎样计算?
把独立电压源置零后,从ADC节点向外看,上、下分压电阻为并联关系。RTH等于两者并联值,再加串联保护电阻、走线和其他等效阻抗。
ADC引脚加电容能解决高源阻抗吗?
电容能在采样瞬间提供电荷并滤除高频噪声,但会与源阻抗形成新的时间常数。必须同时验证真实信号带宽、通道切换等待时间和故障响应延迟。
为什么切换ADC通道后第一次读数容易异常?
内部采样电容可能保留上一通道的电荷。新通道源阻抗较高或采集时间较短时,第一次转换前无法充分稳定,可通过延长采集时间或丢弃首样改善。
什么时候应该使用运放缓冲ADC输入?
当传感器必须保持高阻、采样速度较高、通道电压跨度大,或增加等待时间仍无法达到精度时,应评估低输出阻抗、轨到轨且能稳定驱动电容负载的运放。

技术依据与适用边界:本文依据应广科技《PMC-APN001 ADC模拟信号源输出阻抗应用需知》v001(2013-04-23)及《PMS120B 8位OTP型单片机带12位电阻式ADC》中文规格书V0.00(2026-07-24)独立整理。代码中的板级引脚、延时、参考电压、保护器件与阈值需要按实际原理图和最新规格书复核;AI生成封面仅用于表达实验场景,技术电路以文内矢量示意和实际工程文件为准。
