假设我有一个12位模数转换器(4096个分档)。让我们说我有0到5伏的信号。
将ADC分档转换为伏特的正确转换公式是什么?
V = ADC / 4096 * 5
或
V = ADC / 4095 * 5
我是否除以4096因为ADC中有4096个二进制位?
或者我除以4095,因为这是ADC返回的最高值?
答案 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)
对于12位值,最大可表示值为4095,但当然总共有4096个值(包括零)。假设您的ADC是线性的,那么是,4095相当于满量程。这不一定是5V,但无论您的参考电压等于 OR 超过该电压的值(当然)。
答案 3 :(得分:1)
你想要挑剔吗?如果你真的想要挑剔,那么你还应该考虑每个“bin”代表一小部分值(在你的情况下约为1.2 mV)。因此,当您转换为电压值时,是否要返回箱子中间或箱子下边缘的电压值?也就是说,您想要在报告的值中有效地“截断”或“舍入”吗?
此外,ADC的步骤可能是均匀的(线性的),但要注意ADC在该范围的两个末端处对二极管的作用。那些箱子的宽度可能是其他箱子的一半。这取决于ADC,因此请查看规格。
这种担忧是否重要取决于您的申请。
答案 4 :(得分:1)
V = ADC / 4096 * 5
是将数字值转换回模拟电压(近似值)的正确公式。
这是根据Walt Kester编辑的数据转换手册(Newnes,2005), 并于(截至2018/10/18)于:
https://www.analog.com/en/education/education-library/data-conversion-handbook.html
在您的情况下,FS为5 V.(当然,您使用的是12位ADC,而不是3位ADC。)请注意,即使ADC值是最大可能值(4095 in您的情况),相应的模拟电压将略小于“满量程”电压(在您的情况下为5 V)。