TI中文支持网
TI专业的中文技术问题搜集分享网站

如何根据读数计算出ADS1247测量到的电压值是多少?

有不少传感器元件,可以根据直接的模拟信号电压输出值算出其被测量的实际值。

因此,如果能根据ADS1247的时间读数,就能计算出其被测元件的输出电压,那就可以算出实际被测量。

我初期预计电压的计算方法应该是:Vin(实际电压值) = Dout(原始读数)/ 8388607 × 4 × 2.048V。

为了检验我通过一个滑动变阻器,来模拟这种电压变化。

ADS1247采取电压模式进行配置:MUX0 = 0x01,VBIAS = 0x00,MUX1 = 0x38,SYS0 = 0x00,IDAC0 = 0x00,IDAC1= 0xFF。

后来发现测量的结果,大出乎我的意料之外:

————————————————————————————————————————————————————–

为了了解和验证ADS1247读数与输入电压之间的关系,进行了一组实验数据对比。
AVDD电压:4.687V
采取的ADS1247模式为0x0100380000FF,即采取标准电压模式,未采取增益,采样率为5SPS。
编号
万用表测量值(mV)
设备读数
变换值
1/8388607
差值
Δ
比值
Κ
简要说明
1
4.8
-29500
3.45
1.35
1.39
2
4.2
-24700
2.94
1.26
1.43
3
10.7
-64000
7.63
3.07
1.40
4
10.3
-62200
7.41
2.89
1.39
5
34.9
-211500
25.2
8.7
1.38
6
34.8
-210450
25.1
1.38
7
52.0
-315240
37.58
1.38
8
102.8
-623220
74.27
1.38
9
208
-1261499
150.38
1.38
10
407
-2468700
294.29
1.383
11
801
-4855085
578.77
1.384

在此ADS1247芯片上表现出明显呈比例关系。

即:Vin(实际)=Dout(实际读数)/ 8388607 × 1.38。
————————————————————————————————————————————————————–

这种情况是对的吗?它的实际计算应该是这样的么?

Janet Sun:

你好,没有明白你的表格差值和比值是什么意思?你做这个实验的目的是什么?是验证输出代码与输入电压的关系吗?

另外,万用表用的是哪种型号?ADS1247是24位的AD,你的万用表精度很可能都没有ADS1247的精度高,那你这样测量是不合理的。建议用八位半的万用表,至少也要六位半才可能有意义。

Forest Luo:

回复 Janet Sun:

(1)表格是为了研究:“万用表测量值”与“ADS1247数据输出/8388603”之后的值之间的关系。

看看是线性偏差,还是线性比例关系。最后发现是呈线性比例关系。但是这个线性比例关系的比值不是所预想的数值。

(2)万用表型号是Victor VC890C+。

我就想知道如何根据ADS1247的数据输出算出前端的AIN1和AIN0之间的电压差是多少。您能给我一个推荐的公式么?

Janet Sun:

回复 Forest Luo:

1LSB=(VREF/PGA)/(2^23 – 1),输入与输出代码的关系可以参见数据手册Data Format部分,以及Table17,写的很清楚。

你用的万用表是三位半的,精度很差,用它来进行测试结果是不可靠的。

另外,在应用时还要注意输入Vin的范围,以及VIN+,VIN-引脚的电压,要在共模电压的范围内。也就是要满足数据参数full-scle input voltage,以及,common-mode input range的范围。

Forest Luo:

回复 Janet Sun:

(1)您所推荐的公式我也用了,发现数值普遍比万用表的测量数值偏大,而且与万用表测量值呈一个固定的比例倍数。

(2)我的万用表的确精度不算太高。但是测量ADS1247的标准参考电压VREF,测量结果就是2.047左右(仅最后一位跳动),说明误差不大。至少有三位有效数字是没问题的。

(3)目前测试用的电压都在毫伏级别,且PGA=1,不会超过Full-scale input voltage,也在Commom-mode input range之内。

Janet Sun:

回复 Forest Luo:

你好,你的原理图是什么样的?输入信号源是什么提供的?

可能系统和芯片本身会存在offset和gain error。芯片本身的offset可以利用校准被命令校准掉,gain error的话可以利用软件进行处理。

我的意思是你的万用表测的不准,所以你的比较是没有意义的。

Forest Luo:

回复 Janet Sun:

输入的信号就是一个旋转电位器组成,分一部分电压输入。输入电压级别在mV。从AIN0和AIN1输入。

Janet Sun:

回复 Forest Luo:

仔细看了一下你的转换结果,误差不应该那么大,肯定是不对的。寄存器设置MUX1中的REFSELT1:0为11,为什么要讲参考连到REFP上?你的REFP上接了R10为什么?

另外,你在VREFOUT上加了大电容,需要一定的建立时间,参照Table10,需要等待一定时间稳定后再读取结果。另外,此电容建议选取X5R,X7R 类型,可参考EVM。

Forest Luo:

回复 Janet Sun:

(1)问题找到原因了:是833.33欧的电阻,也就是R10干扰了测量。

(2)接上那个电阻的主要原因是考虑到电流测量模式。另外ADS1247的Application Report里面的RTD是有这个电阻的。

(3)在撤掉R10以后,电压的测量值和万用表的测量值能精确吻合。说明万用表的精度没那么差,至少三位有效数字没问题。

(4)变换的公式的确如DataSheet所描述:Vin(实际输入电压) = Dout(实际读数)/ 8388607 × 2.048V。

Janet Sun:

回复 Forest Luo:

R10在RTD的用法中是不使用内部参考的,直接用R10上的电压作为参考电压,即采用比例测量的方法。如果你用内部基准,加R10就不正确了。谢谢你的回复。

Forest Luo:

回复 Janet Sun:

找到了更加简单的解决办法:MUX1=0x38修改成MUX1=0x30即可,不用撤销R10。这样电容电压模式均可以同时兼容。

赞(0)
未经允许不得转载:TI中文支持网 » 如何根据读数计算出ADS1247测量到的电压值是多少?
分享到: 更多 (0)