ADC 分辨率计算器

输入 ADC 的位数和参考电压,即可获取其步长、量化误差和理想 SNR,支持电压与代码互转,并展示完整的数值代入步骤。

转换器与范围

1 到 32 之间的整数 —— 转换器的标称位宽。
输入范围

测量点 (可选)

留空则跳过测量。

你需要多少位分辨率?(可选)

步长与噪声

LSB 步长

公式与数值代入

LSB = FSR ÷ 2ᴺ · 最大误差 = ½ LSB · SNR = 6.02N + 1.76 dB

    你输入的每个数字都保留在此浏览器中 —— 绝不会被上传。

    常见问题

    为什么有些资料除以 2^N,而另一些除以 2^N − 1?

    这是同一款转换器的两种不同建模方式。数据手册和经典的量化理论定义 LSB = FSR ÷ 2^N,且第一个代码转换点位于半步处 —— 本页面采用的就是这种模型。而 Vref ÷ (2^N − 1) 的形式则源于将最大代码精确映射到 Vref 上,这在单片机教程中很常见。在 12 位分辨率下,两者仅相差约 0.02%,远低于任何实际参考源的容差;在对比不同来源的数据时,注意不要将两者混用即可。

    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 低一个步长。在上方选择双极性范围,零伏特将刚好对应中间代码。

    当步长太粗糙时,我该怎么办?

    当信号中含有少量噪声时,过采样和求平均可以提高分辨率:平均 4× 的采样量可以获得约 1 位的有效位数,16× 则可获得 2 位,前提是噪声为白噪声且互不相关 —— 完全干净、完全静止的信号只会重复输出相同的代码。除此之外,您需要更换为位数更高的转换器,或者增加一个可编程增益放大级,使信号占满更多的量程。

    在设计混合信号系统、调试微控制器外设或评估传感器信号链时,精确计算模数转换器(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 位,前提是噪声为白噪声且互不相关 —— 完全干净、完全静止的信号只会重复输出相同的代码。除此之外,您需要更换为位数更高的转换器,或者增加一个可编程增益放大级,使信号占满更多的量程。