学号: 0000000
XXX大 学 毕业设计(论文) (2012 届)
题 目 基于单片机的液位控制器的设计
学 生 XXX 学 院 XXXXX学院 专 业 班 级 XXXX
校内指导教师 XXXX 专业技术职务 XXX 校外指导老师 XXX 专业技术职务 XXXXX
二○一二年五月
基于单片机的液位控制器的设计
摘要:在日常生活中的很多地方需要液位控制,一个性能良好的液位控制系统可以给生活带来很多方便,设计出一个优良的液位控制系统具有极其重要的意义。
该系统以STC89C52单片机作为核心控制器实现具有液位检测、显示、控制和报警功能的家庭水箱液位控制器。系统采用MPS20N0020D-S型液压传感器检测液位,用三个按键来实现水位设定,用五个7段LED数码管来完成显示部分,用PWM方法控制水流速度。软件部分使用C语言作程序开发,易于编写和升级维护,使得作品性能更优良。
本设计采用单片机作中央处理单元,易于实现水箱液位的控制,而且有造价低、程序易于调试、一部分出现故障不会影响其他部分的工作、维修方便等优点。具有非常高的使用价值和良好的市场前景。
关键词:STC89C52单片机;液位控制;显示;报警;PWM方法
\\
I
The design of water level controller based on single chip
microcomputer
Abstract:A water level control system is in need in many aspect of our daily life. Lots of convenience will be brought to life by an excellent water level control system, and it makes a significant sense to design an excellent water level control system.
The household water tank control system is based on the STC89C52 MCU and includes the functions of water level detection , control and exception alarm. This system contains five parts as follow: the detection of water level, the user operating keys, the control of water level, status display and exception alarm. The hydraulic pressure sensor is used for water level
detection. Three keys can meet the operating need and five 7-segment LED display device are used for status display. The speed of water in and out can be controlled by PWM method. The C programming language is used in this software development, which is good for programming and software update. It contributes much to an excellent work.
The use of MCU makes the control more easily. What is more, low cost , reliable, easily for device programming and convenienced for fixing are the advantages of this system. It’s very useful and has a promising market value.
key words: STC89C52 MCU, water level control, status display, alarm, PWM method
II
目 录
摘要??????????????????????????????????Ⅰ 目录??????????????????????????????????Ⅲ 1引言 .................................................................... 1 1.1课题研究意义及国内外研究状况 ........................................ 1 1.2主要研究内容 ........................................................ 2 1.3方案论证 ............................................................ 2 1.4 总体设计 ............................................................ 4 1.5 本章小结 ............................................................ 4 2系统硬件设计 ............................................................ 5 2.1 单片机最小系统 ...................................................... 5 2.1.1 STC89C52单片机功能简介 .......................................... 5 2.1.2晶振电路 ......................................................... 8 2.1.3复位电路 ......................................................... 8 2.2 水位检测电路设计 .................................................... 8 2.2.1信号采集电路设计 ................................................. 9 2.2.2信号调理电路设计 ................................................ 10 2.2.3接口电路设计 .................................................... 13 2.3人机接口电路设计 ................................................... 16 2.3.1数码管显示电路设计 .............................................. 16 2.3.2键盘电路设计 .................................................... 18 2.4执行单元电路设计 ................................................... 18 2.4.1TIP122达林顿管 .................................................. 19 2.4.2水阀驱动电路的设计 .............................................. 19 2.5电源电路设计 ....................................................... 20 2.6本章小结 ........................................................... 20 3系统软件设计 ........................................................... 21 3.1系统软件编译开发环境 ............................................... 21 3.2主程序流程图 ....................................................... 21 3.3初始化子程序设计 ................................................... 22 3.4显示子程序 ......................................................... 23 3.5A/D数据采集子程序 .................................................. 24 3.6液位超限、水阀异常报警子程序 ....................................... 25 3.7按键检测子程序 ..................................................... 26 3.8水阀开度控制方法的设计与编程 ....................................... 27 3.8.1水阀电感线圈电流与PWM 波占空比的关系 ........................... 27 3.8.2PWM脉冲输出的程序设计 ........................................... 29 3.9 本章小结 ........................................................... 30
III
4 系统仿真及调试 ......................................................... 31 4.1系统仿真及分析 ..................................................... 31 4.2 实物软、硬件调试及分析 ............................................. 32 4.3 本章小结 ........................................................... 34 总结 ..................................................................... 35 参 考 文 献 .............................................................. 36 致谢 ..................................................................... 37 附录一 电路原理图 ........................................................ 38 附录二 PCB布线图 ........................................................ 39 附录三 实物图 ............................................................ 40 附录四 系统程序代码 ...................................................... 41
IV
XXX大学本科生毕业设计(论文)
1引言
1.1课题研究意义及国内外研究状况
在日常生活中,存在很多需进行液位控制的地方。如家庭蓄水池、热水器水箱、饮水机和热水储蓄箱等等。传统的液位控制多采用包含手动控制方式的单回路控制,同时采用传统的指针式机械仪表来显示液位的当前值。这种液位控制在生产中一直占有主导地位,但随着生活水平的不断提高,人们对水箱液位控制系统提出了更高的要求,不仅要求有更直观、准确、稳定的液位控制系统,同时还要求在价格和人性化方面有所突破,这就要求我们开发新型既实用又价廉的液位控制系统。随着新型电子技术和计算机技术的广泛应用与普及,单片机控制系统以其控制精度高、性能稳定可靠、设置操作方便、造价低等特点被应用到液位系统的控制中来,同时该控制系统可以设计数字显示部分,增强了系统的可视性。基于上述特点,本文设计了以单片机为控制核心的多功能液位控制系统,它完成对整个系统的液位的控制及显示功能。开发出低成本、智能化的水箱液位控制器必定会受到广大消费者的欢迎[1]。同时,将该作品中使用到的控制方法加以延伸,应用到工业生产控制中去,会使生产提高效率、降低成本、使企业获得利润的增值。因此,对低成本、智能化的水箱液位控制系统的研究具有极其重要的意义。
近几十年来,控制系统己被广泛使用,在研究和发展上也己趋于完备,控制的概念更是应用在许多生活周围的事物,液位控制系统已经是一般工业界所不可缺少的,例如蓄水槽、污水处理厂等都需要液位的控制。使用液位控制系统来自动维持液位高度,工作人员可以轻易在操作室获如某个设备的储水状况,大大减低工作人员工作的危险性,同时更提高了工作的效率及简便性[2]。
近年来液位控制系统取得了很大的进步,出现了许多新型的液位控制仪,如超声波液位计、雷达液位计、光电液位开关等,这些控制器的出现大大提高了控制系统的精度,实现了控制系统的丰富多样性。
在自动控制理论和设计方法发展的推动下,国外液位控制系统发展迅速,美国、德国、日本等技术领先国家,生产开发出一系列性能优异、实用性强的液位控制器以及相应的仪器仪表,并广泛应用于生产生活的各个领域。这些先进的控制器不仅能实现各种复杂环境下的液位控制系统的控制,而且运用先进的算法,采用自适应控制、自校正控制、模糊控制、人工智能及计算机技术,使液位控制器的适用范围更加广。
反观我国,虽然液位控制系统在国内生产生活的应用十分广泛,但国内的液位控制器的发展水平仍然不如先进国家,差距仍然很大。国内液位控制器仍以常规的PID控制器为主,无法适于滞后、复杂、时变的液位系统控制。智能化、自适应的控制系统,国内还没有相关的成熟技术。我国相关控制器大量依靠国外的成熟技术,这些都是必须正视的现实。所以,发展先进的液位控制技术是我们必须重视的趋势。
随着科学技术的不断发展,人们对液位控制系统的要求越来越高,特别是高精度、智能化、人性化的液位控制系统是国内外液位控制系统发展的必然趋势。
第 1 页 共 48 页
1.2主要研究内容
目标:设计一个基于单片机的液位控制器。通过对液位的检测,能将水箱中的液位控制在设定的范围内,并且当液位过高或者过低时能对水阀进行控制。
研究内容:详细分析课题任务,设计电源电路,键盘电路,单片机系统,显示电路,执行器电路,报警电路,复位电路,时钟电路,A/D转换电路等系统。然后根据课题任务的要求设计出实现控制任务的硬件原理图和软件,并进行仿真调试。 技术要求:
(1)能在10CM-40CM范围内任务设定贮水水箱的上下水位,当水位下降到设定水位时进水阀自动起动工作,给水箱补水;当水箱水位上涨到设定水位的高度时,进水阀能自动停止,停止供水。
(2)能设定报警的液位上下限值,当水箱水位降到或升到设定的报警水位时,能发出声光报警。同时,能起动进水阀或排水阀进行自动调节。 (3)用LED显示器件显示水位高度,分辨小于等于1CM。
(4)当进、排水阀工作时如果无进水或水箱液位不变化报警。 (5)对水位的控制可以采用自动控制和手动控制两种。 1.3方案论证
(1)液位测量方案的选择
水箱液位的测量方式有多种,经过查阅相关资料,大致实现方式如下所述。 方案一:采用超声波模块实现水位的精确测量。
采用超声波模块测量的原理为:从超声波发生器发出超声波开始计时,超声波碰到水面后反射会来,由超声波接收传感器采集,接收到反射回来的时候停止计时,用声速乘以所记时间的一半就可以计算出水位的高度。超声波模块测距有很多优点,测量范围为2cm——4m;精确度为1cm,可以非常精确地测量出液位高度;温度特性非常好,几乎不受温度的影响;由于水位高度不会影响到超声波模块的元器件,所以线性度非常好;它是数字器件,操作简单等等。但是超声波模块价格昂贵,不适合投入到生产中去,故将其舍弃。
方案二:采用镍铬合金金属棒实现液位的检测。
方法如图1.1所示,将两根镍铬合金金属棒平行竖直悬挂在水箱中,金属棒相互分离,顶端引出两根导线和信号调理电路相连。其工作原理为,液面以下的金属棒相当于有一个固定阻值的电阻将它们相连,该电阻是由水产生的,露出水面的部分会随着水位发生变化,从而改变接入放大电路的电阻,完成液位的检测。由于镍铬合金电阻率较高,所以微小的液位变化会引起较大的电阻值的变化,提高了传感器的灵敏度。优点为,线性度好,温度特性好,材料便宜,制作生产简单。缺点为,由于水中含有杂质,水的阻值是不确定的、可变的,因而将影响精确度,故不采用此方法。
第 2 页 共 48页
镍铬金属棒 E-1(a) 原理图 (b)等效电路图
图1.1 镍铬探针式液位检测器的结构
方案三:采用水下压强传感器实现水位数据的采集。
水下压强传感器放置于水箱底部,随着水位的变化底部压强相应变化,压力元件将压强信号转换成电信号,再由AD转换芯片转换成数字量传进单片机。它的优点有:测量范围为0.05m——20m,量程宽;体积小,安装方便;寿命长、可靠性高、操作简单;精度高等特点,故采用此方案进行设计。
(2)液位检测单元信号调理电路信号放大器件的选择
微弱电压信号放大器要满足以下几个条件:a)放大器输入阻抗要足够大,即Ri要远远大于Rf,Ri表示运放输入阻抗,Rf表示反馈电阻。b)噪声和漂移要小于被测信号电流,即信噪比要高,否则输出的噪声电压或漂移电压将使输出的信号电压淹没或使输出信号难以辨别。c)偏置电流Ib足够小;失调电压Vos要足够小;温漂及噪声系数要尽量小。d)电路设计工艺:引线合理、屏蔽密封、电源及接地。
经查阅各方面资料,本设计选用OP07A运放作为信号放大元件。 (3)主控制器的选择
由于本设计对采样数据的处理速度和对执行单元的控制速度要求不高,可以选用廉价的低速中央处理器,方案有:
方案一:采用TI公司的MSP430F149。 优点:该芯片为16位机器,是TI公司推出的低功耗产品。有片上的12位A/D模块,可以直接使用,精度高、采样速度快可用于高精度的数据采样场合。该芯片资源丰富,方便开发和功能扩展。
缺点:该芯片为贴片式封装,会提高线路板的制作的成本,且价格比较昂贵,其中的许多资源对于本设计而言会应用不上,造成资源的浪费,致使生产的产品无法以价格优势走出市场。
方案二:采用STC89C52芯片。
优点:该芯片片上有外部中断资源、定时器资源、4组IO口已经可以满足设计的需要,且它的售价低廉应用广泛、可靠性较高,为DIP40封装,PCB板制造简单,完全可以应用于本设计。
缺点:芯片上没有A/D模块,需要外部扩展A/D转换器,功耗稍大。
第 3 页 共 48页
通过以上比较,虽然STC89C52芯片功耗稍大,但是本设计是为家用设备设计的,这点稍大的功率显得无足挂齿,经实际计算比较,总体上采用STC89C52芯片会降低生产的成本,故本设计选用方案二的STC89C52芯片作为中央处理芯片。 (4)末级执行单元的方案选择
方案一:采用继电器控制水阀的通断。
优点:电路简单,元件寿命长,较为可靠,造价低廉。 缺点:致使控制精度降低。
方案二:用PWM方法通过晶闸管控制水阀的开度大小。 优点:能实现精确控制,反应速度快。
缺点:执行单元电路复杂,元器件发热增加功耗,生产成本会稍微升高。 通过以上方案的论证,选用方案二会很好地提高系统的性能,故采用方案二作为本次设计的执行单元设计方案。 1.4 总体设计
如图1.2所示,电源部分可以采用线性变压器或者开关电源实现,经过整流滤波
图
之后输出DC 12V电压,它直接供给末级水阀驱动电路。从DC 12V经LM7805降压之后获得DC 5V电源,供给单片机和信号采集电路工作电压。
信号采集电路的温度传感器和液位传感器分别接入ADC0809的通道0和通道1,经ADC0809数模转换后的数据传入P1口。而由于传感器的输出信号比较微弱,须与信号调理电路放置在一起,以减少环境噪声干扰[3]。
显示部分的LED数码管和P0口相接。由于P0口的拉电流能力有限,必须在P0口接上拉电阻才能使数码管正常工作。
按键有P3.3引脚中断输入实现。这样可以提高按键的反应灵敏度,对比查询的方法效率较高。
水阀是靠IO口输出矩形波的PWM方法,再通过驱动器件控制水阀的开度大小,控制水阀的水流速度。 电子水阀
驱动电路ADC0809 STC89C52模数转换 LED数码管
水位传感器键盘 图1.2 系统功能模块框图
1.5 本章小结
本章主要介绍了水箱液位控制系统的设计背景、发展趋势和设计意义,以及根据任务书的设计要求,确定了各模块设计方案和最终的总体设计方案。
第 4 页 共 48页
2系统硬件设计
这里将对单片机最小系统、数据采集电路、人机接口电路和电源电路的硬件设计作详细的论述。最小系统目的在于能开机正常启动,且具有按键复位功能;数据采集电路将完成水位数据的采集任务并进行信号调理和模数转换;人机接口电路利用显示和键盘实现与系统交互控制的功能;电源电路将提供系统正常工作所需的稳定电压。 2.1 单片机最小系统
单片机最小系统是单片机能上电正常运行的硬件系统,由核心单片机和外围的晶振电路、上电复位电路构成。单片机是将微处理器、存储器和外围设备集成到一块芯片上形成的。单片机可以装入到各种智能化产品之中,所以又称嵌入式微控制器,它将在控制领域大显身手。此外,单片机还是一种集成电路,可以构成各种各样的应用系统,从微型、小型到中型、大型都可,52系列的单片机具有运算与寻址能力强,存储空间大,片内集成外设丰富,功耗低等优点,其中大部分兼容芯片都含有片内FLASH程序存储器,价格便宜,STC89C52是52系列的一种也是如今使用较多的一种[4]。所以在设计中选择STC89C52。
2.1.1 STC89C52单片机功能简介
STC89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用宏晶科技公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。STC89C52具有的片上资源简介: (1)STC89C52功能引脚分析
STC89C52单片机有40个引脚,采用双列直插(DIP)方式封装,其引脚图如图2.1所示。
2.1 STC89C52管脚分布
STC89C52单片机的40个管脚中有2个专用于电源的引脚。2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。按引脚功能分为4个部分叙述各引脚的功能。
第 5 页 共 48页
a)主电源引脚Vcc和Vss
VCC(40脚): +5V主电源正端 Vss(20脚):+5V主电源地端 b)外接晶振引脚XTAL1和XTAL2
XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚): 接外部晶振的另一端。在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。 c)控制信号或与其它电源复用引脚
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。
d)输入/输出引脚P0口、P1口、P2口及P3口
P0口(32-39脚):P0口是一个漏极开路的8位准双向I/0口。作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。P0口有三个功能: ①外部扩充存储器时,当作数据总线(D0~D7); ②外部扩充存储器时,当作地址总线(A1~A7)。③不扩充时,可做一般I/O口使用,但内部没有上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口(1-8脚):P1口是一个带内部上接电阻的准双向I/O口。P1的每一位能驱动4个LS型TTL负载。在P1口作为输入口使用时,应先向P1口锁存器(地址90H)写入全1,此时P1引脚由内部上接电阻接成高电平。
P2口(21-28脚):P2口是一个带内部上接电阻的8位准双向I/O口。P2口每一位能驱动4个LS型TTL负载。P2口有两个功能: ①扩充外部存储器时,当作地址总线(A8~A15)使用。 ②做一般I/O口使用,其内部有上拉电阻。
P3口:P3口是一个带内部上拉电阻的8位准双向I/O口。P3口每一位能驱动4个LS型TTL负载。P3口与其它I/O口有较大区别,每个引脚还具有专门功能,除了作
第 6 页 共 48页
为I/O口使用外(内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。P3口的第2功能见表1.1。
端口1、2、3有内部上拉电阻,当作为输入时,其电位被拉高,若输入为低电平可提供电流源;其作为输出时可驱动4个LS TTL。而端口0作为输入时,处在高阻抗的状态,其输出缓冲器可驱动8个LS TTL(需要外部的上拉电阻)。
表1.1 P3口第二功能
引脚 第2功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断) P3.3 INT1(外部中断) P3.4 T0(TIMER0的外部输入脚) P3.5 T1(TIMER1的外部输入脚) P3.6 WR(外部数据存储器的写入
控制信号)
P3.7 RD(外部数据存储器的读取
控制信号)
(2)STC89C52RC单片机的中断系统
计算机暂时中止正在执行的主程序,转去执行中断服务程序,并在中断服务程序完了之后能自动回到原主程序处继续执行,这个过程叫做“中断”。大体来说,采用中断系统改善了计算机的性能,主要表现在以下几个方面:
a)有效地解决了快速CPU与慢速外设之间的矛盾,可使CPU与外设并行工作,大大提高了工作效率。
b)可以及时处理控制系统中许多随机产生的参数与信息,即计算机具有实时处理的能力,从而提高了控制系统的性能。
c)使系统具备了处理数据的能力,提高了系统自身的可靠性。由此可见,“中断”已成为现代计算机的1种重要功能,而中断系统功能的强弱已称为衡量1台计算机功能完善与否的重要标志之一。
中断源——所谓中断源就是引起中断的事件,亦即是什么部件要求中断。STC89C52单片机提供了8个中断源:4个外部中断请求INT0、INT1、INT2和INT3,3个片内定时器/计数器T0、T1和T2的溢出中断请求TF0、TF1和TF2及串行口中断请求TI或RI(合为一个中断源)。
中断响应的条件——单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。这样,在每个机器周期内,单片机对所有中断源都进行顺序检测,并可在任1个周期的S6期间,找到所有有效的中断请求,还对其优先级进行排队。但是,必须满足下列条件:①无同级或高级中断正在服务;②现行指令执行到最后1个机器周期且已结束;③若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令时,执行完该指令且紧随其后的另1条指令也已执行完。单片机便在紧
第 7 页 共 48页
接着的下1个机器周期的S1期间响应中断。否则,将丢弃中断查询的结果。
中断响应的过程——单片机一旦响应中断,首先对相应的优先级有效触发器置位。然后执行1条由硬件产生的子程序调用程序,把断点地址压入堆栈,再把与各中断服务程序的入口地址送入程序计数器PC,同时清除中断请求标志,从而程序便转到中断服务程序。
2.1.2晶振电路
晶振电路是单片机的心脏,它控制着单片机的工作节奏。STC89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别为反相放大器的输入和输出端,外接晶振(或陶瓷谐振器)和电容组成振荡器,典型的晶振值取12MHz。振荡器产生的时钟频率主要由晶振的频率组成,电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2变大,f变小),其典型值为30pF,电路图如下所示。
图2.2 晶振电路原理图
2.1.3复位电路
如图2.3所示,上电复位电路由两个电阻、一个按键和一个电容构成。RC时间常数为t=1uF*10kΩ =0.01s=10ms>10us,满足了上电复位的高电平持续时间要求。上电时,电容没有电荷,相当于短路,RST引脚为高电平,10ms之后电容充电饱和,单片机复位,之后RST引脚被10k电阻拉到低电平。按键按下时,电容通过1k电阻放电,按键松开后类似于上电的过程,电容又经历一个10ms充电过程,使得RST引脚维持了10ms的高电平,单片机复位。
图2.3 上电复位电路原理图
2.2 水位检测电路设计
MPS20N0020D-S型液压传感器将水位转换成电压信号输出,但该信号在几十毫伏数量级别,必须经过信号调理电路进行放大才能供后级电路读取[5],再利用AD0809转换
第 8 页 共 48页
芯片进行数模转换,输出数据供单片机读取。 2.2.1信号采集电路设计
本设计采用MPS20N0020D-S型液压传感器检测液位,其基本参数如下:
表2.1 MPS20N0020D-S型液压计参数 参数 测量压力范围 最大过压能力 分辨率 工作电源 输入阻抗 输出阻抗 工作温度 存储温度 可接触介质 零偏电压
满量程输出电压 桥电阻 线性度
迟滞
零偏温度系数 灵敏度温度系数
参数值 3
3倍测量范围 0.0145 5
4—6 4—6 -40—85 -40—125
清洁、干燥、无腐蚀性气体 ±25 30—60 4—6 ±0.3 ±0.7 ±0.08 -0.21
单位 PSI PSI VDC KΩ KΩ ℃ ℃ mV mV KΩ %F.S. %F.S. %F.S./ ℃ %F.S./ ℃
备注 20KPa
100Pa
-40°F--+185°F 40°F--+257°F
液压传感器内部结构及引脚分布如图2.4所示。
(a)内部结构 (b)引脚分布图
图2.4 MPS20N0020D-S型液压计
由图2.4知,该液位传感器由四个电阻构成,将6脚和1脚接在一起就形成了一个电阻电桥。从5脚和2脚输入5V电压,3脚和1-6脚可作为信号的输出。水位的变化会影响内部电阻阻值的变化,进而引起电桥输出电压的变化。
该液位传感器的工作电路搭建非常简单,将1脚和6脚连在一起后,只需将2脚连
第 9 页 共 48页
接+5V,5脚接地,那么3脚和1-6脚就作为信号的输出,其电路图如图2.5所示:
图2.5 液位传感器工作电路原理图
2.2.2信号调理电路设计
液位传感器的量程为2m水柱,满量程输出为30—60mV,由于要求检测的水位在40cm之内,所以液位传感器的输出电压最大值在7—15mV之间,不能直接输入ADC0809进行数模转换,中间需要信号调理电路将电压信号转换到0到5V之间[6]。 (1) 运算放大器OP07A简介
OP07A是一种低噪声,非斩波稳零的双极性运算放大器。由于OP07A具有非常低的输入失调电压(最大为25μV),所以OP07A在很多应用场合不需要额外的调零措施。OP07A同时具有输入偏置电流低(为±2nA)和开环增益高(为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07A特别适用于高增益的测量设备和放大传感器的微弱信号等方面。
足够宽的输入电压范围(最少±13V)与高达110dB的共模抑制比和高输入阻抗的结合,在同相电路阻态中提供了很高的精度,即使在很高的闭环增益下,也能保持极好的线性和增益精度。
失调和增益对时间或温度变化的稳定性也是极好的。不加外调零措施的OP07A的精度和稳定性,即使在高增益下也能使OP07A成为一种新的仪器用和军用的工业标准。
OP07A适用于在-55℃到+125℃的整个军用范围内,其主要性能特性如表2.2所示。
表2.2 OP07A主要性能参数
参数名称 输入失调电压 输入偏置电流 输入失调电流 开环增益
频率响应、截止频率 转换速率 OP07A 10uV 700pA 300pA
Min:150 Max:1500 0.6MHz 0.3V/us
第 10 页 共 48页
表2.2(续) OP07A主要性能参数
参数名称
输入阻抗 差模 共模 共模抑制比CMRR 共模输入电压范围 输出电压摆幅
电源电压 正常工作电压 最低工作电压 最高工作电压
OP07A 80MΩ 200GΩ 123dB ±14V ±12V ±15V ±2.0V ±22V
OP07A具有上述的众多优异特性,因此,它特别适合于作数据采集系统中的有源滤波器、精密仪表放大器高质量的积分器与高输入阻抗的放大器等。采用一个OP07A就能单独组成具有高输入阻抗,高性能的差动放大器,它的引脚分布如图2.6。
图2.6 OP07A的功能引脚分布 (2)仪表放大器概述
为了解决抑制共模输入电压与增益调节和阻抗匹配之间的互相牵连和矛盾,提出了仪表放大器(又称为测量放大器)[7],其原理如图2.7所示,可以很容易地看出U1和U2之间的直流阻抗接近无穷大,满足了直流电桥的阻抗匹配要求。
仪表放大器由3个运算放大器组成,可将其分为两级来进行分析。前级由两个同相放大器组合而成,输出分别是U3和U6;后级由A3和R4、R5、R6、R7组成,后级的输入为U3和U6,后级的输出为U0。
图2.7仪表放大器电路原理图
第 11 页 共 48页
A1和A2按理想放大器分析,可得到U4=U1,U5=U2的结论,则R3上的电流为:
U1?U2 I?………….…….………………….….……(1)
R3并进一步推得
(U1?U2)R1U3?U1?…………………………..……(2)
R3(U1?U2)R2U6?U2?………………………….……(3)
R3若定义:
Udif?U1?U2,则
U3?U6?Udif?(1?R1?R2)…………………...……(4) R3U3-U6是后级的差分输入电压,若保证R4=R6,R5=R7,则后级为标准的差动放大器,其输出为:
R5R1?R2R5[8]
Uo?(U3?U6)??Udif?(1?)?….…(5)
R4R3R4在仪表放大器的电路设计中取R2=R1,R4=R5则仪表放大器的输出为:?
2R1Uo?Udif?(1?)…………………………….…….(6)
R3如果R7的接地端(参考电位端)的电位为Ur,则上述推导中的Uo换为Uo-Ur,
上述推导仍然成立。
由仪表放大器的输出表达式知调节R3即可方便地调节仪表放大器的增益,集成化的仪表放大器大多采用这样的设计用外接的R3来调节仪表放大器的放大倍数。 仪表放大器的输入失调:可以证明,在前级的A1和A2参数匹配,即它们的外部电路参数相同且其电气特性(包括失调参数)也相同的情况下,两个输入端的失调所导致的输出是互相抵消的,尤其是在集成仪表放大器中,A1和A2用相同工艺制作,所以集成的仪表放大器的输入失调很小。A3组成的后级放大器是一个标准的差动放大器,其产生的输出误差失调在增益为1的情况下也是很小的。
仪表放大器的共模干扰:通过对电路的分析可以知道,在前级的A1和A2参数匹配,两个输入端的共模干扰信号在R3上不产生电流,因此也不会得到放大,这就是说在输出电压中不会出现共模干扰信号的影响,说明仪表放大器对于共模干扰信号具有很强的抑制能力。
(3)信号调理电路设计
根据上面对仪表放大器的论述,设计出的液位传感器信号调理电路如图2.8所示:
第 12 页 共 48页
图2.8 液位传感器电路原理图
水压传感器的满量程输出为30mv-60mv,水箱水位为40cm时输出电压在7—15mV之间,要放大到5V供AD采样就要对此电流进行700倍左右的放大。若最大输出电压按照7mV计算,那么放大倍数可以这样计算:第一级将输入信号放大7倍左右,第二级再对电压放大100倍。第一级的电阻VR3可调,可以调整增益。经放大后的信号大致为:
7mV?7?100?4.9V………………………………………(7)
再对增益进行调整即可将电压放大到适合的档位。 经过上面的论述,根据式(6),最终选取出的元件参数如图2.8所示,R1=R2=50kΩ,R5=R7=100kΩ,R3=50kΩ可调,R4=R6=1kΩ。结合上述增益计算方法,若R3取16kΩ,则可计算该放大电路的增益为
1?2?50k/16k)?(100k/1k)?725(增益可调)……...(8) (2.2.3接口电路设计
单片机处理的数字信号,而信号调理电路输出的为模拟量,单片机不能直接进行处
理,中间需要数模转换电路,将模拟量转换为数字量。
(1) ADC0809芯片功能简介
ADC0809是8路模拟信号的分时采集模数转换芯片,片内有8路模拟选通开关,以及相应的通道锁存电路,其转换时间为100μs左右。
ADC0809的引脚分布如图2.9所示,对其主要信号引脚的功能说明如下:
·IN0-IN7——模拟量输入通道。
·ALE ——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器
中。
·START ——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯
片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST。
·A、B、C——地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,
ADDB和ADDC。其地址状态与通道对应关系见表2.3。
第 13 页 共 48页
·CLK ——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因
此有时钟信号引脚。通常使用频率为500KHz的时钟信号
·EOC ——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信
号即可作为查询的状态标志,又可作为中断请求信号使用。
·D0-D7 ——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0
为最低位,D7为最高
·OE ——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
·Vcc —— +5V电源。
·Vref ——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V)。
图2.10 ADC0809内部逻辑结构
图2.9 ADC0809引脚图
Vref+ Vref-
第 14 页 共 48页
如图2.10所示,图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表2.3为通道选择表。
表2.3 通道选择表
C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 被选择的通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送,为此可采用下述三种方式。 a)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 b)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。 c)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以RD信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。 设计中采用的定时传送方式。 (2)AD0809接口电路设计
第 15 页 共 48页
附 录 四
系 统 程 序 代 码
#include
sbit WATER_IN=P2^3; //进水阀 sbit WATER_OUT=P2^4; //排水阀
sbit WARMING=P2^6; //超限报警指示灯 sbit UNEXPECT=P2^7; //异常报警指示灯 sbit BUZZ=P3^4; //蜂鸣器
/*数码管位选信号*/
sbit bit_0=P2^0; sbit bit_1=P2^1; sbit bit_2=P2^2;
/*ADC0809控制引脚*/ sbit STA=P3^1; sbit ALE=P3^0;
bit buzz_1=0,buzz_2=0; //报警标志
/*水阀状态标志*/ bit flag1=1;
bit in_flag,out_flag;
const LED[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //数码管码值 char key=0; //按键键值 char state=0; //系统状态
char high_level=50,low_level=5,current_level=0,set_level=30,store=0; //系统液位参数
/*数码管显示变量*/
char s1=0,s2=3,s3=0,s4=0,s5=0;
/*软定时变量*/ char ct=0,ct1=0; char nt=0,nt2=0;
第 41 页 共 48页
unsigned char result=0,tim=0; //ADC转换数据
char sen_data;
unsigned char temp_data=29;
char level_buff1=0,level_buff2=10,sum=10; /******函数声明******/ char Adc_fun();
void Reflash(char x);
/******初始化函数******/ void Init() { EA=1; EX0=1; IT0=1; TMOD=0x21; TH0=0x3c; TL0=0xaf; TH1=0xd8;
TL1=0xef; ET0=1; TR0=1; //启动定时器0,进行AD转换 ET1=1; TR1=1;
P3=0x0f;
WATER_IN=0; //关进水阀
WATER_OUT=0; //关排水阀
WARMING=0; //关超限报警指示灯 UNEXPECT=0; //关异常报警指示灯 BUZZ=0; //关蜂鸣器 ALE=0; STA=0; BUZZ=1;
第 42 页 共 48页
}
/******延时1ms****/ void Delay(char i) {
char j=0; while(i--) for(j=0;j<112;j++);
}
/******简单延时******/ void Delay1(char i) {
char j=0; while(i--) for(j=0;j<10;j++); }
/******AD采用函数******/ char Adc_fun() { char dat=0; ALE=1; Delay1(1); STA=1; Delay1(1); ALE=0; Delay1(1); STA=0;
Delay(1); P1=0xff;
dat=P1; dat=dat>>1;
第 43 页 共 48页
return dat; }
/******主函数******/ void main() {
Init(); s3=state;
Delay(20); //等待第一次AD采样结束 while(1) {
/*水位过低,进水*/ if((flag1==1) && (set_level-sen_data)>5){in_flag=0;out_flag=1;flag1=0;} /*水位过高,排水*/ if((flag1==1) && (sen_data-set_level)>5){in_flag=1;out_flag=0;flag1=0;} /*水位适中,关闭水阀*/ if((flag1==0) && (in_flag==0) && (set_level<=sen_data)){in_flag=1;out_flag=1;flag1=1;}
if((flag1==0) && (out_flag==0) && (set_level>=sen_data)){in_flag=1;out_flag=1;flag1=1;}
if(state==0) //处于自动控制模式 {
/*水位超限报警处理*/
if((sen_data>=high_level) || (sen_data<=low_level)) {WARMING=0;buzz_2=1;} else {WARMING=1;buzz_2=0;}
if((buzz_1==1) || (buzz_2==1))BUZZ=0; else BUZZ=1; } /*数码管扫描*/ bit_0=0; bit_1=0; bit_2=0; P0=LED[s1]; Delay(3); bit_0=1; bit_1=0; bit_2=0; P0=LED[s2]; Delay(3);
第 44 页 共 48页
bit_0=0; bit_1=1; bit_2=0; P0=LED[s3]; Delay(3);
bit_0=1; bit_1=1; bit_2=0; P0=LED[s4]; Delay(3);
bit_0=0; bit_1=0; bit_2=1; P0=LED[s5];
Delay(3); } }
/******显示数据处理函数******/ void Reflash(char x) { s1=x; s2=x/10;
}
/******按键中断******/ void INT_EX0() interrupt 0 {
P3=0xf0; key=P3 & 0xf0; P3=0x0f; b1=0x01 & (key>>5); b2=0x01 & (key>>6); b3=0x01 & (key>>7);
if(b1==0) {
state=(state+1) & 0x03; s3=state;
第 45 页 共 48页