智能化温度仪器设计.docx
《智能化温度仪器设计.docx》由会员分享,可在线阅读,更多相关《智能化温度仪器设计.docx(23页珍藏版)》请在冰豆网上搜索。
智能化温度仪器设计
JIANGSUUNIVERSITY
现代仪器
智能化温度仪器设计
DesignofIntellecturalizedTemperatureInstrument
学院名称:
机械工程学院
专业班级:
测控技术与仪器0901班
学生姓名:
小组成员:
学生学号:
指导教师:
2013年01月
课程设计任务书
一、课程设计目的
应用所学的现代仪器设计方法,结合电路设计、传感器、单片机及信号处理等知识进行智能化温度测试仪器设计。
通过本次课程设计,使学生较系统地、较全面地掌握现代仪器的设计方法、设计步骤和方案实施技术。
使学生能够根据下达的设计任务和技术指标,查阅并理解相关技术文献,能进行方案的论证比较,方案的具体实施。
使学生较深入地了解与课程设计有关的知识,培养学生分析问题、解决问题、动手实践的能力。
二、课程设计任务与技术指标
实时测量现场温度,测温范围
,测温精度
,仪器采用便携式结构,能显示测量温度,并有非线性补偿与滤波功能。
三、课程设计基本要求
1.要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
2.既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3.独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4.要严格遵守学校的纪律和规章制度,学生有事离校必须请假。
课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
5.在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
6.小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。
7.实验仪器在使用前一定要仔细阅读使用说明书,严格按要求使用仪器设备,由于操作不当造成损坏学生负责。
8.学生所在组选出小组负责人,负责仪器及元器件的保管工作。
9.仪器以组为单位提交,说明书以个人为单位,并装入课程设计资料袋提交,答辩以组为单位。
摘要
本次课程设计采用铂电阻Pt100作为传感器测量外界温度,由测定结果得出Pt100的电阻-温度函数关系,将温度信号直接转化为电信号。
将铂电阻接入电桥测量现场温度,再经差动放大电路放大成0~5V的电压信号。
然后通过ADC0809将运放所产生的电压进行A/D转换,再将信号送入AT89C52单片机通过编程进行非线性补偿并将电压信号转化为温度,最后经LED显示器显示测量温度。
关键字:
铂电阻,温度测量,实时显示,A/D转化。
Abstract
ThiscourseisdesignedwithaPT100platinumresistancetemperaturesensoroutside,andthengaintherelationshipoftemperatureandresistancefromtheresultabove,atlast,turnthetemperaturesignalintoelectricsignal.Accesstobridgetheplatinumresistancetemperaturemeasurementsite,andthenzoomthroughthedifferentialamplifiercircuitintoavoltagesignal0~5V.ThenwillbecollectedADC0809analogsignalsintodigitalsignalsandthendigitalsignalintotheAT89C52microcontrollerprogrammedtonon-linearcompensationandturnthevoltagesingalintotemperature,andfinallythroughtheLEDdisplayshowsthetemperaturemeasurement.
Keywords:
platinumresistance,temperaturemeasurement,real-timedisplay,analogsignalsintodigitalsignals.
引言
现代科技对于温度测量与精确显示的需求越来越高,实现温度测量的方法也有很多,一般都采用铂电阻测量,具有准确度高、测量范围大、复现性和稳定性好等优点,因此铂电阻测温也被广泛使用。
根据本次设计的任务指标,采用Pt100铂电阻来实现对温度的测量。
铂电阻温度传感器是利用其电阻与温度成一定函数关系而制成的温度传感器。
由于铂电阻的特性曲线是非线性的,标准的电阻与温度关系是以分度表的形式给出的。
Pt100铂电阻的测温范围是-200℃~600℃,在0℃时电阻为100Ω。
首先需要测试Pt100的温度—电阻变化关系,从而得到它们的函数表达式。
已知Pt100的电阻—温度关系曲线是非线性的,所以必须采用一种近似。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片。
本次课程设计采用铂电阻Pt100作为传感器测量外界温度,将铂电阻接入电桥测量现场温度,再经差动放大电路放大成0~5V的电压信号。
然后通过ADC0809将运放所产生的电压进行A/D转换,再将信号送入AT89C52单片机通过编程进行非线性补偿并将电压信号转化为温度,输出相应的温度并送入四位八段数码显示管动态显示。
目录
一、总体设计方案1
1.1设计方案论证1
1.2方案的总体设计框图1
二、元器件选择与说明1
2.1铂电阻温度传感器1
2.2运算放大器2
2.3ADC0809模数转换器3
2.4AT89C52单片机4
2.5LED数码显示管5
2.674LS04反相器6
2.77805稳压器6
三、电路设计7
3.1电源电路7
3.2晶振电路7
3.3电桥放大电路8
3.4A/D转换器与单片机电路8
四、程序设计9
4.1程序流程图9
4.2程序代码10
课程设计总结13
参考文献14
致谢15
一、总体设计方案
1.1设计方案论证
本次设计采用铂电阻传感器以测量温度,将铂电阻接入电桥电路,由于电桥电路输出的电压信号过于微弱,所以将电压信号接入差动放大电路,构成电桥放大电路。
再将放大电路所输出的模拟电压信号通过A/D转化为数字信号,并送入单片机。
通过单片机内存放的转换程序对所得到的数字信号进行所需要的处理,如进行非线性补偿、各种进制的转换等,最后得出在允许误差范围内的测量温度值,最后通过4位LED显示器显示所测得的温度。
对于放大电路,根据设计可分为一级放大、二级放大和三级放大电路。
三、二级放大设计的方法可以将每一级的放大倍数设计成个位数,但是系统随着放大器个数的增加而不稳定。
一级放大器设计方法输出稳定,设计简单,但是放大倍数比较大,可能导致放大饱和。
最终通过搭电路试验确定,采用一级放大系统比较稳定。
1.2方案的总体设计框图
整体电路设计方框图如下图:
A/D转换电路
差动放大电路
4位LED
显示器
单片机及外围电路
铂温度电桥测量电路
图1-1
二、元器件选择与说明
2.1铂电阻温度传感器
本次设计采用线性度较好的PT100铂电阻接入电桥电路。
PT100是铂热电阻,它的阻值会随着温度的变化而改变。
PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
工业原理:
当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。
但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。
铂电阻的阻值随温度的变化而变化的计算公式:
Rt=R0[1+At+Bt+C(t-100)t](-200(1)
Rt=R0(1+At+Bt)(0(2)
Rt为t℃时的电阻值,R0为0℃时的阻值。
系数:
A=3.90802*10-3℃;B=-5.802*10-7℃;C=-4.27350*10-12℃。
铂电阻的分度表(-30℃至60℃)如下所示:
温度
0
1
2
3
4
5
6
7
8
9
(℃)
电阻值(Ω)
-30
88.04
87.64
87.24
86.84
86.44
86.04
85.63
85.23
84.83
84.43
-20
92.04
91.64
91.24
90.84
90.44
90.04
89.64
89.24
88.84
88.44
-10
98.03
95.63
95.23
94.83
94.43
94.03
93.63
93.24
92.84
92.44
-0
100.00
99.60
99.21
98.81
98.41
98.01
97.62
97.22
96.82
96.42
0
100.00
100.40
100.79
101.19
101.59
101.98
102.38
102.78
103.17
103.57
10
103.96
104.36
104.75
105.15
105.54
105.94
106.33
106.73
107.12
107.52
20
107.91
108.31
108.70
109.10
109.49
109.88
110.28
110.67
111.07
111.46
30
111.85
112.25
112.64
113.03
113.43
113.82
114.21
114.60
115.00
115.39
40
115.78
116.17
116.57
116.96
117.35
117.74
118.13
118.52
118.91
119.31
50
119.70
120.09
120.48
120.87
121.26
121.65
122.04
122.43
122.82
123.21
60
123.60
123.99
124.38
124.77
125.16
125.55
125.94
126.33
126.72
127.10
表2.1
2.2运算放大器
图2-1
本次设计采用的运算放大器是LM324N,LM324N系列器件为价格便宜的带有真差动输入的四运算放大器。
与单电源应用场合的标准运算放大器相比,它们有一些显著优点。
该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
2.3ADC0809模数转换器
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。
下面说明各引脚功能:
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
图2-2
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
2.4AT89C52单片机
本次设计采用的单片机是AT89C52(图3),其引脚功能如下所述。
P0口:
P0口是一组8位漏极开型双向I/O口。
作为输出口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据线复用,在访问期间激活内部上拉电阻。
P1口:
P1是一个带内部上拉电阻的的8位双向I/O口,P1的输入缓冲级可驱动四个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。
P1.0和P1.1还可以分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。
P2口:
P2是一个带内部上拉电阻的的8位双向I/O口,P2的输入缓冲级可驱动四个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。
在访问外部程序存储器或16位地址的数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口送出P2锁存器的内容。
图2-3
P3口:
P3口是一组带有拉电阻的8位双向I/O口。
P2的输入缓冲级可驱动四个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。
Vcc为电源正端,Vss为接地。
Vcc接典型值5V
RST:
复位引脚,输入高电平使89C52复位,返回低电平退出复位。
/VP:
运行方式时,
为程序存储器选择信号,
接地时CPU总是从外部存储器中取指令,
接高电平时CPU可以从内部或外部取指令;flash编程方式时,该引脚为编程电源输入端VP(+5V或12V)。
:
外部程序存储器读选通信号,CPU从外部存储器取指令时,从
引脚输出读选通信号(负脉冲)。
:
运行方式时,ALE为外部存储器低八位地址锁存信号,flash编程方式时,该引脚为编程脉冲输入端。
X1,X2:
内部振荡器电路(反相放大器)的输入端和输出端,外接晶振电路。
P0,P1,P2:
八位输入输出口。
RXD,TXD:
串口输入输出。
,
:
外部中断0,1的输入线。
T0,T1:
定时器T0,T1外部计数脉冲输入线。
,
:
外部数据存储器写,读脉冲输出线。
2.5LED数码显示管
本次设计选用七段LED数码管(图2-5),这种数码管是利用7个LED发光二极管外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛。
这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、
图2-4
e、f、g及dp(小数点),如下图2.9所示。
图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。
2.674LS04反相器
图2-5
74LS04是6非门(反相器)他的工作电压5V,他的内部含有6个coms反相器,74LS04的作用就是反相把1变成0。
2.77805稳压器
图2-6
因为设计的单元电路需要稳定的5V电压作为电源,所以选用三端稳压集成电路7805(图2-6),以便输出需要的电压。
7805这种三端稳压用的集成电路只有三条引脚输出,分别是输入端、接地端和输出端。
它的样子象是普通的三极管,TO-220的标准封装,也有9013样子的TO-92封装。
用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠,方便,而且价格便宜,所以电子制作中经常采用。
图2-7
三、电路设计
3.1电源电路
图3-1
根据芯片资料,稳压管7805输入输出与地之间应当接0.33微法和0.11皮法的电容,但由于器件的限制,实际电路中直接用9V电池的正极作为稳压管7805的输入,电池负极接地,实测输出电压为5.00V,符合要求。
实际的电源电路如图3-1所示。
3.2晶振电路
图3-2
AT89C52等COMS型单片机内部有一个可控的反相器,引脚XTAL1,XTAL2为反相放大器的输入端和输出端,在XTAL1,XTAL2上外接晶振和电容便组成振荡器。
设计时电容C1,C2选用27皮法。
振荡器的频率主要取决于晶振的频率,设计选用的晶振频率为12MHz。
晶振电路如图3-2所示。
3.3电桥放大电路
Ub
电桥电路如图3-4所示。
其中R1、R2为1千欧的电阻。
RT1为温度传感器,传感器在100摄氏度时的理论接入阻值为92.16欧,实际电路的R3的接入阻值为90欧。
RT1即为铂电阻PT100,其电阻值随温度的变化而变化,具体见铂电阻分度表。
电桥输出电压U。
的表达式如下:
差动放大电路如图3-3所示。
因为ADC0809需要输入的模拟量最大值为5V,因此需要将电桥电路输出的电压通过差动放大电路放大到或接近5V。
通过计算差动放大电路需要放大约30倍。
图3-3
3.4A/D转换器与单片机电路
A/D转换器与单片机连接图如如3-4所示。
该电路功能是将放大电路所输出的模拟电压信号通过A/D转化为数字信号,并送入单片机P0.0-P0.7端口做输入,再通过单片机内存放的转换程序对所得到的数字信号进行所需要的处理,如进行非线性补偿、各种进制的转换等,最后得出在允许误差范围内的测量温度值,最后通过单片机P1.0-P1.7输出口输出至LED显示器,实现电压与温度之间的数值转换和显示。
图3-4
四、程序设计
4.1程序流程图
4.1.1主程序流程图
4.1.2子程序流程图
4.2程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={
0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0xBF,0xff};
uchardisp[4];
uchardisp1[4];//定义数组变量
sbitST=P2^7;//定义START引脚
sbitOE=P3^7;
sbitEOC=P3^6;
sbitP17=P1^7;//定义数码管小数点
floatgetdata,temp;
intsum=0;
inti;
voiddelay(uintz);
voiddisplay();
voidmain()
{
while
(1)
{
for(i=0;i<10;i++)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);//等待转换结束
OE=1;//允许转换结果输出
getdata=P0;
OE=0;//禁止转换结果输出
sum=sum+getdata;
}
sum=sum/10;
if(sum>=74)
{
temp=sum*3.7037;//将得到的数据进行处理
temp=temp-200;
disp[0]=(int)temp%10; //取得个位数
disp[1]=(int)temp/10%10; //取得十位数
disp[2]=temp/100; //取得百位数
disp[3]=11; //取得千位数
display(); //调用显示子程序
}
else
{temp=sum*3.7037;//将得到的数据进行处理
temp=200-temp;
disp[0]=(int)temp%10;
disp[1]=(int)temp/10%10;//取得十位数
disp[2]=temp/100;//取得百位数
disp[3]=10;//加上负号
display();//调用显示子程序
}
}
}
//延时子程序
voiddelay(uintx)
{
uchart;
while(x--)for(t==0;t<120;t++);
}
//显示子程序
voiddisplay()//将显示结果在数码管中显示
{
P2=0xf7;
P1=table[disp[0]];
delay(200);
P2=0xfb;
P1=table[disp[1]];
P17=0;
delay(200);
P2=0xfd;
P1=table[disp[2]];
delay(200);
P2=0xfe;
P1=table[disp[3]];
delay
(1);
}
课程设计总结
为期三周的课程设计很快结束了,本次课程设计是我们大学期间最后一次针对专门课程的实践环节,也是大学期间一次综合性很高的课程设计。
此次课程设计不仅巩固了我们之前所学的知识,更让我们学到了课堂上学不到的东西。
我也终于明白了以前课堂上老师强调的程序流程图的重要性,设计需要从总体上把握,并将之分解成数个高度集中的独立模块,只有这样才能利用最短的时间编写出最有效率的程序。
本次课程设计前期准备非常充分,从网络和图书馆查找了很多资料,另外,从实验课基础知识入手,认真阅读任务书和设计要求,制定了设计计划:
第一步,分析课程题目,先把设计要求搞明白,确定大概的步骤。
第二步,查找资料掌握相应指令和芯片的具体用法,为后面写程序奠定基础。
第三步,程序编写,模块电路的搭建和总体功能实现。
第四步,程序调试,整理修改,完成试验报告