微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 如何根据读数计算出ADS1247测量到的电压值是多少?

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

时间:10-02 整理:3721RD 点击:

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

因此,如果能根据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。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你好,我现在正在用ADS1247和PT100做一个测温项目。精度要求是0.5摄氏度。我按照TI给的参考电路画了板子。我用的是STM32作为MCU。现在的问题是我可以和ADS1247正常通讯了。但是我不知道该如何计算出测的的电压值或者电阻值。

ADS1247WREG(ADS1247_REG_MUX1,0x38); //内部参考电压打开。
ADS1247WREG(ADS1247_REG_IDAC0,0x06); //DOUT/DRDY pin functions only as Data Out (default) 并且1mA。
ADS1247WREG(ADS1247_REG_IDAC1,0x03); // IDAC1->AIN0 IDAC2->AIN3.
ADS1247WREG(ADS1247_REG_SYS0,0x26); //增益4,通信速率320sps

SPI_ADS1247_SendByte(ADS1247_CMD_SYNC); //同步AD转换
data22=ADS1247_ReadData_Ave();//得到转换值。

我给您上传一下附件。您帮我看下吧。我着实不知道该怎么计算。。。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top