热电阻PT10 PT100 Cu50 Cu100电阻转温度程序
本帖最后由 qwerttt 于 2012-6-7 22:01 编辑几年前做过程信号校验仪,其中一个功能的51程序,热电阻值转为温度,欢迎大家测试
温度换算为电阻,90温标已有公式,就不多说了
下一步再贴出8种热电偶温度转毫伏,毫伏转温度的程序,敬请期待/*******************************************************************************
*函数描述:PT10&PT100 Cu50&Cu100 热阻转温度
*输入变量:R 热阻阻值
type热电阻类型 0 PT10
1 PT100
2 Cu50
3 Cu100
*返回变量:float T 温度
*******************************************************************************/
float RtoT(float R, uchar type)
{
uchar R0;// 热电阻0度时阻值
float T, tmp, min, mid, max;
float x, y, z;
float d = 3.9083/1e3, b = -5.775/1e7, c = -4.183/1e12;
if(type <= 1)
{
if(type == 0)
{
R0 = 10; min = 1.852; mid = 10; max = 39.049;// Pt10
}
else
{
R0 = 100; min = 18.52; mid = 100; max = 390.49; // Pt100
}
if(R>=mid && R<=max)
{
y = sqrt(d*d - 4*b*(1-R/R0));
T = (y-d) / (2*b);// 得出温度
}
else if(R<mid && R>=min)
{
x = 0; y = -100; z = -201;
tmp = R0*(1 + d*y + b*y*y + c*(y-100)*y*y*y);
while(fabs(tmp-R)>=0.007)
{
if(R > tmp)
{
x = x; z = y;
y = (x+y)/2;
}
else
{
x = y; z = z;
y = (y+z)/2;
}
tmp = R0*(1 + d*y + b*y*y + c*(y-100)*y*y*y);
}
T = y;// 得出温度
}
}
else
{
if(type == 2)// Cu50
R0 = 50;
else // Cu100
R0 = 100;
x = 150; y = 50; z = -50;
tmp = R0*(1 + 4.289/1e3*y - 2.133/1e7*y*y + 1.233/1e9*y*y*y);
while(fabs(tmp-R)>=0.007)
{
if(R > tmp)
{
x = x; z = y;
y = (x+y)/2;
}
else
{
x = y; z = z;
y = (y+z)/2;
}
tmp = R0*(1 + 4.28899/1e3*y - 2.133/1e7*y*y + 1.233/1e9*y*y*y);
}
T = y;
}
return T;
} 顶起来,LZ贴出点51汇编就最好了 楼主顶起来,下一贴何时出啊???等学习 顶起,学习 期待lz出K型的mV与温度的拟合公式 将在下周末开新贴出8种热电偶温度转mV,mV转温度间的换算
关于冷端补偿,冷端温度换算成对应热偶mV值,然后与测出热偶mV相加,最后算出温度
手头没有90温标小册子,记得当时是根据90温标上的公式计算的 记得当时做PT100 温度检测的时候是对照数据表格,用MATLAB 拟合的温度曲线 ,一条插值的,一条线性的。但是计算完送到数码管就不行了都乱码。然后偷懒又弄的查表法 qwerttt 发表于 2012-6-9 12:14 static/image/common/back.gif
将在下周末开新贴出8种热电偶温度转mV,mV转温度间的换算
关于冷端补偿,冷端温度换算成对应热偶mV值,然后 ...
90温标的册子是什么? 就是一本手册而已,网上应该有卖的 CU50那一段不行......
会死循环。 liuhongyu 发表于 2012-9-28 14:12 static/image/common/back.gif
CU50那一段不行......
会死循环。
Cu50哪个温度点,会死循环 qwerttt 发表于 2012-9-28 21:05 static/image/common/back.gif
Cu50哪个温度点,会死循环
所有的阻值进去都出不来了,PT100的程序相当好。你随便拿个值进去看看。 qwerttt 发表于 2012-9-28 21:05 static/image/common/back.gif
Cu50哪个温度点,会死循环
if(R > tmp)
{
x = x; z = y;
y = (x+y)/2;
}
else
{
x = y; z = z;
y = (y+z)/2;
}
这里的“x = x;”“z = z;”是什么作用?浮点的运算不是很懂。
用你一段PT100的代码,多谢你的分享! 本帖最后由 qwerttt 于 2012-10-14 16:06 编辑
想 x = x; 这种代码是多余的
Cu50转换没有问题呀
相关链接:8种热电偶温度转换
http://www.amobbs.com/thread-5482347-1-1.html 你写的关于热电偶的代码,我对着http://srdata.nist.gov/its90/main/
这个网站能看的懂,就是热电阻为什么这么写,公式的出处是哪里不是很明白。 楼主能贴出信号校验仪的完整程序学习一下吗, 嗯,这个要好好学习 应用试下 定楼主,热电阻值转为温度 用到pt100部分效果非常好 标记,不错的说 谢谢分享 学习。~~~~~~ mark,多类热电阻计算程序 一直用查表发,换这个试试 感谢分享,刚准备做温控器,参考参考 总感觉 就PT100可行其他都不行啊 你好 你的 线性拟合公式 出了问题 就PT100 可以用请问你 是 如何拟合公式的呢C:\Users\wensnj\Desktop\A.png 再发一次 图片 楼主 你看下 liuhongyu 发表于 2012-9-28 14:12
CU50那一段不行......
会死循环。
请问 CU50 热电偶转化公示 你有吗 {:smile:}标记,学习了! 热电偶,MARK 学习学习{:smile:}{:smile:} 学习一吧,谢谢 不错,谢谢 正好在用pt100, mark 正需要的资料,谢谢楼主提供分享 谢谢分享,收藏了! 谢谢分享! 谢谢分享!PT100转换 谢谢分享!PT100转换
页:
[1]