基于单片机的液位自动检测系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十、本次实验小结
本次设计实验课基本上完成了任务要求,但是在选用传感器上没有结合实际情况结合参数选用液位压力传感器。导致在采集信号上面存在一些误差。现用的单片机采集精度和传感器精度不匹配。不能完成部分扩展功能。通过本次实验更加熟悉硬件设计思路和软件编程的方法。让我们学会了设计一个系统我们所要学习的东西和设计最重要注意的东西。
{
for (j = 0; j < 30; j++);
}
}
void zhil(unsigned char xx)//写地址
{
delay();
e = 0;
rs = 0;
rw = 0;
e = 1;
P0 = xx;
e = 0;
}
void dat(unsigned char xx)//写数据
{
delay();
方案二:压力传感器
该系统中,利用不同水位是对压力传感器压力大小不同,从而有不同的电压输出,然后由仪表放大器放大一定倍数,输入比较器一端与单片机通过按键设定的电压值比较从而决定是进水还是放水。
四、方案选择
经过分析和实验要求,传统的设计方案主要靠软件实现,且操不方便,精度不高,不容易实现。所以我们选择方案二,直接将压力传感器输出的电压与单片机的设计电压进行比较,从而决定是输入水,还是放出水。实现水位的检查与控制。而且方案二通过单片机输出电压控制信号,由比较器输出高低信号来控制水电泵或者电磁阀的开关,来获得实际所需的水位。通过选择合适的DA我们可以设置不同的电压值,可以很好的提高控制精度和实现更加方便和节约成本,实现了整个设计。
sfr P1ASF =0x9D;
sfr ADC_CONTR = 0XBC;
sfr AUXR1 = 0xA2;
sfr ADC_RESL = 0xBE;
unsigned char init_ad(void)
{
unsigned char dat;
P1ASF = 0x01; //p1.0电压输入
ADC_CONTR = 0xe8;
e = 0;
rs = 1;
rw = 0;
e = 1;
P0 = xx;
e = 0;
}
void init_1602(void)
{
zhil(0x01);
zhil(0x38);
zhil(0x0e);
zhil(0x0c);
}
void display(unsigned char x)
{
unsigned char d0[16] = {"yewei: "}, i;
该系统中,对量筒中的液体表面的检测基本上是利用散射原理,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面,这个曲面正好供我们检测用。它是由一对红外光电对管组成的,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面,由于散射作用,接收管接收不到发射管的红外光信号而截止,电路输出电平为高电平。因此,可以利用其输出电平的高低来检测液面的位置,其输出信号再通过电缆输出到单片机接口电路和显示驱动电路进行处理。为了适应本系统的特殊要求,我们将红外发射、接受管分别装在U形板的两边,两管距离大于玻璃量筒的直径。为了减少外来自然光的干扰,在两管的发射、接受头安装有一定深度的导光孔槽,它一方面减少了外来光的干扰,另一方面可以限制光束直径,以利于提高检测分辨率。
AUXR1 = 0x04;Байду номын сангаас
dat = ADC_RESL;
return dat;
}
void main()
{
unsigned char dat,i;
while(1)
{
dat = init_ad();
dat = (223-dat)/3;
display(dat);
for (i=100;i>0;i--)
{
delay();delay();
unsigned char d1[16] = {""};
init_1602();
d0[7] = x / 100 + 0x30;
d0[8] = x / 10 % 10 + 0x30;
d0[9] = x % 10 + 0x30;
zhil(0x80);
for (i = 0; i < 16; i++)
{
dat(d0[i]);
自动检测系统课题设计
20XX-20XX学年第X学期
院 别:控制工程学院
课程名称:自动检测系统设计
实验名称:基于单片机的液位自动检测系统
实验教室:X X X
指导教师:X X X
小组成员(姓名,学号):
实验日期:20XX年X月X日
一、设计要求
1.基本要求
本方案设计一个自动检测液体液位的检测仪器系统。然后通过1602液晶显示器把测得的参数显示出来。
五、系统具体设计方案
液位自动检测与控制系统由软、硬件共同组成。考虑到工作速度和可靠性、题目精度要求等因素,合理地分配了硬件和软件资源,在进行设计时,充分考虑了件和软件的特点,协调其功能。电子负载系统的硬件部分包括以下部分:
(1)单片机的选择与I/O的分配
(2)液晶显示模块
(3)A/D转换电压电流采样模块
八、电路参数测试及功能检测
液位深度(cm)
液面显示(cm)
初始值(AD采样值)
0
0
225
1
1
220
2
2
214
3
3
207
4
3
202
水位和液面的压力关系显示值 =(初始值 - 测试值)/2。
九、误差分析:
本实验选用的陶瓷压力传感器灵敏度比较差,元器件本身存在一定的误差。所用仪器,元器件的限制,还有本身电路设计的缺陷,和周围环境的影响,导致了前端传感器有误差信号的影响。还有电源模块的设计,使电压不稳定会产生信号的误差跳变。
二、实验设备与软件
计算机、Keil C51编程器、STC下载器、Altium designer软件、数字万用表、陶瓷压力传感器
三、方案分析
根据系统的设计要求,得出以下两种方案:
方案一:红外光电传感器
红外光电传感器是由红外发射二极管和敏感三极管组成,红外发射二极管发出的红外光的波长和敏感三极管的受光波长相同或相近。当发射管和接受管之间没有障碍物时,敏感三极管由于收到红外光信号而导通,电路输出电平为低电平;当发射管和接受管之间有障碍物挡住时,敏感三极管由于收不到红外光信号而截止,电路输出电平为高电平。
(4)电源电路模块
液位自动检测与控制系统的控制程序,包括以下部分:
(l)人一机联系程序。包括液晶显示输出程序等。
(2)数据采集和处理程序。主要A/D转换程序、电压电流采样程序。
六、系统电路设计
原理图
PCB图
实物图
七、系统软件设计
软件主程序图电压采样图
软件程序:
#include<reg52.h>
#include "lcd1602.h"
}
}
}
#ifndef _LCD1602_H_
#define _LCD1602_H_
#include <reg52.h>
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
void delay(void)
{
unsigned char i, j;
for (i = 0; i < 20; i++)
}
zhil(0xc0);
for (i = 0; i < 16; i++)
{
dat(d1[i]);
}
}
#endif
主程序软件流程如图所示,在图中软件首先进行DA、AD、1602液晶显示、控制变量初始化,再调用键盘扫描处理程序,在没有按下没有按下自动调节启动停止按键时,默认为功能设置,此时单片机只预置数据输入、按键查询、预置数据LCD显示等功能;而当按下该按键1次后,单片机将转为执行负载调节、A/D采集、实际数据LCD显示等功能。
本次设计实验课基本上完成了任务要求,但是在选用传感器上没有结合实际情况结合参数选用液位压力传感器。导致在采集信号上面存在一些误差。现用的单片机采集精度和传感器精度不匹配。不能完成部分扩展功能。通过本次实验更加熟悉硬件设计思路和软件编程的方法。让我们学会了设计一个系统我们所要学习的东西和设计最重要注意的东西。
{
for (j = 0; j < 30; j++);
}
}
void zhil(unsigned char xx)//写地址
{
delay();
e = 0;
rs = 0;
rw = 0;
e = 1;
P0 = xx;
e = 0;
}
void dat(unsigned char xx)//写数据
{
delay();
方案二:压力传感器
该系统中,利用不同水位是对压力传感器压力大小不同,从而有不同的电压输出,然后由仪表放大器放大一定倍数,输入比较器一端与单片机通过按键设定的电压值比较从而决定是进水还是放水。
四、方案选择
经过分析和实验要求,传统的设计方案主要靠软件实现,且操不方便,精度不高,不容易实现。所以我们选择方案二,直接将压力传感器输出的电压与单片机的设计电压进行比较,从而决定是输入水,还是放出水。实现水位的检查与控制。而且方案二通过单片机输出电压控制信号,由比较器输出高低信号来控制水电泵或者电磁阀的开关,来获得实际所需的水位。通过选择合适的DA我们可以设置不同的电压值,可以很好的提高控制精度和实现更加方便和节约成本,实现了整个设计。
sfr P1ASF =0x9D;
sfr ADC_CONTR = 0XBC;
sfr AUXR1 = 0xA2;
sfr ADC_RESL = 0xBE;
unsigned char init_ad(void)
{
unsigned char dat;
P1ASF = 0x01; //p1.0电压输入
ADC_CONTR = 0xe8;
e = 0;
rs = 1;
rw = 0;
e = 1;
P0 = xx;
e = 0;
}
void init_1602(void)
{
zhil(0x01);
zhil(0x38);
zhil(0x0e);
zhil(0x0c);
}
void display(unsigned char x)
{
unsigned char d0[16] = {"yewei: "}, i;
该系统中,对量筒中的液体表面的检测基本上是利用散射原理,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面,这个曲面正好供我们检测用。它是由一对红外光电对管组成的,在玻璃量筒中液体表面处的液体会发生外延现象或吸附现象而形成一个环形曲面,由于散射作用,接收管接收不到发射管的红外光信号而截止,电路输出电平为高电平。因此,可以利用其输出电平的高低来检测液面的位置,其输出信号再通过电缆输出到单片机接口电路和显示驱动电路进行处理。为了适应本系统的特殊要求,我们将红外发射、接受管分别装在U形板的两边,两管距离大于玻璃量筒的直径。为了减少外来自然光的干扰,在两管的发射、接受头安装有一定深度的导光孔槽,它一方面减少了外来光的干扰,另一方面可以限制光束直径,以利于提高检测分辨率。
AUXR1 = 0x04;Байду номын сангаас
dat = ADC_RESL;
return dat;
}
void main()
{
unsigned char dat,i;
while(1)
{
dat = init_ad();
dat = (223-dat)/3;
display(dat);
for (i=100;i>0;i--)
{
delay();delay();
unsigned char d1[16] = {""};
init_1602();
d0[7] = x / 100 + 0x30;
d0[8] = x / 10 % 10 + 0x30;
d0[9] = x % 10 + 0x30;
zhil(0x80);
for (i = 0; i < 16; i++)
{
dat(d0[i]);
自动检测系统课题设计
20XX-20XX学年第X学期
院 别:控制工程学院
课程名称:自动检测系统设计
实验名称:基于单片机的液位自动检测系统
实验教室:X X X
指导教师:X X X
小组成员(姓名,学号):
实验日期:20XX年X月X日
一、设计要求
1.基本要求
本方案设计一个自动检测液体液位的检测仪器系统。然后通过1602液晶显示器把测得的参数显示出来。
五、系统具体设计方案
液位自动检测与控制系统由软、硬件共同组成。考虑到工作速度和可靠性、题目精度要求等因素,合理地分配了硬件和软件资源,在进行设计时,充分考虑了件和软件的特点,协调其功能。电子负载系统的硬件部分包括以下部分:
(1)单片机的选择与I/O的分配
(2)液晶显示模块
(3)A/D转换电压电流采样模块
八、电路参数测试及功能检测
液位深度(cm)
液面显示(cm)
初始值(AD采样值)
0
0
225
1
1
220
2
2
214
3
3
207
4
3
202
水位和液面的压力关系显示值 =(初始值 - 测试值)/2。
九、误差分析:
本实验选用的陶瓷压力传感器灵敏度比较差,元器件本身存在一定的误差。所用仪器,元器件的限制,还有本身电路设计的缺陷,和周围环境的影响,导致了前端传感器有误差信号的影响。还有电源模块的设计,使电压不稳定会产生信号的误差跳变。
二、实验设备与软件
计算机、Keil C51编程器、STC下载器、Altium designer软件、数字万用表、陶瓷压力传感器
三、方案分析
根据系统的设计要求,得出以下两种方案:
方案一:红外光电传感器
红外光电传感器是由红外发射二极管和敏感三极管组成,红外发射二极管发出的红外光的波长和敏感三极管的受光波长相同或相近。当发射管和接受管之间没有障碍物时,敏感三极管由于收到红外光信号而导通,电路输出电平为低电平;当发射管和接受管之间有障碍物挡住时,敏感三极管由于收不到红外光信号而截止,电路输出电平为高电平。
(4)电源电路模块
液位自动检测与控制系统的控制程序,包括以下部分:
(l)人一机联系程序。包括液晶显示输出程序等。
(2)数据采集和处理程序。主要A/D转换程序、电压电流采样程序。
六、系统电路设计
原理图
PCB图
实物图
七、系统软件设计
软件主程序图电压采样图
软件程序:
#include<reg52.h>
#include "lcd1602.h"
}
}
}
#ifndef _LCD1602_H_
#define _LCD1602_H_
#include <reg52.h>
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
void delay(void)
{
unsigned char i, j;
for (i = 0; i < 20; i++)
}
zhil(0xc0);
for (i = 0; i < 16; i++)
{
dat(d1[i]);
}
}
#endif
主程序软件流程如图所示,在图中软件首先进行DA、AD、1602液晶显示、控制变量初始化,再调用键盘扫描处理程序,在没有按下没有按下自动调节启动停止按键时,默认为功能设置,此时单片机只预置数据输入、按键查询、预置数据LCD显示等功能;而当按下该按键1次后,单片机将转为执行负载调节、A/D采集、实际数据LCD显示等功能。