水温自动控制系统 电子大赛报告书1.docx
《水温自动控制系统 电子大赛报告书1.docx》由会员分享,可在线阅读,更多相关《水温自动控制系统 电子大赛报告书1.docx(31页珍藏版)》请在冰点文库上搜索。
![水温自动控制系统 电子大赛报告书1.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/fa799f17-b364-4706-9add-df0ae551140f/fa799f17-b364-4706-9add-df0ae551140f1.gif)
水温自动控制系统电子大赛报告书1
电子设计大赛
题目:
水温控制系统
学校:
吉林大学
院系:
仪器科学与电气工程学院测控技术与仪器系
参赛队员:
水温控制系统
摘要:
该水温控制系统采用单片机进行温度实时采集与控制。
温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内,固有测温分辨率为0.5℃。
水温实时控制采用继电器控制热得快进行升温控制。
系统具备较高的测量精度和控制精度,能完成升温控制。
目录
1.系统方案选择和论证……………………………………………………………2
1.1题目要求……………………………………………………………………………………2
1.1.1 基本要求…………………………………………………………………………2
1.1.2 发挥部分…………………………………………………………………………2
1.1.3 说明………………………………………………………………………………2
1.2 系统基本方案……………………………………………………………………………2
1.2.1 各模块电路的方案选择及论证…………………………………………………2
1.2.2 系统各模块的最终方案…………………………………………………………5
2.硬件设计与实现……………………………………………………………………………6
2.1系统硬件模块关系…………………………………………………………………………6
2.2 主要单元电路的设计……………………………………………………………………6
2.2.1 温度采集部分设计………………………………………………………………6
2.2.2 加热控制部分……………………………………………………………………8
2.2.3 键盘、显示、控制器部分………………………………………………………8
3.系统软件设计……………………………………………………………………………10
3.1读取DS18B20温度模块子程序…………………………………………………………10
3.2 数据处理子程序…………………………………………………………………………10
3.3 键盘扫描子程序…………………………………………………………………………12
3.4 主程序流程图……………………………………………………………………………13
4.系统测试……………………………………………………………………………………14
4.1静态温度测试……………………………………………………………………………14
4.2动态温控测量………………………………………………………………………………14
4.3结果分析……………………………………………………………………………………14
附录1:
产品使用说明……………………………………………………………………………15
附录2:
元件清单…………………………………………………………………………………15
附录3:
系统硬件原理图…………………………………………………………………………16
附录4:
软件程序清单……………………………………………………………………………17
参考文献…………………………………………………………………………………………26
1.系统方案选择和论证
1.1题目要求
设计并制作一个水温自动控制系统,控制对象为1L净水,容器为搪瓷器皿。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。
1.1.1 基本要求
(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。
(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。
(3)用十进制数码管显示水的实际温度。
1.1.2 发挥部分
(1)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。
(2)温度控制的静态误差≤0.2℃。
1.1.3 说明
(1)加热器用一千瓦热得快。
(2)如果采用单片机控制,允许使用已有的单片机最小系统板。
(3)数码显示部分可以使用数码显示模块。
(4)测量水温时只要求在容器内任意设置一个测量点。
1.2 系统基本方案
根据题目要求系统模块分可以划分为:
温度测量模块,显示电路模块,加热模块,控制模块,系统的框图如图1.2.1所示。
为实现各模块的功能,分别做了几种不同的设计方案并进行了论证。
1.2.1 各模块电路的方案选择及论证
(1)控制器模块
根据题目要求,控制器主要用于对温度测量信号的接受和处理、控制电热丝使控制对象满足设计要求、控制显示电路对温度值实时显示以及控制键盘实现对温度值的设定等。
对控制器的选择有以下三种方案:
方案一:
采用FPGA作为系统控制器。
FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。
FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。
由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。
但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。
图1.2.1系统基本模块方框图
方案二:
采用模拟运算放大器组成PID控制系统。
对于水温控制是足够的。
但要附加显示、温度设定等功能,要附加许多电路,稍显麻烦。
方案三:
采用ATMEL公司的AT89C52作为系统控制器。
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。
基于以上分析拟订方案三,由AT89C52作为控制核心,对温度采集和实时显示以及加热装置进行控制。
(2)加热装置有效功率控制模块
根据题目,可以使用热得快进行加热,控制电热炉的功率即可以控制加热的速度。
当水温过高时,关掉热得快进行降温处理,让其自然冷却。
在制作中,当需要加热时开启热得快。
由于加热的功率较大,考虑到简化电路的设计,我们直接采用220V电源。
对加热装置控制模块有以下两种方案:
方案一:
采用可控硅来控制加热器有效功率。
可控硅是一种半控器件,应用于交流电的功率控制有两种形式:
控制导通的交流周期数达到控制功率的目的;控制导通角的方式控制交流功率。
由交流过零检测电路输出方波经适当延时控制双向可控硅的导通角,延时时间即移相偏移量由温度误差计算得到。
可以实现对交流电单个周期有效值周期性控制,保证系统的动态性能指标。
该方案电路稍复杂,需使用光耦合驱动芯片以及变压器等器件。
但该方案可以实现功率的连续调节,因此响应速度快,控制精度也高。
方案二:
采用继电器控制。
使用继电器可以很容易实现地通过较高的电压和电流,在正常条件下,工作十分可靠。
继电器无需外加光耦,自身即可实现电气隔离。
这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将造成影响。
但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能。
基于以上分析以及现有器件限制选择方案二,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,同样可以达到较好的效果。
(3)温度采集模块
题目要求温度静态误差小于等于0.2℃,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。
该温度采集模块有以下三种方案:
方案一:
利用热电阻传感器作为感温元件,热电阻随温度变化而变化,用仪表测量出热电阻的阻值变化,从而得到与电阻值相应的温度值。
最常用的的是铂电阻传感器,铂电阻在氧化介质中,甚至在高温的条件下其物理,化学性质不变。
由铂电阻阻值的变化经小信号变送器XTR101将铂电阻随温度变化的转换为4~20mA线形变化电路,再将电流信号转化为电压信号,送到A/D转换器——ADC0809.即将模拟信号转换为数字信号。
该方案线性度优于0.01%。
方案二:
采用温度传感器AD590K。
AD590K具有较高精度和重复性,良好的非线性保证±0.1℃的测量精度。
加上软件非线性补偿可以实现高精度测量。
AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。
送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。
方案三:
采用数字温度传感器DS18B20。
DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。
可直接与单片机通信,读取测温数据,电路简单。
如图1.2.2所示。
图1.2.2DS18B20测温电路
基于以上分析和现有器件所限,温度采集模块选用方案三。
DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。
(4)键盘与显示模块
根据题目要求,水温要由人工设定,并能实时显示温度值。
对键盘和显示模块有下面两种方案:
方案一:
采用液晶显示屏和通用矩阵键盘。
液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点。
但由于只需显示三位温度值,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器资源占用较多,其成本也偏高。
方案二:
采用三位LED七段数码管分别显示温度的十位、个位和小数位。
按键采用单列3按键进行温度设定。
数码管具有:
低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。
同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。
根据以上论述,采用方案二。
本系统中,采用了数码管的动态显示,节省单片机的内部资源。
1.2.2 系统各模块的最终方案
根据以上分析,结合器件和设备等因素,确定如下方案:
1.采用AT89C52单片机作为控制器,分别对温度采集、LED显示、温度设定、加热装置功率控制。
2.温度测量模块采用数字温度传感器DS18B20。
此器件经软件设置可以实现高分辨率测量。
3.热得快有效功率控制采用继电器控制,实现电路简单实用,加上温度变化缓慢可以满足设计要求。
4.显示用LED数码管显示实时温度值,用ENTER、UP、DOWN三个单键实现温度值的设定。
图1.2.3系统基本框图
系统的基本框图如图1.2.3所示。
CPU(AT89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过89S52来处理数据。
数据处理后的结果就显示到数码管上。
另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到继电器。
DS18B20可以被编程,所以箭头是双向的。
2. 硬件设计与实现
2.1系统硬件模块关系
本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。
各模块关系图如图2.1.1所示。
图2.1.1统硬件模块关系图
2.2 主要单元电路的设计
2.2.1 温度采集部分设计
本系统采用半导体温度传感器作为敏感元件。
传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。
DS18B20应用广泛,性能可以满足题目的设计要求。
DS18B20的测温电路如图2.2.1所示。
图2.2.1DS18B20测温电路
(1)DSI8B20的测温功能的实现:
其测温电路的实现是依靠单片机软件的编程上。
当DSI8B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。
温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。
DSI8B20完成温度转换后,就把测得的温度值与TH做比较,若T>TH或T表2.2.1DS18B20温度值格式表
LSByte
MSByte
S
S
S
S
S
(2)、DSl820工作过程中的协议
初始化->RoM操作命令->存储器操作命令->处理数据
①初始化单总线上的所有处理均从初始化开始
②ROM操作命令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如表2.2.2所示
表2.2.2ROM操作命令表
指令
代码
ReadROM(读ROM)
33H
MatchROM(匹配ROM)
55H
SkipROM(跳过ROM]
CCH
SearchROM(搜索ROM)
F0H
Alarmsearch(告警搜索)
ECH
③存储器操作命令如表2.2.3所示
表2.2.3存储器操作命令表
指令
代码
WriteScratchpad(写暂存存储器)
4EH
ReadScratchpad(读暂存存储器)
BEH
CopyScratchpad(复制暂存存储器)
48H
ConvertTemperature(温度变换)
44H
RecallEPROM(重新调出)
B8H
ReadPowersupply(读电源)
B4H
(3)温度转换算法及分析
由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。
温度高字节(MSByte)高5位是用来保存温度的正负(标志为S的bit11~bit15),高字节(MSByte)低3位和低字节来保存温度值(bit0~bit10)。
其中低字节(LSByte)的低4位来保存温度的小数位(bit0~bit3)。
由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。
也就说,本系统的温度精确到了0.1度。
算法核心:
首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSByte)取反加一变成原码。
处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。
2.2.2 加热控制部分
由于本系统要控制热得快加热,功率较大,因此要借助功率电路。
在器件选择上留足余量,增加安全性。
加热部分采用继电器控制,电路简单可靠。
电路如图2.2.2所示。
当实测温度低于设定值时,由单片机输出高电平信号。
三极管9014导通,继电器开始工作对水加温。
为了防止继电器频繁动作。
在软件中对水温测量精确到0.1℃,而在温度设定时只取整数。
可以有1℃的余量。
当设定温度低于实测温度时为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低。
使系统整体性能得以提高。
原理图如图2.2.3所示。
2.2.3 键盘、显示、控制器部分
本设计中采用动态显示方式驱动3个七段数码管,分别显示温度的十位、个位和小数位。
数码管采用共阴极,由于AT89C52单片机每个I/O的拉电流只有1—2mA。
所以在位码和段码都加上了同相驱动器。
键盘采用按键开关经上拉电阻分别接P1.0、P1.1、P1.2口上,起到控制、上调和下调作用。
每按上调和下调键,设定温度值增1减1。
单片机XTAL2、XTAL1接12MHZj晶振,提供系统时钟基值。
另RESET接复位按键。
原理图如图2.2.4所示。
图2.2.2继电器控制
图2.2.3键盘、显示、控制器部分原理图
3. 系统软件设计
系统的软件设计采用汇编语言,对单片机进行变成实现各项功能。
主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。
用的是循环查询方式,来显示和控制温度。
3.1读取DS18B20温度模块子程序
每次对DA18B20操作时多要按造DS18B20工作过程中的协议进行。
初始化->RoM操作命令->存储器操作命令->处理数据程序流程图如图3.1.1所示。
3.2 数据处理子程序
由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。
由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。
也就说,本系统的温度精确到了0.1度。
首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSByte)取反加一变成原码。
处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。
数据处理子程序流程图如图3.2.1所示。
图3.1.1 读取DS18B20温度子程序流程图
图3.2.1 数据处理子程序流程图
3.3 键盘扫描子程序
按键功能:
1. Enter → P1.0(k2) 控制键
2. Up → P1.1(k3) 加1键
3. Down → P1.2(k4) 减1键
键盘子程序流程图如图3.3.1所示。
图3.3.1 键盘子程序流程图
3.4 主程序流程图
总模块流程图如图3.1.1所示。
本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。
图3.1.1所示为系统主程序流程图
图3.1.1 主程序流程图
4.系统测试
4.1静态温度测试
测试方式:
由于种种条件的限制,采用模拟加热方式进行测试。
利用继电器的指示灯来显示继电器的动作。
红灯表示加热,绿灯表示降温。
测量仪器:
空调温度显示屏
测试结果如表4.1.1所示:
表4.1.1测试结果数据
标准温度/℃
20
22
25
27
28
测量温度/℃
19.8
22.1
24.7
26.8
27.6
误差/℃
0.2
0.1
0.3
0.2
0.4
4.2动态温控测量
测试方式:
加热方式用体温对传感器DS18B20进行加热。
设定控制温度,记录超调温度,稳态误差。
超调温度与加热的功率有关,这里不再测量。
测量仪器:
空调温度显示屏
测量结果如表4.2.1所示:
表4.2.1测试结果数据
设定温度/℃
29
30
33
35
超调温度/℃
1.3
0.9
1.1
0.6
稳态误差/℃
0.2
0.4
0.2
0.4
4.3结果分析
有以上的测量结果可见,系统基本上达到了所要求的指标,静态测温的精度主要由DS18B20来决定。
在控温指标中,影响系统的性能的因素很多。
最关键的是加热系统本身的物理性质及控制算法。
由于条件的限制,在本设计中采用体温进行测试。
附录1:
产品使用说明
本水温控制系统能在0~99℃范围内设定任意温度值,超出此范围将有出错显示888,之后返回到99℃或0℃。
通过按ENTER键确认开始温度设定;P1.1的UP键为加1键,每按一次使设定温度值加1℃P1.2的DOWN键为减1键,每按下一次设定温度值减1℃。
设置完温度要在按ERTER键确认温度设定完成,之后显示实测温度值。
当温度传感器没有接入时也将有出错提示显示888。
附录2:
元件清单
元件数量(个)
AT89S521
12MHZ晶振1.21
继电器1
数码管3
按键开关4
发光二极管2
1K×8排阻1
100Ω电阻3
3KΩ4
4.5KΩ1
500Ω1
200Ω1
电解电容10μF1
30pF2
插槽4
面包板2
附录3:
系统硬件原理图
附录4:
软件程序清单
TIMELEQU0E0H
TIMEHEQU0B1H
TEMPHEADEQU36H
BITSTDATA20H
TIME1SOKBITBITST.1
TEMPONEOKBITBITST.2
TEMPLDATA26H
TEMPHDATA27H
TEMPHCDATA28H
TEMPLCDATA29H
TEMPDINBITP3.7
ORG0000H
LJMPSTART
ORG0003H
RETI
ORG000BH
LJMPTOIT
ORG0013H
RETI
ORG0100H
START:
MOVSP,#60H
CLSMEM:
MOVR0,#20H
MOVR1,#60H
CLSMEM1:
MOV@R0,#00H
INCR0
DJNZR1,CLSMEM1
MOVTMOD,#00000001B
MOVTH0,#TIMEL
MOVTL0,#TIMEH
SJMPINIT
ERROR:
NOP
LJMPSTART
NOP
INIT:
NOP
SETBET0
SETBTR0
SETBEA
MOVPSW,#00H
CLRTEMPONEOK
MAIN:
LCALLDISP1
JNBTIME1SOK,MAIN
CLRTIME1SOK
JNBTEMPONEOK,MAIN2
LCALLREADTEMP1
LCALLCONVTEMP
LCALLDISPBCD
LCALLDISP1
MAIN2:
LCALLREADTEMP
SETBTEMPONEOK
LJMPMAIN
TOIT:
PUSHPSW
MOVPSW,#10H
MOVTH0,#TIMEH
MOVTL0,#TIMEL
INCR7
CJNER7,#32H,T0IT1
MOVR7,#00H
SETBTIME1SOK
T0IT1:
POPPSW
RETI
INITDS1820:
SETBTEMPDIN
NOP
NOP
CLRTEMPDIN
MOVR6,#0A0H
DJNZR6,$
MOVR6,#0A0H
DJNZR6,$
SETBTEMPDIN
MOVR6,#32H
DJNZR6,$
MOVR6,#3CH
LOOP1820:
MOVC,TEMPDIN
JCINITDS1820OUT
DJNZR6,LOOP1820
MOVR6,#64H
DJNZR6,$
SJMPINITDS1820
RET
INITDS1820OUT:
SETBTEMPDIN
RET
READDS18