毕业设计191塘沽一职课程设计贮水水管液位与水泵控制装置.docx
- 文档编号:6860407
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:24
- 大小:424.11KB
毕业设计191塘沽一职课程设计贮水水管液位与水泵控制装置.docx
《毕业设计191塘沽一职课程设计贮水水管液位与水泵控制装置.docx》由会员分享,可在线阅读,更多相关《毕业设计191塘沽一职课程设计贮水水管液位与水泵控制装置.docx(24页珍藏版)》请在冰豆网上搜索。
毕业设计191塘沽一职课程设计贮水水管液位与水泵控制装置
2002级电子技术专业课程设计
设计题目:
贮水水管液位与水泵控制装置
摘 要
本单片机系统设计的目的是应用单片机控制技术,以89S52单片机为核心控制水箱的水位,通过水位信号的采集模块采集信号,单片机对信号进行处理,控制水泵的启停,并实现了报警和手动、自动切换功能。
用数码管显示液位高度与体积,并可以实现液面高度自动调整(液面高度可以人为的调整).该系统操作方便、性能良好,比较符合家禽用水系统控制的需要。
本文还详细的给出了相关的硬件框图和软件流程图,并编制了该汇编语言程序.
关键词:
单片机水泵驱动模块显示屏信号采集模块
ABSTRACT
Thistaskistocontrolthewaterleveloftankbymicro-controller,themicro-controlleralwaysinspectthewaterlevel.Andthencontrolthewaterpumptoaddthewatertotank.Thedigitalledgivesthewaterlevelandvol.thesystemshouldeasytooperate,easytouse.adapttofamilyanimaldrinkautomatically.Thisarticleillustratehowtodesignhardwareandsoftware.Atthesametime,italsogivestheirdrawingandscript.
KEYWORDS:
Micro-controllerpumpdrivedigitaltubesignalaquire.
第一章方案论证
根据题目的设计要求,本设计主要实现水泵在液位下限时给水管补水,液位到达上限的时候停止供水,并在高于上限或低于下限的时候发出声光报警。
同时显示水位的高度。
其系统方案框图如图1所示。
为实现各模块功能,提出了几种设计方案并进行论证。
图1系统方案图
Fig-1thesystemplandiagram
1、控制单元的选择
方案一:
采用16位单片机SPCE061A作为的控制中。
SPCE061A具有丰富的资源:
RAM,ROM,空间大、指令周期短运算速度快等特点,尤其是可以进行复杂的数学运算,精度很高,但16位的汇编语言较为复杂。
方案二:
采用ATMEL89S52型8位单片机作为显示控制系统,同时考虑到芯片的扩展对系统稳定性能会造成一定影响,因此另外采用AT89C2051对水泵进水进行控制。
这两种芯片价格便宜,功能强大,在本设计中其运算速度足以达到要求,同时其片内的ROM及RAM容量足以满足要求。
综合各方面考虑,最终选择了第二套方案
2、信号产生方案的选择
方案一:
采用触点式开关产生信号,具体为:
在水箱外用一根小的透明管与水箱连通,透明管内置浮子,浮子通过一根线使滑轮与滑动触点相连接,通过水箱液面高度的变化使浮子带动移动触点开关运动。
移动触点开关与固定触点接触时输出高电平,通过触点的移动,将产生一系列的脉冲信号,反馈给单片机后,单片机对信号进行计数判断,然后控制水泵。
但由于触点在相互接触时,产生的信号出现抖动,影响单片机对信号的计数,从而导致控制精度不高。
方案二:
采用滑动变阻器产生信号。
在滑动变阻器上装一个滑轮,在一个比较重的小铁球和有浮性的胶球用一根线连接,将其装在滑轮上。
通过液面高度的变化,在浮力的作用下,带动小球浮动,从而引起滑动变阻器阻值变化。
滑动变阻器阻值的变化将引起其电压变化,将此信号输入到单片机AT89C2051后,进而由单片机控制水泵的运转和启停。
综合各方面,最终选择了第二套方案。
3、水泵的选择
方案一:
用直流12V电压驱动的雨刮水泵。
其工作的电压底,出水量少,而水管的体积很大,要使水贮满水管需要很长的时间。
而且泵水的高度也有点难以达到水管的高度要求。
方案二:
用交流220V电压驱动的JP—022型8W的小型水泵。
其出水量合适,泵水的高度也能达到设计的要求。
综上分析,选择方案二。
4、显示方案
方案一:
采用LCD液晶显示器。
LCD液晶显示器即能显示数字又能显示文字,功能很大的,但其价格要比较贵,且控制较为困难。
方案二:
采用四位一体DG-E40561IP共阳数码管。
这种数码管外形小、结构简单、使用方便,本设计只要用一个四位一体的数码管就可以实现显示要求。
综合各项因素,选择方案二。
5、声光报警电路设计
方案一:
报警电路由电压比较器LM339、固态继电器、蜂鸣器、发光二极管和旋扭式可调电阻等组成。
电压比较器LM339从传感器采集到的电压值与设置的上限报警值比较再通过从输出管输出。
(1)当传感器采集到的信号电压比设置的上限电压值高时,输出管饱和,输出管截止,相当于输出端接低电平。
(2)当设置的上限报警值比传感器采集到的信号电压高时,输出管截止,相当于输出端开路。
通过电源驱动,蜂鸣器发出声音报警信号,同时使发光二极管发出光报警信号。
方案二:
采用语音芯片,在超过水位上下限时能够通过语音进行报警,其人机交互友好,但控制复杂,成本较高。
综合各项因素,选择方案一。
6、水泵工作但无水供出方案的选择
方案一:
在出水口处加入一触点,若有水流出则触点导通,此时信号将输入给单片机使其识别。
此种方案安装简单,但其是否导通受水的导电性影响。
方案二:
在出水口位置安装一水流开关,在有水流出时,开关断开;无水流出时,开关闭合以提供给单片机一开关信号。
综合各项因素考虑,选择方案二。
第二章硬件设计
1、系统总体设计
系统电路连接及硬件资源分配,本系统硬件电路连接图见图2。
图2系统电路原理图
Fig-2thediagramofthesystemcircuittheory
本系统信号产生模块时刻检测水位的高低,并把这个信号通过ADC0809转换为数字信号后输送给单片机,系统中的旋钮可以修改极限的上下限,极限值决定是否应该启动水泵给储液罐加水或停止供水,水泵功率为10W,通过单片机控制继电器的断闭得以实现。
数码管显示模块时刻显示水位、容积和极限值的大小。
本系统的电路图如图3所示。
图3系统电路连接图
Fig-3thediagramofthesystemcircuit
2、系统各模块电路设计
(1)电源电路
本系统中采用外部开关电源直接供电方式,所提供电压为5V,电流为0.5A。
(2)晶振电路
所选择AT89S52单片机的晶振频率应低于33MHZ,考虑到在程序设计中指令时间计算的便利,我们采用12MHz晶振,一个机器周期为1μs。
(3)显示电路设计
本系统中,利用DG-E40561IP共阳数码管来显示水位的高度和体积及上下限的水位高度。
LED显示电路由自制液位传感器采集信号,后输入ADC0809经过A/D转换后,从单片机AT89S52的P0口输入,由单片机进行BCD码转换后,显示水位值。
由单片机的P1口控制四位LED数码管显示当前水位及设定的上下限。
(4)报警模块设计
本系统采用旋钮式可调电阻进行水位上下限的控制,并通过LM339对输入的水位进行判断,若过高或过低,则通过发光二极管和蜂鸣器进行声光报警。
(5)水泵控制模块电路
本设计采用的是220V的JP—022小型水泵,由于其工作的电压高,故在电路中用欧姆龙G3MB-202P固态继电器对其220V电路进行控制。
当水位处于高低水位之间时,水泵工作。
继电器在单片机控制下,处于常闭状态。
若水位过
高或过低,则继电器控制220V电路断开,如下图4所示。
图4继电器控制原理
Fig-4thecontrolledtheoryoftherelay
(6)模数转换电路设计
本系统模数转换电路原理为:
从ADC0809端模拟输入信号地址线(23-25)可决定对哪一路模拟输入作为A/D转换22脚锁址控制,当输入为高电平时,对地址信号进行锁存:
6脚为测试控制,当输入一个宽电平脉冲时,就开始A/D转换:
7脚为A/D转换结束的标志,当A/D转换结束时,7脚输出高电平:
9脚
为A/D数据输出允许控制,当OE脚为高电平时A/D转换数据从端口输出:
10脚为0809的时钟输入端,利用单片机30脚的六分频晶振信号再通过4024二分频得到。
(7)供水水位不足报警电路设计
为防止出现供水水位不足但水泵仍工作的现象,在系统设计当中加入了报警装置,该装置的设计为:
在水管的出水口处,加入一水流开关,当水泵工作且有水流出时,开关断开,警告灯灭;水泵工作而无水流出时时,警告灯亮,系统处于报警状态。
第三章系统软件设计
软件设计是本系统的重要组成部分,因显示功能与控制功能由不同的单片机控制,为此程序设计分为两部分,考虑到汇编语言对显示控制编译的便利性以及KeilC语言对运算编译的便利性,系统使用汇编语言对AT89S52进行编程,使用KeilC语言对AT89C2051进行编程(程序详见附件一与附件二)。
本系统的软件设计共分为六个部分,分别为初始化程序设计部分、主程序设计部分、显示主程序设计部分、摸数转换测量子程序部分、水泵启停控制部分、供水水位不足报警部分等组成。
(1)初始化程序
系统上电时,将70H~72H内存单元清零,P2口置零。
(2)主程序
在刚上电时,因70H~72H内存单元的数据为0,则每一通道的数码管显示值都为000。
当进行一次测量的A/D转换值。
每个通道的数码管显示时间在1s左右。
主程序在调用显示程序和测试程之间循环。
(3)控制程序
当设置好水位的上限和下限值后,单片机将不断检测水位状态,若发现水位到达最低水位,则使继电器闭合,启动水泵电机,同时声光报警。
若发现水位到达最高水位,则使继电器断开,停止水泵工作,同时声光报警,如图5所示。
(4)数转换测量子程序
模数转换测量子程序是用来控制对ADC0809八路模拟输入电压的A/D转换,并将对应的数值移入70H~72H内存单元,其程序流程如图6所示。
(5)显示子程序
采用动态扫描法实现四位数码管的数值显示。
测量所得的A/D转换数据放在70H~72H内存单元中。
测量数据在显示时需经过转换成为十进制BCD码放在76H~79H中,其中7BH存放通道标志数。
寄存器R3用来作3路循环控制,R0用作显示数据地址指针,其流程图如7所示
图5水泵控制流程图
Fig-5theflowchartofthepumpcontrolling
Fig-6theflowchartoftheA/Dtransversemeasurement
图7显示流程图
Fig-7theflowchartofthemonitoring
(6)系统软件抗干扰程序
为防止因电磁干扰而造成程序的“跑飞”,在程序设计当中加入了软件陷阱,既每段程序后加入两个空操作NOP,若程序“跑飞”则程序被软件陷阱捕获,被抗干扰程序处理,返回复位状态,重新启动系统。
第四章测试方法与实验数据
1、测试仪器
万用表、51系列仿真器、8051仿真头、89C2051仿真头以及SUPERPRO/Z编程器。
2、硬件调试注意事项
(1)硬件调试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。
然后用万用表测试或通电检测,检查无误后,可通电检查数码显示器亮度情况。
(2)LM339与单片机相连的只有4根线,很容易检查,主要检查其与管脚是否连接好。
3、软件调试
软件调试是在WAVEG6000软件模拟器下进行,源程序编译及仿真调试应分段或以子程序为单位逐个进行,最后结合硬件实时调试。
子程序调试包括:
(1)ADC0809信号采集程序;
(2)显示液位高度子程序;
(3)声光报警程序;
本系统使用伟福V5/S仿真器进行程序仿真,在仿真过程中,因仿真头对输入电压有非常严格的要求,因此必须严格检查仿真头40脚输入电压是否超过5V,程序仿真成功后方可烧入单片机。
4、测试结果分析
(1)启停水位及报警水位的测试分析
经过实验,本设计小组选取了10cm、25cm、35cm等水位进行测试,实验结果表明:
在10-25cm间,显示误差小于0.5cm。
在35cm时误差为1cm。
测试通过
(2)液位小于10cm时自动启停水泵测试
本小组首先将水箱中的水全部排除,系统通电后,水泵自动进水,同时蜂鸣器报警,指示灯闪亮,表明水位低于10cm。
测试通过
(3)液位在高于上限值报警测试
本小组选择40cm水位报警,测试结果表明,当水位到达40cm时,声光报
警装置启动,误差值在1cm以内。
(4)液位在高于上限时停水测试
本小组选择了35cm和40cm两个位置作为上限高度,实验结果表明在两个位置,系统能实现自动停水功能,误差在1cm以内。
(5)显示测试
本小组选择了10cm、25cm、35cm以及40cm四个位置进行显示,测试结果表明:
此四个位置所显示值误差小于0.5cm。
测试通过
(6)电机工作但液位不变化报警测试
本小组首先使水泵工作,在系统正常工作后,将水管拔除,系统报警。
将水管接好后,报警解除。
由于所采用的ADC0809为8位,其计时精度相对设计要求而言已经足够,测量水位高度较为准确,误差在1cm以内。
第五章收获和总结
经过紧张的四三联单天的奋力拼搏,与小组其他成员通力协作,团结互助,终于完成了实验项目。
首先,我们小组全体成员感谢主持本次竞赛的主委会和全体评审老师以及我们的辅导老师,谢谢你们给了我们一个提高自己和展现自己的舞台,让我们在以后的人生中更加自信和坚定。
回想这四天三夜,短暂而充实,就我们而言,我们在许多方面都有了明显进步和收获,无论是拼搏精神还是团队精神都是对我一生都是一笔丰富的财富。
所以这次竞赛无论能否取得成功,我们都不会有遗憾,我们会继续发扬这四天三夜的精神,在以后的日子里更加努力地提高自己、充实自己。
同时,我们希望在这四天三夜的努力有所肯定,希望我们能站在领奖台上。
参考文献
[1]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,1996
[2]徐爱钧,彭秀华.单片机高级C51应用程序设计[M].北京:
电子工业出版社,2000
[3]李建忠.单片机原理及应用[M].西安:
西安电子科技大学出版社,1999
[4]李群芳.单片微型计算机与接口技术[M]北京:
电子工业出版社,2001
[5]楼然苗,李光飞.51系列单片机设计实例[M].北京:
北京航空航天大学出版社,2003
附件一AT89C2051控制程序
#include
#include
#include
#include
#include
/*******************************************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
/*******************************************************/
/***********************定义全局变量**********************/
sbitJS=P1^7;//点火线通断继电器控制口
sbitCS=P1^6;//过限蜂鸣器报警控制口
sbitSB=P1^5;//发动机启动信号输入口
sbitXB=P1^4;//发动机冷却水水位传感器输入口输出
sbitSX=P3^0;//发动机水温传感器输入口
sbitXX=P3^1;//发动机机油压力传感器输入口
sbitYBJ=P3^2;
ucharBB=0;
/*********************************************************/
/**********************延时程序****************************/
//
voiddelay()//延时25秒
{
uchari,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
/*************************IO口初始化***********************/
voidioini()
{
JS=1;
CS=1;
SB=1;
XB=1;
//MD=0;
//SW=0;
}
/*********************************************************/
/***************************主函数*************************/
voidmain()
{
ioini();//端口初始化
do{
#pragmaASM
MOVP3,#0FFH
#pragmaENDASM
if(XX==1)
{
while(!
SX)
{
#pragmaASM
MOVP3,#0FFH
#pragmaENDASM
JS=0;
BB=1;
if(XX==1)
{
XB=0;
delay();
delay();
XB=1;
delay();
delay();
}
else
{
//JS=1;
}
if(SX==1)
{
SB=0;
delay();
SB=1;
delay();
}
#pragmaASM
MOVP3,#0FFH
#pragmaENDASM
if(BB==1&&YBJ==1)
{CS=0;}
else
{CS=1;}
}}
else
{JS=1;
BB=0;}
if(XX==1)
{
XB=0;
delay();
delay();
XB=1;
delay();
delay();
}
if(SX==1)
{
SB=0;
delay();
SB=1;
delay();
}
}while
(1);
}
/******************************结束*******************************/
附件二AT89S52单片机数据采集、转换及显示程序
70H-72H存放采样值,76H-79H存放显示数据,依次为个位、十位、百位、通道标志
;
;*************************************
;**
;*主程序和中断程序入口*
;**
;*************************************
ORG0000H;程序执行开始地址
LJMPSTART;跳至START执行
ORG0003H;外中断0中断入口地址
RETI;中断返回(不开中断)
ORG000BH;定时器T0中断入口地址
RETI;中断返回(不开中断)
ORG0013H;外中断1中断入口地址
RETI;中断返回(不开中断)
ORG001BH;定时器T1中断入口地址
RETI;中断返回(不开中断)
ORG0023H;串行口中断入口地址
RETI;中断返回(不开中断)
ORG002BH;定时器T2中断入口地址
RETI;中断返回(不开中断)
;
;*************************************
;**
;*初始化程序中的各变量*
;**
;*************************************
CLEARMEMIO:
CLRA;
MOVP2,A;P2口置0
MOVR0,#70H;内存循环清0(70H-79H)
MOVR2,#06H;
LOOPMEM:
MOV@R0,A;
INCR0;
DJNZR2,LOOPMEM;
MOVA,#0FFH;
MOVP0,A;P0、P1、P3端口置1
MOVP1,A;
MOVP3,A;
NOP
NOP
LJMPERR
RET;子程序返回
;
;*************************************
;**
;*主程序*
;**
;*************************************
START:
LCALLCLEARMEMIO;初始化
MAIN:
SETBP3.4;
LCALLDISPLAY;显示数据一次
LCALLTEST;测量一次
LCALLCON;控制水泵动作
AJMPMAIN;返回MAIN循环
NOP;PC值出错处理
NOP;空操作
NOP;空操作
LJMPSTART;重新复位起动
;
DISPLAY:
MOVR3,#03H;3路信号循环显示控制
MOVR0,#70H;显示数据初址(70H-72H)
MOV76H,#00H;显示通道路数(0-3)
DISLOOP1:
MOVA,@R0;显示数据转为三位十进制BCD码存入
SUBBA,#16H
RRCA
MOVB,#100;76H、77H、78H显示单元内
DIVAB;显示数据除100
MOV75H,A;商入7AH
MOVA,#10;A放入数10
XCHA,B;余数与数10交换
DIVAB;余数除10
MOV74H,A;商入79H
MOV73H,B;余数入78H
MOVR2,#0FFH;每路显示时间控制4MS*255
DISLOOP2:
LCALLDISP;调四位LED显示程序
DJNZR2,DISLOOP2;每路显示时间控制
INCR0;显示下一路
INC76H;通道显示数值加1
DJNZR3,DISLOOP1;3路显示未完转DISLOOP1再循环
NOP
NOP
LJMPERR
RET;3路显示完子程序结束
;
;LED共阳显示子程序,显示内容在78H-7BH,数据在P1输出,列扫描在P3.0-P3.3口
DISP:
MOVR1,#73H;赋显示数据单元首址
MOVR5,#0FEH;扫描字
PLAY:
MOVP1,#0FFH;关显示
MOVA,R5;取扫描字
ANLP3,A;开显示
MOVA,@
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 191 塘沽 课程设计 贮水 水管 水泵 控制 装置