ADC 分辨率、LSB、电压计算器
从分辨率和参考电压计算LSB电压、量子化误差、动态范围、代码↔电压转换、ENOB、过采样
使用方法
- 选择设备预设(Arduino / ESP32 / STM32 / 16bit)或输入分辨率(bit)和参考电压Vref
- 选择LSB约定(2^N标准 / 2^N−1端点)
- 显示1LSB电压、代码数、量子化误差、动态范围、理想SNR
- 输入代码或电压,另一方会双向计算
- 在分辨率比较表中,可以比较同一Vref下各位深度的LSB
- 输入SINAD时会得到ENOB(有效分辨率),输入额外位时会得到过采样所需倍数
适用场景
- 想知道从分辨率和参考电压中1LSB是多少mV/µV时
- 想将ADC读数(代码)转换为电压,或将电压转换为代码时
- 确认Arduino的analogRead转电压时应该用1024还是1023相除时
- 想从数据表的SINAD求有效分辨率(ENOB)时
- 想知道过采样时增加多少位需要多少倍样本时
常见问题
analogRead转电压时应该用1024还是1023相除? ▼
两者都使用。1024(=2^N)忠实于ADC的传输函数,每个代码代表宽度为Vref/1024的箱(读数1023为4.9951V,不会正好是5V)。1023(=2^N−1)线性映射0~Vref,读数1023正好是5V。最精确的是用1024相除并加上+0.5LSB的偏移。本工具的约定切换可以确认两种结果。
LSB、量子化误差、动态范围的关系是什么? ▼
1 LSB = Vref ÷ 2^N 是每个代码的电压,量子化误差是±0.5 LSB。动态范围是6.02·N dB(满量程÷1LSB的比值),理想SNR是满量程正弦波时的6.02·N + 1.76 dB。增加1bit的N时,LSB减半,动态范围改善约6dB。LSB随Vref和约定变化,但动态范围/SNR仅由N决定。
过采样可以将分辨率提高到什么程度? ▼
要将分辨率提高w位,需要对4^w倍的样本进行求和,然后用2^w相除(抽取)。例如将12bit转换为14bit相当需要4^2 = 16倍的样本。但前提是输入有1LSB以上的随机噪声(必要时加抖动),如果噪声太小就没有效果。有效分辨率 = N + w,有效LSB = Vref ÷ 2^(N+w)。