基于单片机水温控制系统Word格式.docx
《基于单片机水温控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机水温控制系统Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
![基于单片机水温控制系统Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/31/a18a320d-f8bd-4353-91d0-01a57c933625/a18a320d-f8bd-4353-91d0-01a57c9336251.gif)
前言IV
1绪论1
1.1水温控制系统设计的背景1
1.2水温控制系统设计的意义1
1.3水温控制系统完成的功能2
2系统设计方案选择3
2.1单片机及水温控制方案3
2.2水温传感器方案3
2.3电源设计方案4
2.4控制系统总体设计4
3硬件设计部分5
3.1单片机电路5
3.2温度检测电路8
3.3辅助直流稳压电源设计11
3.4其它部分硬件电路13
4软件设计部分17
4.1程序设计方案17
4.2各模块子程序设计18
5系统调试部分22
结论23
参考文献24
致谢26
附录27
前言
水温控制无论是在工业生产中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费。
为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对水温进监测、显示、控制,使之达到工艺标准,满足需要。
由于电子行业的迅猛发展,计算机技术和传感器技术的不断改进,而且计算机和传感器的价格也日益降低,可靠性逐步提高,用信息技术来实现水温控制并提高控制的精确度不仅是可以达到的而且是容易实现的。
其发展必将带来新一轮的工业化的革命和社会发展的飞跃。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机具有体积小、功耗低、编程灵活,控制简单、扩展功能强、微型化和使用方便等优点,结合不同类型的传感器,可实现诸多功能。
用单片机可以构成形式多样的控制系统、数据采集系统。
通过单片机使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系统还具有控制精度高的特点。
目前国内外各大电气公司,大的半导体厂商正在不断的开发、使用单片机,使其无论在控制能力,减小体积,降低成本,还是开发环境的改善等方面,都得到空前迅速的发展。
本设计以AT89C51单片机系统进行温度采集与控制。
温度信号由模拟温度传感器DS18B20采集输入AT89C51,利用温度传感器采集到当前的温度,通过AT89C51单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。
可以通过按键任意设定一个恒定的温度。
将水环境数据与所设置的数据进行比较,当水温低于设定值时,开启加热设备,进行加热;
当水温高于设定温度时,停止加热,从而实现对水温的自动控制。
当系统出现故障,超出控制温度范围时,自动蜂鸣报警。
用单片机控制水温可以在一定范围内设定,并能在环境温度变化时保持温度不变。
1绪论
1.1水温控制系统设计的背景
测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。
所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。
单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用,特别是单片机技术的开发与应用,标志着计算机发展史上又一个新的里程碑。
作为计算机两大发展方向之一的单片机,以面向对象的实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化。
水温检测控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。
在工业生产过程中,很多时候都需要对水温进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。
使用水温控制系统可以对生产环境的温度进行有效控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。
水温控制系统应用十分广阔。
1.2水温控制系统设计的意义
随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
温度测试控制系统,控制对象是温度。
温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。
而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。
针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
特别是近年来,温度控制系统已应用到人们生活的各个方面,温度控制的开发与人们工作生活息息相关。
水是一种我们赖以生存的重要资源,无论是在工农业生产还是我们的日常生活处处离不开水。
控制水的温度可以极大提高生产效率,节约资源,提升我们的生活质量。
在水资源日益匮乏的今天,拥有并推广简易完善的水温控制系统对于我们社会的可持续发展,有着极大的实际意义。
1.3水温控制系统完成的功能
本器件以AT89C51单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入AT89C51,主控器能对各温度检测器通过LED进行显示。
1、本机实现的功能:
(1)利用温度传感器采集到当前的温度,通过AT89C51单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。
(2)可以通过按键任意设定一个恒定的温度。
(3)将水环境数据与所设置的数据进行比较,当水温低于设定值时,开启加热设备,进行加热;
(4)当系统出现故障,超出控制温度范围时,自动蜂鸣报警。
2、基本设计参数要求有:
一升水由800W的电热设备加热,要求水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。
(1)温度测量范围:
20~60℃,最小区分度不大于0.1℃。
(2)控制精度在0.5℃以内,温度控制的静态误差小于1℃。
(3)用十进制数码管显示实际水温。
3、扩展功能:
(1)具有通信能力,可接收其他数据设备发来的命令,或将结果传送到其他数据设备。
(2)采用适当的控制方法实现当设定温度或环境温度突变时,减小系统的调节时间和超调量。
(3)温度控制的静态误差。
2系统设计方案选择
2.1单片机及水温控制
建立单片机水温控制系统可以采用AT89C51作为控制核心,以使用最为普遍的器件ADC0804作模数转换,控制上使用对电阻丝加电使其升温。
此方案简易可行,器件的价格便宜。
但AT89C51内部没有程序存储器,需要扩展,增加了电路的复杂性。
但此方案在硬件、软件上的成本都比较高,而且易受外部环境的影响和限制,系统工作相对不稳定。
单片机种类繁多,经过比较。
此次设计方案采用AT89C51单片机实现,该单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。
进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。
2.2水温传感器
水温传感器可以采用极为普遍的晶体管3DG6作为温度传感器,廉价的电压/频率转换器(V/F)LM331与AT89C51单片机组成的温度测量仪。
但抗干扰性差,数据处理复杂,数据存放空间大,受市场限制。
设计中广泛采用热电阻传感器,铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、稳定性好等特点,被广泛用于中温(-200℃~+650℃)范围的温度测量中。
但铂电阻的电阻值与温度成非线性关系,所以需要进行非线性较正。
校正分为模拟电路校正和微处理器数字化校正,模拟校正有很多现成的电路,其精度不高且易受温漂等干扰因素影响,数字化校正则需要在微处理系统中使用,将Pt电阻的电阻值和温度对应起来后存入EEPROM中,根据电路中实测的AD值以查表方式计算相应温度值。
采用数字可编程温度传感器DS18B20作为温度检测元件。
数字可编程温度传感器可以直接读出被测温度值。
不需要将温度传感器的输出信号接到A/D转换器上,减少了系统的硬件电路的成本和整个系统的体积进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。
由于采用具有一总线特点的温度传感器,所以电路连接简单;
而且该传感器拥有强大的通信协议,同过几个简单的操作就可以实现传感器与单片机的交互,包括复位传感器、对传感器读写数据、对传感器写命令。
软件、硬件易于调试,制作成本较低。
也使得系统所测结果精度大大提高。
综合多方考虑,经过对各种温度传单器的比较,本设计决定采用DS18B20建立温度检测电路。
2.3电源设计
采用单一电源供电,各个部分很可能造成干扰,系统无法正确工作,还可能因为负载过大,电源无法提供足够的工作电流。
特别是压机启动瞬间电流很大,而且逆变电路负载电流波动较大会造成电压不稳,有毛刺等干扰,严重时可能造成弱电部分电路掉电。
所以采用双电源,即电源负载驱动电路等强电部分用一个电源,数字电路等弱电部分用一个电源。
但是电路间还是可能会产生干扰,造成系统不正常,而且还可能会对单片机的工作产生干扰,影响单片机的正常工作。
最终我们采用多电源供电方式,即对数字电路、驱动电路分别供电,这种方案即降低了系统各个模块间的干扰,还保证了电源能为各部分提供足够的工作电流,提高系统的可靠性。
2.4控制系统总体设计
本次设计采用采样值和键盘设定值进行比较运算的方法来简单精确地控制温度。
先通过键盘输入设定温度,保存在AT89C51单片机的指定单元中,再利用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。
然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将水温控制在一定的范围内。
当水温超出单片机预存温度时,蜂鸣器进行报警。
单片机控制系统是一个完整的智能化的集数据采集、显示、处理、控制于一体的系统。
由传感器、LED显示单片机及执行机构控制部分等组成。
系统结构框图如图1所示:
图1系统结构框图
3硬件设计部分
3.1单片机电路
本设计采用的AT89C51是一种低功耗、高性能CMOS8位微控制器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上8K字节Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89C51单片机主要功能特点有:
与MCS-51单片机产品兼容;
8K字节在系统可编程Flash存储器;
256字节RAM;
1000次擦写周期;
全静态操作:
三级加密程序存储器;
32位可编程I/O口线;
双数据指针;
三个16位定时器/计数器;
八个中断源(一个6向量2级中断结构);
全双工UART串行通道;
片内晶振及时钟电路;
看门狗定时器;
掉电标识符;
0Hz~33Hz,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,掉电后中断可唤醒。
3.1.1AT89C51引脚功能
图2AT89S52单片机引脚结构示意图
VCC:
电源(+5V)。
GND:
地。
P0口:
本次设计中P0口与P2口共同实现LED显示功能。
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P1口:
本次设计P1口中P1.0将用于控制继电器;
P1.1和P1.4用于报警系统。
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
P1口第二功能有:
P1.0:
T2(定时器/计数器T2的外部计数输入,时钟输出)
P1.1:
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5:
MOSI(在系统编程用)
P1.6:
MISO(在系统编程用)
P1.7:
SCK(在系统编程用)
P3口:
本设计中P3口将用于接收水温信号和按键信息。
P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
本次设计P3口中P3.4将用于接收发送温度型号。
P3引脚号第二功能有:
P3.0:
RXD(串行输入)
P3.1:
TXD(串行输出)
P3.2:
INT0(外部中断0)
P3.3:
P3.4:
T0(定时器0外部输入)
P3.5:
T1(定时器1外部输入)
P3.6:
WR(外部数据存储器写选通)
P3.7:
RD(外部数据存储器写选通)
RESET:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接Vcc。
在flash编程期间,EA也接收12伏Vpp电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.1.2时钟电路
时钟电路是用来产生AT89C51单片机工作时所必须的时钟信号,AT89C51本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89C51在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。
通常时钟由于两种形式:
内部时钟和外部时钟。
我们系统采用内部时钟方式来为系统提供时钟信号。
AT89C51内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。
电路中的C1、C2的选择在30pF左右,但电容太小会影响振荡的频率、稳定性和快速性。
晶振频率为在1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。
为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。
3.1.3复位电路
AT89C51的复位输入引脚RST为单片机提供了初始化的手段,可以使程序从指定处开始执行,在AT89C51的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则AT89C51循环复位,只有当RST由高电平变成低电平以后,AT89C51才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路。
图3时钟电路复位电路与单片机的连接图
3.2温度检测电路
3.2.1DS18B20数字温度计
本次设计所采用的温度传感器为达拉斯DS18B20半导体可编程分辨率的单总线数字温度计。
DS18B20无需外部器件。
它的测温范围为-55~+125℃,并且在-10~+85℃精度为±
0.5℃。
DS18B20数字温度计提供9-12位摄氏温度测量。
最多在750ms内将温度转换为12位数字。
报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件DS18B20有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。
DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。
除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求,供电范围为3.0V到5.5V。
DS18B20与DS1822兼容的软件。
每个DS18B20都有一个独特的64位序列号,从而允许多只DS18B20同时连在一根单线总线上。
因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。
这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
DS18B20应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。
本设计采用的TO-92封装的DS18B20引脚功能描述见表1:
表1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
3.2.2DS18B20操作原理
DS18B20的核心功能是它的直接读数字的温度传感器。
温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。
在上电状态下默认的精度为12位。
DS18B20启动后保持低功耗等待状态;
当需要执行温度测量和AD转换时,总线控制器必须发出[44h]命令。
在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。
当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0,转换结束返回1。
DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中头五位S为符号位。
如:
+25.0625℃的数字输出为0000000111100001(正温度直接把二进制数转成十进制乘以单位温度即得到温度值,对于负温度则取反加1后把二进制数转成十进制)。
DS18B20的存储器有一个暂存SRAM和一个存储高低报警触发值TH和TL的非易失性电可擦除EEPROM组成。
注意当报警功能不使用时,TH和TL寄存器可以被当作普通寄存器使用。
所有的存储器指令被详述于DS18B20功能指令节。
位0和位1为测得温度信息的LSB和MSB。
这两个字节是只读的。
第2和第3字节是TH和TL的