单片机智能注油系统项目设计方案Word下载.docx
《单片机智能注油系统项目设计方案Word下载.docx》由会员分享,可在线阅读,更多相关《单片机智能注油系统项目设计方案Word下载.docx(42页珍藏版)》请在冰豆网上搜索。
联轴器型,由主机通过超越离合联轴器传动工作
(2)ZB型:
摆杆型,由主机带动摆杆传动工作
(3)ZJ型:
键联接型,凸轮轴头部带有平键,由主机直接传动工作
II、单独传动的注油器有ZD型:
由电动机通过下方减速器的二级传动带动凸轮轴转动。
若双联注油器,则两油箱凸轮轴之间有联轴节,带动两凸轮轴同步转动,从而使两油箱上方的注油泵每两同步运行,而油箱侧面的摇手只备在需要手动时使用。
2.2设计方案概述
课题要求设计一套PVC手套生产线上对手模进行自动注油的系统,实现对整条手套生产线自动润滑的目的。
利用光电传感器,根据设定的时间,对自动生产线上的PVC手模是否到达位置进行自动检测,到达位置后,给一个信号,驱动继电器对电磁铁通电,电磁铁推动油阀进行注油。
当油箱油位达到最低限度时,驱动蜂鸣器进行报警同时切断注油电路。
对油位能够进行指示。
如图2-1为总体方案结构框图:
图2-1设计方案流程图
图2-2为智能注油系统的流程图:
图2-2智能注油系统的流程图
2.3控制器的选择
方案一:
采用传统的STC89C51RC单片机作为控制中枢。
这种单片机具有较强的算术运算能力,而且程序编写灵活,自由度大。
STC系列单片机为国内自主创新研发,成本低,更加经济,再加上功耗低、体积小等特点,在各个领域被广泛应用。
方案二:
STC10F04单片机,带有非易失性Flash程序存储器。
它是一种高性能的微处理芯片,运算处理速度要比C51更快,但是功耗较C51要高一些,成本也要比51单片机更高。
STC89C51主要性能:
1.增强型的89C51单片机,六个和十二个机器周期可以自行选择,传统C51单片机被其完全兼容。
2.工作电压:
3.4V-5.5V(5V单片机)/2.0V-3.8V(3V单片机)
3.工作频率范围:
0-35MHz
4.工作温度范围:
0-75℃/-40-+85℃
5.EEPROM功能
6.硬件看门狗(WDT);
7.有2个16位定时器/计数器
8.用户应用程序空间12K/10K/8K/6K/4K/2K字节
10.时钟源:
外部高精度晶体/时钟,内部R/C振荡器。
11.STC89C516AD具有ADC功能。
2.4手套检测模块的选择
采用工业级的光电传感器。
这种传感器普遍用于自动流水线,自动开关门(如电梯)等工业场所。
这种传感器使用方便,输出量为开关量,无需外加其它硬件电路,而且型号较多,适用于很多场所。
缺点是价格较贵。
采用微型红外对射管
红外线的特点是传输距离远,能量比较集中。
当对射管之间没有物体遮挡时,发射管发射红外到接收管上,接收管此时信号发出。
当有物体遮挡时,接收管无动作。
综上所述,选取方案二,使用红外线对射管。
2.5定时、显示模块的选择
2.5.1定时模块
采用专用时钟芯片。
现在市面上的时钟芯片有很多,各个时钟芯片的应用也比较成,如DS1302、DS1307等。
它们的优势是可以独立使用,直接与单片机的外围相连接,并且有自己的时钟晶振,具有较高的精确度。
当单片机在运行程序,意外发生死机或断电的状况时,对时钟电路的影响较小。
缺点是在一定程度上占用了单片机的IO口,也消耗了单片机的运行时间。
方案二:
采用单片机内置时钟振荡及定时器构件时钟平台。
这种案直接利用了单片机的内置定时器,时钟功能通过对定时器的控制来实现。
这种方案无需外围硬件电路,定时功能得到充分的利用,但是主要缺点是当单片机断电或者死机时,需要人工重新设定才能恢复正常使用,较为繁琐。
综上所诉,因为单片机的IO口足够,且系统对于时间的精度要求较高,故选用方案一。
2.5.2显示模块
采用LCD1602显示。
LCD1602是字符型液晶,对于字母和数字的显示较为方便,适合较为简单的系统显示。
LCD1602液晶显示器有点颇多,可以简单明了的显示系统时间,成本低,体积小,功耗低。
其越来越多的被应用到低功耗的系统当中。
采用12864液晶显示。
LCD12864液晶显示信息量大,这类液晶的优点是能够显示汉字,不仅仅限于字母数字的显示。
但对于较简单的系统显示,其成本较高,利用率相对较低。
相当来说程序和电路都复杂些。
而且12864是串口通信,而1602为并口传输,相对12864更快一些。
方案三:
采用数码管显示
数码管显示内容单一,只能显示数字或者字母,亮度显示较高,成本低。
但是会占用单片机很多的IO口,还需要外接驱动电路,如CD4511等。
综上所诉,因本设计对时钟显示较高,且不需要汉子显示,故采用方案一。
2.6驱动模块
选取UNL2003驱动5V继电器对电磁铁通电,由继电器控制注油器工作。
UNL2003为高电平驱动,需要加上拉电阻2K,一个UNL2003芯片可以驱动多个继电器,即同时控制多路注油器。
2.7液位检测模块
浮球液位开关
浮球液位开关作为一种检测液位的器件,其特点是结构简单,不仅不需要外接电源,更不需要外设硬件电路,而且还具有使用寿命长、体积小、质量好等优点。
浮球液位开关对于液体的性质、温度、压力都没有苛刻要求,只要材质选取正确即可。
在水处理工业,食品加工业造船工业等都得到了广泛的应用。
红外式液位开关
红外式液位开关相比浮球开关体积更小,所用空间也更小,不仅安装流程简单,而且可以放置成各种方向,上、下、斜上、斜下均可;
红外液位开关精度在±
0.5mm之内,而现有浮球开关精度为±
3.0mm,相比之下,红外液位开关更加精确可靠。
而机械结构方面,红外开关为一个固定整体,无开关摩擦,避免了浮球开关造成的卡死现象。
综上所述,虽然红外式液位开关相比浮子式液位开关优点很多,但是由于本课题所测液位为油位,对红外式液位开关影响比较大,故还是选用浮子式液位开关。
2.8总体方案确定
根据对智能注油系统各个传感器方案的选择,采用STC89C51单片机为中枢控制器,主要实现对红外传感器、液位传感器检测信号的接收、运算处理,并通过编程实现定时、显示、报警功能。
红外传感器、液位传感器传输信号给单片机:
当单片机接收到红外传感器信号时,控制继电器动作,驱动油泵注油;
当单片机接收到液位传感器信号时,继电器关闭,停止注油,并且控制蜂鸣器报警。
另外采用时钟芯片DS1302通过单片机编程,设定所需工作周期,并由LCD1602液晶显示器显示出工作时间,在非工作周期内,注油器停止注油。
3系统硬件电路的设计
3.1控制模块电路设计
3.1.1单片机晶振的选择
晶振的选择:
当选取6MHz的晶振时,其工作的机器周期是2us。
当选取12MHz的晶振时,其工作的机器周期是1us,执行速度为6MHz时的两倍。
为了提高整个系统的性能选择了12MHz的晶振。
3.1.2单片机复位电路
单片机复位电路分为自动复位和人工复位,为了安全可靠,选取了手动复位与人工复位相结合的方案,其电路图如图3-1-1所示:
图3-1-1单片机复位电路图
3.2定时模块电路设计
定时模块采用DS1302作为时钟电路,DS1302的性能特性:
1、工作原理
DS1302是美国DALLAS公司推出的一种时钟芯片,它可以精确到每年、每月、每日,甚至是每分每秒,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
2、结构
在DS1302的八个引脚中,其中VCC2为主电源引脚,VCC1为后备电源引脚。
后备电源设计的目的是当主电源意外关闭时,可以维持时钟继续运行。
供电方式的自动选择如下:
当VCC2电压大于VCC1时,由VCC2供电;
当VCC1电压大于VCC2时,由VCC1供电。
X1和X2为振荡电路引脚,需要外接晶振32K赫兹左右。
RST引脚为复位引脚,此引脚实现两种功能,一是允许将数据输入寄存器,二是终止数据传送。
当RST引脚为高电平时,芯片被复位,数据初始化。
当RST引脚为低电平时,I/O引脚转化为高阻态,数据传送终止。
SCLK引脚为时钟输入端。
DS1302的引脚电路图如图3-2-1所示:
图3-2-1DS1302的引脚电路图
时钟电路软件仿真电路图如图3-2-2所示:
图3-2-2时钟电路软件仿真电路图
3.3显示模块电路设计
显示模块使用LCD1602液晶显示器,能够同时显示32个字符(即16列2行)。
1、LCD1602简介:
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
2、管脚功能:
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地。
第2脚:
VCC接5V电源正极。
第3脚:
VL对比度调整引脚。
第4脚:
RS为寄存器选择,高电平、低电平分别代表选择数据寄存器和指令寄存器。
第5脚:
RW为读写信号引脚,高电平1时代表读,低电平0时代表写。
第6脚:
EN端为使能端,高电平1时读取信息,跳变为低电平时执行指令。
第7~14脚:
D0~D7各引脚分别为8位双向数据端。
15脚背光正极,16脚背光负极。
LCD1602引脚图如图3-3-1所示:
图3-3-1LCD1602引脚图
特性:
1、3.3V或5V工作电压,对比度可调
2、内含复位电路
3、提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
4、有80字节显示数据存储器DDRAM
5、内建有192个5X7点阵的字型的字符发生器CGROM
6、8个可由用户自定义的5X7的字符发生器CGRAM
显示电路软件仿真电路图如图3-3-2所示:
图3-3-2显示电路软件仿真电路图
3.4驱动模块电路设计
选取UNL2003驱动5V继电器,由继电器控制指示灯的亮灭。
驱动电路软件仿真电路图如图3-4所示:
图3-4驱动电路软件仿真电路图
3.5手套检测模块电路设计
手套检测模块采用红外线对射管(HD-DS25CM-3MM),技术参数如下:
1.感应距离:
25cm
2.感应方式:
对射型(非透明物)
3.工作电压:
DC3.0VDC-5.5VDC
4.工作电流:
10MA
5.输出方式:
0V或5VNPN/PNP常开
6.输出电流:
100mA(可以直接驱动继电器)
7.发射角度:
直线(红外光)
8.接收角度:
<
10度
9.响应时间:
2ms
10.工作温度:
-25度60度
11.工作环境:
室内(不防水)
12.外形尺寸:
长2cm宽1cm高0.9cm
13.线长:
15cm
红外线对射管接线图如图3-3-1所示:
图3-3-1红外线对射管接线图
3.6液位检测模块电路设计
选取浮球开关作为液位检测模块,浮球开关的组成部分有磁簧开关和浮球,部分磁性材料内置于浮球中,封闭的塑料管内设有磁簧开关。
将浮球套在塑料管外,并用卡子限制住浮球的浮动范围,浮球开关固定在所需测量液位的容器内,当液位低于一定位置时,浮球会随着液位的下降而下降,当浮球下降到一定位置时,就会触动塑料管内的磁簧开关,从而产生与之对应的开关动作(一般当浮球浮于上端时,开关关断,当降低到下端,开关闭合)。
技术参数:
1、触点容量:
70W
2、开关电压:
DC0~110V
3、开关电流:
0.5A
4、绝缘电阻:
>
10Ω
5、触点电抗:
<100m
6、工作温度:
-10~60℃
7、工作压力:
<0.6MPA
8、开关材料:
PP
浮球液位开关实物图如图3-4-1、结构图如图3-4-2所示:
图3-4-1浮球液位开关实物图3-4-2浮球液位开关实物
4系统软件设计与实现
在进行智能注油系统设计时,除了大量的硬件设计,传感器的选择外,还有好多工作,就是要根据每个硬件电路编写与之相对应的软件程序。
将各个部分通过程序的编写组合到一起。
因此系统软件的设计在整个系统中也占有颇为重要的部分。
在单片机运行过程中大体可分为两个类型:
过程控制和数据处理。
其中数据的处理包括数据的采集、数字滤波、标度变换等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
对于本系统工作过程中,各传感器及定时电路均开始工作,每当有手套经过时,红外传感器会发出信号给单片机,单片机控制继电器驱动注油器注油。
定时电路可以任意设定注油器工作周期、休息周期。
另外当浮球液位开关检测到油位过低时,发出信号给单片机,单片机控制继电器停止工作,同时蜂鸣器报警,提醒工作人员,添加油料。
智能注油系统软件的设计包括主程序、时钟定时程序、显示程序、手套检测程序和液位检测程序等,还需要对程序不断的调试修改,及软件仿真。
4.1主程序的设计
智能注油系统的软件设计首先是各种初始化,然后使单片机采用查询方式,查询P2.4引脚是否接收到了红外传输信号。
接收到信号说明单片机已经检测到PVC手套,此时注油器就开始注油一次。
当单片机查询到P3.2引脚有中断信号时,说明油位已经过低,此时单片机控制注油器停止工作,同时蜂鸣器报警,提醒工作人员添加油料。
单片机引脚P1.0、P1.1、P1.2分别接时钟芯片引脚SCLK、I/O、RES以完成时钟电路;
单片机引脚P0.0~P0.7接LCD1602的D0~D7引脚以完成显示电路。
主程序流程图如图4-1所示:
图4-1主程序流程图
4.2时钟程序设计
单片机引脚P1.0、P1.1、P1.2分别接时钟芯片引脚SCLK、I/O、RES以完成时钟电路。
时钟芯片与单片机进行通信时,首先单片机向时钟芯片发送命令指令,此时最高位D7必须为高电平1,假如最高位为低电平,则禁止单片机写入,即为写保护状态。
当D6位为低电平时,采用时钟数据,当D6位为高电平时采用RAM数据;
D5~D1为输入或者输出的特定寄存器。
4.3显示程序设计
系统选用LCD1602为显示器,单片机引脚P0.0~P0.7接LCD1602的D0~D7引脚以完成显示电路。
显示电路程序见附录。
4.4手套检测程序设计
手套检测所用传感器为红外线对射管(HD-DS25CM-3MM),发射管有两条引线,分别接正负极,接收管三条引线,分别为正负极两条,及信号线一条。
手套检测程序流程图如图4-4所示:
如图4-4手套检测程序流程图
手套检测程序如下:
if(WZ==0){if(state11==1)le=1;
delay1ms(500);
le=0;
while(WZ==0);
displaymainpart();
display_Time();
}
4.5液位检测程序设计
液位检测传感器选用为浮球液位开关,其输出为开关量,而不是信号量,故在输出端与单片机引脚之间,串联一5K电阻,以防止电路过大,烧坏单片机。
液位检测流程图如图4-5所示:
图4-5液位检测流程图
液位检测程序如下:
while(~W){nw=1;
delay1ms(5);
delay1ms(50);
LB=1;
结论
设计实物经过调试,工作正常。
系统通电后,首先设计出工作和停息时间。
在工作时间内,当红外对射管检测到手套经过时,继电器工作,指示灯发亮一次;
当在停息时间内,不管有无手套经过,继电器均停止工作,指示灯一直熄灭。
当油位过低时,蜂鸣器报警,继电器停止工作,指示灯熄灭。
总体来说达到了所需要求。
但由于时间问题,和个人能力有限,智能注油系统还有很多方面有待提高,具体有一下几点:
(1)没有具体介绍红外对射管所涉及的原理,这在系统应用中也比较重要,有利于更加深刻的了解注油系统的工作原理。
(2)对于时钟部分的定时功能,只能单纯的设定工作时间周期,和停息周期,周而复始,而不能规定具体工作日期。
(3)硬件布线可进一步优化,使得硬件系统外观更加简约;
程序方便可进一步简化,提高单片机运行速度。
在制作只能注油系统时,需要考虑到很多因素,诸多细节。
在每一个环节都可能出现意料之外的事情,有时候一个引脚的意外短路,就需要花上半天的时间来检测每一个焊点,每一根导线。
几句程序的错误,就可能要花几天的时间去调试。
通过对注油系统硬件和软件方面的制作,不仅积累了很多经验,巩固了专业课知识,做到了知行合一,而且锻炼了自己的动手能力,为以后工作打下了坚实的基础。
本文还有很多不足之处,恳请专家和老师的批评和指正。
参考文献
[1]李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2006.
[2]余永权,汪明慧.单片机在控制系统中的应用[M].北京:
电子工业出版社,2003.
[3]何希才.传感器及其应用电路[M].北京:
电子工业出版社,2001.
[4]仉大志.谈ALPHA电子注油器及其管理.《世界海运》2013年第4期
[5]宫宇龙,周瑞涛,吕松.基于HYDSIM的电控气缸注油器设计与仿真.《起重运输机械》
2012年第9期
[6]陈智君,吴丹雯.电控注油器控制系统研发.《中国航海》2012年第2期
[7]童诗白,华成英.模拟电子技术基础[M].北京:
高等教育出版社,2001.
[8]戴佳等.51单片机C语言应用程序设计[M].北京:
电子工业出版社,2003.
[9]杨泽荣.基于MCS-51单片机的液晶1602显示设计.《科学与财富》2013年第12期
[10]王凯,马明涛.基于单片机的主动对射式红外报警系统.《商情》2011年第15期
[11]胡学海主编.单片机原理及应用系统设计.电子工业出版社,2008.
[12]张洪润,蓝清华.单片机应用技术教程[M].北京:
清华大学出版社,1997.
[13]范久臣.实时时钟芯片在单片机系统中的应用[J].沈阳教育学院学报,2005.
[14]周正华.51单片机POV趣味制作详解[M].北京:
北京航空航天大学出版社,2011.
[15]侯伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:
西安电子科技大学出版社,2009.
附录1硬件仿真图及实物图
附录2部分源程序:
#include<
reg52.h>
intrins.h>
unsignedcharcodedigit[]={"
0123456789"
};
//数字代码
unsignedcharmode
TH,TL,TN,TD,length,tempswitch1,tempswitch2,state11=1,amode,alarmmode1,nw=0,alarmmode2,minutes,hours,minutess,hourss,flagall;
unsignedchar
minuteb=0,hourb=0,secondb=0,minutea=0,seconda=0,seconds,secondss,houra=0,minute1,second1,hour1,led=0,temp;
sbitle=P2^6;
sbitW=P3^2;
sbitSCLK=P1^1;
//DS1302时钟输入
sbitDATE=P1^0;
//DS1302数据输入
sbitREST=P1^2;
//DS1302复位端口
sbitSET=P1^4;
//DS1302设置模式选择位
sbitADD=P1^5;
//增加
sbitRED=P1^6;
//减小
sbitCANL=P1^7;
sbitWZ=P2^4;
sbitLB=P2^3;
voiddelay1ms(inti)//1毫秒延时
{
intj,k;
while(i--)
for(j=76;
j>
1;
j--);
for(k=29;
k>
k--);
}
voiddelaynus(unsignedcharn)/