搜索
bottom↓
回复: 236

PT100, 2分法, 查表, 根据电阻值计算温度。

  [复制链接]

出0入0汤圆

发表于 2010-6-26 12:05:12 | 显示全部楼层 |阅读模式
float code RTD_TAB_PT100[211] =   // 表格是以5度为一步,即-200, -195, - 190.....
{
18.52,20.68,22.83,24.97,27.10,29.22,31.34,33.44,35.54,37.64,        // -200 ~ -155   10
39.72,41.80,43.88,45.94,48.00,50.06,52.11,54.15,56.19,58.23,           // -150 ~ -105
60.26,62.28,64.30,66.31,68.33,70.33,72.33,74.33,76.33,78.32,        // -100 ~ -55
80.31,82.29,84.27,86.25,88.22,90.19,92.16,94.12,96.09,98.04,        //        -50 ~ -5

100.00,101.95,103.90,105.85,107.79,109.73,111.67,113.61,115.54,117.47,         // 0   ~ 45
119.40,121.32,123.24,125.16,127.08,128.99,130.90,132.80,134.71,136.61,        // 50  ~ 95
138.51,140.40,142.29,144.18,146.07,147.95,149.83,151.71,153.58,155.46,        // 100 ~ 145
157.33,159.19,161.05,162.91,164.77,166.63,168.48,170.33,172.17,174.02,        // 150 ~ 195
175.86,177.69,179.53,181.36,183.19,185.01,186.84,188.66,190.47,192.29,        // 200 ~ 245
194.10,195.91,197.71,199.51,201.31,203.11,204.90,206.70,208.48,210.27,        // 250 ~ 295
212.05,213.83,215.61,217.38,219.15,220.92,222.68,224.45,226.21,227.96,        // 300 ~ 345
229.72,231.47,233.21,234.96,236.70,238.44,240.18,241.91,243.64,245.37,        // 350 ~ 395
247.09,248.81,250.53,252.25,253.96,255.67,257.38,259.08,260.78,262.48,        // 400 ~ 445
264.18,265.87,267.56,269.25,270.93,272.61,274.29,275.97,277.64,279.31,        // 450 ~ 495
280.98,282.64,284.30,285.96,287.62,289.27,290.92,292.56,294.21,295.85,        // 500 ~ 545
297.49,299.12,300.75,302.38,304.01,305.63,307.25,308.87,310.49,312.10,        // 550 ~ 595
313.71,315.31,316.92,318.52,320.12,321.71,323.30,324.89,326.48,328.06,        // 600 ~ 645
329.64,331.22,332.79,334.36,335.93,337.50,339.06,340.62,342.18,343.73,        // 650 ~ 695
345.28,346.83,348.38,349.92,351.46,353.00,354.53,356.06,357.59,359.12,        // 700 ~ 745
360.64,362.16,363.67,365.19,366.70,368.21,369.71,371.21,372.71,374.21,        // 750 ~ 795
375.70,377.19,378.68,380.17,381.65,383.13,384.60,386.08,387.55,389.02,        // 800 ~ 845
390.48        // 850
};

/***********************************************************************
*FunName:        float CalculateTemperature(float fR)
*
*In:                fR -> PT100的电阻值。
*                       
*Out:                fTem -> 测得的温度值。               
*
*Discription: 将电阻值查表算出温度值。
*
*Notes:         采用2分查找法。          
*
************************************************************************/
float CalculateTemperature(float fR)
{
        float fTem;
        float fLowRValue;
        float fHighRValue;       
        int   iTem;
        uchar i;

        uchar cLimite = 0xFF;

        uchar cBottom, cTop;

        if (fR < RTD_TAB_PT100[0])                // 电阻值小于表格最小值,低于量程下限。
        {
                return BELOW_LOW_LIMITE;
        }

        if (fR > RTD_TAB_PT100[210])        // 电阻值大于表格最大值,超出量程上限。
        {
                return EXCESS_UP_LIMITE;
        }

        cBottom = 0;
        cTop    = 210;

        for (i=105; (cTop-cBottom)!=1; )        // 2分法查表。
        {
                if (fR < RTD_TAB_PT100)
                {
                        cTop = i;
                        i = (cTop + cBottom) / 2;
                }
                else if (fR > RTD_TAB_PT100)
                {
                        cBottom = i;
                        i = (cTop + cBottom) / 2;
                }
                else
                {
                        iTem = (uint)i * 5 - 200;
                        fTem = (float)iTem;

                        return fTem;
                }
        }

        iTem = (uint)i * 5 - 200;

        fLowRValue  = RTD_TAB_PT100[cBottom];
        fHighRValue = RTD_TAB_PT100[cTop];

        fTem = ( ((fR - fLowRValue)*5) / (fHighRValue - fLowRValue) ) + iTem;        // 表格是以5度为一步的。
                                                                                                                                                        // 两点内插进行运算。

        return fTem;
}

经过测试,没有问题!

欢迎大家讨论!

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

 楼主| 发表于 2010-6-26 12:06:57 | 显示全部楼层
点击此处下载 ourdev_564031RYADIW.pdf(文件大小:272K) (原文件名:PT100温度变送器的正温度系数补偿1.pdf)

附带一份资料。

出0入0汤圆

发表于 2010-6-26 12:08:24 | 显示全部楼层
收藏下!

出0入0汤圆

发表于 2010-6-26 13:59:41 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2010-6-26 14:48:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-26 14:54:32 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-6-26 15:12:06 | 显示全部楼层
好野。记住先!

出0入0汤圆

发表于 2010-6-26 15:59:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-26 16:07:05 | 显示全部楼层
mark

出0入96汤圆

发表于 2010-6-26 16:11:53 | 显示全部楼层
先记住再说

出0入0汤圆

发表于 2010-6-26 17:31:54 | 显示全部楼层
还可以优化

出0入0汤圆

发表于 2010-6-26 19:13:54 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-6-26 20:22:38 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-8-3 08:48:45 | 显示全部楼层
好棒呀。。。

出0入0汤圆

发表于 2010-8-4 22:18:15 | 显示全部楼层
记下

出0入0汤圆

发表于 2010-8-4 22:39:34 | 显示全部楼层
标记这

出0入0汤圆

发表于 2010-8-4 23:23:39 | 显示全部楼层
顶一个,不容易啊。

这个是不是很耗资源。

要求不高的情况下,可以按不同的温度的区间段来进行线性处理,还是可以的。

出0入0汤圆

发表于 2010-8-4 23:26:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-11 15:09:29 | 显示全部楼层
iTem = (uint)i * 5 - 200;
这个是啥意思。我没有想明白,但是结果是OK的。这个算法不错,精度很高。
哦,想了一会,明白了,楼主很高明。在此谢谢了。

出0入0汤圆

发表于 2010-9-30 11:53:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-30 12:08:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-30 12:31:44 | 显示全部楼层
iTem = (uint)i * 5 - 200;



没明白

出0入0汤圆

发表于 2010-11-4 19:02:54 | 显示全部楼层
呵呵,我明天好好研究一下。我也要搞这个!先谢谢!

出0入0汤圆

发表于 2010-11-4 19:26:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-4 20:08:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-4 20:09:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-4 20:43:50 | 显示全部楼层
谁有经验的话用matlib拟合个公式更好

出0入0汤圆

发表于 2010-11-4 21:54:34 | 显示全部楼层
能否上张硬件(热电偶)接线图?电阻值是AD得到的?

出0入0汤圆

发表于 2010-11-4 22:02:22 | 显示全部楼层
参考一下!我原来也想过这套办法!但是没有实施!后来还是一边用锅煮着水,一边拿着温度表和PT100一块测温,读出值以后再建一张温度表!搞得现在测得的温度有时高几度,有时低几度!

出0入0汤圆

发表于 2010-11-5 11:53:44 | 显示全部楼层
收藏,另请问精度能达到多少?

出0入0汤圆

发表于 2010-12-16 20:15:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-16 22:39:30 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-12-16 23:36:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-17 13:00:19 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-12-17 15:46:00 | 显示全部楼层
mark
头像被屏蔽

出0入0汤圆

发表于 2010-12-21 23:40:15 | 显示全部楼层
cool !

出0入0汤圆

发表于 2010-12-22 09:24:49 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-12-22 09:28:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-22 12:42:54 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-12-22 15:05:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-28 16:37:59 | 显示全部楼层
TP100 mark!

出0入4汤圆

发表于 2010-12-28 16:54:39 | 显示全部楼层
不错不错,嘿嘿

出0入4汤圆

发表于 2010-12-29 08:36:24 | 显示全部楼层
把表格放大100倍效率不是更高嘛,精度也损失的不大

出0入0汤圆

发表于 2010-12-29 08:40:04 | 显示全部楼层
不错!

出0入0汤圆

发表于 2010-12-29 08:44:06 | 显示全部楼层
不错!

出0入0汤圆

发表于 2010-12-29 08:50:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-29 10:06:13 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2010-12-29 10:58:08 | 显示全部楼层
回复【楼主位】lidongliping
-----------------------------------------------------------------------

问题倒可能没有,程序大得吓人,用浮点数建表,太恐怖了吧。5度一个表格,根本犯不着,PT100线性度很好的。

出0入0汤圆

 楼主| 发表于 2010-12-30 11:21:40 | 显示全部楼层
回复【47楼】wzxmcu
问题倒可能没有,程序大得吓人,用浮点数建表,太恐怖了吧。5度一个表格,根本犯不着,PT100线性度很好的。
-----------------------------------------------------------------------
呵呵,表格+查表函数一共要1.8K的样子,在通用的51内核单片机上。
我主要是想把思路表达清楚,如果系统有限制,可采用【42楼】 electricit 建议的,放大100位,用uint型数据建表。
当然还有其它一些方法,欢迎大家贴出来,一起讨论。


回复【21楼】gaohq
iTem = (uint)i * 5 - 200;
没明白
-----------------------------------------------------------------------
iTem = (uint)i * 5 - 200;                   // i * 5因为温度表每步为5度,-200是因为表从-200度开始建立的,如果从0度建表就不需要减                                      减200了。


回复【29楼】worldly_guest
收藏,另请问精度能达到多少?
-----------------------------------------------------------------------
这种算法的精度应该可以与
RT = R0(1 + AT + BT&sup2; + C(T-100)T&sup3;)
其中:
A = 3.9083 E-3
B = -5.775 E-7
C = -4.183 E-12 (低于0°C时)或0 (高于0°C时)。
得出的结果相比较,看看情况。
当然,这只是算法的误差, 具体系统的误差要看电路、PCB、ADC、参考源等等。。。。


回复【26楼】ssaweee
能否上张硬件(热电偶)接线图?电阻值是AD得到的?
-----------------------------------------------------------------------
接线图网上有很多,两线、三线、四线都可以。
电阻值是ADC采集到了,对PT100提供一个恒流就可以算出来。



本人进入这个行业不久,是新手,学到了一点东西,感觉对于准备入门的朋友们应该有用,就贴出来,分享一下。

也期待有经验的朋友,能贴出一些自己的想法和经验,大家相互交流,学习!

元旦将至,提前祝大家新年快乐,生活幸福! :)

出0入0汤圆

 楼主| 发表于 2010-12-30 11:27:18 | 显示全部楼层
找到一份资料,与前面上传的有些类似,可能好理解些。

高精度测试PT100的方法ourdev_608039C0MZ6P.pdf(文件大小:152K) (原文件名:高精度测量PT100的方法.pdf)

出0入4汤圆

发表于 2010-12-30 12:01:45 | 显示全部楼层
点击此处下载 ourdev_608055ENRTU1.rar(文件大小:399K) (原文件名:pt100query.rar)

(原文件名:未命名1.jpg)

Borland C++Builder 6精度不错

出0入0汤圆

发表于 2010-12-30 12:13:01 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4482173&bbs_page_no=1&search_mode=3&search_text=wwwjjjwww&bbs_id=9999
我用VB做的电阻和温度互换。与楼上的估计是一个算法。呵呵。

出0入0汤圆

发表于 2010-12-30 13:30:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-2 23:28:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 17:48:30 | 显示全部楼层
学习学习!

出0入0汤圆

发表于 2011-3-4 18:05:23 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-3-4 19:21:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 20:01:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 20:04:14 | 显示全部楼层
好东西,学习了。

出0入0汤圆

发表于 2011-3-4 20:30:26 | 显示全部楼层
呵呵~PT100做过的飘过~顶一下楼主

出0入0汤圆

发表于 2011-3-5 09:41:16 | 显示全部楼层
mark pt100

出0入0汤圆

发表于 2011-3-7 11:38:46 | 显示全部楼层
mark pt100

出0入0汤圆

发表于 2011-3-7 12:41:21 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-3-7 12:51:00 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-3-7 13:46:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-10 11:26:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-29 23:15:19 | 显示全部楼层
PT100,Mark

出0入0汤圆

发表于 2011-3-30 00:11:32 | 显示全部楼层

出0入0汤圆

发表于 2011-3-30 20:55:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-30 21:41:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-30 23:35:12 | 显示全部楼层
dddddddddddddddd

出0入0汤圆

发表于 2011-4-17 20:16:31 | 显示全部楼层
正学习。记下

出0入0汤圆

发表于 2011-4-30 14:05:36 | 显示全部楼层
收了,感谢分享

出0入0汤圆

发表于 2011-4-30 14:55:31 | 显示全部楼层
很不错,mark一下

出0入0汤圆

发表于 2011-5-4 22:31:25 | 显示全部楼层
不错,不错

出0入0汤圆

发表于 2011-5-14 20:07:20 | 显示全部楼层
没看懂 先标记慢慢学习 mark

出0入0汤圆

发表于 2011-5-15 01:18:10 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-15 10:24:58 | 显示全部楼层
做湿度控制用过

出0入0汤圆

发表于 2011-5-15 10:54:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-24 15:27:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-29 16:04:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-29 21:28:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-29 21:38:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-31 09:12:03 | 显示全部楼层
研究中......

出0入0汤圆

发表于 2011-6-7 21:15:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-8 01:20:07 | 显示全部楼层
学习再学习

出0入0汤圆

发表于 2011-6-8 07:51:52 | 显示全部楼层
学习,谢谢!!!

出0入0汤圆

发表于 2011-6-18 11:47:41 | 显示全部楼层
MarK!!

出0入0汤圆

发表于 2011-6-18 11:49:59 | 显示全部楼层
收藏一下,嘿嘿……

出0入0汤圆

发表于 2011-6-19 00:14:21 | 显示全部楼层
强帖,记号。

出0入0汤圆

发表于 2011-7-11 10:57:15 | 显示全部楼层
用过PT100的飘过~

出0入0汤圆

发表于 2011-7-11 11:42:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-11 16:34:03 | 显示全部楼层
好办法.有机会搭个电路试一下!

出0入0汤圆

发表于 2011-7-18 16:44:37 | 显示全部楼层
新手,刚好用到,谢了!

出0入0汤圆

发表于 2011-7-22 10:54:17 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-22 10:57:36 | 显示全部楼层
mark,强人

出0入0汤圆

发表于 2011-7-26 22:19:12 | 显示全部楼层
谢谢楼主!!

出675入8汤圆

发表于 2011-7-27 22:24:54 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-7-29 08:40:12 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-7-29 09:12:43 | 显示全部楼层
请问有没有电路原理图啊?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 00:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表