首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 基于单片机水位控制系统剖析

    时间:2020-11-13 12:52:56 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:水位 单片机 控制系统

     目

     录

     摘要-- - -- - - - - - - - - - - - - - - - - - - -- -- - - - - - - - - - - - - - - - - -- - - 2 2

     Abstract -- - -- - - - - - - - - - - - - - - - - - - - - -- - -- - - - - - - - - -- - -

     3 3

      前言- -- -- - - - - - - - - - - - - - - - - - - - - -- - -- - - - - - - - - - - - - - - - -

     4 4

      1 1 . 液位测量技术概括- - - - - -- - -- - - - - - - - - - - - - - - - - - - - - - -- 5 5

     1.1 机械浮子类液位计- - - - - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5 1.2 电子类液位计

      - -- -- - -- - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 1.3 热学式液位计 - - - -- - -- - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 6 1.4 雷达液位计 --- - - -- - -- - ---- -- - - - - - - - - - - - - - - - - - - - - - - - - - -- 6 1.5 同位素/放射性液位计- - - -- - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - 6 1.6 液压类液位计- - - -- - -- - - -- -- - - - - - - - - - - - - - - - - - - - - - - - - - -- - 6 1.7 光学液位计- - - -- - -- - - -- --- - - - - - - - - - - - - - - - - - - - - - - - - -- - - - 7 1.8 超声波液位计- - - -- - -- - - --- - - - - - - - - - -- - - - -- - - - - - - -- - - ---- - 7

     . 2.

     设计的基本任务和计划- - - - --- - -- - - - - - - - - - - - - - - - - - - - -- 8 8 2.1 基本功能- - - - - -- - - - -- - -- -- - - - - - - - - - -- - - - -- - - - - ---- - -- - - - -8 2.2 超声波液位计工作原理- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - 8 2.3 主要计划- - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - -- - - - - - 8 3 3 . 总体方案设计-- - -- - - - - - - - - - - -- - -- - - - - - - -- - - - - - - - - -- 9 9 3.1 设计思路-- - - - - - - -- - - - - - -- - - - - - - - - -- - - - -- -- - - - - - - -- - - - - 9 3.2 方案设计-- - - - - - - -- - - - - - -- - - - - - - - - -- - - - -- -- - - - - - - -- - - - 10 4 4 . 硬件设计-- - -- - --- - - - - - - - - - - - - - - - - -- - -- - - - - - - - - - - - 11

     4.1 单片机的选用与简介- - - - - -- - - - -- - - -- - - - - -- - - - - -- - - - -- -- --11

     4.2 超声波模块- - - - - -- - - - -- -- - --- - -- - - - - - -- -- - -- - - - -- -- - - - - -13 4.3 液晶显示模块- - - - - -- - - - -- -- - - - - - - -- - -- - - - -- - - - -- -- - - - - -15 4.4 继电器控制模块- - - - - -- - - - - - -- - - - - - - -- - - - - -- - - - -- -- -- - - -16 5 5 . 软件设计-- - -- - - - - - - - - - - - - - - - - - - ---- - -- - - - - - - - - - -- 17

     5.1 水位控制系统程序流程图- - - - - -- - - - - - -- -- - - - - -- - - - - -- - -- - 17 5.2 水位控制系统主程序- - - - - -- - - - -- - - -- - - - - -- - - - - -- - - - -- - - -18 6 6 . 测试和实验-- - -- - - - - - - - - --- - -- - - - -- - --- - -- - - - - - - - - -1 18 8

     结语-- --- - -- - - - --- - -- - - - - - - - - - - - - - - - - - - -- -- - - - --- -- - - 19 参考文献- - --- - -- - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - 20 附录-- - -- - - - - - - - - - - - - - - - - - - - --- - -- - - - - - - - - - - - - - - - - 21 摘

     要 本文采用 AT89C52 单片机系统实现了水位的自动控制,设计出一种低成本、高实用价值的水位控制系统。该系统具有水位检测、水位高度液晶显示以及自动加水放水等功能。本设计过程中主要采用了传感技术、单片机技术以及弱电控制强电的技术。本设计传感器使用了超声波模块。此系统具有易控制、工作可靠、测量精度高的优点,可实时监控液位。并采用 52 单片机系统控制整个电路的信号处理,采用光电耦合和继电器来实现弱电控制强电来实现加水系统的自动控制。它能自动完成水位检测、上水停水排水的全部工作循环,保证液面高度始终处于较理想的范围内,它结构简单,制造成本低,灵敏度高,节约能源显著,是用于各种高层液体储存的理想设备 。

      关键词:单片机;超声波模块;自动监测;液晶显示;自动控制

      Abstract

     AT89C52 microcontroller system using cooling towers to achieve the level of automation, design a low cost and high practical value of the water tower water level controller. The system has the water level detection, low water high water level alarm and automatic functions such as adding water. The design process mainly uses the sensor technology, single chip technology, optical technology and the weak control the strong police power technology. Detection system using simple system for detection of copper needles, resulting in the low and high sensitivity. 52 SCM system control by using the circuit

     of signal processing and the use of optical coupling and weak control relays to achieve strong power to realize automatic control of water systems. It can automatically detect the water level, light alarm, ShengShui, all the work without water cycle, to ensure better surface height is always within the context of its structure simple, low cost, high sensitivity, significant energy is used in various kind of ideal equipment for high-level liquid storage.

     Key words:

     :MCU;Ultrasonic Module;Automatic monitoring;LCD;Auto-Control

     基于单片机的水位控制系统 前

     言

     传统的液位控制绝大多数是人工控制,造成了人力资源的浪费,同时安全性可靠性都不高。现代工业生产正处于一个由劳动密集型、设备密集型向知识密集型转变的过程。传统的控制方式存在控制精度低、能耗大的缺点,而自动控制原理, 依据用水量的变化自动调节系统的运行参数,保持水压恒定以满足用水要求, 从而

     提高了供水系统的质量。而且成本低,安装方便,经过多次实验证明,灵敏性好,是节约水源,方便家庭和单位控制水塔水位的理想装臵。本设计采用超声波检测系统:超声波液位检测系统,利用了超声波传感技术的原理,采取一种非接触式的测量方法,能够实现对工业系统中液位或物料位的检测;而且超声波具有很好的指向性和束射特性,人耳听不见,一般不会对人体造成伤害检测工程方便、迅速、易做到实时控制,而且测量精度又能达到工业实用的要求,所以有广泛的工业应用前景。

     1 1 . 液位测量技术概况

     液位传感器是指检测液体高度信息的仪器,液位测量技术在工程领域有着极为广泛的应用。在一般的生产工艺加工过程中,通常只需要对物料的表面位臵进

     行记录和储存,以作为确保生产工艺、安全等方面的需要。随着生产自动化程度的不断提高,必须首先对液位测量数据进行控制与调节,以保证自动化生产能够自动控制在最佳状态。在现代化的企业生产过程中,采用计算机控制系统对生产进行各种综合控制与管理的普及,控制系统的智能化、统一化,要求测量的对象要广、测量的精度要高、可靠性要好、实用性要强、且适用于特殊测量环境等,这些对液位测量技术也提出了更高的要求。尤其是当液面具有波动和存在气泡,或液面高度随时间改变的动态测量,或被测介质具有粘滞性、导电性,或需要考虑容器的密封性以及介质是否含有腐蚀物、毒性和易爆性等情况下,选择合适的液位测量技术就显得尤为重要。

     目前国内外工业生产中普遍采用的液位测量方法有 19 种以上,主要有以下几类: 1 1 .1 机械浮子类液位计

     测量原理是利用传动装臵把与液位同高度的浮子高度信息转换成脉冲信号或连续信号,转换器是一些机械舌簧、磁铁、电子或光电设备。此类液位计可以进行连续测量,其问题是积聚在传动机械臂上的污物(如水垢沉积)会限制浮子运动,从而产生故障。

     1 1 .2 2

     电子类液位计

     测量原理是把液位的变化转化为电气参数的变化,利用一定的测量电路将电参数检测出来,从而达到测量液位的目的。其中最常用且最成熟的是电容式液位传感器。

     电容式液位计它是利用空气和液体作电容器两极极板间的电介质,将液位变化转换成静电电容变化,用电子学方法测量电容值,从而探测液体高度信息。它

     结构简单,精度较高,而且量程广,适合于测量各种介质(导电介质、非导电介质)的液位,但是要求液体具有相同、稳定的介电常数,需要有温度的补偿。尤其用长电缆连接时,对电缆中的干扰和寄生电容很敏感,精度较差,且对导电介质或粘性介质,误差较大、易受干扰,严重影响测量结果。

     电阻式液位计探测器在空气中的阻值要比它浸在液体中的阻值大得多,通过电子学方法测量液体容器底部与顶部之间的电阻,从中可探知液位信息。其测量精度受液体污染情况的影响较大,探针的污染和沉积物,会导致错误的输出,在直流工作时会产生电解,响应速度慢。

     1 1 .3 3

     热学式液位计

     由热敏电阻发出的信号可用来指示这类元件是否浸在液体中。它结构小,适用于圆筒容器、玻璃柱、管道等,但这种方法仅能进行点测量,而不能用于液位的连续测量。

     1 1 .4 4

     雷达液位计

     雷达传感器就是利用发射一反射一接收的原理来测量距离的,因此可用于有毒、有害的恶劣环境下。雷达液位传感器的传输信号是一种特殊形式.的电磁波,其物理特性与可见光相似。雷达信号是否可以被反射取决于被测介质的导电性和被测介质的介电常数两个因素。所有导电介质都能很好地反射雷达信号,导电性不太好的介质也能被很准确地测量。雷达波不易受干扰,巨能穿透塑料容器或玻璃容器进行测量,无需在容器上开孔,能实现非接触测量,即使在飞灰、粉尘强烈并有很强旋涡的环境下也能进行准确测量。然而雷达传感器的测量信号运行时间极短,这给信号分析处理提出了极高的要求,造成它的价格昂贵、技术实施困难。

     1 1 .5 5

     同位素/ / 放射性液位计

     它是利用放射性同位素射线(如 a 射线、p 射线、Y 射线)的穿透和反射能力,当 a 射线、p 射线、Y 射线到达被测液体时,通过检测其透射或反射射线信号的强度来达到测量液位的目的。

     射线的强度会随液位的高度变化而变化,在放射线辐射源与检测器之间有吸收物质时,检测器的输出与液位的高度有关,通过对被测物质吸收能量大小的检测,再经过信号转换,即可得出被测液位的高度。

     由于放射性射线本身的特点所决定,它可以用于腐蚀性、有毒性、大粘性和易燃易爆的场合。而且介质对丫射线的吸收只与介质密度有关,因此它可以测量不同密度的液体分界面、气体与固体或液体与固体的分界面。但射线易受到衰减,检测信息的能量易于损失,测量精确度不理想,有辐射作用,对人体有害。

     1 1 .6 6

     液压类液位计

     液压类液位计是利用液面高度变化时容器底部或侧面某点上的压力也随之而变化的原理来设计的。在测量开放的容器时,大多采用直接测量底部某点压力来测量。这类液位传感器的精度主要受到压力表精度的限制,同时还要求被测液体的密度是已知的,而且要求液体的密度要恒定不变。

     1 1 .7 7

     光学液位计

     光学液位计主要是光纤液位传感器,它结合了光纤作为敏感器件的优点,尤其是在复杂的应用场合,测量现场全光无电,安全性能好,同时调制方法多种多样,是一种新型的液位传感器。

     光学液位计,它利用浮子的磁耦合原理来设计,经光码盘对光纤的检测,再经由放大整形电路,以及光电转换来形成规则的脉冲信号,最后由单片机来实现

     液位显示。本文主要采用这个方案来设计。此方案设计比较简单,测量精度比较高,也非常适合目前我国的生产力状况。

      1 1 .8 8

     超声波液位计

     超声波液位传感器发展很快、应用也很广泛,常用于测量明渠液位及开口容器内液位。由超声换能器发射的超声脉冲经空气在被测介质上反射,再返回接收换能器,测量该超声脉冲往返时间,就能得到超声换能器辐射面到被测液面的距离。根据换能器安装高度,就能得出液位高度。本设计采用的就是本类液位计。

      . 2. 设计的基本任务和计划

     2 2 .1 基本功能 本设计是采用 AT89C52 单片机为核心芯片,及其相关硬件来实现的水体液位控制系统,在用液位传感器测液位的同时, CPU循环检测传感器输出状态,并用1602

     液晶显示器显示液位高度,检测液位数据,实施液位控制。当水体液位低于用户设定的值时,系统自动打开进水阀上水;当水位到达设定值时,系统自动关闭进水阀;若水位超过设定上限值,则打开排水阀放水,使水位一直保持在理想状态。

     2 2 .2 2

     超声波液位计工作原理 超声波液位仪的基本工作原理是利用超声波传播时间和传播速度来确定液面距离。即所谓的脉冲——回波方式。

     由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波液位仪专用集成电路都是只有厘米级的测量精度。

     2 2 .3 3 主要计划

     本设计主要完成以下几点工作:

     (1)检测电路硬件的设计:完成检测所需光电信号转换电路的设计及探测机理的分析; (2)显示电路硬件的设计:完成以单片机等为核心的信号处理及显示硬件电路的设计; (3)系统软件设计采用 C 语言完成相关信号处理运算等软件的设计。

     3 3. . 总体方案设计

     1 3.1 设计思路

     图 3–1

     超声波

     科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹。我们人类耳朵能听到的声波频率为 20~20000Hz。当声波的振动频率大于 20KHz 或小于20Hz 时,我们便听不见了。因此,我们把频率高于 20000 赫兹的声波称为“超声波”。通常用于医学诊断的超声波频率为 1~5 兆赫兹。所谓超声波就是指频率高于 20kHz 的机械波,一般由压电效应或磁致伸缩效应产生;它沿直线传播,当频率越高,绕射能力越弱,但反射能力越强;它还具有强度大、方向性好等特点,为此,利用超声波的这些性质就可制成超声波传感器。超声波传感器是利用超声波在超声场中的物理特性和各种效应研制而成的传感器。超声波传感器按其工作原理可分为压电式、磁致伸缩式、电磁式等,其中以压电式最为常用。压电式超声波传感器常用的材料是压电晶体和压电陶瓷,它是利用压电材料的压电效应来工作的:逆压电效应将高频电振动转换成高频机械震动,从而产生超声波,可作为发射探头;而正压电效应是将超声波振动转换成电信号,可作为接收探头。

     超声波测距的原理主要是由超声波传感器的发射探头发射超声波,当超声波遇到障碍物时,会被反鼽利用单片机记录超声波发射的时间和接收到回波的时间,

     根据当前环境下超声波的传播速度,即可通过公式 S=C*[T/2](S 为被测距离,C为空气中声速,T 为回波时间,1r=_Tl+T2)计算出超声波传播的距离,也就得到了障碍物离测试系统的距离。我们设计了一个简易的水位探测传感器用来探测三个水位,即低水位,正常水位,高水位。低水位时,系统自动打开进水阀上水,液晶显示 In!!;正常范围的水位时,水阀均关闭,液晶显示 Off!;高水位时,系统自动打开排水阀放水,液晶显示 Out!。

     本设计过程中主要采用了传感技术、单片机技术以及弱电控制强电的技术。

      2 3.2 方案设计

      本方案采用单片机89C52作为我们的控制芯片,主要工作过程是当高塔中的水在低水位时,系统自动打开进水阀上水,液晶显示 In!!;正常范围的水位时,水阀均关闭,液晶显示 Off!;高水位时,系统自动打开排水阀放水,液晶显示 Out!。

      图 3–2

     方案方框图

     本方案中使用了单片机芯片和超声波传感器,单片机控制和超声波测距技术是信息时代用于精密测量的技术。此系统使用过程中采用稳压电路能够准确地把输入的电平送给单片机不会产生误判的情况,且能够非常方便地设计显示系统。

      4 4. . 硬件设计

     1 4.1 单片机的选用与简介

     我们选用 STC89C52 作为我们的控制芯片其引脚图如下。

      图 4–1 STC89C52 引脚图

     STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有

     8K 在系统可编程 Flash 存储器。STC89C52 使用经典的 MCS-51 内核,但做了很多的改进使得芯片具有传统 51 单片机不具备的功能。在单芯片上,拥有灵巧的 8 位CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

     具有以下标准功能:

     8k 字节 Flash,512 字节 RAM, 32 位 I/O 口线,看门狗定时器,内臵 4KB EEPROM,MAX810 复位电路,3 个 16 位定时器/计数器,4 个外部中断,一个 7 向量 4 级中断结构(兼容传统 51 的 5 向量 2 级中断结构),全双工串行口。另外 STC89C52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T 可选。

     STC89C52 各引脚功能:

     概述:STC89C52 为 40 脚双列直插封装的 8 位通用微处理器,采用工业标准的 C51 内核,在内部功能及管脚排布上与通用的 8XC52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主 IC 内部寄存器、数据 RAM 及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号 IR 的接收解码及与主板 CPU 通信等。主要管脚有:XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外接 12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和 VSS(20 脚)为供电端口,分别接+5V 电源的正负端。P0~P3 为可编程通用 I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为 N1 功能控制端口,分别与 N1 的相应功能管脚相连接,13 脚定义为 IR 输入端,10 脚和 11 脚定义为 I2C 总线控制

     端口,分别连接 N1 的 SDAS(18 脚)和 SCLS(19 脚)端口,12 脚、27 脚及 28 脚定义为握手信号功能端口,连接主板 CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

     VCC:供电电压。

     GND:接地。

     P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8 个 TTL 门电流。当 P0 口的管脚第一次写“1”时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。

     P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4 个 TTL 门电流。P1 口管脚写入“1”后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程和校验时,P1 口作为第八位地址接收。

     P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2口在 FLASH 编程和校验时接收高八位地址信号和控制信号。

     P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3

     口作为 AT89C51 的一些特殊功能口,管脚 备选功能 P3.0 RXD(串行输入口)

     P3.1 TXD(串行输出口)

     P3.2 /INT0(外部中断 0)

     P3.3 /INT1(外部中断 1)

     P3.4 T0(计时器 0 外部输入)

     P3.5 T1(计时器 1 外部输入)

     P3.6 /WR(外部数据存储器写选通)

     P3.7 /RD(外部数据存储器读选通)

     RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。

     ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的底位字节。

     在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上臵 0。此时, ALE只有在执行 MOVX,MOVC 指令是 ALE 才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,臵位无效。

     /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA / VPP:当/EA 保持低电平时,则在此期间外部程序存储器

     (0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。

     XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

     XTAL2:来自反向振荡器的输出。

     2 4.2 超声波 模块

     超声波液位仪是基于反射超声波的测距原理来确定液位,因此,它在工作时 为了能够接收到回波信号,就需要发射出具有一定强度的超声波信号,并且发射 部分为超声波探头提供一个具有一定频率的电压信号。

     两片十进制计数器 74LS90 和 74LS00 触发器组成的超声波发射电路,如图 3.6。由于单片机使用 12MHz 时钟晶体,经过 89C51 单片机内部的 6 分频,发出 ALE 信号为 2MHz,要产生 40kHz 的信号,需要对 ALE 信号进行 2000/40=50 分频,74LS90 不仅是十进制计数器,也可以将两片 74LS90,实现对 ALE 信号 50 分频的效果,当单片机的 P1.5 管脚发射的时间信号脉冲处于高电平时,使 74LS90 发出的 40kHz 频率通过 74LS00,经过高低电平转换,传到发射探头,引起共振,驱动超声波探测器发出超声波,如下图

      图 4-2

     超声波液位仪发射电路

     图 4-3 超声波传感器实物图 超声波接收电路设计由反向比例运算电路,滤波电路和阈值电压比较三部分 组成,超声波在传播的传播中不可避免地衰减,再经过物体表面的吸收、散射后, 反射回来的回波信号已经极其微弱,要想测到回波,必须对其进行滤波放大,放 大调节后的信号作为输入信号,变成直流电平。

     超声波液位仪接收部分的任务是通过适当的滤波将超声波探头接收到的微弱

     信号经滤波放大和检波后送至信号处理器。它的主要组成部分是:滤波放大、放大调节、检波和信号处理。再和电压比较器设定的阈值电压进行比较,获得低电平信号,传给单片机的外中断,单片机内的计数器停止计数。从而得到超声波从发射到返回时间,最后把时间量与声速相乘,转换为距离量,显示值直接为距离值。

     . 4.3 3 液晶显示 模块

     液晶显示模块已作为很多电子产品的显示器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。下图为 1602 液晶显示器实物图

      图 4-4

     1602 字符型液晶显示器 单片机系统中应用晶液显示器作为输出器件有以下几个优点。

     显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。

     数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

     体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

     功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动 IC上,因而耗电量比其它显示器要少得多。

     液晶显示的原理是利用液晶的物理特性, 通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA 移动通信工具等众多领域。

     . 4.4 4 继电器控制模块

     继电器是一种电控制 器件 ,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有 控制系统 (又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制 电路 中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。本设计中通过继电器实现+5V 直流电控制+12V 直流电,达到开关水阀的作用。

     常用继电器如下图:

     图 4 - 5 常用继电器

     5 5. . 软件设计

     1 5.1 水位控制系统程序流程图

     根据设计方案以及电路特点我采用 C51 语言编写单片机程序画出程序流程图如下图:

     图 5-1 程序流程图

      2 5.2 水位控制系统主程序

     本设计采用了 STC89C52 单片机,用单片机 C 语言实现软件编程。整个系统软件功能的实现可以分为主程序、子程序、中断子程序几个部分组成。整个系统的流程如上图所示,在初始化以及调用激发超声波模块程序后 T1 开始计时,等待接收信号完成后,激发外部中断 0,响应中断子程序,T1 计数停止,用公式S=t*340/2*1000mm 计算出距离,C 语言主程序详见附录。

      6 6. . 测试和实验

     本系统完成后需要对其进行测试以确定其工作情况及稳定性,经测试:液晶显示模块、进出水阀、继电器均可正常工作;超声波测距模块存在轻微误差,但误差在可接受范围,并不影响对水位进行测试和使用。经实际试验,本系统可完成对水位的自动控制。

     结语

     水箱供水的主要问题是箱内水位应始终保持在一定范围,避免“空箱”、“溢水”现象发生。本文采用超声波传感器测距,单片机系统控制,使水箱内水位保持恒定,以保证连续正常地供水。实际供水过程中确保水位在允许的范围内浮动,很好的解决了上述问题,达到智能控制的目的。本系统实现后对测量范围在0.10—7.00 m 内的液体能进行有效的测量,其最大误差小于 2cm,且重复性好;可见基于单片机设计的数显超声波液位检测系统具有硬件结构简单、工作可靠、测量误差小等特点。因此,此系统不仅可用于液位检测,还可广泛应用于诸如移动机器人精确定位等各种检测系统中。本系统主要由超声波传感器,单片机控制系统,显示系统,继电器驱动电路及水阀组成。系统简单,安装方便,建议广大用户尝试使用,我相信大家在用了之后一定会感到满意的。

     超声波测距的算法设计原理为超声波发生器T在某一时刻发出一个超声波信号,当这个超声波遇到被测物体后反射回来,就被超声波接收器 R 所接收到。这样只要计算出从发出超声波信号到接收到返回信号所用的时间,就可算出超声波发生器与反射物体的距离。在启动发射电路的同时启动单片机内部的定时器 T0,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波反射波时,接收电路输出端产生一个负跳变,在 INT0 或 INT1 端产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离。

     本系统设计保证液面高度始终处于较理想的范围内,结构简单,制造成本低,灵敏度高,节约能源显著,是用于各种高层液体储存的理想设备。虽然我们的设计基本实现了我们计划的功能,但是还是有很多的不足,比如说超声波的抗干扰问题还有缺陷,若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。另外,本系统还有的重要缺陷就是没考虑到温度的影响,如能再做一个温度补偿电路,就可很好的减少系统误差。

     最后,对我的导师和同学们在这次毕业设计中对我的指导和帮助表示由衷的感谢。

      参考文献 [1]郭天祥 《新概念 51 单片机 C 语言教程》电子工业出版社 2009.01 [2]何希才 《传感器及其应用实例》工业出版社 2004.09 [3]李广弟 《单片机基础》 北京航空航天大学出版社 2007.06 [4]高吉祥 《全国大学生电子设计竞赛培训系列教程》电子工业出版社.2007.05 [5]苏长赞 《红外线与超声波遥控》人民邮电出版社 1993.07 [6]何立民 《单片机高级教程》北京航空航天大学出版社 2004.07 [7]高明

      《技术与传感器》仪表技术与传感器编辑部 2002.07. [8]李铁峰 《仪表技术与传感器》仪表技术与传感器编辑部 2002.02

     附录 主程序 :

     #include <REGX52.H> #include <intrins.h> #define uint unsigned int #define uchar unsigned char unsigned long S=0;

     bit

     flag =0; uchar disbuff[4]={ 0,0,0,0}; uchar code table0[]="cm"; uchar code table1[]="No!"; uchar code table2[]="In!";

     uchar code table3[]="Out!"; uchar code table4[]="Off!"; uint time,timer=0; sbit rs=P3^5; sbit lcden=P3^4; sbit RX=P1^2; sbit TX=P1^3; sbit Q1=P1^0; sbit Q2=P1^1; uchar shi,ge,a,b,c; void delay(uint x) {

     uint i,j;

     for(i=x;i>0;i--)

      for(j=110;j>0;j--); } void write_com(uchar com) {

     P0=com;

     rs=0;

     lcden=0;

     delay(10);

      lcden=1;

     delay(10);

     lcden=0;

      }

     void write_date(uchar date) {

     P0=date;

     rs=1;

     lcden=0;

     delay(10);

     lcden=1;

     delay(10);

     lcden=0;

      }

     void lcd_init() {

      write_com(0x38);

     delay(20);

      write_com(0x0c);

     delay(20);

     write_com(0x06);

     delay(20);

     write_com(0x01);

     delay(20);

     }

     void Conut(void)

      {

      time=TH0*256+TL0;

      TH0=0;

      TL0=0;

      S=(time*1.7)/100;

      //算出来是 CM

      if((S>=700)||flag==1) //超出测量范围显示“-”

      {

     flag=0;

     disbuff[0]=10;

     //“-”

     disbuff[1]=10;

     //“-”

     disbuff[2]=10;

     //“-”

     write_com(0x80+0x40+5);

      write_date(table1[0]);

     write_date(table1[1]);

     write_date(table1[2]);

      }

      else

      {

     disbuff[0]=S%1000/100;

     disbuff[1]=S%1000%100/10;

     disbuff[2]=S%1000%10 %10;

      write_com(0x80+0x40+5);

      write_date(0x30+disbuff[0]);

      write_date(0x30+disbuff[1]);

      write_date(0x30+disbuff[2]);

      for(c=0;c<2;c++)

      {write_date(table0[c]);} //

     write_date(0x63); //

     write_date(0x6d);

     }

     }

     void main() {

      lcd_init();

     TMOD=0x11;

      //设 T0 为方式 1,GATE=1;

     TH0=0;

     TL0=0;

     TH1=0xf8;

      //2MS 定时

     TL1=0x30;

     ET0=1;

      //允许 T0 中断

     ET1=1;

     //允许 T1 中断

     TR1=1;

     //开启定时器

     EA=1;

     //开启总中断

      while(1)

     {

      while(!RX);

     //当 RX 为零时等待

      TR0=1;

      //开启计数

      while(RX);

      //当 RX 为 1 计数并等待

      TR0=0;

     //关闭计数

     Conut();

      if(S<=12)

      {

      Q1=1;

      Q2=0;

      write_com(0x80+5);

      for(a=0;a<4;a++)

      {

      write_date(table3[a]);

      }

      }

      else

      if(S>18)

      {

      Q1=0;

      Q2=1;

     write_com(0x80+5);

      for(b=0;b<3;b++)

      {

      write_date(table2[b]);

      }

      }

      else

      {

      Q1=1;

      Q2=1;

      write_com(0x80+5);

      for(c=0;c<4;c++)

      {

      write_date(table4[c]);

      }

     }

     //计算

     } }

     void zd0() interrupt 1

     //T0 中断用来计数器溢出,超过测距范围

      {

      flag=1;

     //中断溢出标志

      } /********************************************************/

     void

     zd3()

     interrupt 3

     //T1 中断用来扫描数码管和计 800MS 启动模块

      {

      TH1=0xf8;

      TL1=0x30;

     timer++;

     if(timer>=300)

      {

     timer=0;

     TX=1;

      //200MS

     启动一次模块

     _nop_();//

     一个机器周期的延时 1us

     _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

      _nop_();

     _nop_();

      _nop_();

      _nop_();

      _nop_(); //触发测距 10us 以上的高电平

     TX=0;

      }

     } }

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识