Microchip
直播中

徐磊

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

温度校准请给一些建议

亲爱的各位,我在这里附上ADCl值的输出,以及PT100校准仪提供的各种输入。我在寻找能提供0.1度精度的方程式,有人建议我用更好的精度方程或0.1度的分辨率来使用斜率和截距方程。请给我一些建议-0~400度,CONV=0.2270147559591373×AdCl值- 1817.7071509648126;-200度到0度度,CONV=0.0306748466257668*AdCl值245.61349693251535;-200度到400度,CONV=0.0724462690171456*ADCl值-307.72760202849554;

以上来自于百度翻译


      以下为原文

    Dear all.

Here  I am attaching output of ADC_value along with various Input Given from calibrator for PT100. I am looking for Equation that can provide 0.1 degree accuracy .Can someone suggest me equation for Better accuracy or 0.1 degree resolution


i thought of using slope and intercept equation . Kindly give me some suggestion


0 - 400  degree
Degree_conv= 0.22701475595913734 * Adc_value - 1817.7071509648126;

-200 degree to 0 degree

Degree_conv= 0.03067484662576687 * Adc_value - 245.61349693251535;

-200 degree to 400 degree

Degree_conv= 0.07244626901714561 * Adc_value - 307.72760202849554;




   Attachment(s)

Pt100 Reading.xls (24.50 KB) - downloaded 27 times

回帖(8)

郑雅颖

2018-10-8 10:19:01
如何获得电子表格中的数据值?我在图1中绘制了“十”表,因为RTD的温度系数是“几乎是线性的”,只有在65点附近有一个阶跃函数的方法才是,如果你改变了这一点上的电流,那么,就没有办法从图1中近似出图0的曲线,比如说0。到400度,用一条直线,正如你所提议的,将会起作用。你的公式为0到400是无稽之谈,就像是从200到400,或者,读出的数字在10000以上。因此,70度的ADC值是10173,而不是173?通过这样的“修正”,这种关系在整个范围内看起来“几乎是线性的”。我在图2中展示了这一点。无论如何,线性部分的斜率大约是0.034度/ADC计数,因此分辨率优于0.1度/计数,但是用斜率截距近似直线近似的“直线”部分(或者,等效地,使用两点)。Mula的误差在几百度的范围内。使用线性最小二乘近似可能会稍微减少误差,但误差仍然是一个数量级(或更多)比分辨率更差。或者,你可以考虑将温度范围分成更小的部分。使用3度的多项式可以得到电阻与温度的公式。例如,参见HTTPS://www. PICOTECH.COM/Labaly/Appult- No.Pt100-Primin电阻-温度计,也许您可以尝试将这些转换为允许温度与ADC读数的近似值,或者您可以尝试(分段)对数据点的最小二乘多项式近似。最后一个注意事项:请记住,在一系列ADC读数达到10000,如表中,您将需要一个14位ADC。如果参考电压为3.3伏特,则一个ADC计数将是几百微伏。一个第十的程度将是大约三个ADC计数,它代表大约600微伏。噪音加上模拟元件偏移和其他错误必须积极控制。祝你好运!问候,戴夫

以上来自于百度翻译


      以下为原文

    How did you obtain the data values in your spreadsheet?
 
i plotted your "Tens" table in Figure 1.
 
Since the temperature coefficient of an RTD is "almost linear" the only way you could have a step function in the neighborhood of 65 degrees is if you changed the current at that point.
 
Now, there is no way that approximating the curve of Figure 1 from, say 0 to 400 degrees, with a straight line, as you propose, is going to work.  Your formula for 0 to 400 is nonsense, as is the one from -200 to 400
 
Or, maybe, the readout is missing digits above 10000? So that the ADC value for 70 degrees is 10173 instead of 173?  With "corrections" like this, the relationship looks "almost linear" throughout the entire range.  I show this in Figure 2.
 
Anyhow...
 
The slope of the linear portions is something like 0.034 degrees/ADC Count, so the resolution is better than 0.1 degrees/count, but approximating the "nearly straight line" portions with straight lines using slope-intercept (or, equivalently, using the two-point formula) results in errors of several degrees over a range of a couple hundred degrees.   Using a linear least squares approximation might reduce the errors a little, but the errors will still be an order of magnitude (or more) worse than the resolution.  Or, you might consider breaking the temperature ranges into smaller pieces.
 
Formulas for resistance vs temperature are available, using polynomials of degree 3.  See, for example, https://www.picotech.com/library/application-note/pt100-platinum-resistance-thermometers
 
Maybe you can try converting these to allow approximation of temperature vs ADC readings  Or you could try (piecewise) least squares polynomial approximation of your data points.  Or some such thing.
 
Final note: Keep in mind that with a range of ADC readings up to 10000 as in your tables, you will need a 14-bit ADC.  If the reference voltage is 3.3 Volts, one ADC count will be a couple hundred microvolts.  A tenth of a degree will be something like three ADC counts, which represents about 600 microvolts.  Noise plus analog component offsets and other errors will have to be aggressively controlled.
 
Good Luck!
 
 
Regards,

Dave
   Attached Image(s)

举报

杨阳

2018-10-8 10:28:16
我已经附上转换代码作为参考。对于较低温度的输入,我得到1度的准确度,因为输入超过200度,偏移量为5到17度。有人建议即刻进行校准,以便得到更好的结果。我发现曲线是线性的,正如我预期的下面的公式一样。计算结果,但为什么要抵消?如何在不加校正因子的情况下即兴演奏?无符号int PRODEGRs=0;//签名长PoDEGRs=0;ValueNotoStRead(){{(ADCSTARD>=8006×AdCald≪=9989)PRODEGRs=0.0323×ADCDISPLAY-25.42;ELSIF(ADCSTART & 1080;ADC显示和lt;2587)PRODEGRs=0.0332×ADCdisplay+64.053;ELSIF(ADCSTATE & 2587;&AdcDeals≪4068)PRODEGRES= 00338*ADCdSt+ 62.567;ElsPro DEGRs=0.0345×ADCdisplay + 59.235;/IF(ADCSTATE & 1487;&&AdcDeals<8006){PrordGrs= 0.0307×ADCDISPLAY-247.42;}*/}

以上来自于百度翻译


      以下为原文

    I have attached conversion code for reference.For lower temp input i get 1 degree accuacy as input goes beyond 200 degree get offset for -5 degree to -17 degree.
Can someone suggest improvise the calibration so to get better accuacy in result.
I found  curve is linear and as per below formula i expected it to calculate result but why this offset?? how can improvise without adding correction factor??
 
 

unsigned int ProDegrs=0;
//signed long ProDegrs=0;
void CountsToDegree() 
{



if(ADCdisplay>=8006 || ADCdisplay<=9989 )
ProDegrs=0.0323*ADCdisplay-258.42; 
else

if(ADCdisplay>1080 ||ADCdisplay<2587)
ProDegrs=0.0332*ADCdisplay+64.053; 
else
if(ADCdisplay>2587&& ADCdisplay<4068)
ProDegrs=0.0338*ADCdisplay+62.567; 
else
ProDegrs=0.0345*ADCdisplay+59.235; 

/* if(ADCdisplay>1487 && ADCdisplay< 8006)
{
ProDegrs=0.0307*ADCdisplay-247.42; 
}*/



}
   Attachment(s)

Degree_1.xls (130.00 KB) - downloaded 28 times
举报

杨阳

2018-10-8 10:33:44
如何获得电子表格中的数据值?我使用MCP325 16位ADC以获得更好的分辨率,我正在读取值,并转换为ADCl值。我已经校准了J&AMK类型,我曾经得到1度精度。类似的方式我正在尝试PT100。在这里,我把增益提高了2,保持16位分辨率,使ADC值得到最稳定的输出。为什么在65度之后改变值,我也预期线性增加。

以上来自于百度翻译


      以下为原文

    How did you obtain the data values in your spreadsheet?
 
I am using MCP3425 16 bit ADC for better resolution , I am reading value and converted to ADC_value. I have calibrated for J & k type where i used to get 1 degree accuracy.  Similar way i am trying for PT100. Here i have change the gain by 2 keeping 16 bit resolution so ADC value i get most stable output. 
 
I am also suspecting same. Why after it change the value after 65 degree i am also expected to increase linearly.
举报

郑雅颖

2018-10-8 10:45:03
我猜你把二进制ADC读数转换成十进制的功能只考虑了四个最不重要的十进制数字。在附件中,我展示了我如何“扩充”你的十个表,以达到ADC读数和温度之间的线性关系。问候,戴夫

以上来自于百度翻译


      以下为原文

   


I'm guessing that your function that converted the binary ADC reading to decimal only considered the four least significant decimal digits.
 
In the attachment I show how I "augmented" your tens table to arrive at a linear relationship between ADC reading and Temperature. 
 
Regards,

Dave
   Attachment(s)

corrections.txt (4.04 KB) - downloaded 26 times
举报

更多回帖

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