TI论坛
直播中

贾伟刚

7年用户 1572经验值
私信 关注
[问答]

ADS127L01是一个24 bit的数模转换器,读取出来的实际的24bit的值如何跟实际的电压对应起来,转换公式是什么?


  • ADS127L01是一个24 bit的数模转换器,读取出来的实际的24bit的值如何跟实际的电压对应起来,转换公式是什么?
    比如以下是我读取到的数据:
    TX | 0x00 0x00 0x00 0x12
    RX | 0x56 0x34 0x80 0x20
    获取到的数据取低24bit,就是0x34 0x80 0x20,实际值是0x348020,这个值如何转化为实际的输入电压值?
    谢谢。

回帖(2)

夏日余晖

3 天前

您好,

要将输出代码转换为电压,必须首先计算最低有效位或LSB的值。一个LSB代表一个代码的电压权重。换句话说,输入电压必须改变一个LSB大小,以增加/减少ADC输出。ADC的满标度范围(FSR)除以总的代码数可得出LSB值:

LSB

= FSR / (2^n - 1), 其中“n”是ADC的分辨率。

在ADS127L01

中,每个ADC的差分输入电压可以在-VREF到+VREF之间,因此满标度范围=2 x VREF。那么,LSB值计算如下截图所示:


接下来,您必须知道ADC的输出数据格式。ADS127L01 以二进制补码输出数据,其中0x7FFFFF表示正满标度,0x800000表示负满标度。如上截图中 table

20中所示。

将输出代码转换回输入电压的最直接的方法是将数据与0x800000进行逻辑“与”计算并测试MSB(最高有效位)。如果MSB等于0,只需将十进制等效值乘以LSB值。如果MSB=1,则必须首先从十进制等效值中减去2^n,然后乘以LSB值。

例如,使用VREF=2.5

V,N=24bit,,我们可以计算LSB大小为298 nV。输出代码0x147AE1对应于+400

mV的输入电压。同时,输出代码0xD70A3D对应于-800mV的输入电压。

如果输出代码是0x348020,那么就是1.025V。

注意我这里计算都四舍五入了,取的都是整数,计算时您可以保留更多位小数位以提高计算精度。


举报

自我清欢

3 天前
要将ADS127L01读取到的24位数值转换为实际的输入电压值,我们需要知道以下几个参数:

1. Vref:参考电压,即数模转换器的输入电压范围。
2. 分辨率:ADS127L01是一个24位的数模转换器,所以分辨率为2^24。

转换公式如下:

实际电压值(V)= (读取到的数值 × Vref) / (2^24)

以您提供的数据为例,读取到的数值为0x348020,我们需要将其转换为十进制数值:

0x348020 = 3 * 16^5 + 4 * 16^4 + 8 * 16^3 + 0 * 16^2 + 2 * 16^1 + 0 * 16^0
         = 3 * 1048576 + 4 * 65536 + 8 * 4096 + 0 * 256 + 2 * 16 + 0 * 1
         = 3145728 + 262144 + 32768 + 32
         = 3441696

假设参考电压Vref为±5V(即±5V范围内的电压值),则实际电压值V的计算如下:

V = (3441696 × 5) / (2^24)
  = 1720848 / 16777216
  ≈ 0.1026 V

所以,根据您提供的数据和参考电压,实际输入电压值约为0.1026V。请注意,实际应用中需要根据具体的参考电压和数模转换器的参数进行调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分