自动化系自动化专业毕业论文基于STM32的智能水温控制系统的设计与研究.docx
《自动化系自动化专业毕业论文基于STM32的智能水温控制系统的设计与研究.docx》由会员分享,可在线阅读,更多相关《自动化系自动化专业毕业论文基于STM32的智能水温控制系统的设计与研究.docx(17页珍藏版)》请在冰豆网上搜索。
自动化系自动化专业毕业论文基于STM32的智能水温控制系统的设计与研究
编号
xx航空航天大学xx学院
毕业设计
题目
基于STM32的智能水温控制系统的设计与研究
学生姓名
xx
学号
2222222222
系部
自动化系
专业
自动化
班级
21110322
指导教师
xx讲师
二〇一八年六月
xx航空航天大学xx学院
本科毕业设计(论文)诚信承诺书
本人郑重声明:
所呈交的毕业设计(论文)(题目:
基于STM32的智能水温控制系统的设计与研究)是本人在导师的指导下独立进行研究所取得的成果。
尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。
作者签名:
xx2018年5月21日
(学号):
2222222222
基于STM32的智能水温控制系统
摘要
随着电子技术的飞速发展,特别是嵌入式技术的发展,给人们的生活带来了根本性的变化。
在现代工业设计、工程建设及日常生活中随处可以看到水温控制的影子。
现代社会中,水温控制不仅应用在工厂生产方面,其作用也体现到了各个方面,随着人们生活质量的提高,酒店厂房及家庭生活中都会见到智能水温控制的影子,智能水温控制将更好的服务于社会。
本次设计就是要通过以STM32单片机为控制核心,采用温度传感器Ds18b20对水温进行实时的进行信息采集,并通过PID算法实现对水温的智能控制。
水温可以由人工设定在一定范围内,一旦水温超过设定的范围时,机器实现报警的同时实现自动控制,以保持其与设定的水温基本恒定。
本设计的主要任务是完成对水温检测,利用单片机实现一定范围内水温的智能监控。
关键字:
STM32,Ds18b20,温度检测,温度控制;
TheintelligenttemperaturecontrolsystembasedonSTM32
Abstract
Withtherapiddevelopmentofelectronictechnology,especiallythedevelopmentofembeddedtechnology,hasbroughtfundamentalchangestopeople'slife.Inthemodernindustrialdesign,engineeringconstructionanddailylifeeverywherecanseetheshadowofwatertemperaturecontrol.Inmodernsociety,thewatertemperaturecontrolisnotonlyusedinthefactoryproduction,itseffectisalsoreflectedinallaspects,withtheimprovementofpeople'slivingquality,hotelandfamilylifewillseetheshadowoftheintelligenttemperaturecontrol,intelligenttemperaturecontrolwillbebetterservicetothesociety.
ThisdesignistothroughtheSTM32microcontrollerasthecontrolcore,usingtemperaturesensorDs18b20temperaturereal-timeinformationcollection,andthroughthePIDalgorithmtorealizetheintelligentcontrolofthewatertemperature.Watertemperaturecanbesetwithinacertainrangebyartificial,oncethewatertemperatureexceedstherangeoftheset,machinerealizealarmautomaticcontrolatthesametime,tomaintainitsandsetbasicconstantwatertemperature.Thisdesignisthemaintaskofthecompletionofthewatertemperaturedetection,usingsinglechipmicrocomputerintelligentmonitoringoftemperaturewithinacertainrange.
KeyWords:
STM32,Ds18b20,Temperaturedetection,temperaturecontrol;
第一章绪论
1.1目的和意义
自70年代以来,由于工业过程控制的需要,特别是在电子技术的迅猛发展,以及自动控制理论和设计方法发展的推动下,国外温度控制系统发展迅速,并在智能化自适应参数自整定等方面取得成果。
在这方面以日本、美国、德国、瑞典等国技术领先,并且都生产出了一批商品化的性能优异的温度控制器及仪器仪表,在各行业广泛应用。
目前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。
温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同国外的日本、美国、德国等先进国家相比,仍然有着较大的差距。
目前,我国在这方面总体技术水平处于20世纪80年代中后期水平。
成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后复杂时变温度系统控制,而且适应于较高控制场合的智能化、自适应控制仪表国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。
现在,我国在温度等控制仪表业与国外还有着一定的差距。
随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大以及本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。
本文主要介绍单片机温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取、程序的调试和系统参数的整定。
在系统构建时选取了STM32芯片作为该控制系统的核心,温度信号由新型的可编程温度传感器(DS18B20)提供。
通过软件实现对水温的控制,使用继电器作执行部件。
水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变,具有较好的快速性与较小的超调。
该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。
使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性,避免了因个人设计经验不足而产生过多的系统缺陷。
1.2毕业设计研究内容概述
本设计主要使用STM32单片机作为主控芯片,采用数字温度传感器Ds18b20测量所需的温度,温度精度可达0.1℃。
显示部分采用LCD1602液晶显示。
该系统实际的工作过程为:
实际测得温度与设定的温度范围进行比较,如果温度不在设定的范围内,蜂咛器自动报警,继电器动作(加热或降温)从而达到水温进行智能控制。
第2章系统的总体设计
2.1系统的总体设计要求
本次设计的要求是系统能够检测并显示温度(温度的检测范围为-35℃~+95℃)。
当检测到的温度超出设定的温度范围时实现报警,温度范围可由按键实现。
2.2系统主要元器件的选型
2.2.1单片机的选择
方案1:
采用AT89C51芯片作为硬件核心。
此芯片是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM一FalshProgrammableandErasableReadonlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
但是运用于电路设计中时,由于不具备ISP在线编程技术,导致当在对电路进行调试过程中,由于程序的错误修改或对程序功能进行增加需要烧入程序时,需要将芯片多次拔插,这样做很容易对芯片产生损坏。
方案2:
采用STM32F103xx增强型系列作为硬件核心。
TM32F103xx增强型系列使用高性能的ARMCortex-M332位的RISC内核,工作频率为72MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:
多达2个I2C和SPI、3个USART、一个USB和一个CAN。
STM32F103xx增强型系列工作于-40°C至+105°C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。
总结:
方案二相比方案一拥有更好的性能,并且更加符合水温控制在实际环境下的应用,故采用方案二中的STM32F103xx增强型系列作为本次设计的主控芯片。
2.2.2温度传感器的选择
方案1:
采用热敏电阻,热敏电阻具有灵敏度高,体积小使用方便的特点。
可满足35℃~95℃的测量范围,但是热敏电阻精度与温度性都比较差,当检测小于1℃的温度信号时就显得不合适了。
方案2:
采用DS18B20温度传感器,DS18B20温度传感器采用先进的单总线数据通信。
检测温度范围为﹣55℃~+125℃。
最高12位分辨率,精度可达±0.5℃。
12位分辨率时最多在750ms内把温度值转换为数字,其测量结果可以直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
总结:
综合比较方案一与方案二,由于连个原价的成本相差无几,且方案二在抗干扰能力和精度等特点上优于前者。
故采用方案二中的DS18B20作为本设计的温度传感器
2.2.3输出显示设备的选择
方案1:
:
使用液晶显示屏LCD1602显示水温。
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
液晶显示屏具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。
方案2:
使用传统数码管作为显示设备。
数码管分为共阴极数码管和共阳极数码管两种。
每种数码管由7个发光二极管按一定顺序连接起来。
使用时按规定使某些笔段上的发光二极管发光,即可组成0~9的一系列数字。
通过多段数码管即可组成段数字。
数码管具有体积小,重量轻,抗冲击能力好;能在低电压,小电流条件下驱动发光,能与CMOS,TTL电路兼容;发光响应时间短,高频特性好,亮度高,寿命长等特点。
总结;本设计所要显示的数字比较多,采用数码管显示的话显得不够直观。
采用LCD1602能很直观的看出温度范围与测得的温度。
故使用液晶显示屏LCD1604作为本设计的显示设备。
第三章系统硬件设计
温本设计采用STM32作为主控芯片,利用温度传感器DS18B20对温度信号进行采集,并在LCD1602上进行显示,并进行信息处理的智能水温控制系统。
本系统由单片机系统模块,通信接口模块,温度系统模块,液晶显示LCD模块,电源模块,报警电路,继电器模块等组成。
本设计总体框图如图3.1所示。
3.1STM32介绍
STM32单片机是整个水温控制系统的核心部分。
因为对水温控制具有较高的要求,比如高控制精度,高灵敏度,高稳定性,高执行速度等,所以选择一个高性能且经济实惠的单片机就很有必要。
本次设计选用STM32F103系类单片机作为控制电路的核心部件,该单片机属于ST意法半导体公司生产的32位高性能、低成本、低功耗的增强型系列单片机,其内核采用的是ARM公司最新研发的Cortex-M3架构,该内核是充分满足了用户对于高性能、低成本、低功耗经济实惠的要求。
ARMCortex-M3处理器的架构在系统结构上的增强,使得STM32增强型单片机无比强大,其采用的THUMB-2指令集使得其指令效率更高并且性能更强。
STM32F103VET6单片机有3个不同的时钟源可供选择用以驱动系统时钟,分别为HIS振荡器时钟、HSE振荡器时钟和PLL时钟。
这些设备还具有2个二级时钟源,分别是40KHz的低速内部RC和32.768KHz的低速外部时钟源,可以用来驱动看门狗时钟和RTC。
任何一个时钟源在不被使用时,都可以被独立的关闭或者开启,以实现对系统功耗的优化。
单片机由AMS1117-3.3芯片电路供电,输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,需要经C7-C10滤波后再为CPU供电,R8为DGND与AGND的连接电阻,R9和D5LED和电源指示连接电阻,电源电路如图4所示。
3.2温度采集模块
本系统采用DALLAS公司生产的单总线芯片DS18B20采集环境温度,DS18B20的管脚说明如示三个管脚分别为地线、信号线和电源线。
DS18B20继承了DS1820的全部优点,并做了如下改进1.供电范围扩大为3.0-5.0v。
2.温度分辨力可编程。
3.转换速率有很大提高。
4.内部存储器映射关系发生变化。
5.具有电源反接保护电路。
6.体积减小一半。
对我们使用来说最大的不同就是DS18B20可以程序设定9-12位的分辨率数字值,而DS1820为固定的9位数字值,且温度转换时的延时时间由2s减为750ms。
图3.7DS18B20管脚说明
DS18B20的内部结构:
DS18B20的内部存储资源分为8个字节的ROM,9个字节的RAM,3个字节的EEPROM如下表3-3:
表3-3DS18B20的存储资源
ROM(8个字节)
A1
A2
A3
A4
A5
A6
A7
A8
RAM(9个字节
B1
B2
B3
B4
B5
B6
B7
B8
B9
EEPROM(3个字节)
C1
C2
C3
-
-
-
-
-
ROM
在DS18B20内部光刻了一个长度为64bit的ROM,这个编码是器件的身份识别标志,如下表3-4:
表3-4DS18B20的内部ROM
64位激光ROM
8位CRC编号
48位序列号
8位产品系列编码
MSBLSBMSBLSEMSBLSB
注释:
MSB(最高有效位)
LSB(最低有效位)
DS18B20的64位光刻ROM的排列是:
开始(最低)8位是产品类型标号,对于DS18B20来说就是(28H),接着的48位是该DS28B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接.多个DS18B20的目的。
RAM
高速暂存存储器(RAM)由9个字节组成,包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。
第三个和第四个字节是温度高限TH温度低限TL暂存区,第五个字节是配置寄存器暂存区,第6、7、8字节是系统保留用,就相当于DS18B20的运算内存,第九个字节是冗余检验字节。
其分配如表3-5所示。
DS18B20暂存寄存器分布:
表3-5DS18B20的内部RAM
寄存器内容
字节地址
温度值低位(LSByte)
0
温度值高位(MSByte)
1
高温限值(TH)
2
低温限值(TL)
3
配置寄存器
4
保留
5
保留
6
保留
7
CRC校验值
8
1第0和第1字节:
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节口单片机可通过单线接口读到该数据,读取时低位在前,高位在后。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
如表3-6所示。
表3-6温度的存储形式
高8位
S
S
S
S
S
26
25
24
低8位
23
22
21
20
2-1
2-2
2-3
2-4
例如+125℃的数字输出为07D0H,+25.0625℃数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H,如表3-7所示。
(注:
TEMPERATURE-温度,DIGITALOUTPUT-数字输出)
表3-7DS18B20温度数据表
TEMPERATURE
DIGITALOUTPUT
DIGITALOUTPUT
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2H
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
0000H
-0.5℃
1111111111111000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FF6FH
-55℃
1111110010010000
FC90H
2第2第3字节:
RAM的第2、3、4字节一和EEPROM的三个字节是对应的,内容是相同的,只是RAM因为是暂存器,失电后数据就丢失了。
而EEPROM是电擦除只读存储器,失电后数据.不会丢失。
在工作时得到复位命令后就从EEPROM叫复制一份数据到RAM的第2、3、4字节内,作为我们进行报警搜索、改写报警值和改写器件设置用,我们从外部只能对RAM进行操作,EEPROM只能从RAM复制而得到要保存的数据。
第2字节为报警值上限,第3字节为报警值低限。
DS18B20完成一次温度转换后,就拿温度值和存储在TH和TL中的值进行比较,因为这些寄存器是8位的,所以小数位被忽略不计。
TH或TL的最高有效位直接对应1位温度寄存器的符号位。
如果测得的温度高于TH或低于TL,器件内部就会置位一个报警标识。
每进行一次测温就对这个标识进行一次更新。
当报警标识置位时,DS18B20会对报警搜索命令有反应。
这样就允许许多DS18B20并联在一起同时测温,如果某个地方温度超过了限定值。
报警的器件就会被立即识别出来并读取。
而不用读未报警的器件。
3第4字节配置寄存器:
第4字节的配置寄存器是用来设置DS18B20的工作模式和测量精度的,其内容如表3-8:
表3-8DS18B20的配置寄存器结构
配置寄存器结构
TM
R1
R0
1
1
1
1
1
配置寄存器的低五位一直都是“1”,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,表3-9为温度分辨率设置表所示(DS18B20)出厂时被设置为12位)。
我们使用时可以跟据实际需要通过修改RAM第4字节的RO和R1的值.来DS18B20的温度测量精度。
需要保存这种设置时,还要用一条复制命令将RAM内的数据复制到EEPROM内。
温度分辨率设置表
表3-9DS18B20的温度分辨率设置表
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
4第5、6、7、8字节:
前面我们已经说过,RAM的5、6、7字节是器件的保留字节,就相当于器件内部转换运算时所用的内存。
第8字节是循环冗余校验字节。
它是前面8个字节的CRC值。
起着对前面字节的校验作用。
EEPROM:
EEPROM只有三个字节,和RAM的第2、3、4字节的内容相对应,它的作用就是存储RAM第2、3、4字节的内容,以使这些数据在掉电后不丢失。
可能通过几条命令将RAM的该3个字节内容复制到EEPROM或从EEPROM将该3个字节内容复制到RAM的第2、3、4字节去。
因为我们从外部想改写报警值和器件的设置都是只对RAM进行操作的。
要保存这些设置后的数据就还要用相应的命令将RAM的数据复制到EEPROM去。
操作指令:
对DS18B20的操作分为对ROM的操作和对RAM的操作。
列表详见表3-10
指令实际操作的具体实现:
DS18B20是单总线器件,通讯协议包括几种单线信号类型:
复位脉冲、存在脉冲、写0、写1、读0、读1。
所有这些信号,除存在脉冲外,其余都是由总线控制器(单片机)发出的。
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成一次操作经过三个步骤:
①要对DS18B20进行复位操作,②复位成功后发送一条ROM指令,③最后发送RAM指令,这样才能对DS18B20进行预定的操作。
表3-10ROM指令表
指令
约定代码
功能
读ROM
33H
读DS18B20温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出命令之后,接着发出64位ROM编码,访问单总线上与该编码相应的DS18B20使之做出响应,为下一步对该DS18B20的读写做准备。
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址。
为操作各器件做准备。
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才能做出响应
表3-11DS18B20的对RAM和ROM操作的指令表
指令
预定代码
功能
温度变换
44H
启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ns)。
结果存入内部9字节中的第0,1,字节RAM中。
读暂存器
0BEH
读内部RAM中9个字节的内容
写暂存器
4EH
发出向内部RAM的3(TH)、4(TH)字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPRO