在设计混合信号系统、调试微控制器外设或评估传感器信号链时,精确计算模数转换器(ADC)的物理分辨率是必不可少的步骤。ADC 分辨率计算器能够根据用户输入的“分辨率 N (位)”和“参考电压”,快速计算出 Least Significant Bit(LSB)步长、量化误差以及理想信噪比(SNR)。
本工具的所有计算均在用户的浏览器本地完成。你输入的每个数字都保留在此浏览器中 —— 绝不会被上传,确保了数据的私密性。
转换器参数与范围计算
在评估 ADC 时,首先需要确定其满量程范围(FSR)和量化电平数。根据输入范围的配置不同,计算公式也有所区别:
- 单极性 · 0 到 Vref:满量程范围等于参考电压(FSR = Vref)。输入电压范围限制在 0 到 Vref 之间。
- 双极性 · −Vref 到 +Vref:满量程范围等于两倍的参考电压(FSR = 2 × Vref)。输入电压范围从 −Vref 延伸至 +Vref。
量化电平数决定了转换器能够将满量程范围细分为多少个离散阶梯,其计算公式为: 量化电平数 = 2^N
最大输出代码(即最大计数值)比总电平数少 1: 最大代码 = 2^N − 1
LSB 步长与量化噪声
LSB 步长代表相邻两个数字代码之间的最小电压差。本工具采用理想量化器模型,定义 LSB 步长为: LSB = FSR ÷ 2^N
在理想状态下,连续的模拟信号在转换时会被四舍五入到最接近的数字代码,这会引入量化误差。最大量化误差(±½ LSB)的计算公式为: 最大量化误差 = ±LSB ÷ 2
量化噪声的均方根(rms)电压则通过以下公式计算: 量化噪声 (rms) = LSB ÷ √12
对于满量程正弦波输入,理想的信噪比(SNR)和动态范围仅取决于转换器的位数 N:
- 理想 SNR (满量程正弦波) = 6.02 × N + 1.76 dB
- 动态范围 = 6.02 × N dB
以 12 位分辨率、3.3 V 参考电压、单极性范围为例:
- 量化电平数为 4,096,最大代码为 4,095。
- LSB 步长 = 3.3 V ÷ 4,096 ≈ 805.6641 µV(占满量程的 0.0244%,即 244 ppm)。
- 最大量化误差为 ±402.832 µV,量化噪声约为 232.5752 µV rms。
- 理想 SNR 约为 74.01 dB,动态范围约为 72.25 dB。
测量点转换与边界规则
在“测量点 (可选)”部分,用户可以进行电压与代码的双向转换。
电压 → 代码转换
将输入电压转换为数字代码时,计算器使用四舍五入算法:
- 单极性代码:code = round(Vin ÷ LSB)
- 双极性代码:code = round((Vin + Vref) ÷ LSB)
如果输入电压超出设定的电源轨,输出代码将会饱和,并触发以下警告:
- 输入超出高电源轨:输入超出高电源轨:输出饱和在最大代码,显示的误差为实际残留误差 —— ±½ LSB 的误差限制不再适用。
- 输入低于低电源轨:输入低于低电源轨:输出饱和在代码 0,显示的误差为实际残留误差 —— ±½ LSB 的误差限制不再适用。
如果输入电压刚好处于半量程,工具会提示:刚好处于半量程:一半的量程映射到代码 ‹code›,且量化误差为零。例如,在上述 12 位 3.3 V 单极性配置下,1.65 V 输入刚好对应中间代码 2,048(二进制 1000 0000 0000,十六进制 0x800),此时量化误差为零。
代码 → 电压转换
将数字代码还原为物理电压时,计算公式为:
- 单极性电压:V = code × LSB
- 双极性电压:V = code × LSB − Vref
量化误差在测量点定义为:代码对应电压 − 输入电压。同时,工具会给出该代码对应的输入电压范围,即 [代码对应电压 − ½ LSB, 代码对应电压 + ½ LSB]。
分辨率尺寸估算
如果你需要确定检测特定微小电压变化所需的最小位数,可以在“你需要多少位分辨率?(可选)”中输入“需要分辨的最小变化量”。
计算器将使用对数公式计算所需的最小位数,并向上取整到最接近的整数位: N ≥ log₂(FSR ÷ 步长)
系统会根据当前设置输出以下状态之一:
- 满足要求:分辨
‹step›至少需要‹bits›位 —— 当前的‹current›位转换器可以满足要求。 - 不满足要求:分辨
‹step›至少需要‹bits›位 —— 当前的‹current›位转换器仅能分辨‹lsb›。
常见问题
12 位分辨率是否意味着 12 位精度?
不能。分辨率仅代表代码的宽度 —— 即将范围细分到何种程度。而精度则受限于转换器的 INL、失调/增益误差、参考源的容差与噪声以及外围电路。这就是为什么数据手册会给出 ENOB(有效位数):一个 12 位的 SAR 转换器通常只能提供 10–11 位的有效位数。此处显示的 74 dB 理想 SNR 是一个理论上限,实际的 12 位转换器是无法达到的。
±Vref 输入如何改变计算公式?
此时量程加倍至 2 × Vref,因此相同的转换器分辨的步长也加倍:LSB = 2 × Vref ÷ 2^N。代码从负电源轨延伸到正电源轨 —— 代码 0 对应 −Vref,中间代码 2^(N−1) 对应 0 V,而最大代码则比 +Vref 低一个步长。在上方选择双极性范围,零伏特将刚好对应中间代码。
为什么有些资料除以 2^N,而另一些除以 2^N − 1?
这是同一款转换器的两种不同建模方式。数据手册和经典的量化理论定义 LSB = FSR ÷ 2^N,且第一个代码转换点位于半步处 —— 本页面采用的就是这种模型。而 Vref ÷ (2^N − 1) 的形式则源于将最大代码精确映射到 Vref 上,这在单片机教程中很常见。在 12 位分辨率下,两者仅相差约 0.02%,远低于任何实际参考源的容差;在对比不同来源的数据时,注意不要将两者混用即可。
当步长太粗糙时,我该怎么办?
当信号中含有少量噪声时,过采样和求平均可以提高分辨率:平均 4× 的采样量可以获得约 1 位的有效位数,16× 则可获得 2 位,前提是噪声为白噪声且互不相关 —— 完全干净、完全静止的信号只会重复输出相同的代码。除此之外,您需要更换为位数更高的转换器,或者增加一个可编程增益放大级,使信号占满更多的量程。