lidongliping 发表于 2010-6-26 12:05:12

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

float code RTD_TAB_PT100 =   // 表格是以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)                // 电阻值小于表格最小值,低于量程下限。
        {
                return BELOW_LOW_LIMITE;
        }

        if (fR > RTD_TAB_PT100)        // 电阻值大于表格最大值,超出量程上限。
        {
                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;
        fHighRValue = RTD_TAB_PT100;

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

        return fTem;
}

经过测试,没有问题!

欢迎大家讨论!

lidongliping 发表于 2010-6-26 12:06:57

点击此处下载 ourdev_564031RYADIW.pdf(文件大小:272K) (原文件名:PT100温度变送器的正温度系数补偿1.pdf)

附带一份资料。

382383706 发表于 2010-6-26 12:08:24

收藏下!

sunhot 发表于 2010-6-26 13:59:41

Mark!

1181zjf 发表于 2010-6-26 14:48:44

mark

xiesx1985 发表于 2010-6-26 14:54:32

学习

cjr82123 发表于 2010-6-26 15:12:06

好野。记住先!

pujing 发表于 2010-6-26 15:59:20

mark

wukong 发表于 2010-6-26 16:07:05

mark

gallle 发表于 2010-6-26 16:11:53

先记住再说

kangar0065 发表于 2010-6-26 17:31:54

还可以优化

lv998127 发表于 2010-6-26 19:13:54

学习

mcudev 发表于 2010-6-26 20:22:38

mark!

fengyuxiatian 发表于 2010-8-3 08:48:45

好棒呀。。。

czhongli 发表于 2010-8-4 22:18:15

记下

googse 发表于 2010-8-4 22:39:34

标记这

undeadhuman 发表于 2010-8-4 23:23:39

顶一个,不容易啊。

这个是不是很耗资源。

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

bd4sad 发表于 2010-8-4 23:26:35

mark

wwwjjjwww 发表于 2010-9-11 15:09:29

iTem = (uint)i * 5 - 200;
这个是啥意思。我没有想明白,但是结果是OK的。这个算法不错,精度很高。
哦,想了一会,明白了,楼主很高明。在此谢谢了。

bd4sad 发表于 2010-9-30 11:53:00

mark

PXJ_520 发表于 2010-9-30 12:08:26

mark

gaohq 发表于 2010-9-30 12:31:44

iTem = (uint)i * 5 - 200;



没明白

wyjavr 发表于 2010-11-4 19:02:54

呵呵,我明天好好研究一下。我也要搞这个!先谢谢!

stm8s 发表于 2010-11-4 19:26:51

mark

www1519 发表于 2010-11-4 20:08:27

mark

kelos3000 发表于 2010-11-4 20:09:40

mark

ssaweee 发表于 2010-11-4 20:43:50

谁有经验的话用matlib拟合个公式更好

eastssd 发表于 2010-11-4 21:54:34

能否上张硬件(热电偶)接线图?电阻值是AD得到的?

fuliaokai 发表于 2010-11-4 22:02:22

参考一下!我原来也想过这套办法!但是没有实施!后来还是一边用锅煮着水,一边拿着温度表和PT100一块测温,读出值以后再建一张温度表!搞得现在测得的温度有时高几度,有时低几度!

worldly_guest 发表于 2010-11-5 11:53:44

收藏,另请问精度能达到多少?

xuzhimin9513 发表于 2010-12-16 20:15:24

MARK

rlogin 发表于 2010-12-16 22:39:30

记号

tingfenghu 发表于 2010-12-16 23:36:29

mark

ljt8015 发表于 2010-12-17 13:00:19

mark!~

zkcheng606 发表于 2010-12-17 15:46:00

mark

armok 发表于 2010-12-21 23:40:15

cool !

XQGG 发表于 2010-12-22 09:24:49

记号

zjwznlz 发表于 2010-12-22 09:28:31

mark

czhongli 发表于 2010-12-22 12:42:54

标记

cong2010 发表于 2010-12-22 15:05:32

mark

zjcxyxy 发表于 2010-12-28 16:37:59

TP100 mark!

electricit 发表于 2010-12-28 16:54:39

不错不错,嘿嘿

electricit 发表于 2010-12-29 08:36:24

把表格放大100倍效率不是更高嘛,精度也损失的不大

qinhya 发表于 2010-12-29 08:40:04

不错!

xinchangkk 发表于 2010-12-29 08:44:06

不错!

amity 发表于 2010-12-29 08:50:56

mark

728196 发表于 2010-12-29 10:06:13

mark!!

wzxmcu 发表于 2010-12-29 10:58:08

回复【楼主位】lidongliping
-----------------------------------------------------------------------

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

lidongliping 发表于 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提供一个恒流就可以算出来。



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

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

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

lidongliping 发表于 2010-12-30 11:27:18

找到一份资料,与前面上传的有些类似,可能好理解些。

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

electricit 发表于 2010-12-30 12:01:45

点击此处下载 ourdev_608055ENRTU1.rar(文件大小:399K) (原文件名:pt100query.rar)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_608056F7XBQ2.jpg
(原文件名:未命名1.jpg)

Borland C++Builder 6精度不错

wwwjjjwww 发表于 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做的电阻和温度互换。与楼上的估计是一个算法。呵呵。

largeboss 发表于 2010-12-30 13:30:35

mark

shenjunior 发表于 2011-3-2 23:28:52

mark

lanjie13515 发表于 2011-3-4 17:48:30

学习学习!

ljmdzyx 发表于 2011-3-4 18:05:23

mark!!

shamork 发表于 2011-3-4 19:21:32

mark

HYFAVR 发表于 2011-3-4 20:01:46

mark

dgdzov 发表于 2011-3-4 20:04:14

好东西,学习了。

ju748 发表于 2011-3-4 20:30:26

呵呵~PT100做过的飘过~顶一下楼主

zhuhanliang 发表于 2011-3-5 09:41:16

mark pt100

waking 发表于 2011-3-7 11:38:46

mark pt100

yywin1986 发表于 2011-3-7 12:41:21

学习

zhaoghsea 发表于 2011-3-7 12:51:00

不错

GZLJZ 发表于 2011-3-7 13:46:19

mark

lcmdw 发表于 2011-3-10 11:26:28

mark

deweyled 发表于 2011-3-29 23:15:19

PT100,Mark

ljmdzyx 发表于 2011-3-30 00:11:32

wpnx 发表于 2011-3-30 20:55:18

mark

tingfenghu 发表于 2011-3-30 21:41:05

mark

lan_boy008 发表于 2011-3-30 23:35:12

dddddddddddddddd

522yt 发表于 2011-4-17 20:16:31

正学习。记下

tang2992 发表于 2011-4-30 14:05:36

收了,感谢分享

zysun20010300 发表于 2011-4-30 14:55:31

很不错,mark一下

datoukai 发表于 2011-5-4 22:31:25

不错,不错

pengknight 发表于 2011-5-14 20:07:20

没看懂 先标记慢慢学习 mark

CHENXIAOTIAN 发表于 2011-5-15 01:18:10

MARK

wzq666 发表于 2011-5-15 10:24:58

做湿度控制用过

zhengdahe 发表于 2011-5-15 10:54:20

mark

xinxinEC 发表于 2011-5-24 15:27:03

mark

lv123123123 发表于 2011-5-29 16:04:32

mark

hongbo3636 发表于 2011-5-29 21:28:41

mark

whl763 发表于 2011-5-29 21:38:29

mark

ming918 发表于 2011-5-31 09:12:03

研究中......

cuikai12345 发表于 2011-6-7 21:15:31

mark

zhuangchao123 发表于 2011-6-8 01:20:07

学习再学习

dory 发表于 2011-6-8 07:51:52

学习,谢谢!!!

cn_fisher 发表于 2011-6-18 11:47:41

MarK!!

swx9588 发表于 2011-6-18 11:49:59

收藏一下,嘿嘿……

strongzhang 发表于 2011-6-19 00:14:21

强帖,记号。

psbhero 发表于 2011-7-11 10:57:15

用过PT100的飘过~

ranqling 发表于 2011-7-11 11:42:26

mark

at89c52 发表于 2011-7-11 16:34:03

好办法.有机会搭个电路试一下!

zjs2011 发表于 2011-7-18 16:44:37

新手,刚好用到,谢了!

kihell 发表于 2011-7-22 10:54:17

MARK

ijlc1314 发表于 2011-7-22 10:57:36

mark,强人

cn_fisher 发表于 2011-7-26 22:19:12

谢谢楼主!!

xml2028 发表于 2011-7-27 22:24:54

记号

scbing 发表于 2011-7-29 08:40:12

收藏

xgy1009 发表于 2011-7-29 09:12:43

请问有没有电路原理图啊?
页: [1] 2 3
查看完整版本: PT100, 2分法, 查表, 根据电阻值计算温度。