单片机温度检测课程设计.docx
《单片机温度检测课程设计.docx》由会员分享,可在线阅读,更多相关《单片机温度检测课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
单片机温度检测课程设计
工程应用综合设计
报告
学院:
电气工程
班级:
学号:
姓名:
课题名称:
温度检测系统设计与仿真
指导老师:
摘要
温度是业生产中最常见和最基本的工业参数之一,是与人类的生活工作关系最密切的物理量,也是各学科与工程研究设计中经常遇到和必须精确测量的物理量。
从工业炉温、环境气温到人体温度;从空间、海洋到家用电器,各技术领域都离不开测温,测温技术也是发展最快、范围最广的技术之一,对温度的进行准确的测量和控制也成为工业生产和科学研究中的重要任务之一。
而随着电子技术和计算机技术的迅速发展,特别是单片微机的发展,使传统的测量仪器在原理,功能,精度及自动化水平等发生了巨大的变化,使很多的传统电子仪器被相应的全新的仪器炎型和测试系统体系所代替。
在科学技术高速发展的今天,如何用简单便宜,性能良好的元器件制造出对人类生活有用的产品,已经成为人们研究的主要趋势。
因此,温度测试仪作为测量仪器中不能缺少的二种仪器,如何用简单便宜,性能良好,外围电路简单的元器件制造出性能良好的温度采集器便成为了温度采集器的发展方向。
关键字:
单片机,温度检测,自动化
Abstract
Temperatureisoneoftheindustryintheproductionofthemostcommonandthemostbasicindustrialparameters,isaphysicalquantitymostcloselyrelatedtohumanlifeworkingrelationship,butalsothescienceandengineeringresearchanddesignareoftenencounteredintheaccuratemeasurementofphysicalquantitiesandmust.Fromtheindustrialfurnacetemperature,ambienttemperaturetothetemperatureofthehumanbody;fromspace,seatohouseholdappliances,thetechnologycannotdowithouttemperaturemeasurement,temperaturemeasurementtechnologyisoneofthefastestgrowingandmostwiderangetechnology,measurementandcontroloftemperatureaccuratelyhasbecomeoneoftheimportanttasksinindustrialproductionandscientificresearch.Withtherapiddevelopmentofelectronictechnologyandcomputertechnology,especiallythedevelopmentofsinglechipmicrocomputer,thetraditionalmeasuringinstrumentsinprinciple,function,greatchangeshavetakenplaceintheprecisionandautomationlevel,thetraditionalelectronicinstrumentsaremanycorrespondingnewinstrumentsandinflammatorytestsystemreplaced.Today,withtherapiddevelopmentofscienceandtechnology,howtousesimple,cheap,goodperformancecomponentstoproduceusefulproductsforhumanlife,hasbecomethemaintrendofthestudy.Therefore,thetemperaturetestinstrumentastwoinstrumentscannotbemissinginameasuringinstrument,howtousesimpleandcheap,goodperformance,simpleperipheralcircuitcomponentstoproducegoodperformanceoftemperaturecollectorhasbecomethedevelopmentdirectionoftemperaturecollection.
Keywords:
SCM,temperaturedetection,automation
第一章绪论
1.1课题的研究现状及趋势
在人类的生活环境中,温度扮演着极其重要的角色。
无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。
温度作为工业、农业、国防和科研等部门最普遍的测量项目。
它在工农业生产、现代科学研究以及高新技术开发过程中也是一个极其普遍而又非常重要的参数。
因此,在这些领域中,对于这个参数的测量与控制就显得尤为重要,特别是在纺织工业、冶金、化工、食品、温室种植,汽车制造以及气象预报和科研实验室等许多地方,都具有举足轻重的作用。
自18世纪工业革命以来,工业发展与是否能掌握温度有着密切的联系。
在冶金、钢铁、石化、水泥、玻璃、医药等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。
温度不但对于工业如此重要,在农业生产中温度的监测与控制也有着十分重要的意义。
国内外对温度测量的研究工作从未停止过,而且还不断地改进测量的技术,来满足测量的精度和恶劣环境下的特殊要求。
1.2课题的研究意义
以往这些工作大多是由人工完成,不但工作量大,记录的数据少,对温度的调节缺乏实时性,而且电路复杂,标定和校准也比较麻烦,难以满足现代温度测量的要求。
自从传感器技术、微控制器技术和计算机技术日渐成熟之后,现代的温度测量与控制系统克服了以往系统中存在的一些问题,比如对环境温度的控制与调节以及数据的记录都由微控制器或计算机自动完成,人们的工作量大大地降低,而且测得的数据也更加的精确,对环境温度的调节更具有实时性。
随着传感器技术、计算机技术和自动控制技术的不断发展,现代的温度测量系统逐渐取代了传统的简单数据采集系统。
正从分立元件组成的系统向微型化、集成化、数字化、智能化、微功耗、多参数测量的测量系统转变,在系统中还会添加自动非线性补偿、自动温度补偿、自动校准等功能。
近年来,温度测控系统飞速发展。
国际上先进的测控技术、自动化技术、PLC技术、现场总线技术、传感器技术以及数字信息技术的发展都为温度测控系统的研制和开发提供了条件。
使温度的设定、显示更加直观,精度进一步提高,智能化程度越来越高,温度检测的功能集成化大幅提高。
1.3设计目的
本设计的内容是温度测试控制系统,控制对象是温度。
温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。
而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。
针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带。
本设计是对温度进行实时监测并对其进行控制,设计的温度控制系统实现了基本的温度控制功能:
当温度低于设定下限0℃温度时,系统自动启动加热继电器加温,使温度上升,同时绿灯亮。
当温度上升到下限0℃温度以上时,停止加温;当温度高于设定上限50℃温度时,系统自动启动风扇降温,使温度下降,同时红灯亮。
当温度下降到上限温度以下时,停止降温。
温度在上下限温度之间时,执行机构不执行,从而实现将温度控制在0℃~40℃。
三个数码管即时显示温度,精确到小数点一位。
第二章总体方案设计
本实验应考虑成本,用单片机控制实现温度检测与显示,由实验内可知,要实现温度检测,可用传感器DS18B20温度传感器比较好,既简单,精度又高,但考虑到本实验精度为一位小数且DS18B20成本比较高,最后决定用热敏电阻,其特点是测量准确、稳定性好、性能可靠,成本低NTC(NegativeTemperatureCoefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料.该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热敏电阻.其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化.现在还出现了以碳化硅、硒化锡、氮化钽等为代表的非氧化物系NTC热敏电阻材料。
把温度这模拟量转换成数字量,用一AD转换芯片即可。
LCD编程复杂,成本高,而数码管编程简单,成本低,本实验精度是一位小数,检测的温度从0-100度,用4位数码管足够了。
实现报警功能,只要用一个蜂鸣器加一个LED二极管,在检测到的温度大于设定的某值时,蜂鸣器就会响,二极管会亮,这样就起到了报警的功能。
图2-1NTC温度-阻值曲线
由程序流程图确定基本方案,用热敏电阻进行测温,热敏电阻和一固定阻值的电阻串联,用电压表测量热敏电阻两端电压值,固定阻值的上端进行AD,可通过PCF8591AD/DA转换芯片进行AD,温度改变,则热敏电阻大小改变,AD的电压也就改变了,通过I2C总线进行数据传送,然后将AD后的数字量进行处理,精度为一位小数,处理后的数字量对应不同时候的温度,最后用数码管显示处理后的数字量,再设定一个温度值,当温度大于此温度值,则报警。
图2-2程序流程图
图中AD/DA转换器采用PCF8591,并通过I2C总线进行数据传送,即将模拟量转换为数字量,通过一定的公式转换进行数据处理,得转换温度。
第三章硬件设计
3.1器件选择
1、负温度系数热敏电阻NTC,NTC热敏电阻器在室温下的变化范围在102~106欧姆,温度系数-2%~-6.5%。
NTC热敏电阻器可NTC热敏电阻器广泛用于测温、控温、温度补偿等方面.它的测量范围一般为-10~+300℃,负温度系数热敏电阻器温度计的精度可以达到0.1℃,感温时间可少至10s以下.其r-t特性为非线性,故须建模调整其数值。
2、PCF8591AD/DA芯片:
(1)、引脚说明:
ANI0~ANI3为模拟信号输入端,不使用的输入端应接地
A0~A2地址输入端
GND、VCC地和电源端(+5V)
SDA为I2C数据输入与输出端
SCL为I2C时钟输入端EXT内外部时钟选择端,使用内部时钟时接地,使用外部时钟时接+5V
OSC外部时钟输入、内部时钟输出端,不使用时应悬空
AGND模拟信号地
VREF基准电压输入端
AOUTD/A转换后的电压输出端
图3-1PCF8591引脚说明
(2)、功能说明:
PCF8591是具有I2C总线接口的8位A/D及D/A转换器,具有4路A/D输入,1路D/A输出。
PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址(1001)、引脚地址(由A0~A2接地或+5V来确定,接地代表0;接+5V代表1)、方向位(即R/W)组成。
因此,在I2C总线系统中最多可接8个这样的器件。
表3-1PCF8591控制字
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
1
A2
A1
A0
R/W
R/W=1表示读操作,R/W=0表示写操作。
本题将A0~A2接地,则读地址为91H;写地址为90H。
地址字节:
由器件地址、引脚地址、方向位组成,它是通信时主机发送的第一字节数据。
控制字节:
用于控制PCF8951的输入方式、输入通道、D/A转换等,是通信时主机发送的第二字节数据,其格式如下:
表3-2PCF8591控制字
D7
D6
D5
D4
D3
D2
D1
D0
未用
(写0)
D/A输出允许位0为禁止1为允许
A/D输入方式选择位
A/D输入方式选择位
未用
(写0)
自动增益选择位
AD通道选择位
AD通道选择位
本次实验模拟信号从AIN0口输入,其他口接地,由于只用一个PCE8591芯片,所以A0A1A2都接地,SDA接P1.1,SCL接P1.0,这2根线构成数据线和时钟线,注意数据线必须接上拉电阻。
AOUT用不到,可不接。
EXT和OSC都接地,VREF接高电平。
表3-3PCF8591通信格式
第一字节
第二字节
第三字节
写入器件地址(90H)
写入控制字
要写入的数据
向PCF8591写入格式
第一字节
第二字节
第三字节
第四字节
写入器件地址(90H)
写入控制字
要写入器件地址
读出一字节数据
从PCF8591读出格式(高位在前)
3、I2C总线的介绍:
(1)I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
是微电子通信控制领域广泛采用的一种总线标准。
它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。
I2C总线支持任何IC生产过程(CMOS、双极性)。
通过串行数据(SDA)线和串行时钟(SCL)线在连接到总线的器件间传递信息。
每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。
LCD驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。
除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。
主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。
此时,任何被寻址的器件都被认为是从机。
(2)主设备与从设备
系统中的所有外围器件都具有一个7位的"从器件专用地址码",其中高4位为器件类型,由生产厂家制定,出厂后就已经确定了,例如本实验中PCF8591芯片的高4位为1001,低3位为器件引脚定义地址,由使用者定义。
主控器件通过地址码建立多机通信的机制,因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少个器件,其系统仍然为简约的二线结构。
终端挂载在总线上,有主端,从端之分,主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端,从端的数量受地址空间和总线的最大电容400pF的限制。
主端主要用来驱动SCL时钟线;从设备对主设备产生响应;
二者都可以传输数据,但是从设备不能发起传输,且传输是受到主设备控制的。
(3)协议:
1、空闲状态
I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。
此时各个器件的输出级场效应管,均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
2、起始位与停止位的定义:
起始信号:
当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。
停止信号:
当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。
如下图:
图3-2起、停信号
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。
接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。
直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。
3、ACK
发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。
对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。
4、数据的有效性:
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
图3-3读、写时序图
5、数据的传送
在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位串行传送每一位数据。
数据位的传输是边沿触发。
工作过程
总线上的所有通信都是由主控器引发的。
在一次通信中,主控器与被控器总是在扮演着两种不同的角色。
1.主设备向从设备发送数据写入过程如下:
1)发送起始位,发送从设备的地址和读/写选择位;释放总线,等到EEPROM拉低总线进行应答;如果EEPROM接收成功,则进行应答;若没有成功或者发送的数据错误时EEPROM不产生应答,此时要求重发或者终止。
2)发送想要写入的内部寄存器地址;EEPROM对其发出应答;
3)发送数据
4)发送停止位.
5)EEPROM收到停止信号后,进入到一个内部的写入周期,大概需要10ms,此间任何操作都不会被EEPROM响应
图3-4发送数据
需要说明的是:
①主控器通过发送地址码与对应的被控器建立了通信关系,而挂接在总线上的其它被控器虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主控器的通信;
2.主控器读取数据的过程:
读的过程比较复杂,在从slave读出数据前,你必须先要告诉它哪个内部寄存器是你想要读取的,因此必须先对其进行写入(dummywrite):
1)发送起始位;
2)发送slave地址+writebitset;
3)发送内部寄存器地址;
4)重新发送起始位,即restart;
5)重新发送slave地址+readbitset;
6)读取数据主机接收器在接收到最后一个字节后,也不会发出ACK信号。
其中AD转换流程图:
图3-5AD转换流程图
3.2系统电路
复位及晶振:
图3-6复位及晶振电路
A/D转换及测量电路:
图3-7A/D转换及测量电路
显示及报警电路:
图3-8显示及报警电路
第四章软件设计
4.1PCF8591AD芯片转换
用热敏电阻测温,PCF8591AD芯片转换。
AD转换,通过I2C总线输出数据,数据存放在30H中,数据传输时,要注意时序,流程图如上面的那个流程图。
逻辑操作波形时序图如下:
图4-1波形时序图
READI2C:
LCALLSTARTI2C;调用起始信号
MOVA,WADD;寻址字节91H送A
LCALLWI2C;写入寻址字节
LCALLRACK;检查应答位
JNBACK,READI2C;非正常应答时重新开始
MOVR0,RDATA;接收数据缓冲区的首地址
RI2C2:
LCALLRI2C;读入一个字节在A中
MOV@R0,A;接收的数据送入缓冲区
DJNZNUMBR,RI2C1;1字节未读完则调RI2C1
LCALLNMACK;1字节读完则发送非应答位
ROUT:
LCALLSTOPI2C;调用停止信号
MOVRDATA,#30H;
RET
RI2C1:
LCALLMACK;发送一个应答位给外围器件
INCR0
SJMPRI2C2
4.2显示部分
显示部分,显示之前,得先把AD后的数据转换成对应的温度,将温度的十位保存在50H中,个位保存在51H中,小数位保存在52H中,用4位共阴级数码管动态显示,位选线接P2口的低4位,段码线接P1口,动态显示,先显示十位,可用MOVB,#10DIVAB十位就会存在A中,个位存在B中,十位在数码管的最左边,让数码管灭,再显示个位,在左边第二位,让数码管灭,左边第三位一直让它显示小数点,最后一位让它显示小数位,然后让它循环,只有循环,我们眼睛才能同时看到数码管显示4位,此部分比较简单,不再赘述。
报警部分比较简单,在P3.0口接一个报警器,P3.1口接一发光二极管,报警器和发光二极管另一端接电源,编程也简单,只要在需报警时写入MOVP3,#00H即可。
第五章系统调试
硬件选择和软件编程部分都搞好后,就是开始仿真测温了,双击热敏电阻,会跳出一个对话框,里面可以改温度,改好温度后,再电机开始按钮,就可以开始仿真了,这时数码管会显示一个值,记下,然后同理再改变温度测一个值,最后0度到45度,数据如下:
表5-1仿真测温
温度数码管温度数码管温度数码管温度数码管温度数码管
数值数值数值数值数值
0
21
8
30
16
42
24
58
32
75
1
22
9
32
17
44
25
60
33
78
2
23
10
3
18
46
26
62
34
80
3
24
11
35
19
48
27
64
35
82
4
25
12
36
20
50
28
66
36
84
5
26
13
38
21
52
29
68
37
87
6
28
14
39
22
54
30
70
38
89
7
29
15
41
23
56
31
73
39
92
由上表可知:
整体数据是非线性的,但我们可以把这些数令温度为A,数码管数值为B
当A为8,9,39,40时,A=B/2-7
当A为33到38或A为10到13时,A=B/2-6
当A为14到32时,A=B/2-5
当A为0到7时,A=B-21
以上的分析,就可以很精确的显示温度了,软件编程部分,可用CLRCSUBBA,#数码管数值,检查C是0还是1,这样跳转到不同的线性处理部分。
图5-1系统调试
点击Debug,会跳出一下拉菜单,选择第一个进行调试,会出现以下的界面:
图5-2系统调试
在Address旁边的框中输入D:
内部地址,可查看这地址中值的变化。
图5.3系统调试
耐心的单步调试,看看程序运行时,是不是和我们当初编程时想让它运行的一样,若一样,则程序是对的,反之,修改程序,再调试,直到成功为止。
程序调试正确后,点击Debug,再点击下拉菜单中第一个,结束调试。
界面跳转到原来状态。
第六章运行效果仿真
使用PROTUES进行仿真:
图6-1系统仿真图
再改变热敏电阻的温度,