智能给水系统的设计Word文件下载.docx
《智能给水系统的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《智能给水系统的设计Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
市场竞争压力大,浪费资源,价格昂贵。
优点:
资源丰富,响应速度快。
方案二:
选择STC89C51做为主控器件,优点:
价格较便宜,可以控制电动机与单片机,相应速度较快,可以满足系统的运行需要,完成相应的功能,外围电路比较简单。
所以,STC89C51单片机能够发挥其独特优势,具备可位寻址操作功能与控制功能,成本低廉,充分利用资源。
因而,笔者认为方案二更适合本系统,不但可以提升系统的市场竞争力,还能减少成本,外围电路的构造也比较简单。
(2)选择合适的水压传感器
水压传感器收集水压信号,依据水压的变化输出线性变化的电压信号,并显示对应的水位高度。
选择桥式压力传感器
应变片是桥式压力传感器的关键元件,水压不同,应变片的应力变形不同,桥式压力传感器以此测量水压。
当应变片发生应力变形时,传感器形成相应的电压信号,传感器输出的电压随着水压的变化发生线性改变。
若传感器输出的电压信号较小,说明应变片的应力变形小,其电压改变程度较小。
此外,A/D转换电路模块能够与桥式压力传感器结合形成采集模块。
桥式压力传感器测量准确、易于控制和固定、操作简单、电路不复杂。
选择分立元件组成的压力传感模块
该压力传感器由放大电路与压敏电阻组成,放大电路放大压敏电阻的电压信号,进行A/D数模转换。
缺点:
比较复杂,其信号需经过电压比较器和A\D采样采样器处理,不灵敏,且经常受到环境影响,提升电路的难度与复杂性。
相比之下,方案二成本高昂、电路难度大、功耗多、误差大、灵敏度低。
综上,通过比较,方案一更符合本设计的要求。
能够电路更简单,水压测量结果更准确,因此选用方案一。
(3)选择与比较A\D转换器
选择12位A\D转换芯片
选择12位A\D转换芯片,缺点:
成本高昂、浪费资源;
市场竞争力强、资源丰富、分辨率高。
选择8位A\D转换芯片
选择8位A\D转换芯片,分辨率可达256级,足够我们设计要求,在0-5V电压模数转换时,变量变化1,才有19.53MV的变化,体积小,兼容性,性价比高,性能可以满足系统需要。
因而,本文在设计系统时,选用方案二。
(4)选择与比较电动水泵驱动电路
选用继电器驱动水泵
继电器开关使用年限长,灵敏度较高,操作简单,能够利用小电流操控大电流或者以小电压操控高电压,即便在高压或者高电流状况下也不会损坏单片机。
选用单片机驱动水泵
STC89C51单片机系统的主控器件,其内部存在定时器,定时器0是一个实时时钟,能够依据系统的实际状况定时,为了不影响系统的而正常运行,采用定时器1,定时器1通过定时更改I0口的高低电平,以获得相应的模拟信号。
笔者经过大量的测试,认为适用单片机驱动水泵会耗费大量的CPU时间,降低数据处理采集、液晶显示的效率。
综上所述,依据系统的设计需要,本设计选用方案一。
(5)选择与比较显示模块
选用12864液晶显示,12864虽然屏幕尺寸大、具备较强的市场竞争力,但成本高昂,功耗大,设计比较复杂。
选择LCD1602液晶显示,虽然该显示模块智能同时显示两行字符,字符数为16个,但能够满足系统需求,可以保证系统平稳运行。
综上所述,本文选用方案二。
2.2系统介绍
硬件设计方面包括单片机最小系统单片机、压力传感模块、振荡放大电路、键盘控制模块、显示模块、蜂鸣器报警模块、继电器水泵控制模块。
为了解决上述问题,笔者详细的分析了各种影响因素,以设计需求为基础,设计系统制作方案。
根据此方案,系统的控制中心是STC89C51,可以分析压力传感器收集的信号并依据需要做出处理。
图1即为系统设计方案框架图。
图1:
2.3STC89c51单片机
以Intel的指令代码为基础的STC89C51单片机是目前功能最为强大的单片机,可以兼容市面上所有的单片机,功率消耗少、运行速度快、抗干扰能力强,是美国STC公司研发的新型单片机,具备6时钟/机器周期与12时钟/机器周期,用户可以根据自身需要进行选择。
STC89C51单片机的特点
1、单片机上集成两种类型的RAM,分别为512字节RAM与1280字节RAM。
2、用户应用程序空间大小不同,包括64K、32K、20K、16K、13K、8K、4K字节。
3、普通8051单片机工作频率为0~80Mhz,而STC89C51单片机工作频率为0~40MHz,正常运行时工作频率超过48MHz。
4、工作电压有两种,其一是3V单片机,其工作电压正常范围是3.8V~2.0V,其二是5V单片机,其工作电压正常范围是5.5V~3.4V。
5、增强型12时钟/机器周期与6时钟/机器周期。
6、低电平触发中断、外部中断、下降沿中断能够唤醒PowerDown模式,其中外部中断分为4路。
7、定时器0能够充当两个8位定时器,共有三个16位计数器与定时器。
8、通用I/O(32/36个),除PDIP-40封装无P4口,其余封装都有P4口,复位之后:
P0口是总线扩展,为开漏输出,不必加上拉电阻,P4、P3、P2、P1为弱上拉(普通8051位传统I/O口)、准双向口。
图2即为STC89C51接口示意图。
图2:
1、P0:
P0口是双向I/O口,由8位漏极开路。
每位能够驱动8个TTL逻辑电平,是输出口。
P0口在此种模式下具备内部上拉电阻。
在访问数据存储器或者外部程序,引脚是低8位的地址/数据复用。
若端口写入“1电平”,引脚为高阻抗输入。
2、P1
P1口是8位双向I/O口,具备内部上拉电阻,四个TTL逻辑电平在P1输出缓冲器的作用下被驱动。
当P1端口被用作输入口时,写入值为“1”,引脚在内部上拉电阻的作用下被拉低,端口在内部上拉电阻的作用下被拉高,此时输出电流(IIL)。
P1.2引脚能够充当定时器/计数器2的触发输入(P1.1/T2EX),P1.0引脚可以充当定时器/计数器2的外部计数输入(P1.0/T2)。
引脚号第二功能:
P1.0T2为时钟输出,以计数器/定时器T2的外部计数输入。
P1.1T2EX(计数器/定时器T2的重载/捕捉控制方向与触发信号)。
3、P2
P2是8位双向I/O口,具备内部上拉电阻,四个TTL逻辑电平在P2输出缓冲器的作用下被驱动。
当P2端口使用16位地址调用访问外部数据存储器或者外部程序存储器时,P2端口输出高8位地址。
此时P2端口在强内部上拉作用下输出“1”电平。
P2锁存器的内容在以8位地址读取外部数据存储器时由P2端口输出。
P2端口被用作输入端口时,写入值为“1”,端口在内部上拉电阻的作用下被拉高,引脚在内部电阻的作用下被拉低,输出电流(IIL)。
在以flash校验或者编程时,P2端口可以采集部分控制信号与高8位地址字节。
4、P3
p2输出缓冲器可以同时启动四个TTL逻辑电平,P3端口为8位双向I/O口,拥有内部上拉电阻。
P3端口充当输入口时,写入值为“1”,端口在内部上拉电阻的作用下被拉高,引脚被外部拉低,在内部上拉电阻的作用下输出电流(IIL)。
当P3端口是。
表1即为引脚的第二功能。
表1
引脚具备多种第二功能
5、其他的引脚
RST——复位输入。
振荡器在运行期间,复位脚会在超过两个运行周期的时间内保持高电平状态,从而单片机可以恢复原状态。
ALE/PROG——如果系统读取数据存储器或者外部程序存储器中的数据,地址锁存允许(ALE)输出脉冲会在锁存地址的低8位字节发挥作用。
通常而言,ALE在输出脉冲信号时还是可以按照时钟振荡频率的六分之一输出,所以其具有定时或者时钟的功能。
需要留意的是,在读取外部数据存储器的过程中会略过1个ALE脉冲。
这个引脚还会在FLASH存储器进行编程的时候发挥录入编程脉冲的作用。
倘若实际工作需要,还可以禁止SFR特(殊功能寄存器)区里的8EH单元的D0位置位的ALE的行为。
如果采取了这种操作那么通过MOVX和MOVC指令可以恢复ALE的作用。
除了上述功能,这一引脚会在单片机运行程序的过程中获得些许上升,此时需要把ALE禁止位设定为无效。
PSEN——程序储存允许(PSEN)向外输出的内容是从外部程序存储器中获得的通信号,如果外部程序存储器中的数据或者指令被读取出来,那么AT89C52在各个周期中会向外输出2个脉冲,也就是说存在2个PSEN是有效的,在上述过程中,如果读取了外部数据存储器中的信息,会略过2次PSEN信号。
EA/VPP——外部访问允许,如果要让CPU只读取地址是0000H-FFFFH的外部程序存储器,就一定要使EA端接地也就是处于低电平状态。
特别要关注,倘若加密位LB1经过了编程操作,在复位过程中会把时EA端的数值锁存起来。
倘若EA端是接Vcc端的,也就是处于高电平状态,那么CPU会操作内部程序存储器中保存数据和指令。
4.2单片机的时钟电路和复位电路如图3
图3:
上电的时候突然给电路施加和运行过程中完全相反的电平就是复位电路的作用。
按照电容电压不会发生突变的规律,就等同于瞬间短路。
在上电的一瞬间,电容充电,充电电流在电阻上形成的电压为高电平。
当电容充满,电阻为0,电阻上的电压也就为低电平,这时进入正常工作状态。
时钟电路的目的是控制单片机的工作节奏,决定单片机的执行速度,为本设计提供一个基准实际脉冲。
2.4压力传感器
压力传感器是通过应变片的应力变形,而产生电信号的敏感元器件,每当发生应力变形,传感器都会产生相应的电压,受到的压力发生变换电压也会随之发生改变。
然而桥式称重压力传感器的应变片不易发生形变,所以输出电压很小且不会发生很大的变化,本设计采取了8位AD芯片ADC0832并设计了一些外围电路实现采集功能,让电路便于控制,并能够实现较高的测量精度。
本设计中使用的D3B压力传感器见图3。
D3B压力传感器电压输出:
0.23v---4.9v;
工作电压:
4.2v—6.2v;
水柱:
0----0.1Kg/c㎡;
压力范围:
0-----1000mm;
线性度0.2%;
外型:
30×
20mmI接5VO接IO口G接GND
图4:
2.5ADC0832
ADC0832是一种8位分辨率的A/D转换芯片,由于分辨率高达256级,因此通常的模拟量转换的需要都能实现。
芯片的模拟电压由于参考电压以及电源输入的联合使用,使其变化范围为0-5V。
完成芯片转换只需要32微秒,为了降低数据的不准确性,可以将利用数据输出完成校验,不仅使得芯片的转换更加迅速而且更加安全稳定。
由于芯片转化的进步控制处理器以及多器件挂接也更加容易。
利用DI数据的输入端能够十分容易地完成通道功能的设定。
通常而言ADC0832通过DI、CS、DO、CLK四条数据线和单片机产生连接。
然而因为DI端和DO端和单片机的连接是双向的而且通信过程中不能同时发挥作用,因此在设计电路的过程中能够把DI以及DO并联到同一个数据线中发挥作用。
如果ADC0832处于停止状态,CS输入端处于高电平状态,在这种情况下芯片是被禁用的,而DO/DI以及CLK的电平状态没有要求。
而在A/D的转换过程中,必须要把CS使能端转化为低电平状态,而且这种状态一直要在整个转化过程中维持。
这时芯片就进入转换状态,此时处理器就会给芯片的时钟输入端CLK传输时钟脉冲,DO/DI端在选取信号时是通过DI端输入通道。
启始信号是第1个时钟脉冲的下沉前DI端保持高电平状态。
而之后两个脉冲下沉前DI端必须输入两位数据,才能对通道进行选取,表一中列举了具体功能。
单片机接口电路见图4:
图5:
见上表,如果两位数据是“1”和“1”,那么CH1发生单通道转换。
如果输入的两位数据是“1”和“0”,那么CH0发生的是单通道转换。
如果两位数据是“0和“1”时,输入时负输入端IN-是CH0,正输入端IN+是CH1。
如果两位数据是“0”和“0”时,那么输入时负输入端IN-是CH1,正输入端IN+是CH0。
如果第3个脉冲完成下沉,那么DI端的输入电平就不再进行输入,在这之后DO/DI端就会读取转换数据通过数据输出DO的方式。
如果第4个脉冲完成下沉,DO端就会开始输出DATA7,在此之后发生脉冲下沉DO端就会依次进行数据输出。
这一过程持续到第11个脉冲输出DATA0,这是整个字节都已经成功输出。
在此之后就会开始相反字节的输出,换句话说第11个字节下沉后输出的数据是DATD0。
再进行8位数据的输出,直至第19个脉冲整个字节被成功输出,这也是A/D转换完成的标志。
然后把CS调整到高电平状态,将芯片禁用,再把完成转换的数据加工处理。
表3中对时序有着具体的解释。
表2:
表3:
2.61602液晶
在实施各个指令前一定要把忙标志的状态调整为低电平,这是由于液晶显示模块属于慢显示器件,如果忙表示是高电平就无法执行该指令。
显示字符前必须先录入字符的地址,下图5中展示的是1602的内部显示地址。
图6:
举例来说如果要显示的是第二行第一个字符,其地址为40H,如果直接录入40H能不能显示出该字符?
答案是否定的,这是由于输入显示字符的地址时,有着D7必须保持高电平1状态的要求,因此输入的数据为
。
液晶模块在进行初始化之前要先确定显示模式,显示字符的过程中光标不需要认为调整会自动移动,在输入指令前都需要检测液晶模块的状态是否空闲。
有160个点阵字符图案包括常见的符号、英文字母、阿拉伯数字以及日文假名等存储在1602液晶模块内部的CGROM(字符发生存储器)中,见图6所示,这些字符由特定的代码表示,举例来说,01000001B(41H)表示的是大写的字母“A”,在显示过程中模块会读取41H位置的字符,并在屏幕上显示出字母“A”。
图7:
初始化的步骤有:
3、系统电路设计
3.1最小系统电路设计
外部时钟振荡电路、单片机、复位电路、P0口上拉排阻共同构成了最小系统。
见下图7:
图8:
单片机最小系统电路图
STC89C52单片机所需的工作电压在4V到5.5V之间,因此单片机接通的都是5V直流电。
通过将单片机的20脚VSS接地,40脚VCC与5V电源的正极相连。
单片机的起始就是通过判断最初的状态实现的;
在单片机的工作期间,如果程序由于外界因素的影响而发生跑飞,这时利用复位按钮就可让程序重新运行。
复位过程的实行是由RESET端保持两个周期的高电平状态完成的。
本设计是利用手动按键的方式进行复位操作的,因此要额外的上拉电阻将电平提高。
单片机的核心就是时钟电路,机器的运行都由它控制。
时钟电路可以为机器提供正弦波信号时一种振荡电路,这会影响到机器的工作状态。
3.21602显示电路设计
按照1602数据手册中的内容,单片机和1602应该按照下图的方式连接:
图9:
单片机和1602连接原理图
LCD1602的D0~D7和单片机STC89c51的P0.0~P0.7和上拉电阻相连,4、5、6口分别与单片机的P2.5、P2.6、P2.7口相连,当单片机收到压力传感器采集模块传进来的数字信号,单片机经过处理,PO.0~P0.7口将输出对相应的低电平到LCD1602的D0~D7,LCD1602根据低电平显示相对应的数值。
3.3电磁继电器电路设计如下:
继电器具有小电流控制大电流以及低电压控制高电压的能力,单片机控制继电器的过程也十分容易,如果水压比设定值小,单片机P2.0口输出低电平,三级管导通,继电器开关导通,马达水泵开水抽水。
水量达到设定值,P2.0口高电平,三极管不导通,水泵停止抽水。
为了演示方便,本设计选用小型马达水泵,可以用图9电路图,若是要运用到实际生活中可以用图10电路。
图10:
单片机驱动继电器原理图
图11:
3.4压力传感器采集电路设计如下:
图12:
压力传感器采集原理图
应变片由于外力的作用发生形变,这是传感器会按照应力变形的大小来输出特定大小的电压这就是压力传感器的工作原理。
然而因为桥式称重压力传感器的应变片不易发生形变,所以输出电压很小且不会发生很大的变化,本设计采取了8位AD芯片ADC0832并设计了一些外围电路实现采集功能。
由压力传感器采集到的电压传给ADC0832,然后ADC0832把采集的模拟信号转换为数字信号,然后将模拟信号传输到单片机STC89C51的里
3.5蜂鸣器电路设计如下:
图13:
蜂鸣器驱动原理图
电路通过三极管基极与单片机P端口连接从而达到控制蜂鸣器的响起。
由于单片机引脚的驱动力不足以支持蜂鸣器的运行,因此额外增加了三极管实现蜂鸣器的运行。
4、系统程序设计
4.1系统程序程图设计如下:
图14:
主程序流程图
4.2压力传感器采集显示程序流程图设计
图15:
4.3按键程序流程图设计
图16:
5、系统功能及指标参数
5.1系统功能
本文设计的智能液位传感器具有下列功能:
1、测定的液体高度小于1米时测定的结果较为准确;
2、测定高度时压力传感器通过测定水压来完成;
3、测定的结果可以直接显示在上位机的屏幕上;
4、该单片机可以利用ADC收集和处理压力传感器测定的水压的电压信号。
5.2AD部分调试参数
AD调试过后,测定了AD采集数据的能力,结果见表4:
表4:
序号
高度(CM)
AD值
1
2
7
3
9
4
11
5
14
6
16
19
8
21
24
10
26
28
12
31
13
33
36
15
38
40
17
43
18
45
48
20
51
30
74
22
98
23
50
122
60
146
25
70
170
80
194
27
90
218
100
242
上述数据的测量条件都是大约30℃的室内环境。
将测定的28组数据(利用高度已知的液体获得ADC0832测定的AD值)进行处理后发现AD值具有很强的线性。
公式如下:
5.3调试总结
在调试过程中由于涉及到很多方面的影响因素,因此花费的时间较长,在调试时需要以综合的方式观察系统的运行状态是否符合基础需求。
本文的设计采用压力传感器来达到预期的效果,压力传感器可以检测液体的水压,再通过ADC0832把传感器获得的电压进行处理并输送到单片机中,液体的高度就会在屏幕上显示出来。
测定的液体高度小于1米时测量结果较为准确。
测定结果的误差来源是由于压力传感器输出的数据和ADC0832接收的数据并不完全一样。
6、结论
本文中描述的智能液位传感器和计划相符,该传感器最大的特点是在测量液面的高度过程中通过压力传感器完成这一操作,通过这一方法测十分方便;
另一个特点是测量结果能够直接显示出来,且结果的单位是cm十分精确,如果水压比设定值大,那么系统会发出提醒。
不可避免地,本文的设计方案还是存在一些缺陷,比如要实现测量水压的功能必须要将容纳液体的容器底端进行开口,此外如果增加在超过测定阈值时能够自动报警的系统会更加完善。
倘若能给系统增加存储数据的功能,就可以更加方便地分析过去保存的数据。