基于单片机的水塔水位控制系统.docx
《基于单片机的水塔水位控制系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的水塔水位控制系统.docx(44页珍藏版)》请在冰豆网上搜索。
摘要
水塔是在日常生活和工业应用中经常见到的蓄水装置,基于单片机的水塔水位控制系统使水塔水位自动保持在一定的位置,通过对其水位的控制对外供水,以满足需要。
该系统使用水位传感器对水塔水位进行检测并将检测到的信号传给单片机STC89C52进行处理,通过调整定时器的定时时间来增大或者缩小占空比,并采用C语言编写控制程序,从而实现电机的调速。
最后,使用带字库的LCD1602液晶屏显示当前水位状态以及电动机的转速。
该系统实现了过低水位蜂鸣器鸣笛报警、过低警戒水位自动处理、正常水位蜂鸣器鸣笛报警以及正常水位处理、手动按键调整 PWM(PulseWidthModulation)电机调速等效用。
本系统适应在不同的用水场合下的用水速度需要,节省工作时间,提高了整体工作的效率,实现水塔水位的自动控制。
关键词:
单片机控制;水位检测;LCD1602显示;PWM电机调速
5/44
ABSTRACT
Thewatertoweriscommonlyseenindailylifeandindustrialasapplicationofstoragedevice.Thesystemisbasedonsingle-chipmicrocomputercontrolsystemhelptokeepwatertowersincertainwaterlevelandaccordingtotheautomaticlevelofcontroltosupplythe
needsofwater.WaterlevelsensorisusedfortowersontheexaminationdetectsignaalndtransferthesignaltoSTC89C52,throughtheadjustmentofthetimetoincreaseornarrowthedutyratio,andusingClanguageprogram,soastorealizethecompilationcontrolof
motorspeed.Finally,currentlevelsandmotorspeedareshownwith1602LCDscreeninthissystem.Thissystemrealizesthebuzzerlowlevelalarm,lowwhistlewarninglevelautomaticprocessing,normallevelalarmornormalwaterbuzzersirensandmanualbuttonsPulseWidthModulation.Thissystemrealizestheautomaticcontrolindifferentwatersituationofwatertosavetheworkingtime,speed,andalsoimprovestheoverallefficiencyofwatertowers.
KeyWords:
SCMcontrol;Waterdetection;LCD1602display;PWMmotorspeed;
目录
1引言 1
1.1课题简介 1
2系统的整体方案设计 3
2.1效用要求 3
2.2设计要求 3
2.3系统基本方案选择和论证 3
2.3.1单片机芯片的选择方案论证 4
2.3.2显示模块选择方案论证 4
3系统的硬件设计 5
3.1电路设计框图 5
3.2MCU主控芯片简介 5
3.2.1主控制器芯片STC89C52概述 5
3.2.2芯片下载程序 7
3.3液晶屏1602的简单介绍 7
3.3.1液晶屏1602的简要概述 7
3.3.2液晶屏1602的使用具体 8
3.4系统效用电路 13
3.4.1最小工作系统原理 13
3.4.2蜂鸣器报警电路原理 14
3.4.3电机驱动电路原理 15
3.4.4按键效用电路原理 16
3.4.5液晶1602显示效用电路图 16
3.5系统总体原理图设计 17
4系统的软件设计 18
4.1编程语言介绍 18
4.1.1C语言简介 18
4.1.2C语言的特点 18
4.1.3C源程序的结构特点 19
4.2PWM调速控制概述 19
4.2.1PWM脉宽调制简介 19
4.2.2PWM调节的具体过程 20
4.3系统程序的设计 21
4.3.1程序设计步骤 21
4.3.2软件的安全冗余设置 21
4.3.3程序流程图 22
4.4程序源代码 24
5 调试 25
5.1调试过程 25
5.2电路检测 25
5.2.1调试步骤 25
5.2.2调试遇到的问题及解决方案 25
5.3效用实现 26
结论 27
参考文献 28
附录一系统原理图 29
附录二程序源代码 30
致 谢 错误!
未定义书签。
1 引言
1.1课题简介
水塔是在日常生活和工业应用中经常见到的蓄水装置,通过对其水位的控制对外供水以满足需要,其水位控制具有普遍性。
水塔水位的单片机控制系统水塔水位控制在铁路、油田、化工等部门有着广泛的应用。
水位控制在日常生活及工业领域中应用相当广泛,自动检测水位的检测系统能根据水位变化的情况自动调节。
水塔供水的主要问题是塔内水位应始终保持在一定范围,避免“空塔”、“溢塔”现象发生。
在水塔中的水位到达水位下限时自动启动电机,给水塔供水;在水塔水位达到正常水位的时候自动关闭电机,停止供水。
并能在供水系统出现异常的时候能够发出警报,以及时排除故障,随时保证水塔的对外的正常供水作用。
在工业和我们的日常生活中,对水位的监测是非常必要的。
大到对江河,水库等的水位,特别在洪灾或者旱灾的时候,需要及时得到第一手数据;小到对水箱,热水器水位等家用贮水容器的监测,可以减少很多危险和不必要的损[1]。
现举一例:
在煤矿的开采过程中,会产生大量的水。
为了保证煤矿的安全和开采煤矿的正常进行,应将这些水通过水仓安全排放,因此不仅应控制水仓水位在一定的范围之内,同时要保持一定的上下限,超过了限度则报警,从而给其排水[2]。
目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔内水位保持恒定,以保证连续正常地供水。
实际供水过程中要确保水位在允许的范围内浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常[3]。
因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位检测、LCD1602显示当前水位效用以及蜂鸣器鸣笛报警,手动按键调整PWM电机调速效用,实现过低警戒水位报警、过低警戒水位处理的系统要求。
80年代以来,我国又发展了以自记遥测为主的水位测量技术。
它主要是建立自记水位计,实现水位自动采集、存储、远传。
同期,还发展了无人立尺观测技术,这种技术采用激光测距仪与经纬仪接口配套组成的一套设备,利用激光测距仪无须反射棱镜测定距离(测距精度:
0~5m)的性能,配以经纬仪测角测定目标高程的一种测量方法。
随着近代科学技术的发展和新材料新器件的开发,采用传感器研制水位计近年来有较大发展[4]。
主要采用的传感器有超声波、光电、压力、接触式、浮于式等几种。
超声波式水位计是将换能器向水面发射超声波,测量超声波传播时间,计算出水位。
压力式水位计也是不需要水位测并,其基本原理是测量静水压力来实现水深的测量,已采用过波纹管和水银位移式压力传感器等方法。
固态压力传感器由于其灵敏度高、体积
4/44
小、寿命长、且有抗腐蚀性而受到重视,但由于半导体传感器受温度影响大等原因,使其实用受到限制。
近年来固态传感器温度自动补偿问题有了进展,固态压阻式水位计已经得到应用[5]。
接触式水位计使用机电的方法用探头跟踪井内水面高低变化测量水位,已在少数领域使用,浮子式水位计,利用水球(或其它浮子)作敏感器件,避免了温度、湿度等因素的影晌,性能稳定,工作可靠,因而得到长期使用和发展。
我国使用的自记水位计,最常见的为浮子式水位计。
近年来,由于土建工程费用不断上涨,无需水位量的压力式水位计随着现代技术的发展和进步也日趋稳定和成熟,致使人们越来越重视使用压力式水位计。
单片机自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,发展很快。
单片机的特点是体积小、集成度高、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
正因为单片机有如此多的优点,因此其应用领域之广,几乎到了无孔不入的地步[6]。
在我国,单片机已被广泛地应用在工业自动化控制、自动检测、智能仪表、智能化家用电器、航空航天系统和和国防军事、尖端武器等各个方面。
单片机的潜力越来越被人们所重视。
特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。
我们可以开发利用单片机系统以获得很高的经济效益。
虽然单片机的引入使控制系统大大“软化”,但与其它计算机应用问题相比,单片机控制应用中的硬件内容仍然较多,所以说单片机控制应用有软硬件相结合的特点。
为此,在单片机的应用设计中需要软、硬件统筹考虑,设计者不但要熟练掌握汇编语言等编程技术,而且还要具备较扎实的单片机硬件方面的理论和实践知识。
更重要的意义是单片机的应用改变了控制系统传统的设计思想和方法。
以前采用硬件电路实现的大部分控制效用,正在用单片机通过软件方法来实现[7]。
这种以软件结合硬件或取代硬件并能提高系统性能的控制技术称为微控制技术。
例如,本文所要论述的基于单片机的水塔水位控制系统。
2 系统的整体方案设计
2.1效用要求
实际供水过程中要确保水位在允许的范围内浮动,应采用水位传感器测量水位变化,从而控制电动机,保证水位正常。
因此,这里给出以STC89C52单片机为核心器件的水塔水位检测控制系统,该系统能实现水塔水位检测、LCD1602显示当前水位效用以及蜂鸣器鸣笛报警,手动按键调整PWM电机调速效用,实现过低和正常警戒水位报警、过低和正常警戒水位处理的系统要求。
2.2设计要求
按下电源按钮后,灯会闪烁几下,然后是常亮状态,蜂鸣器会响。
电机不会转的,此时系统在待机状态,且为正常状态。
要先选择好电机的抽水速度是哪个档位,共有4个档位。
档位越高,速度越快。
在电机转的时候,按下选择档位,电机立马会停止的,这个是一个软件安全冗余的设计理念。
电机在水位模拟传感器端口(低水位)按下后,说明水位太低,电机转动,此时蜂鸣器会响一下,灯会闪烁几下,以此表示报警,并且液晶也会显示水位太低。
当水位模拟传感器端口(正常水位)按下后,说明水位已经到正常状态,电机停转,此时蜂鸣器也会响一下,灯一样会闪烁,以此表示报警,且液晶屏也会显示水位正常。
而PWM速度调整就是档位的选择,必须在电机停止的状态下去选择电机输出的速度。
2.3系统基本方案选择和论证
此系统可以采用多种的方式设计,能采用液罐液压检测的方式来做,这样在不同的水位时因为有不同的压力值,所以我们可以根据不同的压力值来确定到底水位在某个状态,但是这样的系统设计理念用处比较狭窄,因为这样的设计理念的前提必须是一个液压的封闭系统,这样才能有精确的压力值传送,保证系统的稳定性。
但是目前很多用到的水塔水位控制系统都不是封闭的水罐,所以这个方案有一定局限性。
而采用特殊的水位传感器,就可以克服上述的困难。
因为液位检测器可以很精确的检测到液位系统,同样达到预期的目的,且系统的应用面很广,而且系统的安全性能很好,因此我们采取检测液位作为系统的设计思想。
2.3.1单片机芯片的选择方案论证
目前市场上的单片机的种类有很多种,最多的51单片机、avr单片机,和Msp430,以及PIC单片机,但是由于单片机的种类很多,效用各不一样,我们不需要多先进,效用多强大的单片机,我们设计的要求就是够用即可,因为性能低劣了,系统效用实现不了,并且系统的稳定性很差,用的单片机性能太好了,由于高性能的单片机不只是价钱昂贵,且有很多资源都不会用到,这样造成了很大的浪费。
因此我们选用目前市场上用到比较多的、且可以满足系统设计要求的51单片机。
因为Atmel公司的51单片机需要专门的编程器,这样无形中加重了系统的成本,而STC公司单片机不仅支持ISP,还支持IAP等多种下载程序的方式,并且STC公司单片机工作在宽电压范围内,电压的波动对系统的影响不大,这样提高了系统的稳定性,另外STC单片机的加密性能也由于其他单片机,并且STC的单片机是增强型的51单片机[8]。
因此我们选用STC89C52单片机作为系统的主控芯片。
2.3.2显示模块选择方案论证
显示模块是系统的人机交互模块,增加了显示模块增加了系统的交互性。
目前市场上用到的显示模块有很多种,有数码管显示,还有液晶显示,因为数码管只是显示数字,不能显示字符,而此系统需要用到显示当前的水位状态。
这样就必须要用到字符显示的液晶显示器,液晶显示器也有很多种,但根据系统的需要我们选用的是LCD1602,很大程度上增加了系统的人机交互效用,让使用者可以得到更多系统工作的信息,更方便的使用此系统。
3 系统的硬件设计
3.1电路设计框图
系统的总体框图主要由主控芯片基本电路、按键电路、电动机和蜂鸣器驱动电路、液晶显示电路组成。
除主控芯片电路外,其他的都是外围效用性电路。
蜂鸣器和电动机电路驱动原理基本相同,都为三极管驱动电路,按键电路为平常的独立按键电路,液晶电路参考设计手册既可。
电路设计框图如图3-1所示:
图3-1电路设计框图
3.2MCU主控芯片简介
3.2.1主控制器芯片STC89C52概述
STC89C52是一款完全兼容8051内核指令的芯片,是宏晶科技公司的新一代增强性的8051单片机[9]。
采用最新的加密技术解决了全球89系列单片机都被解密的困惑。
并且管脚完全兼容,性能更好,驱动力更强,功耗更低,价格也比传统的89系列低[10]。
STC89C52的引脚说明图如图3-1。
STC89C52单片机的特点如下:
1.增强性6时钟/机器周期,12时钟/机器周期8051CPU
5/44
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的引脚图说明
6/44
3.2.2芯片下载程序
对于STC89C52的单片机而言,程序不需要专门的编程器或者仿真器去下载程序,而只是使用串口通讯的两个引脚就可以把程序烧写到程序里,十分方便简洁,并且有相关配套的官方软件,使用起来也十分方便[11]。
图3-2是程序下载的线路连接图:
图3-3程序下载线路连接图
3.3液晶屏1602的简单介绍
3.3.1液晶屏1602的简要概述
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用[12]。
字符型液晶模块是一种用5
×7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行
16个字、2行20个字等等。
字符型液晶显示模块是一类专用于显示字母、数字、符号等的点阵型液晶显示模块。
之所以称字符型液晶显示模块是因为其液晶显示器件的电极图形是由若干个5×
8或5×11点阵块组成的字符块集。
每一个字符块是一个字符位,每一位都可以显示一个字符,字符位之间空有一个点距的间隔起着字符间距和行距的作用,这是其一;其二是这类模块使用的是专用于字符显示控制与驱动的IC芯片[13]。
这两种因素确定了这类模块的应用范围仅局限于字符而显示不了图形,所以称其为字符型液晶显示模块。
7/44
字符型液晶显示驱动控制器广泛应用于字符型液晶显示模块上。
目前最常用的字符型液晶显示驱动控制器是HD44780U,也出现使用HD667O1或HD66702等字符型液晶显示驱动控制器单片控制的字符型液晶显示模块。
液晶显示驱动器为HD44100及其替代品。
字符型液晶显示模块在世界上是比较通用的,而且接口格式也是比较统一的,其主要原因可能是各制造商所采用的模块控制器都是HD44780U及其兼容品,不管它的显示屏的尺寸如何,它的操作指令及其形成的模块接口信号定义都是兼容的。
所以会使用一种字符型液晶显示模块,就会通晓所有的字符型液晶显示模块。
3.3.2液晶屏1602的使用具体
液晶1602有三条控制线,RS/数据命令端,RW/读写选择端、EN/使能端,一个8位的数据端口。
常用指令说明如表3-1:
清屏
0
0
0
0
0
0
0
0
0 1
归home位
0
0
0
0
0
0
0
0
1 *
输入方式设置
0
0
0
0
0
0
0
1
I/D S
显示状态设置
0
0
0
0
0
0
1
D
C B
光标画面滚动
0
0
0
0
0
1
S/C
R/L
* *
工作方式设置
0
0
0
0
1
DL
N
F
* *
CGRAM地址设置
0
0
0
A0
1
A5
A4
A3
A2
A1
DDRAM地址设置
0
0
1
A0
A6
A5
A4
A3
A2
A1
读BF和AC
0
1
BF
AC6
AC5
AC4
AC3 AC2AC1
AC0
写数据
1
0
数
据
读数据
1
1
数
据
表3-1常用指令说明
指令名称
控制信号
控制代码
D/I R/W
D7
D0
D6
D5 D4
D3 D2 D1
格式
0
0
0
0
0
0
0
1
01H
(一)指令详细解释如下:
1).清屏(ClearDisplay)
该指令完成下列效用:
12/44
将空码(20H)写入DDRAM的全部80个单元内;将地址指针计数器AC清零,光标或闪烁归home位;
设置输入方式参数I/D=1,即地址指针AC为自动加一输入方式。
该指令多用于上电时或更新全屏显示内容时。
在使用该指令之前要确认DDRAM
的当前内容是否有用。
2).归home位(Returnhome)
格式
0
0
0
0
0
0
1
0
02H
该指令将地址指针计数器AC清零。
执行该指令的效果有;将光标或闪烁位返
回到显示屏的左上第一字符位上,即DDRAM地址00H单元位置;这是因为光标和闪烁位都是以地址指针计数器AC当前值定位的。
如果画面已滚动,则撤消滚动效果,将画面拉回到home位[14]。
格式
0
0
0
0
0
1
I/D S
04H07H
3).输入方式设置(EnterModeSe)t
该指令的效用在于设置了显示字符的输入方式,即在计算机读/写DDRAM或CGRAM后,地址指针计数器AC的修改方式,反映在显示效果上,当写入一个字符后画面或光标的移动。
该指令的两个参数位1/D和S确定了字符的输入方式。
I/D表示当计算机读/写DDRAM或CGRAM的数据后,地址指针计数器AC
的修改方式,由于光标位置也是由AC值确定,所以也是光标移动的方式。
I/D=0 AC为减1计数器,光标左移一个字符位。
I/D=1 AC为加1计数器,光标右移一个字符位。
S 表示在写入字符时,是否允许显示画面的滚动。
S=0禁止滚动。
S=1允许滚动。
S=1且I/D=O显示画面向右滚动一个字符位。
S=1且I/D=1显示画面向左滚动一个字符位。
4).显示状态设置(Displayon/offContro)l
格式
0
0
0
0
1
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).光标或画面滚动(CursorOrPictureShi)ft
格式
0
0
0
1
S/C R/ 0
0