单片机恒温箱温度控制系统的设计.docx
- 文档编号:24517660
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:26
- 大小:259.33KB
单片机恒温箱温度控制系统的设计.docx
《单片机恒温箱温度控制系统的设计.docx》由会员分享,可在线阅读,更多相关《单片机恒温箱温度控制系统的设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机恒温箱温度控制系统的设计
本课程设计要求:
本温度控制系统为以单片机为核心,实现了对温度实时监测和控制,实现了控制的智能化。
设计恒温箱温度控制系统,配有温度传感器,采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输,采用了PID控制技术,可以使温度保持在要求的一个恒定范围内,配有键盘,用于输入设定温度;配有数码管LED用来显示温度。
技术参数和设计任务:
1、利用单片机AT89C2051实现对温度的控制,实现保持恒温箱在最高温度为110℃。
2、可预置恒温箱温度,烘干过程恒温控制,温度控制误差小于±2℃。
3、预置时显示设定温度,恒温时显示实时温度,采用PID控制算法显示精确到0.1℃。
4、温度超出预置温度±5℃时发出声音报警。
5、对升、降温过程没有线性要求。
6、温度检测部分采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输
7、人机对话部分由键盘、显示和报警三部分组成,实现对温度的显示、报警。
一、本课程设计系统概述
1、系统原理
选用AT89C2051单片机为中央处理器,通过温度传感器DS18B20对恒温箱进行温度采集,将采集到的信号传送给单片机,在由单片机对数据进行处理控制显示器,并比较采集温度与设定温度是否一致,然后驱动恒温箱的加热或制冷。
2、系统总结构图
总体设计应该是全面考虑系统的总体目标,进行硬件初步选型,然后确定一个系统的草案,同时考虑软硬件实现的可行性。
总体方案经过反复推敲,确定了以美国Atmel公司推出的51系列单片机为温度智能控制系统的核心,并选择低功耗和低成本的存储器、数码显示器等元件,总体方案如下图:
图1系统总体框图
二、硬件各单元设计
1、单片机最小系统电路
单片机选用Atmel公司的单片机芯片AT89C2051,完全可以满足本系统中要求的采集、控制和数据处理的需要。
单片机的选择在整个系统设计中至关重要,该单片机与MCS-51系列单片机高度兼容、低功耗、可以在接近零频率下工作等诸多优点,而广泛应用于各类计算机系统、工业控制、消费类产品中。
AT89C2051是AT89系列单片机中的一种精简产品。
它是将AT89C51的P0口、P2口、EA/Vpp、ALE/PROG、PSEN口线省去后,形成的一种仅20引脚的单片机,相当于早期Intel8031的最小应用系统。
这对于一些不太复杂的控制场合,仅有一片AT89C2051就足够了,是真正意义上的“单片机”。
AT89C2051为很多规模不太大的嵌入式控制系统提供了一种极佳的选择方案,使传统的51系列单片机的体积、功耗大、可选模式少等诸多弱点不复存在。
该型号单片机包括:
(1)一个8位的微处理器(CPU)。
(2)片内有2K字节的程序存储器(ROM)和128/256字节RAM。
(3)15条可编程双向I/O口线。
(4)两个16位定时器/计数器都可以设置成计数方式,用以对外部事件进行计数,也可设置成定时方式,并可以根据计数或定时的结果实现计算机控制。
(5)五个中断源的中断控制系统。
(6)一个全双工UATR(通用异步接收发送器)的串行I/0口,用于实现单片机之间或单片机与微机之间的串行通信。
(7)片内含模拟比较器。
(8)低功耗的闲置和掉电模式。
图2最小系统电路
AT89C2051是一个20脚的双列直插封装(DIP)芯片。
最小系统电路包括晶体振荡电路和手动复位电路,如图2。
本设计使用一片AT89C2051就代替了原来的8031、EPROM2732和地址锁存器74LS373,因为AT89C2051内部的2KBEPROM和128B的RAM,对智能化温度传感器测试系统已能满足设计要求,而且降低了成本,结构设计也较精巧。
2、温度传感器
采用数字温度传感器DS18B20,与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高,成本更低。
测量温度范围为~55℃~+125℃。
C,在一10℃~+85℃。
C范围内,精度为±0.5℃。
DS1822的精度较差为±2℃。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
其引脚分布如图3所示
图3DS18B20引脚图
(1)引脚功能如下:
NC(1、2、6、7、8脚):
空引脚,悬空不使用。
VDD(3脚):
可选电源脚,电源电压范围3~5.5V。
DQ(4脚):
数据输入/输出脚,漏极开路,常态下高电平。
(2)DS18B20测温原理
DS18B20的测温原理如图4所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20在正常使用时的测温分辨率为0.5℃,如果要更高的精度,则在对DS18B20测温原理进行详细分析的基础上,采取直接读取DS18B20内部暂存寄存器的方法,将DS18B20的测温分辨率提高到0.1~0.01℃。
图4测温原理图
(3)DS18B20与单片机接口电路
P1.3口和DSl8B20的引脚DQ连接,作为单一数据线。
U2即为温度传感芯片DSl8B20,本设计虽然只使用了一片DSl8B20,但由于不存在远程温度测量的考虑,所以为了简单起见,采用外部供电的方式,如图2.6所示。
测温电缆采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一对接VCC和地线,屏蔽层在电源源端单点接地。
图5DS18B20与单片机接口电路
3、键盘显示电路
LED与控制器的连接有并行和串行方式。
由于串行方式占用较少接口,因此得到广泛应用。
显示电路中选用MAX7219作为LED驱动芯片。
MAX7219是一个高集成化的串行输入/输出的共阴极LED驱动显示器。
每片可驱动8位7段加小数点的共阴极数码管。
片内包括BCD译码器、多路扫描控制器、字和位驱动器和8×8静态RAM。
外部只需要一个电阻设置所有LED显示器字段电流。
MAX7219和控制器只需要三根导线连接,每位显示数字有一个地址由控制器写入。
允许使用者选择每位是BCD译码或不译码。
使用者还可以选择停机模式、数字亮度控制、从1~8位选择扫描位数和对所有LED显示器的测试模式。
(1)引脚功能
MAX7219是24引脚芯片,它的引脚排列如图2.7所示。
各引脚功能如下:
1)DIN(1脚):
串行数据输入端,当CLK为上升沿时数据被载入16位内部移位寄存器。
2)CLK(13脚):
串行时钟脉冲输入端,最大工作频率可达10MHz。
3)LOAD(12脚):
片选端,当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,LOAD回到高电平,接收的数据将被锁定。
4)DIG0~DIG7(2、3、5、6、7、8、10、11脚):
吸收显示器共阴极电流的位驱动线,最大值可达500mA。
图6MAX7219引脚图
5)SEGA~SEGG、SEGDP(14、15、16、17、20、21、22、23脚):
驱动显示器7段及小数点的输出电流,一般为40mA,可编程调整。
6)ISET(18脚):
硬件亮度调节端。
7)DOUT(24脚):
串行数据输出端;V+,正电源。
8)GND(9脚):
接地。
(2)MAX7219与单片机和LED及键盘的接口电路
1)MAX7219的3个输入端DIN、CLK和LOAD与单片机的三个I/O口连接,DIG0~DIG7分别与八个共阴极LED的公共端连接,SEGA~SEGG、SEGDP分别与每个LED七段
动和小数点驱动端相连。
电路图如图7所示。
2)键盘功能介绍
采用独立式按键设计,如图上图所示。
由于只有四个按键,因此按键接口电路的设计比较简单,单片机P1.4~P1.7端口设定为输入状态,平时通过电阻上拉到Vcc,按键按下时,对应的端口的电平被拉到低电平。
这样就可以通过查询P1的高4位来判断有门有按键按下按键各接一根输入线,一根输入线的按键工作状态不会影响其他输入线上的工作状态。
通过读I/O口,判断各I/O口的电平状态,即可识别出按下的按键。
4个按键定如下:
A、P1.4:
S1功能键,按此键则开始键盘控制。
B、P1.5:
S2加,按此键则温度设定加1度。
C、P1.6:
S3减,按此键则温度设定减1度。
D、P1.7:
S4发送,按此键将传感器的温度传送到上位机。
图7MAX7219与单片机和LED及键盘的接口电路
4、驱动控制电路
(1)热电制冷介绍
热电制冷原理:
半导体热电偶由N型半导体和P型半导体组成。
当电流的极性如图8所示时,电子从电源负极出发,经连接片、P型半导体、连接片、N型半导体,最后回到电源正极。
N型材料有多余的电子,有负温差电势。
P型材料电子不足,有温差电势;当电子从P型穿过结点至N型时,其能量必然增加,而且增加的能量相当于结点所消耗的能量。
这一点可用温差降低来证明。
相反,当电子从N型流至P型材料时,结点的温度就会升高。
直接接触的热电偶电路在实际的引用中不可用,所以用图8的连接方式来代替,实验证明,在温差电路中引入铜连接片和导线,不会改变电路的特性。
简单地说当一块N型半导体材料和一块P型半导体材料联结成电偶对时,在这个电路中接通直流电流后,就能产生能量的转移,电流由N型元件流向P型元件的接头吸收能量,成为冷端;由P型元件流向N型元件的接头释放热量,成为热端。
吸收和放热的大小是通过电流的大小以及半导体材料N、P的元件对数来决定。
图8半导体制冷原理图
(2)驱动控制电路
光耦合双向可控硅驱动器是一种单片机输出与双向可控硅之间较理想的接口器件,它由入和输出两部分组成,输入部分为砷化镓发光二极管,该二极管在5mA~15mA正向电流作用下发出足够强度的红外光,触发输出部分。
连接电路如图9所示。
输出部分为硅光敏双向可控硅,在红外线作用下可双向导通。
光电耦合器是以光为媒介传输电信号的一种“电-光-电”转换器件。
它由发光源和受光器两部分组成。
把发光源和受光器组装在同一壳体内,彼此间用透明绝缘体隔离。
发光源的引脚为输入部分,受光器的引脚为输出端,常见的发光源为发光二极管,受光器为光敏二极管、光敏三极管等。
在光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小,此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引出,这样就实现了“电-光-电”转换。
在光电耦合器的内部,由于发光管和受光器之间的耦合电容很小,使用共模输入电压通过极间耦合电容对输出电流的影响很小,因而共模抑制比很高。
在发光二极管上提供一个偏置电流,再把信号电压通过电阻耦合到发光二极管上,这样光电晶体管接收到的是在偏置电流上增、减变化的光信号,其输出电流将随输入的信号电压作线性变化。
光电耦合器也可工作在开关状态,传输脉冲信号。
在传输脉冲信号是,输入信号和输出信号之间存在一定的延时,不同结构的光电耦合器输入、输出延时时间相差很大。
图9加热降温驱动控制电路
5、看门狗和上位机通信电路
(1)串口通信功能实现
在实际的工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。
串行通信是指:
数据是一位一位按顺序传送的通信方式。
它的突出优点是只需一对传输线(利用电话线就可以作为传输线),这样就大大降低了成本,特别适用与远距离通信;其缺点是传送速度低。
(2)MAX232与单片机接口电路设计
图10为MAX232与单片机接口电路;通过它可以把单片机和计算机连接起来,实现远程通讯功能。
(3)看门狗与电源监控芯片介绍
由于工业现场对控制系统可能造成很强的干扰,为保证控制器在任何干扰条件下都能正常工作,就必须对单片机的运行进行监控,避免死机、程序跑飞或进入死循环。
采用看门狗电路则可以大大提高整个系统的抗干扰能力态。
本系统选用MAX813L,该芯片能够监控电源电压、电池故障和微控制器的工作状态。
MAX813L引脚功能如下:
1)MR(1脚):
手动复位输入,低电平有效。
2)PRI(4脚)、PFO(5脚):
分别为电源故障输入和电源故障输出。
3)WDI(6脚)、WDO(8脚):
分别为看门狗输入和看门狗输出。
4)RESET(7脚):
复位输出。
MAX813L芯片主要特点:
1)复位输出:
系统上电、掉电以及供电电压降低时,第7脚产生复位脉冲,复位脉冲宽度的典型值为200ms,高电平有效,复位门限值为4.65V。
2)看门狗电路输出:
如果在1.6s内没有触发该电路,则第8脚输出一个低电平信号。
3)手动复位输入:
低电平有效,即第1脚输入一个低电平,则地7脚产生复位输出。
4)第4脚输入电压为1.25V时,第5脚输出一个低电平信号。
(5)MAX813L与单片机的连接
MAX813L的典型应用电路如图10所示,在软件设计中,P3.7不断的输出脉冲信号。
如果因某种原因进入死循环,则P3.7无脉冲输出,于是1.6s后在MAX813L的第8脚输出低电平。
该低电平加到1脚,使MAX813L产生复位输出,使单片机有效复位,摆脱死循环。
另外,当电源电压低于限制值4.65V时,MAX813L也会产生复位输出,使单片机处于复位状态,不执行任何指令,知道电压电压恢复正常,以有效防止因电源电压较低使单片机产生错误的动作。
图10MAX232与单片机接口电路
6、电源电路
图11电源电路
电源电路虽然简单,但需要功能可靠,要有CBB电容和高品质的ELNA电容做退藕,,设计所用的电源都是直流电源+5V,所用采用三端集成稳压器7805,可以方便的实现此功能,电路如图11所示
7、PID控制算法
(1)PID的数学模型
PID控制是一种比较成熟的控制理论,它通过比例、积分、微分三部分的合理组合可以用比较简单的方法获得令人满意的控制效果。
PID的数学模型如图12表示:
图12PID数学模型
给定值R(t)与实际值Y(t)构成控制误差:
E(t)=R(t)-Y(t)式2-1
PID控制器根据E(t)将误差的比例(P)、积分(I)、和微分(D)通过线性组合构成控制量,对受控对象进行控制,其控制规律如式2所示:
U(t)=KP[e(t)+
]式2-2
U(t)——控制器输出函数;E(t)——控制器误差函数;
KP——比例系数;Ti——积分时间常数;Td——微分时间常数。
一个最简单的控制器可以只有比例部分,它能够产生与输入信号成比例的输出信号,所以误差一旦产生,控制器立即就有控制作用,使被控制量朝着减小误差的方向变化,控制作用的强弱取决于比例系数KP。
比例控制的缺点是不能在设置点和反馈点之间产生零误差(静差),为了产生有限的输出信号,必须保持这种静差。
加大KP可以减小静差,但是KP过大会导致动态性能变坏,甚至会使闭环系统不稳定。
为了消除这种静差,可以引入积分控制环节,积分环节能对误差进行记忆并积分,即使只存在很小的偏差,也可以将其积分后作用于操作部分,有利于消除静差。
但是积分作用具有滞后特性,它总是滞后于偏差的存在,这样会使系统易于振荡,结果往往超调,使被控变量波动很大。
积分控制常用于补偿高精度的控制系统。
微分控制能对误差进行微分,敏感出误差的变化趋势,将预期的动作作用于操作部分,增大微分控制作用可以加快系统的响应,使超调量减小,增加系统的稳定性。
缺点是微分控制对干扰同样敏感,使系统抑制干扰的能力降低。
微分控制可用于补偿快速变化的控制系统。
(2)PID控制规律的离散化
为了用计算机实现PID控制,必须将式表示PID控制规律的连续形式变成离散形式,才能通过编程实现。
若设温度采样周期为T,第n次采样得到的输入偏差为en,输出为Un。
微分用差分代替
式2-3
积分用求和代替
式2-4
这样PID控制器控制算法的离散形式改写为
式2-5
这种算法的缺点是,由于是全量输出,所以每次输出均与过去的状态有关,计算时要对E(n)进行累加,所以计算机工作量大。
而且,因为计算机输出的U(n)对应的是执行机构的实际位置,如果计算机出现故障,u(n)的大幅度变化会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的,在某些场合,可能造成重大的生产事故,因此产生了增量式PID控制的控制算法。
所谓增量式PID控制算法是指数字控制器的输出只是控制量的增量U(n)。
当执行机构需要的是控制量的增量时,可由式导出提供增量的PID控制算法。
根据递推规律得:
式2-6
用式2-5减去式2-6可得:
式2-7
改写成:
=
式2-8
事实证明,对于PID这样简单的控制器,能够适用于广泛的工业和民用对象,并以其很高的性价比在市场中占主导地分反映了PID控制,但在工业控制过程中经常会碰到大滞位,充后、时变的、非线性的复杂系统,其中有的是非线性系统;有的带有延时和随机干扰;有的无法获得较准确的数学模型或者模型非常粗燥。
对于以上这些系统,如果采用常规的PID控制器,则难以整定PID参数,因此比较难以达到预期的控制效果。
同时,在实际生产现场,由于受到参数整定方法繁杂的困扰,常规PID控制器参数往往整定不良、性能欠佳,对运行工矿的适用性很差。
三、软件设计
1、温度传感器DS18B20模块软件设计
DS18B20上电后处于空闲状态,需要控制器发能完成温度转换。
DS18B20的单线通讯功能是分时完成的,具有严格的时序要求,而AT89C2051单片机并不支持单线传输,必须采用软件的方法来模拟单线的协议时序。
DS18B20的操作必须严格按照协议进行。
工作协议流程为:
主机发复位脉冲初始化DS18B20→DS18B20发响应脉冲→主机发ROM操作指令→主机发存储器操作指令→数据传输。
对DS18B20操作时,首先要将它复位。
复位时,DQ线被拉为低电平,时间为480~960us;接着将数据线拉为高电平,时间为15~60us;最后DS18B20发出60~240us的低电平作为应答信号,这时主机才能进行读写操作。
进行写操作时,将数据线从高电平拉至低电平,产生写起始信号。
从DQ线的下降沿起计时,在15us到60us这段时间内对数据线进行检测,如数据线为高电平则写1;若为低电平,则写0,完成了一个写周期。
在开始另一个写周期前,必须有1us以上的高电平恢复期。
每个写周期必须要进行写操作时,将数据线从高电平拉至低电平,产生写起始信号。
从DQ线的下降沿起计时,在15us到60us这段时间内对数据线进行检测,如数据线为高电平则写1;若为低电平,则写0,完成了一个写周期。
在开始另一个写周期前,必须有1us以上的高电平恢复期。
每个写周期必须要有60us以上的持续期。
读操作时,主机将数据线从高电平拉至低电平1us以上,再使数据线升为高电平,从而产生读起始信号。
从主机将数据线从高电平拉至低电平起15us至60us,主机读取数据。
每个读周期最短的持续期为60us,周期之间必须有1us以上的高电平恢复期。
温度转换读取温度数值程序流程如图13所示
图13温度转换读取温度数值程序流程
2、显示程序设计
MAX7219上电时,译码方式、亮度调节、扫描位数、待机开关和显示检测5
个控制寄存器全部清零。
对于MAX7219,串行数据以16位数据包的形式从DIN脚串行输入,在CLK的每一个上升沿一位一位的送入芯片内部16位移位寄存器,而不管LOAD脚的状态如何。
LOAD脚必须在第16个上升沿出现的同时或之后,但在下一个CLK上升沿之前变为高电平,否则移入的数据将丢失。
3、键盘程序设计
在按键的软件设计时考虑了按键去抖动技术问题。
因为按键的无操作抖动很可能影响单片机对按键的判断,因此必须考虑去抖动问题。
键盘的程序流程图如图14
图14键盘的程序流程
4、PID控制程序设计
由式2-8可以改写成:
P(K)=P(K-1)+KP[E(K)-E(K-1)]+KI·E(K)+KD[E(K)-2E(K-1)+E(K-2)]
=P(K-1)+PP+PI+PD式3-1
根据式3-1编程,相应的程序框图如图15所示:
图15PID算法程序流程图
5、主程序流程图及程序设计
(1)系统主程序流程图如图16所示。
有了各个功能块的软件实现方法,软件的总体设计就变得简单了,软件设计中一个重要的思想就是采用模块化设计,把一个大的任务分解成若干个小任务,分别编制实现这些小任务的子程序,然后将子程序按照总体要求组装起来,就可以实现这个大任务了。
这种思路对于可重复使用的子程序显得尤为优越,因为不仅程序结构清晰,而节约程序存储空间。
图16主程序流程图
(2)主程序设计
#include“AT89C2051.h”
#include
sbitTSOR=P1^7;//温度测试端
sbitDIN=P1^2;//MAX7219串行数据输入
sbitLOAD=P1^1;//MAX7219装载数据输入
sbitLCK=P1^0;//MAX7219时钟输入
sbitSCL=P3^2;//AT24C32信号线
sbitSDA=P3^3;//AT24C32数据线
sbitOUT0=P3^4;//控制制冷光耦
sbitOUT1=P3^5;//控制加热光耦
sbitweidog=P3^7;//看门狗
/*************************全局变量********************************/
#defineucharunsignedchau;
#defineuintunsigneduint;
uchartemp1,temp2;//温度的整数和小数
ucharsetb,sets,setg,setx;//预设定温度的百、十、个位和小数位
ucharxianb,xians,xiang,xianx;//显示温度的百、十、个位和小数位
ucharadd_1,add_10;//
ucharcount;//T0中断计数
ucharpid;//PID数值
bitoutflag;//升温降温标志位
bitalert;
/*************************函数声明*********************************/
voidInitInterupt();
/**************************键盘扫描*********************************/
ucharkey();
/*********************MAX7219子程序*********************************/
voids
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 恒温箱 温度 控制系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)