旧文备份:热电偶/热电偶分度表生成
设计热电偶/热电阻式温度采集电路,将采集值转换成温度值是件麻烦事,因为其温度关系曲线不是线性的,可以近似看作高次方程曲线,而一般采集得到的数据都是用单片机来做温度值转换,让单片机去求解高次方程显然不现实,所以一般都是采用分段线性化的方法来计算温度值,这个分段方法技巧就不去介绍了,这里主要来探讨分段线性化对应表(分度表)的生成,网络上有不少这种表格,但是这种表格一般精度不高,而且不一定符合我们的分段要求,所以这里介绍程序生成分度表.以B型热电偶为例:
其温度-电压关系曲线方程为:
t90=c0+c1E+c2E+2+c3E+3…ciE+i
其中t90是温度值(计算所得),E是热电偶产生的电动势(采集所得),c是常量,下面是c的取值表:
温度范围: |
250 to 700°C |
700 to 1,820°C |
|
电压范围: |
291 to 2,431 m V |
2,431 to 13,820 m V |
|
c0 |
= |
9.842 332 1 x 10+1 |
2.131 507 1 x 10+2 |
c1 |
= |
6.997 150 0 x 10-1 |
2.851 050 4 x 10-1 |
c2 |
= |
-8.476 530 4 x 10-4 |
-5.274 288 7 x 10-5 |
c3 |
= |
1.005 264 4 x 10-6 |
9.916 080 4 x 10-9 |
c4 |
= |
-8.334 595 2 x 10-10 |
-1.296 530 3 x 10-12 |
c5 |
= |
4.550 854 2 x 10-13 |
1.119 587 0 x 10-16 |
c6 |
= |
-1.552 303 7 x 10-16 |
-6.062 519 9 x 10-21 |
c7 |
= |
2.988 675 0 x 10-20 |
1.866 169 6 x 10-25 |
c8 |
= |
-2.474 286 0 x 10-24 |
-2.487 858 5 x 10-30 |
错误范围: |
0.03 to -0.02°C |
0.02 to -0.01°C |
(表中如-2.474 286 0 x 10-24后面可是-24次方, -2.131 507 1 x 10+2后面是2次方)
下面是根据温度求电动势的逆方程:
E=c0+c1t90+c2t90+2….cit90+i
常量取值表如下:
温度范围: |
0 to 630.615°C |
630.615 to 1,820°C |
c0= c1= c2= c3= c4= c5= c6= c7= c8= |
0.000 000 000 0 .... -2.465 081 834 6 x10-1 5.904 042 117 1 x 10-3 -1.325 793 163 6 x 10-6 1.566 829 190 1 x 10-9 -1.694 452 924 0 x 10-12 6.229 034 709 4 x 10-16 |
-3.893 816 862 1 x 103 2.857 174 747 0 x 101 -8.488 510 478 5 x 10-2 1.578 528 016 4 x 10-4 -1.683 534 486 4 x 10-7 1.110 979 401 3 x 10-10 -4.451 543 103 3 x 10-14 9.897 564 082 1 x 10-18 -9.379 133 028 9 x 10-22 |
根据公式可以设计程序来完成计算,下面是一个计算分段为1摄氏度和1uV的小程序:
#include <math.h>
#include <stdio.h>
#define C00 0.0000
//0-630.615
#define C10 -2.4650818346e-1
#define C20 5.9040421171e-3
#define C30 -1.3257931636e-6
#define C40 1.5668291901e-9
#define C50 -1.6944529240e-12
#define C60 6.2290347094e-16
//630.615-1820
#define C01 -3893.8168621
#define C11 28.571747470
#define C21 -8.4885104785e-2
#define C31 1.5785280164e-4
#define C41 -1.6835344864e-7
#define C51 1.1109794013e-10
#define C61 -4.4515431033e-14
#define C71 9.8975640821e-18
#define C81 -9.3791330289e-22
//291-2431uV;250-700
#define C02 98.423321
#define C12 6.9971500e-1
#define C22 -8.4765304e-4
#define C32 1.0052644e-6
#define C42 -8.3345952e-10
#define C52 4.5508542e-13
#define C62 -1.5523037e-16
#define C72 2.9886750e-20
#define C82 -2.4742860e-24
//2431-13820uV;700-1820
#define C03 213.15071
#define C13 2.8510504e-1
#define C23 -5.2742887e-5
#define C33 9.9160804e-9
#define C43 -1.2965303e-12
#define C53 1.1195870e-16
#define C63 -6.0625199e-21
#define C73 1.8661696e-25
#define C83 -2.4878585e-30
int main(void)
{
double t,e;//t=temperature e = electronictive force
int i,j;
for(i=0;i<631;i++)
{
t = (double)i;
e = C00+C10*t+C20*t*t+C30*t*t*t+C40*t*t*t*t+C50*t*t*t*t*t+C60*t*t*t*t*t*t;
printf("t = %g, e = %g\n",t,e);
}
printf("t from 0-630 ended!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
for(i=631;i<1821;i++)
{
t = (double)i;
e = C01+C11*t+C21*t*t+C31*t*t*t+C41*t*t*t*t+C51*t*t*t*t*t+C61*t*t*t*t*t*t+C71*t*t*t*t*t*t*t+C81*t*t*t*t*t*t*t*t;
printf("t = %g, e = %g\n",t,e);
}
printf("t from 631-1820 ended!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
for(j=291;j<2432;j++)
{
e = (double)j;
t = C02+C12*e+C22*e*e+C32*e*e*e+C42*e*e*e*e+C52*e*e*e*e*e+C62*e*e*e*e*e*e+C72*e*e*e*e*e*e*e+C82*e*e*e*e*e*e*e*e;
printf("e = %g, t = %g\n",e,t);
}
printf("t from 291- 2431 ended!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
for(j=2432;j<13821;j++)
{
e = (double)j;
t = C03+C13*e+C23*e*e+C33*e*e*e+C43*e*e*e*e+C53*e*e*e*e*e+C63*e*e*e*e*e*e+C73*e*e*e*e*e*e*e+C83*e*e*e*e*e*e*e*e;
printf("e = %g, t = %g\n",e,t);
}
printf("t from 291- 2431 ended!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
}
对于热电阻,方法一样,公式为(PT100):
R=R0(1+AT+BT+2+CT+3(T-100))
R是采集的阻值,T是求得的温度值,R0=100, A = 3.90830 x 10 -3. B = -5.775 x 10 -7. C = 0 如果 T > 0 否则C= -4.183 x 10 -12.(注,那个-3是-3次方)
程序实现就略了,通过该公式开可以计算分段误差.
上面的程序在Linux下编译运行通过.其他类型的那些个公式可以在网上找到,曾经想做个小软件,用Qt写个界面,计算8种热电偶和几种热电阻的分度表,可以设置精度自动分段,可惜没时间.
(2007.1.25)
转载于:https://www.cnblogs.com/winshton/p/4897869.html
旧文备份:热电偶/热电偶分度表生成相关推荐
- 旧文备份:FFTW介绍
1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Sci ...
- 旧文备份: CANopen的LSS子协议中文翻译
有关节点地址和网络波特率的在线设置等:下载 转载于:https://www.cnblogs.com/winshton/p/4897693.html
- 【作品展示】双向热电偶热电阻分度表软件
软件特点 1. 支持S.B.K.E.T.J.N全序列热电偶分度表: 2. 支持PT10.PT100.PT1000.Cu10.Cu50.Cu100 的热电阻分度表: 3. ...
- E型热电偶分度表,C语言数组。
E型热电偶分度表.一维数组 -270~1000摄氏度,数组元素为热电偶输出电压.单位为0.001毫伏.例如数组第一个元素-9835,为-270度时E型热电偶输出电压-9.835毫伏. const lo ...
- 丢失控制文件,有旧的备份控制文件,之后有drop表空间和create表空间的操作恢复。...
一.实验说明: 本实验是基于: <丢失控制文件恢复实验记录--1(当前的控制文件损坏,使用旧控制文件进行恢复(旧控制文件之后DROP了表空间的情况))> 和 <丢失控制文件恢复实验记 ...
- 一文快速入门分库分表中间件 Sharding-JDBC (必修课)
书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...
- mysqldump备份数据不锁表的加参数方法及原理分析
mysqldump命令的备份用法分析-锁表不锁表 mysqldump默认的字符集是utf8 /etc/my.cnf添加如下两行文件,重启mysql服务,以输出日志方便分析general_log=on ...
- Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12
1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...
- FreeSql实体映射成数据库,数据库映射成实体类,指定表生成实体
文章目录 codeList DbContext 指定表生成实体 codeList 首先codeList就是一个将实体类映射成数据库表的东西 使用方法: 1.先引入包 补充一下上图:这四个包都要安装 写 ...
最新文章
- 常见面试题:为什么MySQL索引要用B+Tree呢?(看完你就能和面试官笑谈人生了)
- JAVA SE学习day_12:集合的排序、队列、栈结构
- Python3快速入门(五)——Python3函数
- ACL 2018论文解读 | 基于路径的实体图关系抽取模型
- VTK:PolyData之DownsamplePointCloud
- 【IT资讯】Linus Torvalds:我们都老了,但Linux维护真的很难找
- IOS 学习笔记 2015-03-24 OC-API-常用结构体
- matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halcon版本
- leetcode47. 全排列 II
- pythoncad二次开发视频_AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--...
- VGG网络结构(二)
- nginx windows启动停止_Nginx之3抛砖引玉 - (目录索引)
- es 在数据量很大时(数十亿级别)如何提高查询效率啊
- 计算机考研专业课王道,王道论坛,专注于计算机考研的点点滴滴!
- 单总线结构CPU数据通路
- 服务器上需要高性能显卡吗,英特尔要做独立显卡 只因服务器市场太重要
- 【作业分享】Reverse Polish Notation | 数据结构·stack
- 用easyx图形库做一个简单的c++小游戏---迷宫游戏
- 单核CPU与多核CPU的区别,多线程的优点,什么是并行?并发?
- 爬取获取邮箱内容QQ邮箱or163邮箱
热门文章
- AI审合同丨可审哪些类型的合同?
- Java工程师:双非计算机小硕的秋招经历总结
- 机器视觉贴片机控制软件系统源码 机器视觉贴片机控制系统源码2套(全套源程序和图纸)
- 【论文简述】EPP-MVSNet: Epipolar-assembling based Depth Prediction for Multi-view Stereo(ICCV 2021)
- Aspose破解版去除签名问题
- WRF namelist.input记录
- 使用uni-app引入阿里巴巴矢量图以及出现小长方形解决方法
- 齐鲁工业大学计算机应用技术专业,2017年齐鲁工业大学计算机应用技术研究所671C语言程序设计考研题库...
- 在gitlab上使用动态gif作为自己的头像(转)
- 乐视三合一体感摄像头Astra pro开发记录1(深度图、彩色图及点云简单显示)