搜索
bottom↓
楼主: lidongliping

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

  [复制链接]

出0入0汤圆

发表于 2011-7-31 09:46:59 | 显示全部楼层
学习了。呵呵。

出0入0汤圆

发表于 2011-7-31 13:25:30 | 显示全部楼层
要是有电路图就好了

出0入0汤圆

发表于 2011-7-31 15:30:32 | 显示全部楼层
为什么我改成uint后,返回来的I值不对呢?unsigned long int CalculateTemperature(uint fR)
{
        unsigned long int fTem;
        uint fLowRValue;
        uint fHighRValue;
        uint   iTem=0;
        uchar i=0;
        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;
        i=(cTop+cBottom)/2;
//        for (i=105; (cTop-cBottom)!=1; ) // 2分法查表。
        while((cTop-cBottom)!=1)
        {
                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 = i * 5 - 200;
                        fTem = iTem;
                        return fTem;
                }
        }
//        iTem = i * 5 - 200;
        fLowRValue  = RTD_TAB_PT100[cBottom];
        fHighRValue = RTD_TAB_PT100[cTop];
       
//        fTem=(((fR - fLowRValue)*5)/(fHighRValue-fLowRValue))+iTem; // 表格是以5度为一步的.放大100倍
//        fTem=(((fR - fLowRValue)*5)/(fHighRValue-fLowRValue));
        fTem=i;
        return fTem;
},,貌似返回来的I值是查表的次数,而不是当前阻值所对应的表的位置!!请大侠指导下!!感激不尽啊!!

出0入0汤圆

发表于 2011-7-31 17:19:04 | 显示全部楼层
支持一下~~

出0入0汤圆

发表于 2011-8-1 16:15:16 | 显示全部楼层
winavr中能不能用float型啊??

出0入0汤圆

发表于 2011-8-1 17:01:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-1 17:22:31 | 显示全部楼层
哎呀,好东西啊。

出0入0汤圆

发表于 2011-8-1 17:30:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-14 12:44:18 | 显示全部楼层
一定学习一下

出0入0汤圆

发表于 2011-9-26 20:54:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-12 15:29:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-19 14:12:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-30 21:31:34 | 显示全部楼层
回复【楼主位】lidongliping  
-----------------------------------------------------------------------

我没明白这样做的意义,一般PT100不是在电路中构成电阻桥,经过差分运算送AD采集;通过AD值得到温度值,难道还要先得到准确的电阻值再进行转换……???

出0入0汤圆

发表于 2011-11-1 20:49:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-6 19:04:33 | 显示全部楼层

(原文件名:2011-11-6 19-00-30.png)

Proteus 实例中的,可惜是汇编写的。

出0入0汤圆

发表于 2011-11-6 20:04:45 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-11-19 11:15:27 | 显示全部楼层
楼主你用的那个电路 ?
还有 怎么用单片机测量电阻呢?
疑问再次

出0入0汤圆

发表于 2011-11-19 13:38:18 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2011-12-7 23:55:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-8 09:18:47 | 显示全部楼层
正好要用,感谢分享,楼主好人。把浮点改成整型用用看。

出0入0汤圆

发表于 2011-12-8 21:37:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-12 14:01:42 | 显示全部楼层
mark

出0入8汤圆

发表于 2011-12-12 14:24:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 19:17:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-18 15:23:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-18 16:23:11 | 显示全部楼层
脚印

出0入0汤圆

发表于 2012-1-18 19:49:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-6 21:33:07 | 显示全部楼层
PT100热电阻最简单的估算方法,内插法。

出0入0汤圆

发表于 2012-2-7 16:30:22 | 显示全部楼层
好,,,

出0入0汤圆

发表于 2012-2-7 16:47:27 | 显示全部楼层
必须记下。

出0入0汤圆

发表于 2012-2-7 17:00:29 | 显示全部楼层
温度变化很缓慢的,所以不用这样吧,只要记住上次查询的位置,在上次的位置再上下收索,一般几步就查到了,只是第一步需要时间长点,我一般就是这样查的

出0入0汤圆

发表于 2012-2-8 11:30:04 | 显示全部楼层
接着顶

出0入0汤圆

发表于 2012-2-10 05:55:38 | 显示全部楼层
好不错

出0入0汤圆

发表于 2012-2-10 08:43:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-10 10:57:37 | 显示全部楼层
回复【134楼】gotofly100
-----------------------------------------------------------------------

GOOD

出0入0汤圆

发表于 2012-2-13 18:36:30 | 显示全部楼层
好东西,感谢分享

出0入0汤圆

发表于 2012-2-15 12:16:47 | 显示全部楼层
正在做PT100相关的项目,资料非常有用。谢谢共享

出0入0汤圆

发表于 2012-4-22 20:40:33 | 显示全部楼层
计划哈

出0入0汤圆

发表于 2012-4-24 10:38:12 | 显示全部楼层
这个很好的

出0入0汤圆

发表于 2012-5-20 20:08:54 | 显示全部楼层
mark12345

出0入0汤圆

发表于 2012-5-21 10:36:23 | 显示全部楼层
学习了!!!!!

出0入8汤圆

发表于 2012-6-7 17:02:00 | 显示全部楼层
marking  heh

出0入0汤圆

发表于 2012-6-29 14:47:50 | 显示全部楼层
很好,学习

出0入0汤圆

发表于 2012-6-29 15:41:52 | 显示全部楼层
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;
                 }
         }

RTD_TAB_PT100是不是应该为RTD_TAB_PT100[i]啊???

出0入0汤圆

发表于 2012-7-19 11:58:46 | 显示全部楼层
谢谢,来测试下!期待

出0入0汤圆

发表于 2012-7-19 12:23:18 | 显示全部楼层
好东西

出0入0汤圆

发表于 2012-9-5 18:23:40 | 显示全部楼层
学习下,mark

出0入0汤圆

发表于 2012-10-21 13:06:25 | 显示全部楼层
    if (fR < RTD_TAB_PT100)
                {
     这个地方确实不懂,拿电阻值来跟100.00比较?还是?

出0入0汤圆

发表于 2012-11-5 21:45:39 | 显示全部楼层
mark

出50入0汤圆

发表于 2012-12-13 18:50:32 | 显示全部楼层
mark一个!

出0入10汤圆

发表于 2012-12-14 12:50:38 | 显示全部楼层
表格就两位小数点,扩大100倍用个双字节会不会好点?

出0入0汤圆

发表于 2012-12-14 13:09:43 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-12-14 15:54:45 | 显示全部楼层
记号

出0入0汤圆

发表于 2013-1-7 21:54:07 | 显示全部楼层
谢谢,标记收藏!

出0入0汤圆

发表于 2013-4-11 14:48:43 来自手机 | 显示全部楼层
谢谢楼主......

出0入0汤圆

发表于 2013-7-20 14:49:44 | 显示全部楼层
本帖最后由 lovepig200 于 2013-7-20 14:57 编辑

放大100倍的程序
用楼主的改的
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int


uint tt=0;

    uint code RTD_TAB_PT100[211] =   // 表格是以5度为一步,即-200, -195, - 190.....
{
1852,2068,2283,2497,2710,2922,3134,3344,3554,3764,        // -200 ~ -155   10
3972,4180,4388,4594,4800,5006,5211,5415,5619,5823,           // -150 ~ -105
6026,6228,6430,6631,6833,7033,7233,7433,7633,7832,        // -100 ~ -55
8031,8229,8427,8625,8822,9019,9216,9412,9609,9804,        //        -50 ~ -5

10000,10195,10390,10585,10779,10973,11167,11361,11554,11747,         // 0   ~ 45
11940,12132,12324,12516,12708,12899,13090,13280,13471,13661,        // 50  ~ 95
13851,14040,14229,14418,14607,14795,14983,15171,15358,15546,        // 100 ~ 145
15733,15919,16105,16291,16477,16663,16848,17033,17217,17402,        // 150 ~ 195
17586,17769,17953,18136,18319,18501,18684,18866,19047,19229,        // 200 ~ 245
19410,19591,19771,19951,20131,20311,20490,20670,20848,21027,        // 250 ~ 295
21205,21383,21561,21738,21915,22092,22268,22445,22621,22796,        // 300 ~ 345
22972,23147,23321,23496,23670,23844,24018,24191,24364,24537,        // 350 ~ 395
24709,24881,25053,25225,25396,25567,25738,25908,26078,26248,        // 400 ~ 445
26418,26587,26756,26925,27093,27261,27429,27597,27764,27931,        // 450 ~ 495
28098,28264,28430,28596,28762,28927,29092,29256,29421,29585,        // 500 ~ 545
29749,29912,30075,30238,30401,30563,30725,30887,31049,31210,        // 550 ~ 595
31371,31531,31692,31852,32012,32171,32330,32489,32648,32806,        // 600 ~ 645
32964,33122,33279,33436,33593,33750,33906,34062,34218,34373,        // 650 ~ 695
34528,34683,34838,34992,35146,35300,35453,35606,35759,35912,        // 700 ~ 745
36064,36216,36367,36519,36670,36821,36971,37121,37271,37421,        // 750 ~ 795
37570,37719,37868,38017,38165,38313,38460,38608,38755,38902,        // 800 ~ 845
39048        // 850
};

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

        uchar cLimite = 0xFF;

        uchar cBottom, cTop;

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

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

        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;
}


void main()
{
tt= (uint)(CalculateTemperature(22620) *100);
while(1);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-7-22 08:18:51 | 显示全部楼层
MARK......

出0入0汤圆

发表于 2013-10-21 08:06:52 | 显示全部楼层
楼主的程序好像0度以下不行,都得到相同的值,大家测试的也这样吗?

出0入0汤圆

发表于 2013-10-21 08:13:26 来自手机 | 显示全部楼层
谢谢楼主,收藏备用

出0入0汤圆

发表于 2013-11-11 15:02:27 | 显示全部楼层
mark一下

出0入4汤圆

发表于 2013-12-5 23:11:09 | 显示全部楼层
值得学习!!!

出0入0汤圆

发表于 2013-12-6 00:30:57 | 显示全部楼层
mark!                       

出0入0汤圆

发表于 2014-1-16 10:14:10 | 显示全部楼层
非常需要   以后肯定用得到 先收藏了

出0入0汤圆

发表于 2014-1-16 11:38:03 | 显示全部楼层
remark                     

出0入0汤圆

发表于 2014-1-16 13:14:39 | 显示全部楼层
收藏一下,以后有用

出0入0汤圆

发表于 2014-1-16 13:21:33 | 显示全部楼层
浮点数,运行有点吃力,还是用定点数好

出0入0汤圆

发表于 2014-1-16 14:12:09 | 显示全部楼层
收藏下!

出0入0汤圆

发表于 2014-2-25 13:19:00 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-2-25 14:27:28 | 显示全部楼层
好,正要用PT100

出0入13汤圆

发表于 2014-3-21 20:13:39 来自手机 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2014-3-21 22:10:22 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-3-22 10:12:59 | 显示全部楼层
顶。。。

出0入0汤圆

发表于 2014-3-22 10:27:22 | 显示全部楼层
好恐怖,还是用整形建表吧,或者逆运算公式

出10入0汤圆

发表于 2014-3-22 12:06:15 | 显示全部楼层
mark  最近准备用他

出0入0汤圆

发表于 2014-3-22 12:45:00 | 显示全部楼层
MARK 谢谢分享

出0入0汤圆

发表于 2014-3-22 13:08:51 | 显示全部楼层
我用过PT200

出0入0汤圆

发表于 2014-4-17 09:23:14 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-4-17 09:53:18 | 显示全部楼层
lovepig200 发表于 2013-7-20 14:49
放大100倍的程序
用楼主的改的
#include

if (fR < RTD_TAB_PT100)其中 RTD_TAB_PT100是指什么,是不是 RTD_TAB_PT100,请大神指教

出0入0汤圆

发表于 2014-4-17 09:58:44 | 显示全部楼层
感谢分享。

出0入0汤圆

发表于 2014-4-17 10:11:28 | 显示全部楼层
必须收藏啊,

出0入0汤圆

发表于 2014-4-17 10:24:30 | 显示全部楼层
标记下查表pt100的方法

出0入0汤圆

发表于 2014-5-8 11:56:35 | 显示全部楼层
好资料,谢谢分享

出10入95汤圆

发表于 2014-5-23 11:43:08 | 显示全部楼层
好贴!谢谢分享

出0入0汤圆

发表于 2014-5-31 21:41:03 | 显示全部楼层
路过支持下。。

出0入0汤圆

发表于 2014-7-16 15:14:35 | 显示全部楼层
本帖最后由 w1206479884 于 2014-7-16 15:18 编辑

请问一下这句if (fR < RTD_TAB_PT100)是什么意思?好像应该是if (fR < RTD_TAB_PT100)吧。

出0入0汤圆

发表于 2014-7-16 16:28:42 | 显示全部楼层
谢谢分享,学习了

出0入0汤圆

发表于 2014-7-16 21:47:11 | 显示全部楼层
mark!

出0入0汤圆

发表于 2014-7-17 00:25:21 | 显示全部楼层
PT100铂电阻  MARK

出0入0汤圆

发表于 2014-7-17 11:39:21 | 显示全部楼层
非常实用,谢谢

出0入0汤圆

发表于 2014-8-20 14:02:40 | 显示全部楼层
本帖最后由 wangbin6030 于 2014-8-20 14:03 编辑
w1206479884 发表于 2014-7-16 15:14
请问一下这句if (fR < RTD_TAB_PT100)是什么意思?好像应该是if (fR < RTD_TAB_PT100)吧。 ...


我查阅了相关资料,应该是if( fR <RTD_TAB_PT100【i】 ),----

出0入0汤圆

发表于 2014-8-21 11:52:39 | 显示全部楼层
wangbin6030 发表于 2014-8-20 14:02
我查阅了相关资料,应该是if( fR

对头!哈哈

出0入0汤圆

发表于 2014-8-21 16:06:28 | 显示全部楼层

我最近在研究PT100测温,有机会大家交流交流!

出0入0汤圆

发表于 2014-10-5 12:09:44 | 显示全部楼层

mark   ··

出0入0汤圆

发表于 2014-10-27 11:47:46 | 显示全部楼层
做一下记号,以备后用。

出0入0汤圆

发表于 2014-11-3 22:42:25 | 显示全部楼层

出0入17汤圆

发表于 2014-11-3 23:43:54 | 显示全部楼层
如果采集的速率要求不高,用函数拟合的方式感觉会好些

出0入4汤圆

发表于 2014-11-4 15:00:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-11-4 15:48:20 | 显示全部楼层
挖出4年前的帖子

出0入0汤圆

发表于 2014-11-5 14:58:43 | 显示全部楼层
PT100温度变送器的正温度系数补偿1 查表

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-26 12:11

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

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