将ADC Bins转换为电压

时间:2009-05-21 12:39:24

标签: embedded analog-digital-converter

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

将ADC分档转换为伏特的正确转换公式是什么?

V = ADC / 4096 * 5

V = ADC / 4095 * 5

我是否除以4096因为ADC中有4096个二进制位?

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

5 个答案:

答案 0 :(得分: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快速检查数学使我相信这是正确的。

答案 1 :(得分:2)

ADC 的规范应该确定以12位表示5V的表示方式。

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

答案 2 :(得分:1)

V = ADC / 4096 * 5

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

这是根据Walt Kester编辑的数据转换手册(Newnes,2005), 并于(截至2018/10/18)于:

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

特别参见第2章的图2.4和2.5: Figures 2.4 and 2.5 from Data Conversion Handbook

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

答案 3 :(得分:1)

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

此外,ADC的步骤可能是均匀的(线性的),但要注意ADC在该范围的两个末端处对二极管的作用。那些箱子的宽度可能是其他箱子的一半。这取决于ADC,因此请查看规格。

这种担忧是否重要取决于您的申请。

答案 4 :(得分:1)

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