基于单片机的水塔水位控制系统Word文档格式.docx
《基于单片机的水塔水位控制系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的水塔水位控制系统Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
并能在供水系统出现异常的时候能够发出警报,以及时排除故障,随时保证水塔的对外的正常供水作用。
在工业和我们的日常生活中,对水位的监测是非常必要的。
大到对江河,水库等的水位,特别在洪灾或者旱灾的时候,需要及时得到第一手数据;
小到对水箱,热水器水位等家用贮水容器的监测,可以减少很多危险和不必要的损[1]。
现举一例:
在煤矿的开采过程中,会产生大量的水。
为了保证煤矿的安全和开采煤矿的正常进行,应将这些水通过水仓安全排放,因此不仅应控制水仓水位在一定的范围之内,同时要保持一定的上下限,超过了限度则报警,从而给其排水[2]。
目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔内水位保持恒定,以保证连续正常地供水。
实际供水过程中要确保水位在允许的范围内浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常[3]。
因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位检测、LCD1602显示当前水位功能以及蜂鸣器鸣笛报警,手动按键调整PWM电机调速功能,实现过低警戒水位报警、过低警戒水位处理的系统要求。
80年代以来,我国又发展了以自记遥测为主的水位测量技术。
它主要是建立自记水位计,实现水位自动采集、存储、远传。
同期,还发展了无人立尺观测技术,这种技术采用激光测距仪与经纬仪接口配套组成的一套设备,利用激光测距仪无须反射棱镜测定距离(测距精度:
0~5m)的性能,配以经纬仪测角测定目标高程的一种测量方法。
随着近代科学技术的发展和新材料新器件的开发,采用传感器研制水位计近年来有较大发展[4]。
主要采用的传感器有超声波、光电、压力、接触式、浮于式等几种。
超声波式水位计是将换能器向水面发射超声波,测量超声波传播时间,计算出水位。
压力式水位计也是不需要水位测并,其基本原理是测量静水压力来实现水深的测量,已采用过波纹管和水银位移式压力传感器等方法。
固态压力传感器由于其灵敏度高、体积小、寿命长、且有抗腐蚀性而受到重视,但由于半导体传感器受温度影响大等原因,使其实用受到限制。
近年来固态传感器温度自动补偿问题有了进展,固态压阻式水位计已经得到应用[5]。
接触式水位计使用机电的方法用探头跟踪井内水面高低变化测量水位,已在少数领域使用,浮子式水位计,利用水球(或其它浮子)作敏感器件,避免了温度、湿度等因素的影晌,性能稳定,工作可靠,因而得到长期使用和发展。
我国使用的自记水位计,最常见的为浮子式水位计。
近年来,由于土建工程费用不断上涨,无需水位量的压力式水位计随着现代技术的发展和进步也日趋稳定和成熟,致使人们越来越重视使用压力式水位计。
单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。
单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步[6]。
在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。
单片机的潜力越来越被人们所重视。
特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。
我们可以开发利用单片机系统以获得很高的经济效益。
虽然单片机的引入使控制系统大大“软化”,但与其它计算机应用问题相比,单片机控制应用中的硬件内容仍然较多,所以说单片机控制应用有软硬件相结合的特点。
为此,在单片机的应用设计中需要软、硬件统筹考虑,设计者不但要熟练掌握汇编语言等编程技术,而且还要具备较扎实的单片机硬件方面的理论和实践知识。
更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现[7]。
这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。
例如,本文所要论述的基于单片机的水塔水位控制系统。
2系统的整体方案设计
功能要求
实际供水过程中要确保水位在允许的范围内浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常。
因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位检测、LCD1602显示当前水位功能以及蜂鸣器鸣笛报警,手动按键调整PWM电机调速功能,实现过低和正常警戒水位报警、过低和正常警戒水位处理的系统要求。
设计要求
按下电源按钮后,灯会闪烁几下,然后是常亮状态,蜂鸣器会响。
电机不会转的,此时系统在待机状态,且为正常状态。
要先选择好电机的抽水速度是哪个档位,共有4个档位。
档位越高,速度越快。
在电机转的时候,按下选择档位,电机立马会停止的,这个是一个软件安全冗余的设计理念。
电机在水位模拟传感器端口(低水位)按下后,说明水位太低,电机转动,此时蜂鸣器会响一下,灯会闪烁几下,以此表示报警,并且液晶也会显示水位太低。
当水位模拟传感器端口(正常水位)按下后,说明水位已经到正常状态,电机停转,此时蜂鸣器也会响一下,灯一样会闪烁,以此表示报警,且液晶屏也会显示水位正常。
而PWM速度调整就是档位的选择,必须在电机停止的状态下去选择电机输出的速度。
系统基本方案选择和论证
此系统可以采用多种的方式设计,能采用液罐液压检测的方式来做,这样在不同的水位时因为有不同的压力值,所以我们可以根据不同的压力值来确定到底水位在某个状态,但是这样的系统设计理念用处比较狭窄,因为这样的设计理念的前提必须是一个液压的封闭系统,这样才能有精确的压力值传送,保证系统的稳定性。
但是目前很多用到的水塔水位控制系统都不是封闭的水罐,所以这个方案有一定局限性。
而采用特殊的水位传感器,就可以克服上述的困难。
因为液位检测器可以很精确的检测到液位系统,同样达到预期的目的,且系统的应用面很广,而且系统的安全性能很好,因此我们采取检测液位作为系统的设计思想。
2.1.1单片机芯片的选择方案论证
目前市场上的单片机的种类有很多种,最多的51单片机、avr单片机,和Msp430,以及PIC单片机,但是由于单片机的种类很多,功能各不一样,我们不需要多先进,功能多强大的单片机,我们设计的要求就是够用即可,因为性能低劣了,系统功能实现不了,并且系统的稳定性很差,用的单片机性能太好了,由于高性能的单片机不只是价钱昂贵,且有很多资源都不会用到,这样造成了很大的浪费。
因此我们选用目前市场上用到比较多的、且可以满足系统设计要求的51单片机。
因为Atmel公司的51单片机需要专门的编程器,这样无形中加重了系统的成本,而STC公司单片机不仅支持ISP,还支持IAP等多种下载程序的方式,并且STC公司单片机工作在宽电压范围内,电压的波动对系统的影响不大,这样提高了系统的稳定性,另外STC单片机的加密性能也由于其他单片机,并且STC的单片机是增强型的51单片机[8]。
因此我们选用STC89C52单片机作为系统的主控芯片。
2.1.2显示模块选择方案论证
显示模块是系统的人机交互模块,增加了显示模块增加了系统的交互性。
目前市场上用到的显示模块有很多种,有数码管显示,还有液晶显示,因为数码管只是显示数字,不能显示字符,而此系统需要用到显示当前的水位状态。
这样就必须要用到字符显示的液晶显示器,液晶显示器也有很多种,但根据系统的需要我们选用的是LCD1602,很大程度上增加了系统的人机交互功能,让使用者可以得到更多系统工作的信息,更方便的使用此系统。
3系统的硬件设计
电路设计框图
系统的总体框图主要由主控芯片基本电路、按键电路、电动机和蜂鸣器驱动电路、液晶显示电路组成。
除主控芯片电路外,其他的都是外围功能性电路。
蜂鸣器和电动机电路驱动原理基本相同,都为三极管驱动电路,按键电路为平常的独立按键电路,液晶电路参考设计手册既可。
电路设计框图如图3-1所示:
图3-1电路设计框图
MCU主控芯片简介
3.1.1主控制器芯片STC89C52概述
STC89C52是一款完全兼容8051内核指令的芯片,是宏晶科技公司的新一代增强性的8051单片机[9]。
采用最新的加密技术解决了全球89系列单片机都被解密的困惑。
并且管脚完全兼容,性能更好,驱动力更强,功耗更低,价格也比传统的89系列低[10]。
STC89C52的引脚说明图如图3-1。
STC89C52单片机的特点如下:
1.增强性6时钟/机器周期,12时钟/机器周期8051CPU
2.工作电压:
5.5v-3,4v(5v单片机)/3.8V-2.0V(3V单片机)
3.工作频率范围:
0-40MHZ,相当于普通8051的0-80MHZ,实际工作频率可达48MHZ
4.用户应用程序空间4K/8K/13K/16K/20K/32K/64K,字节片上集成1280字节/512字节RAM
5.通用I/O口(32//36个),复位后为:
P1/P2/P3/P4是准双向口/若上拉(普通8051传统I/O口。
P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/0口用时,需要上拉电阻。
6.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器可通过串口(P3.0/P3.1)之下载用户程序,8K程序3秒即可完成一片。
7.共三个16位定时器/计数器,其中定时器0还可以当成2个8为定时器使用
8.外部中断4路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒
9.通用异步串行口(UART),还可用定时器软件实现多个UART.
10.内部Flash擦写次数为100,000次以上,STC89C51RC/RD+系类单片机加密性强,出厂时就已经加密。
图3-2STC89C52的引脚图说明
3.1.2芯片下载程序
对于STC89C52的单片机而言,程序不需要专门的编程器或者仿真器去下载程序,而只是使用串口通讯的两个引脚就可以把程序烧写到程序里,十分方便简洁,并且有相关配套的官方软件,使用起来也十分方便[11]。
图3-2是程序下载的线路连接图:
图3-3程序下载线路连接图
液晶屏1602的简单介绍
3.1.3液晶屏1602的简要概述
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用[12]。
字符型液晶模块是一种用5×
7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。
字符型液晶显示模块是一类专用于显示字母、数字、符号等的点阵型液晶显示模块。
之所以称字符型液晶显示模块是因为其液晶显示器件的电极图形是由若干个5×
8或5×
11点阵块组成的字符块集。
每一个字符块是一个字符位,每一位都可以显示一个字符,字符位之间空有一个点距的间隔起着字符间距和行距的作用,这是其一;
其二是这类模块使用的是专用于字符显示控制与驱动的IC芯片[13]。
这两种因素确定了这类模块的应用范围仅局限于字符而显示不了图形,所以称其为字符型液晶显示模块。
字符型液晶显示驱动控制器广泛应用于字符型液晶显示模块上。
目前最常用的字符型液晶显示驱动控制器是HD44780U,也出现使用HD667O1或HD66702等字符型液晶显示驱动控制器单片控制的字符型液晶显示模块。
液晶显示驱动器为HD44100及其替代品。
字符型液晶显示模块在世界上是比较通用的,而且接口格式也是比较统一的,其主要原因可能是各制造商所采用的模块控制器都是HD44780U及其兼容品,不管它的显示屏的尺寸如何,它的操作指令及其形成的模块接口信号定义都是兼容的。
所以会使用一种字符型液晶显示模块,就会通晓所有的字符型液晶显示模块。
3.1.4液晶屏1602的使用具体
液晶1602有三条控制线,RS/数据命令端,RW/读写选择端、EN/使能端,一个8位的数据端口。
常用指令说明如表3-1:
表3-1常用指令说明
指令名称
控制信号
控制代码
D/IR/W
D7D6D5D4D3D2D1D0
清屏
00
00000001
归home位
0000001*
输入方式设置
000001I/DS
显示状态设置
00001DCB
光标画面滚动
0001S/CR/L**
工作方式设置
001DLNF**
CGRAM地址设置
01A5A4A3A2A1A0
DDRAM地址设置
1A6A5A4A3A2A1A0
读BF和AC
01
BFAC6AC5AC4AC3AC2AC1AC0
写数据
10
数据
读数据
11
(一)指令详细解释如下:
1).清屏(ClearDisplay)
格式
1
01H
该指令完成下列功能:
将空码(20H)写入DDRAM的全部80个单元内;
将地址指针计数器AC清零,光标或闪烁归home位;
设置输入方式参数I/D=1,即地址指针AC为自动加一输入方式。
该指令多用于上电时或更新全屏显示内容时。
在使用该指令之前要确认DDRAM的当前内容是否有用。
2).归home位(Returnhome)
02H
该指令将地址指针计数器AC清零。
执行该指令的效果有;
将光标或闪烁位返回到显示屏的左上第一字符位上,即DDRAM地址00H单元位置;
这是因为光标和闪烁位都是以地址指针计数器AC当前值定位的。
如果画面已滚动,则撤消滚动效果,将画面拉回到home位[14]。
3).输入方式设置(EnterModeSet)
I/D
S
04H07H
该指令的功能在于设置了显示字符的输入方式,即在计算机读/写DDRAM或CGRAM后,地址指针计数器AC的修改方式,反映在显示效果上,当写入一个字符后画面或光标的移动。
该指令的两个参数位1/D和S确定了字符的输入方式。
I/D表示当计算机读/写DDRAM或CGRAM的数据后,地址指针计数器AC的修改方式,由于光标位置也是由AC值确定,所以也是光标移动的方式。
I/D=0AC为减1计数器,光标左移一个字符位。
I/D=1AC为加1计数器,光标右移一个字符位。
S表示在写入字符时,是否允许显示画面的滚动。
S=0禁止滚动。
S=1允许滚动。
S=1且I/D=O显示画面向右滚动一个字符位。
S=1且I/D=1显示画面向左滚动一个字符位。
4).显示状态设置(Displayon/offControl)
D
C
B
08H0FH
该指令控制着画面,光标及闪烁的开关。
该指令有三个状态位D、C、B,这三个状态位分别控着画面,光标和闪烁的显示状态。
D画面显示状态位。
当D=1时为开显示,D=0时为关显示。
注意关显示仅是画面不出现,而DDRAM内容不变。
这与清屏指令截然不同。
C光标显示状态位。
当C=1时为光标显示,C=0时为光标消失。
光标为底线形式(5×
1点阵),出现在第八行或第十一行上。
光标的位置由地址指针计数器AC确定,并随其变动而移动。
当AC值超出了画面的显示范围,光标将随之消失。
B闪烁显示状态位。
当B=l时为闪烁启用,B=0时为闪烁禁止。
闪烁是指一个字符位交替进行正常显示态和全亮显示态,闪烁频率在控制器工作频率为250kHz时为2.4Hz。
闪烁位置同光标一样受地址指针计数器AC的控制。
闪烁出现在有字符或光标显示的字符位时,正常显示态为当前字符或光标的显示;
全亮显示态为该字符位所有点全显示。
若出现在无字符或光标显示的字符位时,正常显示态为无显示,全亮显示态为该字符位所有点全显示。
这种闪烁方式可以设计成块光标,如同计算机CRT上块状光标闪烁提示符的效果。
5).光标或画面滚动(CursorOrPictureShift)
S/C
R/L
执行该指令将产生画面或光标向左或向右滚动一个字符位。
如果定时间隔地执行该指令将产生画面或光标的平滑滚动。
画面的滚动是在一行内连续循环进行的,也就是说一行的第一单元与最后一个单元连接起来,形成了闭环式的滚动[15]。
当未开光标显示时,执行画面滚动指令时不修改地址指针计数器AC值;
有光标显示时,由于执行任意一条滚动指令时都将使光标产生位移,所以地址指针计数器AC都需要被修改。
光标的滚动是在DDRAM内全程进行的,它不分是一行显示还是两行显示。
如果用光标的指针——地址指针计数器AC加一和减一功能来解释,就能理解光标从第1显示位左移至第80显示位,或从第80显示位右移至第1显示位原理了。
光标的滚动功能可以用于搜寻需要修改的显示字符。
该指令有两个参数位:
1.S/C滚动对象的选择
S/C=l画面滚动
S/C=0光标滚动
2.R/L滚动方向的选择
R/L=l向右滚动
R/L=0向左滚动
该指令与输入方式设置指令都可以产生光标或画面的滚动,区别在于该指令专用于滚动功能,执行一次,显示呈现一次滚动效果;
而输入方式设置指令仅是完成了一种字符输入方式的设置,仅在计算机对DDRAM等进行操作时才能产生滚动的效果。
6).工作方式设置(FunctionSet)
DL
N
F
该指令设置了控制器的工作方式,包括有控制器与计算机的接口形式和控制器显示驱动的占空比系数等。
该指令有三个参数DL,N和F.它们的作用是:
DL设置控制器与计算机的接口形式。
接口形式体现在数据总线长度上。
DL=1设置数据总线为8位长度,即DB7~DBO有效。
DL=0设置数据总线为4位长度,即DB7~DB4有效。
在该方式下8位指令代码和数据将按先高4位后低4位的顺序分两次传输。
N设置显示的字符行数。
N=0为一行字符行。
N=1为两行字符行。
F设置显示字符的字体。
F=0为5×
7点阵字符体。
F=1为5×
10点阵字符体。
该指令可以说是字符型液晶显示控制器的初始化设置指令,也是唯一的软件复位指令。
HD44780U虽然具有复位电路,但为了可靠的工作,HD44780U要求计算机在征作HD44780U时首先对其进行软件复位。
也就是说在控制字符型液晶显示模块工作时首先要进行的软件复位[16]。
7).CGRAM地址设置(SetCGRAMAddress)
A5
A4
A3
A2
A1
A0
该指令将6位的CGRAM地址写入地址指针计数器AC内,随后计算机对数据的操作是对CGRAM的读/写操作。
8).DDRAM地址设置(SetDDRAMAddress)
A6
该指