基于单片机的加热炉水位控制系统的设计.docx

上传人:b****5 文档编号:6626205 上传时间:2023-01-08 格式:DOCX 页数:21 大小:163.35KB
下载 相关 举报
基于单片机的加热炉水位控制系统的设计.docx_第1页
第1页 / 共21页
基于单片机的加热炉水位控制系统的设计.docx_第2页
第2页 / 共21页
基于单片机的加热炉水位控制系统的设计.docx_第3页
第3页 / 共21页
基于单片机的加热炉水位控制系统的设计.docx_第4页
第4页 / 共21页
基于单片机的加热炉水位控制系统的设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于单片机的加热炉水位控制系统的设计.docx

《基于单片机的加热炉水位控制系统的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的加热炉水位控制系统的设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于单片机的加热炉水位控制系统的设计.docx

基于单片机的加热炉水位控制系统的设计

合肥学院

20届单片机原理与应用

课程大作业

 

论文(设计)题目

基于单片机的加热炉水位控制系统的设计

院系名称

合肥学院

专业(班级)

计算机科学与技术

(2)班

姓名(学号)

秦加奇(1204012012)

指导教师

龙夏

系负责人

完成时间

2014年6月19日

基于单片机的XXX的设计

第一章绪论

第二章系统分析

第三章系统设计与实现

第四章系统调试

第五章结论

第六章附录

 

第一章绪论

本课题研究目的及意义

在现代社会中,随着工业的发展,居民生活区的集中热力供应量的需求也越来越大,蒸汽加热炉的容量不断提高,对操作过程要求更加严格,加热炉的液位控制直接影响人们自身和设备的安全。

液位过低可能使加热炉出现干烧现象,液位过高又会使加热炉蒸汽压力过高,发生危险,传统的液位控制不能进行远距离的集中控制,自动化程度低,调节精度差等缺点,且单靠人工操作已不能适应,控制系统改造的必要性随着科学技术的不断进步,被控对象越来越复杂,人们对控制精度的要求不断提高。

由于被控对象和过程的非线性、时变性,多参数间的强耦合、随机干扰等因素,使得建立被控对象的精确数学模型变得很困难。

在这些复杂的系统面前,传统的控制方法无法满足控制精度,而且系统稳定性差。

更好地对加热炉进行自动化控制,同时随着单片机技术,自动控制技术的迅速发展,利用单片机及其外围芯片实现加热炉液位控制已经成为可能,而且也成为一种发展的趋势,单片机不仅有体积小,安装方便,功能较齐全等优点,而且有很高的性价比,因此应用前景广,同时有助于发现可能存在的故障,通过微机实现燃烧与给水系统的自动控制与调节,将保证加热炉正常供气供水,维持稳定系统,保证安全经济运行。

本文即是用单片现的一种锅其有较高的实用价值和优越性。

系统简介

本课题的研究对象为加热炉的液位,对其液位进行控制。

基本思想是以STC89C51作为控制器,通过STC89C51单片机,压力传感器、温度传感器(DS18B20)和模数转换器(ADC0809)等硬件系统和软件设计方法实现具有液位报警和控制的双重功能,同时也具有压力和温度显示控制的功能,并对温度和压力值交替进行显示。

系统硬件设计包括以下几部分:

STC89C51芯片为核心控制器,温度采集和温度设定部分、键盘显示部分、A/D变换部分、报警部分、液位控制等部分组成。

可实现的具体功能如下:

(1)当液位低至给定的下限液位时,启动水泵对加热炉进行加水,同时水泵工作状态指示灯亮2个,表明水泵以中速在加水。

(2)当液位高至给定上限的液位时,停止水泵对加热炉进行加水,水泵工作状态指示灯全灭,表明水泵停止工作。

(3)当由于某种特殊原因,液位低于下下限水位时,仍没有启动水泵进行加水,则达至极低水位时,再次启动水泵进行加水,并进行报警。

(4)当液位高于上上限水位时,停止水泵加水,并进行报警。

(5)有消除报警按钮,当有报警时操作人员在知道的情况下可以按下其其消除报警并去做相应的处理工作。

(6)有紧急停止按钮,在遇到紧急情况时可以停止系统的运行。

(7)有温度和压力传感器,同时可以交替显示其温度和压力值。

(8)采用双向可控硅来控制水泵的开与关,比电机控制简单。

(实际设计中用三个发光二极管来表示水泵的开度,即流量。

 

第2章系统分析

单片机STC89C51介绍

STC89C51单片机是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机,指令代码完全兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,最新的D版本内部集成MAX810专用复位电路。

STC89C51单片机的外部引脚说明

STC89C51单片机有40个引脚,采用双列直插(DIP)方式封装,其引脚图如图2-1所示。

图2-1STC89C51的管脚图

STC89C51单片机的40个管脚中有2个专用于电源的引脚。

2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。

按引脚功能分为4个部分叙述个引脚的功能。

2.1.1.1主电源引脚Vcc和Vss

VCC(40脚):

+5V主电源正端Vss(20脚):

+5V主电源地端

2.1.1.2外接晶体引脚XTAL1和XTAL2

XTAL1(19脚):

接外部晶体的一端。

在片内它是振荡电路反相放大器的输入端。

在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。

XTAL2(18脚):

接外部晶体的另一端。

在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。

若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。

2.1.1.3控制信号或与其它电源复用引脚

RST(9脚):

单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)

PSEN(29脚):

在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。

CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。

不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。

PSEN端同样可驱动8个LSTTL负载。

我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别89C52是否在工作。

ALE/PROG(30脚):

在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。

CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。

不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。

PSEN端同样可驱动8个LSTTL负载。

我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。

EA/VPP(31脚):

当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。

当地址超出4KB时,将自动执行片外程序存储器的程序。

当EA输入低电平时,CPU仅访问片外程序存储器。

在对87C51EPROM编程时,此引脚用于施加编程电压VPP。

选择使用STC89C51RC的原因

(1)超低功耗:

①掉电模式:

典型功耗<0.1μA

②正常工作模式:

典型功耗4mA-7mA

③掉电模式可由外部中断唤醒,适用于电池供电系统,如水表、气表、便携设备等。

(2)超强抗干扰:

①高抗静电(ESD保护)

②轻松过2KV/4KV快速脉冲干扰(EFT测试)

③宽电压,不怕电源抖动;宽温度范围,-40℃~85℃

(3)三大降低单片机时钟对外部电磁辐射的措施:

①禁止ALE输出;

②如选6时钟/机器周期,外部时钟频率可降一半;

③单片机时钟振荡器增益可设为1/2gain。

(4)加密性强

(5)在系统可编程,无需编程器,无需仿真器

(6)可供应内部集成MAX810专用复位电路的单片机,只有D版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时RESET脚接1K电阻到地。

LED数码管显示

LED数码管显示器的结构

LED显示器是一种由发光二极管显示字段的显示器件,也可称为数码管。

单片机系统中通常使用8段LED数码显示器,其外形及引脚如图2-12(a)所示,由图可见8段LED显示器由8个发光二极管组成。

其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括A~F在内的部分英文字母和小数点“.”等字样。

图2-12LED数码管显示的结构

LED显示器有两种不同的形式:

一种是8个发光二极管的阳极都连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阳极通过电阻与输入端相连。

当阴极端输入低电平时,段发光二极管就导通点亮,而输入高电平时不点亮。

称为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阴极通过电阻与输入端相连。

当阳极端输入高电平时,段发光二极管就导通点亮,而输入低电平时不点亮。

称为共阴极LED显示器。

如图2-12(b)所示。

第三章系统设计与实现

系统硬件设计的总体方案及框图

系统硬件设计总体方案

系统的硬件结构主要包括:

STC89C51RC、4个液位传感器、1个温度传感器DS18B20、逐次逼近式A/D换器ADC0809、双向可控硅驱动电路MOC3041和双向晶闸管Z0409MF等。

此外,还有键盘/显示电路、报警输出电路等。

(由于资金原因及市场上很难买到,4个液位传感器用一个10K的电位器模拟,水泵的状态用3个发光二极管模拟。

)它的工作流程如下:

开始,由电位器每隔5s对水位进行采样,并输出0-5V模拟信号,再经A/D转换变成相应的数字信号,送入STC89C51单片机进行数据处理。

单片机经运算后,与设定的液位值(下限液位H1、上限液位H2、下下限液位H3、上上限液位H4)依次进行比较:

若H1

则表示正常液位,水位指示灯亮,呈红色,水泵工作开度最小,其指示灯有一个亮,呈红色;

若H3<=HX<=H1:

则表示处于下下限与下限液位之间,水泵处于正常开度状态,有俩个工作指示灯亮,呈红色;

若H2<=HX<=H4:

则表示处于上限与上上限液位之间,停止水泵供水,水泵工作指示灯全灭;液位正常指示灯灭;

若HX<=H3:

则表示达至下下限液位,水泵处于最大开度状态加水,三个工作指示灯全亮,并启动报警器报警;

若HX>=H4:

则表示达至上上限液位,水泵处于全关状态,三个工作指示灯全灭,并启动报警器报警;

同时数字温度传感器DS18B20把采集到的温度值送到单片机中经处理后,通过74LS164驱动的静态数码管显示其采集到的温度值。

压力传感器把采集到的数据经A/D0809转换之后送到单片机经过处理后,也通过数码管显示其压力值。

在设计中有一个温度与压力值交替显示的按键,它可以按人们的意愿去选择显示温度值还是压力值。

如果报警器启动后,设有报警消除按钮,消除报警;有温度和压力转换按钮,可以轮流显示温度和压力值。

系统设计的总体框图

在实际的硬件电路中,用3个发光二极管来模拟水泵的全开,半开,全关三种状态。

4个液位传感器用一个电位器来模拟,通过调节电位器的电压值大小,来模拟液位的几种状态。

执行机构为MOC3041双向可控硅来驱动水泵的工作,报警器件选择压电蜂鸣器。

键盘控制电路设计

为了便于实现各种的控制要求,智能调节器必须具备快速设置被控参数且操作方便,还必须增加键盘装置。

键盘控制有矩阵式和独立式两中。

矩阵式键盘又有编码式和非编码式。

单片机系统中普遍使用非编码式键盘,这类键盘应主要解决以下几个问题:

(1)键的识别。

(2)如何消除键的抖动。

(3)键的保护。

在以上几个问题中,最主要的是键的识别。

对于键的识别,既可以采用程序扫描的方法,也可以采用专用的可编程键盘显示接口8279.

独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。

因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。

它的优点是:

电路配置灵活,硬件结构简单。

缺点是:

每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。

因此,此键盘是用于按键较少或操作速度较高的场合。

由于该设计中按键数量少,所以采用了独立式按键。

按键电路如图3-2所示。

图3-2键盘控制电路图

本电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平;当按键按下时,去执行相应的功能。

如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。

按键的处理可以采用中断方式,也可以采用查询方式。

键盘工作方式的选取原则是既要保证能及时响应按键操作,又要不过多占用单片机的工作时间。

所以选择中断方式处理按键。

该设计中显示电路的选择

可以提供单独锁存的I/O接口电路很多,且静态显示的软件设计比较容易。

所以在设计中选择常用的串并转换电路74LS164静态显示电路。

STC89C51单片机串行口方式0为移位寄存器方式,外接3片74LS164作为3位LED显示器的静态显示接口,把STC89C51的RXD作为数据输出线,TXD作为移位时钟脉冲。

74LS164为TTL单向8位移位寄存器,可实现串行输入,并行输出。

其中A、B(第1、2脚)为串行数据输入端,2个引脚按逻辑与运算规律输入信号,共一个输入信号时可并接。

T(第8脚)为时钟输入端,可连接到串行口的TXD端。

每一个时钟信号的上升沿加到T端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。

R(第9脚)为复位端,当R=0时,移位寄存器各位复0,只有当R=1时,时钟脉冲才起作用。

Q1…Q8(第3-6和10-13引脚)并行输出端分别接LED显示器的hg···a各段对应的引脚上。

在给出了8个脉冲后,最先进入74LS164的第一个数据到达了最高位,再来一个脉冲,第一个脉冲就会从最高位移出。

该电路中3片7LS164首尾相串,而时钟端则接在一起,这样,当输入8个脉冲时,从单片机RXD端输出的数据就进入到了第一片74LS164中了,而当第二个8个脉冲到来后,这个数据就进入了第二片74LS164,而新的数据则进入了第一片74LS164,这样,当第3个8个脉冲完成后,首次送出的数据被送到了最低位的164中,其他数据依次出现在第一、二片74LS164中。

显示电路图如图3-6所示:

图3-6显示电路图

液位控制电路的设计

液位控制电路的工作原理及液位控制状态图

在设计中,液位的几种状态是通过电位器的不同电压来模拟的,采用的电位器电压范围为0—5V。

加水装置水泵的各种状态由三个发光二极管模拟,由于设计只是模拟系统,压力传感器不易买到,所以压力的显示直接采用软件赋值的方式。

设定电位器的电压值为1V表示下下限,2V表示下限,3V表示上限,4V表示上上限。

当电位器电压值0≦X<1时,说明液位处于下下限以下,此时水泵加水开度最大,水泵工作指示灯P2.4亮,且三个发光二极管全亮(P1.3—P1.5),同时启动报警装置进行报警,当操作人员听到报警声时,可以按下消除报警按钮(P1.0)停止报警,并对系统做相应的处理;当电位器的电压值1≦X<2时,说明液位处于下限与下下限之间,此时水泵依然加水(P2.4依然亮),开度处于正常流量,有俩个二极管亮(P1.3和P1.4);当电位器的电压值2≦X<3时,说明液位处于下限与上限之间,此时液位处于正常状态,液位正常指示灯P2.3亮,此时水泵依然加水(P2.4依然亮),开度最小,有一个二极管亮(P1.3),用于维持正常的液位;当电位器的电压值3≦X<4时,说明液位处于上限限与上上限之间,此时停止水泵加水(水泵工作指示灯P2.4灭),正常液位指示灯P2.3同时熄灭;当电位器的电压值4≦X时,说明液位超过上上限,启动报警装置报警,此时水泵依然不工作(水泵工作指示灯P2.4灭)。

其液位状态表示电路图如图3-7所示(其中图(a)所示是水泵开度大小的指示模拟电路,图(b)为液位正常与不正常时的指示灯电路,图(c)是液位报警电路)。

(a)水泵开度大小的模拟电路

(b)液位正常与不正常时的指示灯电路

(c)液位报警电路

图3-7液位控制状态电路图

3.5.2液位控制的控制电路

在设计中采用了双向可控硅MOC3041驱动电路控制水泵的启停的。

MOC304l芯片是一种集成的带有光耦的双向可控硅驱动电路。

它内部集成了发光二极管、双向可控硅和过零触发电路等器件,它的内部结构和外部引脚如图3-8所示。

图3-8MOC3041的内部结构

从图中可以看出,它由输入和输出两部分组成。

输入部分是一个砷化镓发光二极管,在5-15mA正向电流的作用下,发出足够强度的红外光,去触发输出部分。

输出部分包括一个硅光敏双向可控硅和过零触发器。

在红外线的作用下,双向可控硅可双向导通,与过零触发器一起输出同步触发脉冲,去控制执行机构一外部的双向可控硅。

由MOC304l组成的过零触发双向可控硅电路简单可靠,液位控制电路图如图3-9所示。

图3-9液位控制电路图

该部分的工作过程是:

当单片机的P2.5输出为低电平时,图3-9所示的MOC3041构成的输出通道图MOC3041内部导通,G端出现同步触发脉冲,控制可控硅导通,打开水泵;当P2.5为高电平时,MOC3041内部截止,可控硅断开,关闭水泵。

(设计中用一个二极管来模拟水泵的开与关。

 

第四章系统调试

硬件调试比较简单,首先用万用表检查硬件电路的焊接是否正确,是否有短路、断路、虚焊等。

在检查无误后,可通电检测LED显示器的点亮状况。

若亮度不理想,可以调整P0口的电阻大小。

软件调试

软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、液位控制子程序、温度读取子程序、按键控制子程序的编译和调试,由于DS18B20与单片机采用的是串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。

在软件调试过程中,我们用到了KeiluVision和SLISP_V1605两个软件。

其中KeiluVision用于软件的编译,以生成目标代码。

SLISP_V1605是一个编程器可以用于烧录软件,用于将目标代码通过传输线烧录到单片机中,完成软硬件的结合。

编写好的软件先通过KeiluVision软件进行编译,具体步骤如下:

(1)打开KeiluVision软件,进入KeiluVision界面后,首先要新建一个工程,并选择单片机型号AT89C52。

(2)新建一个文件,保存为.c格式。

(3)添加该文件到新建的工程中,进行程序的编写。

(4)程序编写完成后,先保存,再进行编译,系统会自行检查程序中的语法错误,并将错误类型罗列在界面下方的OutWindows中,以便于用户修改。

(5)当OutWindows中显示0Error(s),0Warning(s)时,表示程序已经编译通过。

(6)软件编译结束,生成.HEX格式的文件。

(7)将.HEX格式的文件烧录到单片机中。

软硬件实时调试

在硬件调试和软件编译通过后,进行软硬件联合调试。

将形成的.HEX文件烧录到单片机中,接入电源,检查系统能否实现预定功能,然后根据出现的问题,及时调整硬件电路和程序,使系统达到预期功能。

硬件电路是系统功能实现的物质基础,因此,在软硬件联合调试之前必须仔细检查硬件,只有硬件电路检查无误,整个系统的调试才有可能成功,而且,排除了所有的硬件错误后,进入联合调试,一旦出现问题,就可以迅速排除硬件上的错误,集中精力检查软件。

这样就省去了许多不必要的麻烦,从而为调试赢得时间。

软硬件联合调试时,可以将程序分成了几个模块,一个个进行调试,在各个模块都调试成功以后,再将它们组合起来,这样成功的概率就大了许多。

根据设计要求,该系统应实现以下几个功能:

(1)加热炉液位自动控制:

低于下下限或者高于上上限时,系统自动报警,液位正常时,液位指示灯亮,液位只要低于下限系统便自动加水;

(2)三个个按键,分别执行不同功能,当某个按键按下时,其对应功能得以实现。

P1.0按下时,消除报警,P1.1按下时实现从温度显示自动切换到压力显示,

P1.2按下时,系统复位,用于紧急停止;

(3)三位数码显示器,第一位、第二位、第三位分别显示温度值的百位、十位和个位。

软、硬件调试结果,系统实现预期各个功能:

(1)加热炉液位能够自动控制,并且设置了加水量指示灯;

(2)三个按键控制功能完全实现。

(3)温度传感器DS18B20实现了测温,并且能随现场温度的变化而变化,三位数码显示器能准确显示温度,测量精度可达到1℃。

在这次实验中,电路的调试是最耗时间的一项工作。

整个调试就是出现问题和解决问题不断重复的过程。

 

第5章总结

关于此次单片机大作业的完成,收货颇多,单片机我觉得是众课程中比较难的一门课程,这个单片机大作业的难易程度就不用多说了。

刚拿到我的作业,我的第一步就是分析这个题目的要求,抓住重点和老师的要求,绝对不能凭自己的主观去做。

关于完成这个作业的最重要的一环是也是最难的一环是画原理图,说真的,这个真心难!

毕竟是第一次用这个软件,但机会难得,通过问同学,上网找方法,我收货颇多!

在这次设计中,我获得的不仅仅只是这个系统的实现,在更多的方面我有了进一步的学习。

虽然我做的不是最好的,但我很自豪,这是我做的!

因此,这个课题的研究目的是为了使我们对学过的计算机控制技术、过程控制系统、单片机应用等相关专业知识进行更深层的理解和掌握。

而整个设计的过程,不仅仅是对所学知识的一次回顾和串连,更多的是锻炼了我解决一个实际课题、实践的能力。

更重要的是一个人的知识和力量是有限的,不可能什么都懂,也不可能什么都会。

不会就要查,查不到就问,通过一切方法把这个问题弄明白,才是此次设计的重点!

附录一设计程序清单

#include

#defineuintunsignedint

#defineucharunsignedchar

uinttemp;

uchartplsb,tpmsb;//温度值低位、高位字节

unsignedcharcodetable1[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x00};

unsignedchardispbuf[3]={1,2,3};

unsignedcharflag;

floatx1,x2,x3,dianya;

unsignedchard;

sbitDQ=P2^0;//数据通信线DQ

sbitanjian1=P1^1;

sbitanjian0=P1^0;

sbitST=P3^6;

sbitOE=P3^7;

sbitEOC=P2^4;

sbitled=P1^6;

sbitCLK=P3^3;

sbitBJ=P2^2;

sbitYW=P2^3;

sbitJS1=P1^3;

sbitJS2=P1^4;

sbitJS3=P1^5;

sbitLB=P2^1;

sbitSB=P2^5;

voidTimeInitial()

{EA=0;

ET1=0;

TMOD=0x20;

TH1=216;

TL1=216;

EA=1;

ET1=1;

TR1=1;

}

voidDelay_2()

{unsignedcharm,n,s;

for(m=2000;m>0;m--)

for(n=200;n>0;n--)

for(s=248;s>0;s--);

}

voidDelay_1(unsignedinti)

{for(;i>0;i--);

}

voidyewei()

{if(anjian0==0)

{LB=1;

BJ=1;

Delay_2();

}

if((dianya>2)&&(dianya<3))

{LB=1;

YW=0;

JS1=0;

JS2=1;

JS3=1;

BJ=1;

SB=0;}

if(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1