代码之家  ›  专栏  ›  技术社区  ›  Robert Deml

将ADC箱转换为电压[关闭]

  •  8
  • Robert Deml  · 技术社区  · 16 年前

    V = ADC / 4096 * 5
    

    V = ADC / 4095 * 5
    

    我是否要除以4096,因为ADC中有4096个存储箱?

    5 回复  |  直到 16 年前
        1
  •  4
  •   Nate    16 年前

    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快速检查一下数学,我相信这是正确的。

        2
  •  3
  •   Adam L. Taylor    7 年前

    V=ADC/4096*5

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

    数据转换手册 ,由Walt Kester编辑(Newnes,2005年),

    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),相应的模拟电压也将略低于“满标度”电压(在您的情况下为5 V)。

        3
  •  2
  •   Brian Agnew    16 年前

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

        4
  •  1
  •   Stephen Friederichs    16 年前

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

        5
  •  1
  •   Craig McQueen Dr. Watson    16 年前

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

    此外,ADC的步进可能是偶数(线性),但请注意ADC对范围两端的存储箱所做的操作。这些箱子的宽度可能是其他箱子的一半。这取决于ADC,所以请检查规格。

    这个问题是否重要取决于你的申请。

    推荐文章