有不少传感器元件,可以根据直接的模拟信号电压输出值算出其被测量的实际值。
因此,如果能根据ADS1247的时间读数,就能计算出其被测元件的输出电压,那就可以算出实际被测量。
我初期预计电压的计算方法应该是:Vin(实际电压值) = Dout(原始读数)/ 8388607 × 4 × 2.048V。
为了检验我通过一个滑动变阻器,来模拟这种电压变化。
ADS1247采取电压模式进行配置:MUX0 = 0x01,VBIAS = 0x00,MUX1 = 0x38,SYS0 = 0x00,IDAC0 = 0x00,IDAC1= 0xFF。
后来发现测量的结果,大出乎我的意料之外:
————————————————————————————————————————————————————–
编号 |
万用表测量值(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芯片上表现出明显呈比例关系。
这种情况是对的吗?它的实际计算应该是这样的么?
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。这样电容电压模式均可以同时兼容。