9

假设我有一个 12 位模数转换器(4096 个 bin)。假设我有一个 0 到 5 伏的信号。

将 ADC 二进制转换为伏特的正确转换公式是什么?

V = ADC / 4096 * 5

或者

V = ADC / 4095 * 5

我是否因为 ADC 中有 4096 个 bin 而除以 4096?

还是我除以 4095,因为这是 ADC 返回的最高值?

4

5 回答 5

4

Brian 关于检查 ADC 数据表的建议是理想的。但!假设您的最大电压 (5V) 等于最大 ADC 输入(12 位 = 4095),则以下转换应该适合您:

const float maxAdcBits = 4095.0f; // Using Float for clarity
const float maxVolts = 5.0f;      // Using Float for clarity
const float voltsPerBit = (maxVolts / maxAdcBits);

float yourVoltage = ADCReading * voltsPerBit;

使用 Excel 快速检查数学让我相信这是正确的。

于 2009-05-21T12:48:28.310 回答
3

V = ADC / 4096 * 5

是将数字值转换回模拟电压(近似值)的正确公式。

这是根据由 Walt Kester(Newnes,2005 年)编辑的The Data Conversion Handbook提供的,可在(截至 2018 年 10 月 18 日)在:

https://www.analog.com/en/education/education-library/data-conversion-handbook.html

具体参见第 2 章中的图 2.4 和 2.5: 数据转换手册中的图 2.4 和 2.5

在您的情况下,FS 将是 5 V。(当然,您使用的是 12 位 ADC,而不是 3 位 ADC。)请注意,即使 ADC 值是最大可能值(在您的情况下为 4095) ,相应的模拟电压将略低于“满量程”电压(在您的情况下为 5 V)。

于 2011-10-25T19:55:54.050 回答
2

ADC 的规范应该确定 5V 是如何用 12 位表示的。

我怀疑 4095 对应于 5V,因此您的第二个解决方案是正确的。否则,您将永远无法正确识别 5V 信号。

于 2009-05-21T12:47:36.863 回答
1

对于 12 位值,最大可表示值为 4095,但当然总共有 4096 个值(包括零)。假设您的 ADC 是线性的,那么是的,4095 相当于满量程。这不一定是 5V,但无论您的参考电压是否等于超过该电压的值(当然)。

于 2009-05-23T15:26:52.410 回答
1

你想有多挑剔?如果您真的想挑剔,那么您还应该考虑每个“bin”代表一个小范围的值(在您的情况下约为 1.2 mV)。那么在转换成电压值的时候,是要返回bin中间的电压值,还是bin下边缘的电压值呢?也就是说,您是否想在您报告的值中有效地“截断”或“舍入”?

此外,ADC 的步长可能是均匀的(线性),但要注意 ADC 对范围两端的 bin 的作用。这些箱子可能是其他箱子宽度的一半。这取决于 ADC,因此请检查规格。

这个问题是否重要取决于您的应用程序。

于 2009-06-07T09:04:09.967 回答