液位自动检测装置

更新时间:2024-06-24 20:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

液位自动检测装置

摘要:此方案设计了一个可以实现水位检测的系统。该系统包括了液位的检测、检测数据的处理、数据显示、键盘控制等四个部分。采用ATmega16、LM311、L298N、DS1302等进行设计。通过步进电机带动探针,能实时检测到液位的高度。并能用键盘设定水位限值,超出限值时能做出报警警示。

关键词:ATmega16 步进电机 探针

Level automatic detection devices

Abstract: This design can achieve a level detection system. The system includes a level of analysis, data processing, data show that the keyboard control of four parts. By L298N, ATmega16, design. Through the stepper motor driven probe, real-time detection to the high level. And the water level can use the keyboard set limits, beyond the limits can be made when the police warning.

Key words: ATmega16 stepper motor probe

1、设计要求

设计并制作一个水位监测装置,示意图如图(1.1)所示(容器可用2.0升~2.25升可乐瓶制作)。

图 1.1 液位检测装置图

1.1 基本要求

(1) 显示器能实时显示当前液位高度,液位显示误差不超过±0.5cm。

(2) 通过键盘可以设定容器里的液位检测和超限报警范围(3-25cm内的任意值)。

(3) 当液位超过报警范围时,能通过声光报警。 1.2 发挥部分

(1) 日期和时间显示功能。

(2) 通过键盘控制,可以将液位超限报警范围值和当前液位值和当前时间保存下来。

2、

任务分析

2.1、液位传感器检测液位

在本设计中要对液面进行实时测量,把检测到的数据送到处理器进行处理显示在LCD上,并且能通过键盘设置液面的报警上下限,当超过范围时能通过声光报警。还要有掉电保存设置的值和保存一些当前的液面和时间的数据。

2.2、数据处理

本设计的数据有来自传感器的数据、键盘的数据、显示器上的数据。要对这些数据进行处理则需一个稳定可靠的处理器。保证数据处理的稳定性、可靠性、及时性。

2.3、数值、时间显示

在显示器上需要对检测的数据进行实时显示,同时加多日期和时间显示。显示数据需有较好的人机对话界面。

3、方案选择

液位传感器方案选择

方案一:利用液体之间的电容特性,跟电阻发生RC振荡。通过RC之间的振荡频率与液面之间的高度成线性关系,测得液体的高度。但要液体的电容特性变化不定,误差大,电阻的阻值改变会影响振荡频率,如果电阻的参数不稳定,着调试就很困难,而且误差会增大。

方案二:利用水的导电性,用一个探针和电压比较器组成传感器。当探针在液面上时两个探针不导通,当在液体时两探针导通。然后通过电压比较器把两个信号进行放大。利用两个不同的电平状态控制步进电机正向转动和反向转动,让步进电机带动探针,进行水位探测。

通过比较,方案二虽然比较复杂,但比起电容振荡测量,电机探测干扰小,精确度高,也容易控制。因此我们决定用方案二。

4、

设计方案的实施,单元电路的设计

4.1、系统框图

本系统以ATMEGA 16作为主控芯片。 LM311电压比较器对水位进行信号采样。L298N用来驱动步进电机。采用DS1302实时时钟芯片产生日期和时间。用1602液晶模块显示时间、当前液位、上限、下限值。用蜂鸣器和发光二极管作为报警标志。其系统框图如图4.1所示

LM311 电压比较器 DS1302 时间模块 单片机 L298N 步进电机驱动 ATMEGA16 LCD 1602 显示模块 键盘输入 蜂鸣器、高亮发光二极管 图4.1 系统框图

4.2 单元电路原理与设计 4.2.1单片机系统

Atmega16MCU介绍

系统的控制核心Atmega16单片机,是Atmel公司推出的基于AVR RICS低功耗CMOS 8位高性能单片机,采用的是Harvard结构。由于Atmega16单片机运算速度快、内部资源丰富等诸多优点,故本设计选用它作为控制核心。图4.2为其引脚排列图。Atmega16系统图如图4.3所示。

图4.2 Atmega16引脚排列图

4.2.2 1602液晶显示模块

本设计中,采用1602LCD作为显示提示信息器件,与用户进行友好交互。1602LCD是专门用于显示字母、数字、符号的显示模块,具有功耗低、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到很广泛。表4.1为液晶显示模块管脚排列和功能,图4.4是它与系统单片机连接的原理图。

表4.1 LCD1602管脚排列和功能表 引脚 1 2 3 标号 Vss Vdd Vo 功能说明 逻辑负电源输入引脚,0V 逻辑正电源输入引脚,+5V 备注 LCD驱动电源输入引脚,调节其对一般接0V 比度 4 5 RS R/W 数据/指令寄存器选择 读写选择引脚 若只需要读,则接地 6 E 读写使能引脚 不带背光的LCD则无此引脚 7~14 D0~D7 8位数据引脚线 15 16 A K

背光电源输入引脚,+5V 背光电源输入引脚,0V +5VPA7PA6PA5PA4PA316151413121110987654321PA2 1602LCD

图4.4 液晶模块与单片机的连接电原理图

4.2.3 LM311 电压比较器采样模块

本设计中用到LM311单通道差分电压比较器对水位状态实时监控。根据水能导电的特性(导通电阻为200k—300k),所以要在与探针并联的电阻阻值和水的导通电阻差不多,这样探针两端的电压才会发生较明显的变化。要注意的一点,是要在比较器的输出端加个104P的电容把干扰滤掉,要不会影响很大。所以通过比较器,把探针是否探测到水分为两个明显的状态,单片机就读取这两个状态来做相干的处理。未探测到液体时,其输出状态为低电平。探测到液体时,其输出状态为高电平。图4.5为LM311的管脚和功能。图4.6为比较器与探针的电路图

图4.5 LM311的管脚图

图 4.6 LM311与探针连接电路

4.2.4 L298N 步进电机驱动模块

本设计中要用到步进电机带动探针进行水位实时探测。需要用到步进电机驱动模块。L298N为驱动两相步进电机的驱动芯片,具有电路图简单,操作方便的特点。图4.7为L298N的管脚与功能图,图4.8 L298N的驱动电路图。

图4.7 L298N 管脚与功能图

图4.8 L298N 驱动模块电路图

4.2.5 DS1302 时钟模块

DS1302时DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节的静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。图4.9是其管脚图,图4.10是其电路连接图。如下是其管脚描述: X1 X2 32.768KHz 晶振管脚 GND 地 RST 复位脚

I/O 数据输入/输出引脚 SCLK 串行时钟

Vcc1,Vcc2 电源供电管脚

图4.9

DS1302管脚图 图4.10 DS1302 连接电路

4.2.6 蜂鸣器、发光二极管报警模块

本设计要有对液位超限检测报警功能。能通过声、光发出报警警示,所以我们用到一个报警电路。我们用到的是压电式蜂鸣器,只要提供高电平就可以发出声音,电路简单、可靠。为了加大报警声音的响度,我们在电路中加上一个三极管作驱动。另外用高亮,大功率的发光二极管作光报警。具体电路图如图4.11所示:

图4.11 报警电路

4.2.7 键盘输入电路模块

因为在本系统中要实时保存数据,所以在软件设计时要用到的外部中断比较多,但mega16中只有两个外部中断,我们用外部中断0做了中断扩展。键盘可以用来进行人机交流。通过键盘输入,可以调节液位上限、下限、断电保存等功能。其功能电路图如图4.12所示:

图 4.12 键盘电路图 4.2.8 电源设计

本设计用到两个电压 +5v 和+12v。可以分别用7805和7812稳压芯片提供。另外用三个7号电池为DS1302作备用供电电源。主电源电路图如(4.13)所示:

图 4.13 电源设计电路

4.2.9 总电路

如图4.14所示:

图4.14 系统总硬件图

5 、软件设计

5.1 软件所实现的功能:

(1) 实时控制电机

(2) 实时检测是否超出上下限

(3) 实时显示检测的数据、时间、上下限数值 (4) 实时监控键盘输入 (5) 报警控制

5.2 软件流程图

软件流程图如图5.1所示,本程序通过I\\O口Pind.7脚进行判断是否启动电机。启动电机后就进行液面探测。利用I\\O口Pind.0脚进行实时监控。键盘控制要求反应及时,因此本程序的键盘控制放在中断程序中处理。具体流程图如图5.1所示。中断0流程图如图5.2所示 。中断1流程图如图5.3所示。

开始 初始化、及初始化显示 N Pind.7=0 Y Pind.0=0 Y 电机正转、计算电机所走到步数 电机反转计算电机所走到步数 N 是否超出极限 Y 声光报警 N 显示时间、日期、 当前液面数值

图5.1 系统软件流程图

中断0初始化 Pind.4=0 Y 设置上限值 N Pind.5=0 Y 保存当前液位 N 中断1 初始化 设置报警下限值 N 返回 Pind.6=0 Y 保存时间、日期 返回 图5.2 中断0 流程图 图 5.3 中断1 流程图

6 测试方法 6.1 测试方法

(1)先定好原点,我们定的原点为距零水位22.6cm高度的桶口边。 (2)定好原来后开始通电,按下启动按钮,电机缓慢带动探针下降。 (3)当探针探测到水面时,探针不再下降。此时可以从液晶屏幕上读出液

面的高度。

(4)可以放水,和加水,系统可以实时监测水位的变化,并显示当前的水

位高度。

(5) 用键盘调节报警上下限,和断电保存。

6.2 测量结果:

表6.1 测量数据表 实际高度15.6 (cm) 测量高度15.6 (cm) 误差(cm) 0.0 12.0 12.1 0.1 10.0 10.2 0.2 8.0 8.1 0.1 6.8 6.9 0.1 4.0 3.8 0.2 0.0 0.4 1 0.4 0.1 20 20. 表6.2 报警测量值 20.1 15.1 10.1 5.1 实际上限 报警下限 9.9 9.9 5.9 1.9 值 (cm) 上限 20.0 15 10 5 设定 10 10 6 2 报警值 下限 (cm)

6.3 结果分析

通过测试的数据,我们可以看到,在0~20CM内,精度已经达到了题目的要求。但是还是存在误差,误差的主要来源是当步进电机走过的步数越多,线绕在步进电机上转轴上的周长会增大。所以会产生误差,还有就是在人为定零点时也会产生误差,如果定位得不好,就会产生很的误差。

参考文献:

[1] Atmega16 芯片手册

[2] 康华光.电子技术基础:模拟部分.第五版.北京:高等教育出版社.2006 [3] 沈文.AVR单片机C语言开发入门指导.第一版.北京:清华大学出版社.2003

本文来源:https://www.bwwdw.com/article/ax53.html

Top