微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1247使用三线制PT100,测温精度以及AD校准问题

ADS1247使用三线制PT100,测温精度以及AD校准问题

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

最近使用ADS1247做PT100温度检测,设计测温范围为-20~220左右

电流源选取250uA,Rbias=3K,则参考电压为1.5V,Rcomp=140Ω

做好程序以后,读取的温度误差很大,比正常温度高5度,每次上电对AD进行校准,下面是图纸以及程序,请问不准的原因是什么

void ADS_Init(void)
{
WriteReg_S((Reg_MUX0 | 0x40) , 0x00 , 0x01); //MUX0初始化 BSC_OFF,AIN0,AIN1默认
WriteReg_S(Reg_VBias | 0x40 , 0x00 , 0x00); //BIAS_OFF
WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x20); //0x30 //
WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x70); //0x77
WriteReg_S(Reg_IDAC0 | 0x40 , 0x00 , 0x0B);
WriteReg_S(Reg_IDAC1 | 0x40 , 0x00 , 0x01);
}

void ADS1247_Calibrate(unsigned char Gain)
{
WriteReg_S(Reg_SYS0 | 0x40 , 0x00 ,0x70); //设置校准增益 G=128

WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x20); //正常模式
ADS_WriteByte(SELFOCAL); //系统偏移自校准
WaiteRDY(); //等待校准完成

WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x21); //设置AINP+AINN=(AVDD+AVSS)/2
ADS_WriteByte(SYSOCAL); //系统偏移自校准
WaiteRDY();

WriteReg_S(Reg_MUX1 | 0x40 , 0x00 , 0x22); //设置AINP=VREF+,AINN=VREF-; for gain calibration
ADS_WriteByte(SYSGCAL); //系统增益校准
WaiteRDY();

}

float Get_Tempture(signed long AD_Value) //计算温度值
{
float Temp = 0;
float AD_Temp = AD_Value;
float AD_Vl = 0;
float IN_Vl = 0;
float RRTD = 0;

if(AD_Temp > 0x7FFFFF)
{
AD_Temp -= 0xFFFFFF;
}

AD_Temp *= 1.5;
AD_Vl = AD_Temp / 0x7FFFFF;
IN_Vl = AD_Vl / 128;
RRTD =140 + IN_Vl * 4000;

Temp = (RRTD -100)/0.396847;

return(Temp);
}

温度计指示室温30度   但是我测出来的 37度,请问技术 啥原因啊  我是怎么也想不明白了,求真相

万用表实测PT100的1.2端电压27.5mV,R10电压34mV,R15两端电压1.4775V

随机看了一下校准值:OFC = FFFC9D   FSC = 3FFE40

Hi

  测试的准确度主要包括两个方面:

  1.PT100温度与ADC模拟输入的对应关系。

  2. ADC模拟输入与数字输入对应的准度关系。

  建议你先确认一下ADC的有效位大约是多少?

Hi

   另外建议你确认一下Vrefout的电压时多少?

    按照你R15的测量是1.477V,  按照你的电路,采用内部参考电压,REF0参考电压应该是2.048V, 而不是1.477V.

楼主,转换的线性度怎么样

参考源应该是(250uA+250uA)*3K = 1.5V吧

开了内部参考应该是给电流源供电的吧

PT100的温度对应 就是-20~220 对应AD数据-7FFFFF~7FFFFF

模数对应问题,系统校准应该能解决这个吧,虽然我校准完后感觉还是不是特别好

转换的时候  我发现AD结果后12位在不停的变化  难道说明我AD有效位数就是24-12 = 12位?

我还没考察呢  

VREFOUT电压是2.048V  这代表什么?

Hi

   如果稳定状态下,转换同一电压得到的结果后面12位在不停的变化, 意味着你的有效位只有12位(24-12)这个是偏低的。

  

我这个电路原理基本就是按照sbaa180.pdf来做的

程序是自己写的,转换结果低温高温都可以测,就是不准有偏差

不知道你们有没有成熟的example,或者帮我完善一下我这个工程   做好了我贡献出来做example 

我使用MSP430G2553来取得转换结果的  然后通过串口发送给PC机

Hi

   我误会了。

    偏置电阻利用IDAC的电流输出得到基准电压给到ADC, 所以按照250uA+250uA)*3K = 1.5V 是对的。

    在这里3k的电阻需要选择高精度(0.1%),温飘极小的电阻。 (按照你1.477V的测试,精度在1.5%,这个是偏大的,一般ADC的参考电压精度都是0.1%,但是这里的精度损失是来自于DAC电流源的精度)

    参考电压源对于ADC转换精度的影响是很大的, 或者你可以参考以下文章:RTD方案中RC滤波器的应用

    http://www.ti.com.cn/cn/lit/an/sbaa201/sbaa201.pdf

 

Hi
  另外要注意的AD板子上数模隔离的问题。(包括电源,从你的电路看中间有增加一个磁珠,建议改成用CLC的滤波器)
  以及供电电源尽量使用低noise的稳定电源。

我的电阻选用的是0.1%的低温漂电阻,25ppm的

精度的损失应该是250uA的电流源不准

请问从我的图纸上看 还有AD的初始化、AD校准、温度计算这几个地方有没有明显的不对的地方

我觉得即使参考源影响再大,也不会偏差到5~7℃这样子所以我觉得还是可能程序有问题

谢谢Johnsin

HI

   一般而言不是程序的影响,只要位数上没有问题就可以了。 其中最大的重点也就是校正。

    问题容易出现在硬件上面,主要是noise(主要是要求数模隔离,信号端点接GND Plane等),基准电压精度(也需要极低的noise),  在就是供电方面(也需要降低的noise).

    参考电压的精度损失应该可以算的,另外你有做offset, 满刻度校正,转换的精度也应该相应的有所提高的,只做到12位是偏低的。

做平均可以吧,做个先进先出的堆栈,10次转换结果做平均,这样是不是能相对提高其精度

Hi

    是应该会高一些,印象中TI的ADS1232称重的方案中就应用的这种方式。

    不过仍然建议按照我之前提议的方向,从硬件上着手。

Hi

   按照你现在的设计:PGA=128,  Vref=1.5V,   模拟输入范围是3/128=23mV(满量程), 事实上只能是正差分输入,所以量程减半将是11.5mV,  假设为10mV的满量程(PT100), 按照12位的有效位,最小分辨率将是10mV/2^12=2.5uV.   (这个举例中不考虑你设计中R10/R11的设计), 主要说明noise的影响。

   当可测试温度量程位-20~220℃, 满量程240℃, 最小分辨率将是240/2^12=0.06℃

   此时假设模拟输入电压的noise位100uV(并不大), 那么可能造成的温度测试影响将是100/2.5*0.06=2.4℃.

   可见模拟输入noise对温度测量的准确度影响很大。

   在TI的参考设计中, 在模拟输入的前端有增加2个小电阻,这个有消除noise的作用,建议增加。关于nosie的测量,如果有条件你也可以测试看看。

Hi

   对于参考电压,按照上述的参数,假设提升到3V,  模拟输入的分别率将是5uV.

   同样100uV的noise影响,将造成温度的差异将是100/5uV*0.06=1.2℃.

   可见提供参考电压,niose对测量的温度的精度是会有所帮组的。

Hi

   参考电压的准度的影响。(按照12位的有效位)

   建设参考电压时1.5V,  实际1.477V, 相差23mV.

   模拟输入时6mV,  1.5V参考电压应的数字输出时2^32/1000,  如果是1.477V, 对应的数字输出将是2^32/1000*(1.5/1.477), 实际数字输出的差异66881

   对应电压的差异就是240/2^24*66881=3.8℃ 

  可见参考电压的精度也是有影响的。

Hi

  参考电压noise的影响,假设参考电压的noise是100uV

  模拟输入时6mV,  1.5V参考电压应的数字输出时2^32/1000,  假设输入时1.5001, 那么对应数字输出的差异就是2^32/1000(1.5/1.5001),数字差异是286.

  对应电压的差异就是240/2^24*286=0.06℃ ,

  所以看起来参考电压noise不大的话,影响比较大的将是有效位。

Hi

   有效位的差异。

  温度分辨率,240/2^12=0.06℃,   14位有效位时将是0.06/4=0.0015℃.  测试会更加准确。

   所以也建议按照之前提议,尽量改善有效位,12位有效位是偏低的。

  

 

Hi Johnsin

测试了一下噪声,确实很大,电源和参考源,模拟输入噪声都不是很理想

明天解决一下噪声问题,再看看转换结果会不会有明显改善

谢谢你的建议,很感谢,我会及时反馈测试结果

Hi

   不客气,上述我的计算或者存在不准确的地方,但是其目的只是为了证明AD/DC转换中噪声的严重影响,同时也是常见的ADC转换精度不理想的重要原因。

我觉得问题在你使用的补偿电阻上面,不知道你的140欧姆是不是也是0.1%,如果是140*(+/-0.1%)=+/-0.14欧姆,对应的温度偏差为+/-0.35摄氏度,但如果你使用的是1%的电阻,则偏差将放大10倍,对应的温度偏差为+/-3.5摄氏度

你说的很对,就是它的问题,买的时候 标称是140R 0.1%,但是给我的东西有问题

呵呵,我也正在调试PT100,不知道你现在测温的准确度怎么样,我测试了3块板,每块板的温度都不一样,相差1度了.

1#

2#

4#

30.7-30.8

30.2-30.3

31.1-31.3

我的芯片没有做校准.

校准只是一个方面,可能也无法根本的解决你的问题,我认为还要做标定,使用标准电阻箱对电路做标定,你会发现,你的测量值和标准温度不在一条直线上,会有偏移和斜率差,需要进行修正的

 

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

网站地图

Top