《基于单片机和K型热电偶的温度测量仪表设计.docx》由会员分享,可在线阅读,更多相关《基于单片机和K型热电偶的温度测量仪表设计.docx(10页珍藏版)》请在优知文库上搜索。
1、1 .概述1.1 题目名基于单片机和K型热电偶的温度测量仪表设计1.2 功能和技术指标要求(1)温度测量范围:室温200C:(2)温度检测元件:K型分度号热电偶;(3)具有热电偶冷端温度自动补偿功能;(4)温度测量精度:1CFS*2%:(5)温度显示:LED或LCD数字显示,显示分辨率0.1C(6)具有温度上限、下线设置功能,当温度测量值越限时,进行声光报警;(7)电源:电网AC220V,要求在电网电压变化土15%范围内能够正常工作。1.3 国内外相关情况概述温度的测量的历史:第一个温度传感器是伽利略做出来的。而温度测量的里程碑是由法勒海特设计的水银温度计。1740年瑞典人摄氏提出在标准大气压
2、下,把冰水混合物的温度规定为0度,而水的沸腾度为100度。温度测量在保证产品的质量,节约能源,平安生产起到至关重要的作用。技术现状有点到线,线到面温度分布的测温技术:由外表到内部的测温技术。开展趋势是由于环境的多样化,复杂化,测温对象的多样化,智能检测成为现在温度测试的趋势。所以要加强新工艺的开发:向着智能化开展。2 .技术方案2.1 温度测量的根本方法与原理常见的温度测量方法和测温原理有:接触式,原理是热胀冷缩,这种方法测温方便。液体式(如毛细管,水银温度计),原理是受热,液体膨胀系数变大,从而液体上升。这种方法测温比拟准确。2.2 总技术方案温度测量仪表功能结构先读取环境温度,热电偶测得温
3、度经过ADC转换器变成数字,测得冷端温度,用补偿法再计算出温度值,送到显示器显示。如果温度超过上限设置,下限设置那么蜂鸣器报警,且LED灯变红。3.4稳压电源电路学生电源。3.5 微处理器STC52单片机,芯片MAX7765:按键;显示系统采用四位共阳极数码管7SEG-MPX4-CA,报警电路由PNP型三极管Ql和蜂鸣器构成。3.6 总体电路原理图3.7 硬件调试用热电偶采集温度,把采集信号送到MAX7765中,在MAX6675中进行AD转换成数字信号,把数字信号送到STC52单片机进行处理,再送到显示屏显示。4 .软件设计4.1 软件功能说明具有热电偶冷端温度自动补偿功能;具有温度上限、下线
4、设置功能,当温度测量值越限时,进行声光报警;4.2 软件总流程开始,初始化52,AD初始化后动AD数值滤波(取平均值),调用采集转换子程序,用补偿法计算出温度值,检测是否超量程,超过量程那么调用报警程序报警,否的话就继续调用子程序进行循环。开始v是系统初始化4.3 各功能软件includereg52.h头#includeinlrins.h/nop();时函数用#defineucharUr调用采集转换子程序亨unsignedchar.1字节0-255#definieuintunsignedint7uintIiCfTnsignedint,2字节026653sbit SO=P l0; /Pl计算温度
5、值孑连sbit SCK=PlA1;/Pl#include reg52hV/头文件超量程?#define uint unsigned intUint 代替 nsignedar, 1 字节 0-255#include ,intrins.hr7/#define uchar unsi调用报警子程序sbitSO=Pl0;P1.0口与SO相连sbit SCK=P11;/D1 1sbit CS=P I 2;调用子程序sbitbuzzer=Pl6;/P13.6S声光报警Uinlj,h;floatwendu;4字节(6位数字)uintRjConvertO;热电偶数据读取,返回温度voidDisp_temp();
6、温度显示ucharqian=0,bai=0,shi=0,ge=0,xiao=0;uintP_Temp;uinttemp;codeuchartab_l10=OxCO,0xF9,OxA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳LED段码表ucharcodetab_210=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/含小数点共阳段码0”23”45”6”7”89”ucharcodetab_34=OxOl,0x02,0x04,0x08;位码uinlRe-Convert()热电偶数据读取,返回温度uchari;
7、unsignedlongTemp_2;Temp_2=0;CS=;SCK=O;_nop_0;_nop_0;/这个_nop_()等效与汇编里面的NOP指令,也就是空一个机器周期,/在51单片机中_nop_()等于空12个时钟周期【即一个机器周期】CS=O;for(i=0;i16;i+)/16位数据读取TemP_24;/向右移4位,取3-14位TemP_2=TemP_2*1024/4096;/变换为温度值TemP_2=TemP_2-23;TemP_2=TemP_2;if(Temp_2200)f0iXj=3OOJOJ-);buzze-0;elsebuzzer=1;return(Temp_2);void
8、Di*pjemp()温度显示uinttem=wendu;tem=temp*10;if(wendu0;j-);P3=0x00;PO=tab_lshi;P3=tab.3l;for(j=3j0-);P3=0x00;P0=tab-2ge;P3=tab_32;for(j=300y0-);P3=0x00;PO=tab_lxiao;P3=tab_33;forC=3005j0J-;voidmain()/主程序for(j=3OOJOy-;while(l)(WendU=Re_Convert();热电偶数据读取,返回温度DispJempO;温度显示sbitCS=P12;P1.2口与CS相连sbitbuzzer=Pl
9、6;/P13.6S声光报警uintj,h;floatwendu4字节(6位数字)uintRe_Convert();热电偶数据读取,返回温度voidDisp_temp();温度显示UCharqian=0,bai=0,shi=0,ge=0,xiao=0;uintP_Temp;uinttemp;ucharcodetab_l10=OxCO,0xF9,0xA4,OxBO,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳LED段码表ucharcodetab_210=0x40,0x79,0x24,0x30,OX19,0X12,0x02,0x78,0x00,0x10;/含小数点共阳段码mQm
10、”“”23“”4”56”7”8UCharCOdetab_34=OxOl,0x02,0x04,OxO8;位码uiniRe_Convert()热电偶数据读取,返回温度uchari;unsignedlongTemp_2;Temp_2=0;CS=I;SCK=O;_nop_();_nop_();这个_nop_0等效与汇编里面的NOP指令,也就是空一个机器周期,在51单片机中_nop_()等于空12个时钟周期【即一个机器周期】CS=O;for(i=0;i16;i+)/16位数据读取TemP_2=1;向右移一位_nop_();SCK=I力上升if(SO=l)Temp_2=Temp_2|0x01;elseTe
11、mP_2=TemP_2|0x00;_nop_();SCK=O;_nop_0;TemP_2=TemP_2200)for(j=300;j0;j-;buzze-O;elsebuzzer=l;return(Temp_2);voidDisp_temp()温度显示I:uinttemp=wendu;tem=temp*10;if(wendu0y-);P3=0x00;PO=tab_lshi;P3=tab_3l;forG=300;j0;j-);P3=0x00;P0=tab-2ge;P3=tab_3;foXj=300y0y-);P3=0x00;PO=tab_lxiao;P3=tab_33;forU=300J0y-)
12、;voidmain()主程序forG=300J0J-);while(l)WendU=Re_Convert();热电偶数据读取,返回温度Disp_temp();温度显示4.4 软件测试软件能运行成功,数码管有温度变化显示。5 .温度测量仪器测试与校准5.1 温度测量仪器测试方法用热水器烧开的热水进行测试;用手温来测法。5.2 相应记录热水器烧开的热水手心温度88355.3对实验数据进行分析误差变动大稍低于实验要求,由于温度不能进行连续变化,耍按复位键,所以功能不能满足要求。误差的原因有放大倍数与其误差的稳定性;热电偶;本身电路;转换电路(基准电源);程序没有完善好。由于我负责硬件方面,所以改良设想是尽量减少本身电路产生的误差,而且由于跳线较多使得焊电路的时候变得麻烦,以后一定要注意。