当前位置:文档之家› 基于单片机的自动门设计

基于单片机的自动门设计

单片机原理及系统课程设计专业:电气工程及其自动化班级:姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2014年1 月17日1、设计题目基于单片机的车库自动门的设计2、设计目的(1)制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。

(2)设计一个具有特定功能的自动车库门。

该车库门在有人来时(进门或出门)开门,无人时关门延迟,关门中途来人,立即开门。

3、整体设计方案3.1 硬件总体设计硬件系统总体设计如图1所示。

3.2 设计电路框图和原理红外自动门控制系统的硬件组成如图2所示。

本系统主要由AT89C51单片机及其外围电路、红外检测电路,门行程检测电路、步进电机控制电路、故障检测电路、故障显示电路、控制方式切换电路等七部分组成。

单片机循环检测红外检测电路和门行程检测电路输出信号,据此产生步进电机控制信号,电动机带动门运行,当系统检测到控制方式发生改变时,系统进入相应的控制方式。

如门在关门过程中遇到人或其他障碍物时门无条件朝相反方向打开,当系统出现故障,进入故障处理程序。

感应探测器探测到有人进入时,将脉冲信号传给主控器,主控器判断后通知马达运行,同时监控马达转数,以便通知马达在一定时候加力和进入慢行运行。

马达得到一定运行电流后做正向运行,将动力传给同步带,再由同步带将动力传给吊具系统使门扇开启;门扇开启后由控制器做出判断,如需关门,通知马达作反向运动,关闭门扇。

感应自动门的种类很多,在此,仅以平移型感应自动门机作为设计的重点。

平移式自动门机组由以下部件组成:(1)主控制器:它是自动门的指挥中心,通过内部编有指令程序的大规模集成块,发出相应指令,指挥马达或电锁类系统工作;同时人们通过主控器调节门扇开启速度、开启幅度等参数。

(2)感应探测器:负责采集外部信号,如同人们的眼睛,当有移动的物体进入它的工作范围时,它就给主控制器一个脉冲信号。

(3)动力马达:提供开门与关门的主动力,控制门扇加速与减速运行。

(4)门扇行进轨道:就像火车的铁轨,约束门扇的吊具走轮系统,使其按特定方向行进。

(5)门扇吊具走轮系统:用于吊挂活动门扇,同时在动力牵引下带动门扇运行。

(6)下部导向系统:是门扇下部的导向与定位装置,防止门扇在运行时出现前后门体摆动。

(7)当门扇要完成一次开门与关门。

系统硬件框图如图2所示:4 自动车库门的软件设计4.1 系统软件设计流程图整个系统软件主要由主程序、开门子程序、关门子程序、T0中断服务程序、T1中断服务程序、外部中断服务子程序组成。

主程序主要是完成系统进行初始化、中断设置等功能。

程序设计中设置了一个外部中断0,它保证红外自动门能够在无人操控情况下自动运行,主要功能是当检测到有人出入门时,启动电机,从而实现自动开关门的目的。

4.2 各部分程序流程设计(见附录a)在开门过程中首先进行门状态检测,根据所检测到的信号判断自动门上次停机所处位置。

根据检测结果确定门此刻应运行方式,如检测出门是半开状态,门直接转入加速开门的过程。

如检测出门是全开状态,门转入延时开门过程。

如检测出门是全关状态,那么在检测到有人出人时,门会缓慢打开,之后加速运行,接着减速运行,最后电机停止运转,门由于惯性缓慢关闭。

自动门开门后暂停一段时间,然后关门。

关门是开门的一个反过程,它经过慢速运行、加速运行、减速运行、惯性运动直至停止这几个过程。

在自动门关闭过程中当系统接收到由红外线传感器电路发出的有人出入的信号时,门会重新打开。

与开门情况不同的是当在关门过程中检测到故障信号时门会朝反方向运动,将门打开,这样可以排除因自动门遇到障碍物或人身体而产生故障信号使整个系统停止工作的可能。

为了运行过程可靠,在以不同速度运行过程中,对运行时间做了安全设置,当在开门状态下检测到运行时间超过安全时问或系统出现故障时,程序转人故障处理程序。

4.3自动车库门的原理图图3自动车库门的原理图4.4仿真图图4自动车库门的仿真图4.5主程序(见附录b)4.6 功能说明(1) 有人来时(进门或出门)开门。

当人走到离门不远的时候时,安装在门上侧的热释红外线传感器信号检测装置检测到有人时,将启动电动机带动传动链开门。

(2)无人时关门延迟,当热释收发装置没有检测到有人在离门1m的范围内,将延迟1秒启动电动机带动传动链关门。

(3)关门中途来人,立即开门。

当启动电动机带动传动链关门时,感应探头突然检测到在离门1m的范围内有人,则立即停止电动机关门,启动电动机带动传动链开门。

4.5调试调试为了确保该门控系统的安全高效运行必须满足下列条件:(1)大门的结构必须适合于自动控制特别要注意滚轮的直径必须与需要控制的大门重量相匹配其尺寸和重量符合有关技术规范之规定。

(2)确保大门在滑动过程中不发生倾斜。

(3)确保大门活动平稳准确在整个移动过程中不出现任何不正常的摩擦现象。

(4)确保地面条件稳固避免固定基座的膨胀螺丝发生摇晃。

(5) 认真检查上方导轨和行程限位的机械挡块是否安装到位。

4.6门行程检测及故障检测门行程检测电路通过检测门行程开关的闭合情况来发送不同的信号,使电机改变转速,进而控制门运行的速度以提高运作效率,为了保护门不受到损害和保证门运行效率,在门行程检测电路中设置了四个行程开关。

它们分别代表开门极限、行程极限1、行程极限2、关门极限。

门在开启过程中,分别经过慢速、加速、减速和停止四个过程,门的关闭过程则与上述过程相反。

门运行到极限位置时,限位开关动作,单片机根据接收到响应的信号,改变电机运行速度。

在故障检测电路中,配置了温度和速度传感器,用来监测电机的工作情况,从而实现电机过热保护和门运行障碍保护,同时还设置了电压监控电路,用于检测系统异常情况。

检测电路首先将检测到的信号转换成电压,然后经单片机内部的户以转换器变成数字信号,单片机定期读取数据,一旦发现数据异常,即马上采取相应的紧急措施,向系统发出故障信号,系统停止工作,向故障显示电路发出指令,发出报警信号并显示故障类型。

5 结束语我在这一次车库自动门的设计过程中,很是受益匪浅。

通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对课程设计的思考及书面表达能力,最终完成了。

这为自己今后进一步深化学习,积累了一定宝贵的经验。

撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

参考文献[1] 王思明.单片机原理及应用系统设计.北京:科学出版社,2012.[2] 张金铎.传感器及其应用.西安:电子科技大学出版社,2002.[3] 何希才.传感器及其应用实例.机械工业出版社,2003.[4] 单成祥.传感器的理论与设计基础及其应用.国际工业出版社,2002.[5] 金庆发.传感器技术与应用.机械工业出版社,1994.[6] 康华光.电子技术基础.高等教育出版社,1998.附录a 信号流程说明附录1 系统主程序流程图附录2 开门子程序流程图附录3 开门中断程序流程图附录4 T1中断服务程序流程图附录b主程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit P20=P2^0; //实验sbit KK=P2^3;sbit en=P2^4;sbit rw=P2^5;sbit rs=P2^6; //正反控制uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转uchar code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转uchar code open[]=" Open The Door" ;uchar code close[]="Close The Door" ;void init();// delay();void motor_start();void wcom(uchar com);void wdat(uchar dat) ;void lcd1602_init() ;void delay(uint z){uint x,y;for(x=z;x>0;x--){for(y=0;y<10;y++){nop_;nop_;nop_;nop_;nop_;nop_;nop_;nop_;nop_;nop_;nop_;nop_;}}}void motor_start(){uchar i,xx;uint j;for (j=0; j<12; j++) //转1*n圈{for (i=0; i<8; i++) //一个周期转30度{if(KK==1) P0 = FFW[i]&0x1f; //取数据if(KK==0) P0 = FFZ[i]&0x1f;delay(1000); //调节转速}}}void main(){uchar temp0,temp1;rw=0;P20=0;init();lcd1602_init() ;wcom(0x80);delay(10);if(KK==1){wcom(0x80);for(temp0=16;temp0>0;temp0--){wdat(open[temp1]);temp1++;}}else if(KK==0){wcom(0x80);for(temp0=16;temp0>0;temp0--){wdat(close[temp1]);temp1++;}}motor_start();}void init() //中断初始化{IP=0x01;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;EX0=1;IT0=1;ET0=1;ET1=1;TR0=1;TR1=1;}void wcom(uchar com){rs=0;P1=com;delay(1); //写命令延时可以为1 en=1;delay(1); //写命令延时可以为1en=0;}void wdat(uchar dat){rs=1;P1=dat;delay(1); //此处写数据延时可以为1en=1;delay(4); //此处写数据延时至少为4 en=0;}void lcd1602_init(){en=0;wcom(0x38);wcom(0x0c);wcom(0x06);wcom(0x01);}void exter() interrupt 0{P20=1;delay(10000);}void timer0() interrupt 1{}void timer1() interrupt 3{}。

相关主题