资源描述
开题信息
摘 要
根据要求设计一个基于STC12C5A60S2单片机处理,PT100为传感器的温度测量系统。
在本设计中,是以铂电阻PT100作为温度传感器,采用恒流测温的方法,通过单片机进行控制,以LM358作为信号放大,用ADC0832进行温度信号转换。利用3位共阳数码管作为温度显示。采用了两线制铂电阻温度测量电路,通过对电路的设计,减小了测量电路及PT100自身的误差,使温控精度在0℃~100℃范围内分辨率为1℃。本设计简单实用,具有外围电路简洁,可靠性高等优点。主要由电源电路,单片机复位电路,单片机晶振电路,,ADC0832转换电路,铂电阻PT100及3位共阳数码管组成系统,编写了相应的软件程序,使其实现温度的实时显示。
该系统的特点是:使用简便;测量精确、稳定、可靠;测量范围大;使用对象广。
目 录
1 设计要求
1.1任务要求
2 系统方案设计
2.1总系统方案
2.1.1电源系统
2.1.2温度检测与处理
2.1.3模数转换
2.1.4温度显示
2.1.5信号放大部分
2.2系统方案图
3 硬件设计
3.1温度检测模块的设计
3.1.1PT100温度传感器简介
3.1.2温度检测及信号处理电路
3.2模数转换
3.2.1 ADC0809简介
3.2.2模数转换电路图
3.3 3位共阳数码管的显示电路的设计
3.3.1 LED数码管编码
3.3.2 LED数码管显示方式选择
4 软件设计
4.1程序设计语言的选用
4.2软件程序的设计
4.2.1总体程序流程
4.2.2温度信号采集处理 1
5 系统调试
结 论
参考文献
附录A系统总电路图
附录B元件清单
附录C系统源程序
1 设计要求
1.1任务要求
单片机实现测量温度检测范围0~100 °C,分辨率1°C。
硬件要求;采用的温度传感器为PT100,单片机STC12C5A60S2
2 系统方案设计
2.1总系统方案
该设计由四部分组成:电源系统,温度检测与处理,模数转换,温度显示。测温的模拟电路是把当前PT100热电阻传感器的电阻值,转换为容易测量的电压值,经过放大器放大信号后送给A/D转换器把模拟电压转为数字信号后传给单片机STC12C5A60S2,单片机再根据公式换算把测量得的温度传感器的电阻值转换为温度值,并将数据送出到数码管进行显示。另外,以实现温度的实时监控。包括温度信号采集单元,时间信号采集单元,单片机数据处理单元,温度显示单元。其中温度信号的数据采集单元部分包括温度传感器、温度信号的获取电路(采样)、放大电路、A/D转换电路。
2.1.1电源系统
电源为所有的电路供电,一个质量稳定的电源在系统中起到至关重要的作用。按设计要求选择了一个5V直流电源作为系统供电。
2.1.2温度检测与处理
根据导体电阻随温度而变化的规律来测量温度的温度计。最常用的电阻温度计都采用金属丝绕制成的感温元件,主要有铂电阻温度计和铜电阻温度计,在低温下还有碳、锗和铑铁电阻温度计。精密的铂电阻温度计是目前最精确的温度计,温度覆盖范围约为14~903K,其误差可低到万分之一摄氏度,它是能复现国际实用温标的基准温度计。我国还用一等和二等标准铂电阻温度计来传递温标,用它作标准来检定水银温度计和其他类型的温度计。分为金属电阻温度计和半导体电阻温度计,都是根据电阻值随温度的变化这一特性制成的。金属温度计主要有用铂、金、铜、镍等纯金属的及铑铁、磷青铜合金的;半导体温度计主要用碳、锗等。电阻温度计使用方便可靠,已广泛应用。它的测量范围为-260℃至600℃左右。
2.1.3模数转换
模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC)来实现的。与模数转换相对应的是数模转换,数模转换是模数转换的逆过程,接下来本文将主要介绍几种模数转换的方法以及模数转换器的参数等。
2.1.4温度显示
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
图2.1 系统方案图
2.1.5信号放大部分
结合实际设计考虑,放大部分采用了LM358运放。
LM358是双运算放大器。内部包括有两个独立的、高增益、内部频率补偿的运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合.
特性
内部频率补偿
直流电压增益高(约100dB)
单位增益频带宽(约1MHz)
电源电压范围宽:单电源(3—30V)
双电源(±1.5 一±15V)
压摆率(0.3V/us)
低功耗电流,适合于电池供电· 低输入偏流
低输入失调电压和失调电流
共模输入电压范围宽,包括接地
差模输入电压范围宽,等于电源电压范围
输出电压摆幅大(0 至Vcc-1.5V)
图2.1 LM358示意图
3 硬件设计
3.1温度检测模块的设计
3.1.1PT100温度传感器简介
pt100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。
铂电阻的阻值随温度的变化而变化的计算公式:
-200<t<0℃ Rt=R0[1+At+Bt*t+C(t-100)t*t*t] (1)
0≤t<850℃ Rt=R0(1+At+Bt2) (2)
Rt为t℃时的电阻值,R0为0℃时的阻值。公式中的A,B,系数为实验测定。这里给出标准的
DIN IEC751系数:A=3.9083E-3、 B=-5.775E-7、 C=-4.183E-12
根据韦达公式求得阻值大于等于100欧姆的Rt -〉t的换算公式:
0≤t<850℃ t=(sqrt((A*R0)^2-4*B*R0*(R0-Rt))-A*R0)/2/B/R0
PT100温度感测器是一种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(1+αT) 其中α=0.00392,Ro为100Ω(在0℃的电阻值),T为摄氏温度<br>因此白金作成的电阻式温度检测器,又称为PT100。
1:Vo=2.55mA ×100(1+0.00392T)=0.255+T/1000 。
2:量测Vo时,不可分出任何电流,否则测量值会不准。电路分析由于一般电源供应较多零件之后,电源是带杂讯的,因此我们使用齐纳二极体作为稳压零件,由于7.2V齐纳二极体的作用,使得1K电阻和5K可变电阻之电压和为6.5V,靠5K可变电阻的调整可决定电晶体的射(集极)极电流,而我们须将集极电流调为2.55mA,使得量测电压V如箭头所示为0.255+T/1000。其后的非反向放大器,输入电阻几乎无限大,同时又放大10倍,使得运算放大器输出为2.55+T/100。6V齐纳二极体的作用如7.2V齐纳二极体的作用,我们利用它调出2.55V,因此电压追随器的输出电压V1亦为2.55V。其后差动放大器之输出为Vo=10(V2-V1)=10(2.55+T/100-2.55)=T/10,如果当前室温为25℃,则输出电压为2.5V。
3.1.2温度检测及信号处理电路
热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的。通常将其放在电桥的桥臂上,温度变化时,热电阻两端的电压信号被送到仪器放大器AD623的输入端,经过仪器放大器放大后的电压输出送给A/D转换芯片,从而把热电阻的阻值转换成数字量。
ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。
温度检测电路图如3-1所示。
3.2模数转换
3.2.1 ADC0832简介
特点
· 输入输出电平与TTL/CMOS相兼容;
· 5V电源供电时输入电压在0~5V之间;
· 工作频率为250KHZ,转换时间为32μS;
· 一般功耗仅为15mW;
· 8P、14P—DIP(双列直插)、PICC 多种封装;
· 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C;
芯片接口说明:
· CS_片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出。
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压输入(复用)。
ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。
ADC0832引脚如图3.2所示。
3.2.2模数转换电路图
图3.4 模拟转换原理图
3.3 LED显示电路的设计
在单片机应用系统中,如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。
3.3.1 LED数码管编码
LED数码管是由发光二极管作为显示字段的数码型显示器件。图3.5(a)所示为0.5英尺LED数码管的外形和引脚图,其中七只发光二极管分别对应a~g笔段构成“”字形另一只发光二极管dp作为小数点。因此这种LED显示器称为七段数码管或八段数码管。
图3.5 led数码管
数码管按电路中的连接方式可以分为共阴极和共阳极两大类,如图3.5(b)所示。共阳型是将各段发光二极管的正极连在一起,作为公共端COM,公共端COM接高电平,a~g、dp各笔段通过限流电阻接控制端。某笔段控制端低电平时,该笔段发光,高电平时不发光。控制这几段笔段发光,就能显示出某个数码或字符。共阴型是将各数码发光二极管的负极连在一起,作为公共端COM接地,某笔段通过限流电阻接高电平时发光。管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、
3.3.2 LED数码管显示方式选择
LED数码管显示电路在单片机应用系统中可分为静态显示方式和动态显示方式。
本设计选动态显示方式。LED数码管显示电路如图3.6所示。
图3.6 LED数码管显示电路
4 软件设计
4.1程序设计语言的选用
本设计采用C51高级语言编写,因为其提供了库函数包含许多标准子程序,具有较强的数据处理能力,关键字及控制转移方式更接近人的思维方式,且本身并不依赖于机器硬件系统,移植方便。
4.2软件程序的设计
4.2.1总体程序流程
程序主要由主程序和子程序两部分构成。主程序主要实现系统的初始化, A/D转换,显示数据。系统的初始化包括寄存器的初始化(控制寄存器、堆栈、中断寄存器等),通信的初始化(串口的初始化,ADC0832的初始化,通信缓冲区的初始化),LED显示的初始化,输出端口的初始化,采集、累计数据的初始化。 显示数据包括数据转换(主要实现将各类参数、测量数据、计算累计值等转换成LED显示所需的数据类型)和显示屏的刷新子程序主要由温度信号采集程序组成。
主程序流程图如图4.1所示。
调用AD0832参数
开始
调用显示函数
初始化
图4.1主程序流程图
4.2.2温度信号采集处理
单片机通过写信号使START有效,启动AD转换,AD转换结束后,ADC0832通过INT0向CPU发出转换结束信号,引起CPU中断,可在中断程序中读取AD转换的结果。分别对8路模拟信号轮流采集一次,转换结果依次存放在片外数据RAM中。
AD转换子程序流程图如图4.2所示。
读取数据
子程序入口
启动ADC0832
P3口数据送入adat变量
标度变换
数据处理
图4.2 AD转换子程序流程图
由ADC0832行标度变换后,信号送给单片机显示,显示部分由一个三位数码管,单片机及其最小系统构成。四位数码管的显示原理都相同,因此列出其中一个的程序流程图即可:
显示程序流程图如图4.3所示。
子程序入口
显示
模除数据
图4.3 显示程序流程图
5 系统调试
整个温度检测系统由测控电路、数模转换电路以及显示部分构成,其中显示部分用的是数码管显示,电路的设计主要是测控、数模转换的部分。
1.测控电路
为了消除线电阻,采用的是两线制接法的桥式电路。根据桥式电路原理,电路中的电阻应采用热电阻传感器在0℃时的阻值,为100Ω。为了能达到测试的目的,所以在桥式电路中应该接入传感器的位置,放入一个100Ω的可调电阻,并使之与两个100Ω的色环电阻串联。这样,可调的阻值范围可以从50Ω到150Ω,这个范围大于传感器在0℃到100℃的阻值,进而达到在调试过程中模拟传感器变化的目的。
2.AD通道
4脚接地,5脚为电源输入。2脚信号由IN0输入。经数模转换,信号从5,6脚送入单片机P3.3~P3.5。
3.调试
做实际的电路板时为了调零的需要先将Pt100 用100Ω的电阻来代替,模拟出一个外界温度为0℃的环境,以便于通过对电位器的调节使其输出电压为0V。先检查电路各个模块是否能正常工作,如T431 的参考极的电压是否为2.5V,代替Pt100 的100Ω电阻两端的电压是否是0.1V,通过对信号放大模块中的电位器的调节是否能正常影响信号放大模块和运放加减模块的输出电压。将电路板调试正常后,调节电位器使电路最终输出端的电压降到0V,但是在实际调节中输出电压调节到0.6V 时就没有办法继续下调了,由于输出电压是随电位器的电压上升而下降的,故可能是和电位器串联的电阻R8 设置得太小了。将100Ω电阻拆下换上Pt100 热敏电阻进行实际测量,测得电压为2.1V,测得的温度为21℃,而这时用标准的温度传感器测得的温度也为21℃,在用Pt100 测体温,测得3.6V,为36℃,误差很小,电路设计成功。故前面的0.6V 的误差可能是其他原因照成的,但是由于没有尝试其他标准温度的测量还不能对产生误差的原因进一步分析。
结论
本课题以STC12C5A60S22单片机系统为核心,对单点的温度进行实时检测。采用模拟温度传感器PT100对温度进行检测;采用模数转换器ADC0832进行A/D转换把温度信号调解转换为电压信号与STC12C5A60S2单片机接口设置LED八段数码管实时显示温度值。本设计包括温度传感器、A/D转换模块、数据传输模块、温度显示模块四个部分。在设计过程中,遇到了许多问题,如设计初始阶段目的不明,思绪混乱,经过认真思考和老师的指导,才使自己思路明确,抓住重点,不懂就问,在很短的时间内系统有序的完成。
大学三年多的时间都是在学习测控与仪器方面的专业知识,并未真正的应用和实习。虽然在上个学期有单片机课程设计练习,积累了一定的知识,并融合到具体的实物当中。但是经过这次检测技术课程设计,我接触到了更多平时没有接触到的仪器设备、元器件以及相关的使用调试经验,发现了自己很多不足之处。我还体会到了所学理论知识的重要性:知识掌握得越多,设计的就更全面、更顺利、更好了解进行一项相对比较大型的设计所必不可少的几个阶段。课程设计能够从理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。我经过这次系统的课程设计,熟悉了对一项课题进行研究、设计和实验的详细过程。这些在我将来的工作和学习当中都会用很大的帮助。
学会了怎样查阅资料和利用工具书。平时课堂上所学的知识大多比较陈旧,作为测控技术专业的学生,由于专业特点自己要更积极查阅当前最新电子信息资料。一个人不可能什么都学过,什么都强,因此,当你在设计过程中需要用一些不曾学过的东西时,就要去有针对性的查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。
与队友的合作更是一件快乐的事情,只有彼此都付出,彼此都努力维护才能将作品做的更加完美。而团队合作也是当今社会最提倡的。
虽然课程设计结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。
参考文献
[1] 周航慈.单片机应用程序设计[M],北京航空航天大学出版社,1991年8版;
[2] 李志全等.智能仪表设计原理及应用[M],国防工业出版社,1998年6版;
[3] 李建民.单片机在温度控制系统中的应用[M],江汉大学学报,1996年6版;
[4] 杨振江等.智能仪器与数据采集系统中的新器件及应用[M],西安电子科技大学出版社,2001年12 版;
[5] 刘坤. 51单片机C语言应用开发技术大全[M],人民邮电出版社,2008年9版。
附录A系统总电路图
附录B元件清单
名称
标号
标志
封装
原理图原件名称
数量
电容
104
C9
RAD0.1E
CAPE
1
电容
0.1uF
C48
CAP-S
CAP
1
电容
30pF
C51, C52
CAP-S
CAP
2
发光二极管
D25
LED-S
LED
1
数码管
F33618H
DS1
3LED
3LED
1
稳压管
TL431
IC1
TO-92AH
TL431
1
排针
J7
SIP4
CON4
1
排针
J8, POWERIN1
SIP2
CON2
2
开关
K1
KAIGUAN
SW-SPST
1
排针
Header 3
P5
3H-DIP8*5MM
Header 3
1
可调电阻
10k
POT1
POT1
RES4E
1
三极管
8550
Q9, Q10, Q11
9012
PNP
3
电阻
100
R16, R22
AXIAL0.4E
RES
2
电阻
2K
R18, R19
AXIAL0.4E
RES
2
电阻
1K
R20, R23, R24
AXIAL0.4E
RES
3
电阻
100K
R21, R25
AXIAL0.4E
RES
2
电阻
1K
R36, R37, R38, R75
AXIAL0.3
Res1, RES2
4
电阻
10K
R82
AXIAL0.3
RES2
1
按键
S11
SW-S
SW-PB
1
单片机
STC12C5A60S2
U1
DIP40
AT89C51
1
ADC
ADC0832
U2
DIP8
ADC0832
1
运放
LM358
U3
DIP8
LM358
1
晶振
11.0592M
Y3
JZ
CRYSTAL
1
附录C系统源程序
#include<reg52.h> //头文件
#include"shuma.h"
#include"adc0832.h"
uchar adc0;
uint adc;
uchar i;
long sum1=0;
uint temp1;
uchar point1;
uint xdata getdat1[50];
//数码管位选 根据硬件来编
sbit wei1 = P2^0;
sbit wei2 = P2^1;
sbit wei3 = P2^2;
//sbit wei4 = P1^3;
unsigned char dispbuf[4]={0,1,2,3};
uchar dis_cod[]=
{
0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28,0x30,0x25,0xE4,0x23,0x64,0x74
};
//延时子函数
void delay0(uint z)
{
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
//显示函数
void display()
{
uchar i;
for(i=0;i<20;i++);
{
wei1=0;wei2=1;wei3=1;//wei4=1; //位选
P0=dis_cod[dispbuf[0]]; //段选
delay0(2);
wei1=1;wei2=0;wei3=1;//wei4=1; //位选
P0=dis_cod[dispbuf[1]]; //段选
delay0(2);
wei1=1;wei2=1;wei3=0;//wei4=1; //位选
P0=dis_cod[dispbuf[2]]; //段选
delay0(2);
}
wei1=0;wei2=0;wei3=0;P0=0XFF; //关闭显示;起消隐作用哦。不懂的就问问老师咯“啥叫消隐”
}
void main(void) //主函数
{
for(i=0;i<50;i++)getdat1[i]=0;
while(1)
{
dispbuf[0]=adc0%1000/100;
dispbuf[1]=adc0%100/10;
dispbuf[2]=adc0%10;
display();
temp1=66-36.0*(170-Adc0832(0))/79;//读AD转换结果 ;
sum1=sum1+temp1-getdat1[point1];
getdat1[point1]=temp1;
point1++;
point1=point1%50;
adc0=sum1/50;
}
}
展开阅读全文