基于51单片机的液位检测系统

发布者:sunyouz1最新更新时间:2013-08-06 来源: dzsc关键字:AT89C52  单片机  液位检测系统  步进电机 手机看文章 扫描二维码
随时随地手机看文章

  随着现代测量技术的发展,对测量系统提出了越来越高的要求。在自动蒸馏测控系统中,准确及时地检测出蒸馏过程中从冷凝管馏出的第一滴液滴是获取初馏点的前提;实时、准确地测量出量筒中回收液体体积的变化是控制蒸馏过程中不同时段不同蒸馏速度的依据。而目前担负着对冷凝管馏出的液滴进行检测、回收、计量、测速等任务的完成有诸多不尽人意的地方,需要更加完善、合理的液滴、液位检测跟踪控制系统。

  从液位测量的方法看,按检测器与液体接触与否分为两大类:一是接触式测量,二是非接触式测量。当需要通过测量液位变化确定体积变化时,一般采用非接触式测量方法。但在大多数非接触式测量中,液位传感器测试范围较大,绝对分辨率均大于0.5ml,因而在体积变化范围为0-100ml,液位变化范围为0-200mm时,要达到0.1ml的分辨率,普通的传感器就难以满足要求。为此,需要研制一种测量普通100ml玻璃量筒中液体体积实时变化的高精度液位检测系统。

  针对以上所存在的问题,本文介绍了一种以AT89C52单片机为核心的液位检测系统,实现了对变化的液位进行高精度体积测量的目的。

一、 积测量原理

  由于量筒的容积是确定的,且制作均匀,那么一定体积的液体在量筒内对应的高度也是一定的。传感器与螺杆是相互耦合的,螺杆的顶端与步进电机的中轴是直接相连的,步进电机每走一步,螺杆就跟着转一个小角度。因此,在电机步距和螺杆螺距一定的情况下,量筒的单位高度与电机步数成正比关系。于是,可将量筒内液体的体积直接转换成电机的步进数,即电机每走一步所代表的液体的体积是多少毫升。

 

图1 体积测量示意图

  体积测量示意图如图1所示。为了确定电机的步进数与确定量筒内液体的体积毫升数之间的换算关系,我们需要对此系统进行校准,具体校准的方法是:

1.      测量体积为10ml液体的电机步进数,将其值设为L1;

2.      测量体积为100ml液体的电机步进数,将其值设为L2;

  根据以上步骤记录的数据,计算出电机每走一步所代表的体积毫升数,将其值设为T,则有如下的计算公式:T=90/(L2-L1)。这样就可以很方便地计算出跟踪器所跟踪的液体体积。

二、 硬件电路组成及原理

  本系统的基本组成是:红外光电传感器、输入电路、时钟电路、复位电路、显示电路、步进电机及驱动电路、单片机实时处理与控制电路等。

  其基本的工作原理是:红外光电传感器检测到的各种信号,经过信号处理电路后,把光信号转换成了电信号,同时把电信号送给单片机进行判断和计算处理后,再发出控制指令,控制步进电机工作,完成对变化液位的检测与跟踪。

该硬件电路原理框图如图2所示:

 

图2 硬件电路原理框图

 

1、红外光电传感器

  红外光电传感器是由红外发射二极管和敏感三极管组成,红外发射二极管发出的红外光的波长和敏感三极管的受光波长相同或相近。当发射管和接受管之间没有障碍物时,敏感三极管由于收到红外光信号而导通,电路输出电平为低电平;当发射管和接受管之间有障碍物挡住时,敏感三极管由于收不到红外光信号而截止,电路输出电平为高电平。

  该系统中,对量筒中的液体表面的检测基本上是利用散射原理,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面,这个曲面正好供我们检测用。它是由一对红外光电对管组成的,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面, 由于散射作用,接收管接收不到发射管的红外光信号而截止,电路输出电平为高电平。因此,可以利用其输出电平的高低来检测液面的位置,其输出信号再通过电缆输出到单片机接口电路和显示驱动电路进行处理。为了适应本系统的特殊要求,我们将红外发射、接受管分别装在U形板的两边,两管距离大于玻璃量筒的直径。为了减少外来自然光的干扰,在两管的发射、接受头安装有一定深度的导光孔槽,它一方面减少了外来光的干扰,另一方面可以限制光束直径,以利于提高检测分辨率。[page]

2、步进电机及驱动电路

  在步进电机工作中,其电源大多是采用单极性直流电,通过对步进电机的各相绕组按恰当的时序方式通电,就可使其执行步进转动。本系统所用电机为四相电机,当两相绕组通电时,相应的两个磁极就分别形成N-S极,产生磁场,并与转子形成磁路。在磁场的作用下,转子将转动一定的角度,使转子齿与定子齿对齐,从而使步进电机向前“走”一步。因此,控制电机转动主要是按照电机转动方向的要求,由单片机顺序地输出相应的控制信号即可。

  下面以正转为例进行说明,正转时,要求按ABCDA 的顺序依次输出宽为8ms的正脉冲,且两脉冲之间有一小延时。由此可以往8255的PC0~PC3口依次输出1000、0100、0010、0001、 1000等一系列的信号,每一个高电平保持8ms,输出时间间隔为1ms,即可满足控制需要。同理,也可以控制电机反转,只是输出信号的顺序相反。于是在寄存器中的初始控制字可设为00010001B(即11H),电机每走一步,则对此寄存器的内容向左(正转)或向右(反转)循环移一位,然后取出此寄存器的内容并输出,就可以完成对电机的控制。

3、单片机实时处理及控制

  针对本课题而言,硬件电路应该尽量的简单,部分能用软件实现电路尽可能的不用硬件电路,以此来达到产品的小型化、价格低、性能可靠的目的。在选择单片机时也应充分考虑其便利和实用,8031 单片机最大缺点是需要外接EPROM,电路复杂,而且EPROM还是用紫外线进行擦除的,使用起来很不方便。在经过广泛的比较之后,确定采用ATMEL 公司的AT89C52 FLASH单片机。它不仅具有8031单片机的一切功能,还有许多功能是8031所没有的。其内部带有8KB可多次擦写的FLASH内部程序存储器,可用电擦除,十分方便。

  AT89C52 单片机主要有以下一些特点:(1)、与MCS-51产品兼容;(2)、具有8KB可改写的FLASH内部程序存储器,可进行1000次擦/写操作;(3)、全静态操作:0Hz到24MHz;(4)、三级程序存储器加密;(5)、256字节内部RAM;(6)、32条可编程I/O线;(7)、3个16 位定时/计数器;(8)、8个中断源;(9)、可编程串行口;(10)、低功耗空闲和掉电方式。

  单片机实时处理及控制部分的主要功能是接收来自红外光电传感器转换过的电信号,同时接收输入电路送来的状态信息,经过判断计算后,一方面发出控制指令,控制电机的运转,进行液位的检测与跟踪;另一方面送出所需要的数据,进行数据的显示和状态指示。因此,这一部分是本系统的关键部分,它的性能的好坏直接关系到整个系统的性能好坏。具体硬件电路是以AT89C52单片机为核心,通过扩展并口8255来实现的,其电路如图3所示。

 

图3单片机实时处理与控制电路

 

  由图3 可以看出,键入电路与AT89C52的P1口相连,接收所键入的状态信息并送单片机。液位信号直接送P3.0口,在自动跟踪时,单片机对P3.0口不断地查询,一有信号就进行判断处理。液滴信号与P3.2口(即INT0中断引脚)相连,由于液滴的检测是随时的,因此需要用中断来控制,当液滴信号一来中断便响应,记录下液滴数。上、下限位信号分别接P3.4、P3.5口,在运行中,一但出现了上、下限位信号时,说明已超出了预定的运行范围,单片机收到信号后,发出控制指令,停止电机的转动。其它一些如显示、电机驱动等控制信号的发出由总线分时送8255,完成预定的任务。

  8255 的片选信号/CS及口地址选择线A0和A1分别由AT89C52的P2.7和P0.0、P0.1经地址锁存后提供,故8255的A口、B口、C口及控制口地址分别为7FFCH、7FFDH、7FFEH和7FFFH。8255的D0~D7分别与AT89C52的P0.0~P0.7相连,其/RD、/WR与 AT89C52的/RD、/WR一一对应相接。

三、 软件设计

  系统软件是整个系统的重要组成部分,只有在它的指挥控制下硬件电路才能进行工作,完成相应的功能,而且部分硬件电路的缺陷还可以通过软件编程加以弥补。根据系统的功能要求,软件是用MCS-96汇编语言,采用模块化结构,由主程序、自动检测跟踪子程序、校准子程序、显示子程序等组成。在本系统中,高精度测量的实现在很大程度上是由软件来保证的。

  主程序包括系统参数初始化和循环工作过程,是本系统中软件部分的核心。它主要完成的任务是:首先,对单片机状态参量和程序自定义的状态参量进行系统初始化;其次,对各子程序进行管理和控制,安排相应的指令,提供子程序的入口数据,以达到完成系统功能的目的。

  液位自动检测跟踪子程序的功能是控制液位跟踪器以底液液面为起始位置,连续地跟踪液面的变化,并换算出实际的液体体积值,实时地进行显示。其执行步骤是:首先,红外光电传感器自动检测到液位,并设此液位为跟踪的底液面,显示为“0”。然后,进入实时跟踪状态,只要液位有变化(上升),检测器便会自动跟踪,实时显示所跟液体的体积,直到液位不再变化为止。

  校准子程序是在每次更换量筒时进行的,目的是找出量筒内液体的体积与电机的步进数之间的对应关系,然后送给单片机,进行体积计算时就有了新的标准,以此来提高测量精度。

四、结束语

  采用AT89C52单片机实现的液位检测系统在标准100ml玻璃量筒中,液位变化范围在0-200mm时,能达到0.1ml的分辨率。实践证明,本液位检测系统性能价格比高、控制方式可靠,其设计思路和方法可以为自动蒸馏测控系统所借鉴,具有广阔的应用前景。

参考文献:

[1]. AT89C52 datasheet http://www.dzsc.com/datasheet/AT89C52_1064535.html.
[2]. EPROM datasheet http://www.dzsc.com/datasheet/EPROM_1128137.html.
[3]. MCS-51 datasheet http://www.dzsc.com/datasheet/MCS-51_477840.html.

关键字:AT89C52  单片机  液位检测系统  步进电机 引用地址:基于51单片机的液位检测系统

上一篇:单片机内部串行接口如何设置?串行接口有几种工作模式?
下一篇:热释电传感器的非接触式测控系统设计

推荐阅读最新更新时间:2024-03-16 13:26

51单片机最小系统设计
简介:AT89S51单片机最小系统,就是使单片机正常运行的最低配置:它有一系列模块组成。 1)复位系统: 当引脚9出现2个机器周期以上高电平时,单片机复位,程序从头开始运行. 2)时钟系统:有振荡器电路产生频率等于晶振频率,这时用的是外界晶振。 也可以又外部单独输入,此时XTAL2脚接地,时钟信号由XTAL1输入. 3)电源系统:VCC,和 GND引脚,供电电压4--5.5V. 程序的烧入引脚: flash存储器由串行ISP接口编程,计算机和单片机烧写由专用的烧入软件完成如AVR_fighter for usb asp.
[单片机]
51<font color='red'>单片机</font>最小系统设计
采用PC机实现单片机优化控制
一、用PC机实现单片机优化控制的必要性 目前,单片机的控制很广泛。但是对于复杂的现场控制,大多数单片机的控制程序都是采用单一的汇编语言编写。 其缺点有: 1.由于汇编语言功能的限制,不能形成友好的控制界面。不能很好的反映出控制现场的实时变化情况。 2.对于不同的单片机CPU芯片,还要有不同的汇编语言,可移植性差,增加了编程的难度。 3.当被控对象的工艺条件变化时,单片机很难跟着变化。除非重新编制程序,再一次的固化,这样操作起来就比较困难。 笔者采用了PC机高级语言编程和单片机汇编语言编程相结合解决上述的缺点。 二、实现过程 PC机将各种予置信号通过串行口送给单片机控制系统,再由单片机系统通过D/A变换产生实际的模拟
[单片机]
采用PC机实现<font color='red'>单片机</font>优化控制
ARM-Linux开发与MCU开发有何不同?
针对ARM-Linux程序的开发,主要分为三类:应用程序开发、驱动程序开发、系统内核开发,针对不同种类的软件开发,有其不同的特点。今天我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本开发环境。 1. ARM-Linux应用开发和单片机开发的不同 这里先要做一个说明,对于ARM的应用开发主要有两种方式:一种是直接在ARM芯片上进行应用开发,不采用操作系统,也称为裸机编程,这种开发方式主要应用于一些低端的ARM芯片上,其开发过程非常类似单片机,这里不多叙述。还有一种是在ARM芯片上运行操作系统,对于硬件的操作需要编写相应的驱动程序,应用开发则是基于操作系统的,这种方式的嵌入式应用开发与单片机开发
[单片机]
stc89c51单片机和数控音频放大器设计
一.设计要求 (1)输入信号为30mv峰峰值的正弦波,频率范围 20HZ~20KHZ,输入阻抗Ri ≥20KΩ,前级程控放大器增益通过 单片机 键盘输入控制,增益可预置为10db,20db,30db,40db。 (2)后级功率放大器输出功率≥3W(8Ω负载)。 (3)液晶显示。 二.原理框图 三.方案对比选择 用DAC0832控制前级放大 前级放大100倍后用 单片机 控制DAC0832进行衰减。 经对比选择用DAC0832控制前级放大比较简单,而且较精确。 四.电路图设计 五.主要元件选择及参数设计 (1) 运放LF353 前级放大分别放大10倍,总共放大100倍。LF353的工作电压是+1
[电源管理]
stc89c51<font color='red'>单片机</font>和数控音频放大器设计
关于51单片机晶振的二十一个问题
一,为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。 其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的,比如9600,用定时器取0XFD,实际波特率10000,一般波特率偏差在4%左右都是可以的,所以也还能用STC90C516 晶振12M 波特率9600 ,倍数时误差率6.
[单片机]
单片机 如何给MSP430开发板下载程序 并做一个串口实验
1简介 我们需要下面这些软件 CH340驱动软件:是使用BSL下载程序的话,电脑需要和单片机通信,他们之间的桥梁就是CH340芯片,电脑想要识别CH340芯片就需要驱动。下载程序需要使用CH340芯片,让单片机接受指令也需要使用CH340芯片,总之电脑和单片机之间的通信就是靠CH340芯片。 IAR软件:我们需要在这个软件里面写c代码,然后利用这个软件的编译功能,将c代码编译成hex文件,hex文件就是机器文件,单片机依靠这个文件来工作,这个文件最终是要下载到单片机里面去的。 串口助手软件:下载程序有专门用的软件,和单片机相互通信也有专门的软件,串口助手软件可以帮助你和单片机通信,可以在串口助手软件中写一个字符串发送给单片机,同
[单片机]
<font color='red'>单片机</font> 如何给MSP430开发板下载程序 并做一个串口实验
飞思卡尔16单片机(二)开发环境搭建及新建、调试工程
一、安装CodeWarrior 飞思卡尔16位单片机的开发环境为CodeWarrior5.1,这个软件安装比较简单,软件的安装文件可以从相应的网站上下载。安装CodeWarrior所需要的电脑的硬件资源也比较宽泛,目前一般的电脑都可以满足这个要求,可以支持win10、win7等操作系统。安装过程按照按照软件的提示一步步操作即可。 二、安装USBDM驱动 USBDM是飞思卡尔16位单片机的少些代码及调试程序的工具。飞思卡尔16位单片机可以支持多种调试工具,典型的有官方的调试器和开源的USBDM调试器,由于开源的调试器版本比较多,不同版本驱动的安装方法也不相同,所以USBDM驱动的安装需要参考厂家的使用说明进行。安装
[单片机]
飞思卡尔16<font color='red'>位</font><font color='red'>单片机</font>(二)开发环境搭建及新建、调试工程
随机脉冲信号采集卡的设计
在雷达、声纳及工业控制领域中的故障监测系统中,往往需要采集雷达、声纳的回波信号或故障监测系统中的故障信号。由于这些信号是随机出现的,并且这些信号的幅度、脉宽及形状相差较大。有些信号脉宽可能很窄,有的可能较宽,且占空比不均匀。若采用传统的固定采样速率采集方式则不能满足实时处理要求。因为,对窄脉冲采样,要求采样速率很高,若采用连续采样方法,则采集数据量太大,采集数据不能及时处理,不能满足采集信号的实时分析或故障的实时处理的要求。为此研制一种随机脉冲信号采集卡,其基本工作原理为:随机脉冲信号出现时,高速采集电路工作,无脉冲信号时,高速采集电路停止工作。由于在上述方面应用中要求采集的随机脉冲的平均占空比很小,因此采用该随机脉冲信号采集
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved