ADC / DAC 转换计算器
计算任意位深和参考电压下的 LSB 步长、量化 ADC 编码和重建后的 DAC 输出电压。以十进制、二进制和十六进制显示编码,并附带量化误差和理想信噪比。
输入
输出
| 指标 | 数值 |
|---|---|
| No data yet | |
使用指南
每个模数转换器和数模转换器都由两个数字决定:其分辨率位数,以及它测量所依据的参考电压。这款计算器可将这两个参数转换为在固件中缩放读数所需的一切——LSB 步长、输入电压产生的量化编码(十进制、二进制和十六进制)、DAC 从编码重建出的电压,以及你实际因量化而损失的分辨率。
使用方法
- 设置分辨率(位)——8、10、12 和 16 位覆盖大多数微控制器 ADC;24 和 32 位覆盖音频和高精度 sigma-delta 器件。
- 输入参考电压(Vref)。这是转换器的满量程范围,而不是电源轨——许多器件以 3.3 V 供电,却以内置的 2.5 V 或 1.2 V 参考电压进行测量。
- 输入模拟输入(Vin),查看 ADC 会为其产生的编码。
- 输入数字编码,查看 DAC 会为其输出的电压。
设置
- 满量程约定——
Vref / 2^N是标准定义,几乎所有 ADC 数据手册都采用它:最大编码位于 Vref 下方一个 LSB 处。Vref / (2^N − 1)则将最大编码恰好置于 Vref 处,这是某些 DAC 和 PWM 缩放代码所假设的。选错约定会在满量程处产生一个 LSB 的误差。 - ADC 量化方式——真实 ADC 采用截断:步长内的任何电压都会映射到其下方的编码。四舍五入到最近值则模拟理想传输函数并施加半个 LSB 的偏移,这是许多器件在校准后得到的结果。
计算公式
- 电平数 = 2^N,最大编码 = 2^N − 1
- LSB = Vref / 2^N(或 Vref / (2^N − 1))
- ADC 编码 = floor(Vin / LSB),限制在 0 … 最大编码之间
- 重建电压 = 编码 × LSB
- 量化误差 = Vin − 重建电压,限制在 ±½ LSB 以内
- 理想信噪比(SQNR)= 6.02 × N + 1.76 dB
FAQ
为什么每增加一位只换来 6 dB?
每增加一位都会将 LSB 减半,从而将量化噪声减半——幅度上的两倍就是 6.02 dB。这就是理想信噪比以约 6 dB 为步进变化的原因:无论信号链其余部分多么干净,12 位转换器最多也只能达到约 74 dB。
我的读数在最后两位上噪声很大——这是量化造成的吗?
通常不是。量化误差是确定性的,且被限制在半个 LSB 以内;在多个计数之间游走的噪声通常是参考电压噪声、地弹,或输入阻抗与 ADC 采样保持电路不匹配所致。将该游走范围与这款计算器报告的 ±½ LSB 数值比较——如果大得多,说明转换器的分辨率并不是你的瓶颈。
这个模型是否涵盖偏移、增益误差或 INL?
不涵盖——这是理想的量化数学,适合用于固件缩放检查和比较分辨率与参考电压的选择。真实世界中的偏移、增益误差、积分/微分非线性以及噪声来自器件数据手册,它们叠加在这些数值之上。
相关工具
对于通常接在 ADC 输入前的电阻分压器,请使用分压计算器。如果你不是用 DAC,而是用经过滤波的 PWM 输出来驱动模拟电平,PWM 占空比与频率计算器覆盖了这一侧的需求。如需手动将原始编码转换为其他进制,请参阅整数进制转换器。
隐私
所有计算均在浏览器内完成——你输入的任何内容都不会发送到服务器。
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/adc-dac-converter-calculator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bits": "12",
"vref": "3.3",
"vin": "1.65",
"code": "2048",
"scale": "pow",
"rounding": "floor"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `adc-dac-converter-calculator` tool (ADC / DAC Converter Calculator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.