电梯自动控制系统.docx

上传人:b****4 文档编号:5582470 上传时间:2023-05-08 格式:DOCX 页数:20 大小:121.72KB
下载 相关 举报
电梯自动控制系统.docx_第1页
第1页 / 共20页
电梯自动控制系统.docx_第2页
第2页 / 共20页
电梯自动控制系统.docx_第3页
第3页 / 共20页
电梯自动控制系统.docx_第4页
第4页 / 共20页
电梯自动控制系统.docx_第5页
第5页 / 共20页
电梯自动控制系统.docx_第6页
第6页 / 共20页
电梯自动控制系统.docx_第7页
第7页 / 共20页
电梯自动控制系统.docx_第8页
第8页 / 共20页
电梯自动控制系统.docx_第9页
第9页 / 共20页
电梯自动控制系统.docx_第10页
第10页 / 共20页
电梯自动控制系统.docx_第11页
第11页 / 共20页
电梯自动控制系统.docx_第12页
第12页 / 共20页
电梯自动控制系统.docx_第13页
第13页 / 共20页
电梯自动控制系统.docx_第14页
第14页 / 共20页
电梯自动控制系统.docx_第15页
第15页 / 共20页
电梯自动控制系统.docx_第16页
第16页 / 共20页
电梯自动控制系统.docx_第17页
第17页 / 共20页
电梯自动控制系统.docx_第18页
第18页 / 共20页
电梯自动控制系统.docx_第19页
第19页 / 共20页
电梯自动控制系统.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电梯自动控制系统.docx

《电梯自动控制系统.docx》由会员分享,可在线阅读,更多相关《电梯自动控制系统.docx(20页珍藏版)》请在冰点文库上搜索。

电梯自动控制系统.docx

电梯自动控制系统

 

摘要

本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、楼层显示数码管模块、电梯上下行模块等部分组成。

该系统采用单片机(AT89C52)作为控制核心,内外使用按键按下与否而引起的电平的改变,作为用户请求信息发送到单片机,单片机控制步进电机转动,单片机根据楼层检测结果控制电机停在目标楼层。

软件部分使用单片机C语言,利用查询方式来检测用户请求的按键信息,根据电梯运行到相应楼层时,模拟按键引起电平变化,送到单片机计数来确定楼层数,并送到数码管进行显示。

硬件设计简单可靠,结合软件,基本实现了三层电梯运行的模拟。

关键词:

电梯模型,L298,霍尔传感器,步进电机

一、前言

随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。

电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。

由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。

采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。

从技术发展来看,这种系统将逐渐被淘汰。

而单片机价格相当便宜,由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。

二、总体方案设计

1、方案总体设计

本设计采用AT89C52单片机作为核心,配以适当接口作为输入输出通道。

实际电梯控制系统每层装有一个传感器霍尔44E,从而判断车厢所在位置,通过数码管显示楼层数。

电梯间竖井部分由木棒搭建而成,电梯桥厢由纸皮箱做模型,通过支点由步进电机牵引,可在电梯间竖井模型的空间内上下运动。

(1)当某层有呼叫并有呼叫信号显示时,桥厢模型作相应的运动,并准确平层,平层结束时给出提示信号。

(2)当有多层呼叫时,桥厢模型将按说明中的电梯模型运行规则作相应的运动,并依次在呼叫的楼层停留。

(3)当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。

2、

方案选择

方案一:

采用一个单片机控制所有的按键、数码管显示、步进机的转动、传感器的输出信号等等,并对以上所有信号进行处理。

单片机技术目前较为成熟,自身资源丰富,硬件设计简单,成本低,可靠性高,结合软件完全可以实现电梯运行状况的简单模拟。

方案二:

采用CPLD器件作为控制中心,对整个系统的运行进行统一管理,但这种方案要求平时有很多的知识积累和较强的专业水平,实现起来比较困难且器件较贵不符合经济要求,而且升降电机的控制,显示等还需要单片机的配合。

综上分析,方案一单片机比较合适此控制系统的要求。

所以我采用方案一。

三、单元模块设计

1、单片机最小系统

如图5所示。

P3口控制电梯上下楼的各个按键,P0口控制二位一体数码管。

P2.3控制报警器电路。

P1.4-P1.7通过控制电梯驱动芯片来控制电机正反转,从而控制电梯上下行。

P1.3控制lm298驱动芯片的使能端,P1.0-P1.2用来查询霍尔输出信号。

2、电机驱动电路

电机驱动电路如图6所示,电路使用了驱动芯片LM298,其内部结构如图7所示。

通过单片机依次控制IN1-IN4得到高低电平使得OUT1-OUT4发生相应的变化来控制步进电机的正反转,EN为芯片的使能端。

3、显示电路

显示电路是用来显示电梯的楼层,它是利用了单片机显示程序来控制一个二位一体共阴数码管来显示。

4、按键电路

P3口的七个引脚连接七个按键,分别是1,2,3楼电梯内外的按键。

通过程序不断的查询1、2、3楼层内、外是否按键按下来使单片机程序控制电梯运行。

5、平层提示信号电路

当电梯到达目的楼层的时候是需要给予提示信号,故使用蜂鸣器来发出的声音做为提示信号,将三极管的基极接到P2.7引脚上,只需在程序中到达了目的层给P2.3高电平就能使蜂鸣器发出声音。

6、霍尔传感器平层电路

当磁铁靠近的时候,霍尔输出低电平,单片机P1.0-P1.2引脚接霍尔的输出信号,这样通过程序查询是哪个楼层霍尔输出为低电平,就可知道电梯到达了哪个楼层,并使数码管显示当前的楼层。

四、系统调试

五、系统功能

电路的系统控制为按键控制,当按下按键,系统首先判断梯厢所处楼层,根据当前楼层和目标楼层的关系,决定步进电机的正反转。

当梯厢到达目标楼层后,蜂鸣器发出响声提示到达,梯厢等待一段时间,模拟电梯开关门等待时间,再进行下一次的运作。

六、设计总结

本设计主要是对步进电机和霍尔传感器的应用,以完成整个系统的构造。

通过这次的制作,我拓展了专业知识,我了解到了更多课外的知识。

例如亲自购买元件和选取元件的时候,使我对元件有了更深的认识。

另外这次比赛提高了我们实践动手能力,提升了我对运用单片机设计和制作的能力和兴趣,更加深了我的技术。

软硬件结合会是今后电子发展的方向,我相信通过我的努力,日后能设计出潮流前端的作品。

参考文献

[1]梁延东 主编《电梯控制技术》北京:

中国建筑工业出版社1997

[2]王千实用电子电路大全[M]电子工业出版社2001

[3]陈松碧李文娟《电梯模型控制》

附录

①系统原理图:

②作品程序:

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineMAX_FLOOR3//楼层高度

uchargf,b;//gf表示目的层,b为等待计数累加位

uintnf;//当前电梯所在楼层

uintup_call[MAX_FLOOR],down_call[MAX_FLOOR],in_call[MAX_FLOOR];//存放呼叫事件

ucharcodedis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71};//0-16数码显示代码

sbitF3=P3^4;//电梯内3楼

sbitF2=P3^5;//电梯内2楼

sbitF1=P3^6;//电梯内1楼

sbitF1U=P3^3;//1楼向上按钮

sbitF2U=P3^2;//2楼向上按钮

sbitF2D=P3^1;//2楼向下按钮

sbitF3D=P3^0;//3楼向下按钮

sbitIN1=P1^3;//電機控制位1

sbitIN2=P1^4;//電機控制位2

sbitIN3=P1^5;//電機控制位3

sbitIN4=P1^6;//電機控制位4

sbitEN=P1^7;//L298使能端信号

sbitYI=P1^0;//一楼霍尔输出信号

sbitER=P1^1;//二楼霍尔输出信号

sbitSAN=P1^2;//三楼霍尔输出信号

sbitU=P2^4;//上行指示灯

sbitD=P2^5;//下行指示灯

sbitseg_a=P0^0;

sbitseg_b=P0^1;

sbitseg_c=P0^6;

sbitseg_d=P3^0;

sbitseg_e=P0^7;

sbitseg_f=P0^4;

sbitseg_g=P3^1;

sbitseg_p=P0^5;

sbitseg_1=P0^2;

sbitseg_2=P0^3;

sbitRING=P2^3;//蜂鸣器报警

voidinit();//初始化程序

voidcheck();//霍尔查询楼层

voiddisplay(nf);//显示函数

voidfloor();//楼层控制函数

voiddowner();//下降函数

voiduper();//上升函数

voidstop();//停车函数

voidgetinput();//按键查询函数

voidseg();//數碼管位數控制函數

voiddelay();//1ms延時函數

voidrun();//電動機正轉函數

voidrerun();//電動機反轉函數

/**********************************************************************

初始化子程序

**********************************************************************/

voidinit()

{

RING=0;//蜂鸣器不响

nf=1;//1楼

EN=0;//电机停止

IN1=0;

IN2=0;

IN3=0;

IN4=0;

U=0;//上行指示灯灭

D=0;//下行指示灯灭

YI=1;//霍尔元件初始化

ER=1;

SAN=1;

}

/**********************************************************************

1ms延时子程序

**********************************************************************/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=100;y>0;y--);

}

/**********************************************************************

數碼管位數控制函數

**********************************************************************/

voidseg(nf)

{

seg_a=dis[nf]&0x01;//00000001

seg_b=dis[nf]&0x02;//00000010

seg_c=dis[nf]&0x04;//00000100

seg_d=dis[nf]&0x08;//00001000

seg_e=dis[nf]&0x10;//00100000

seg_f=dis[nf]&0x20;//01000000

seg_g=dis[nf]&0x40;//01000000

seg_p=dis[nf]&0x80;//10000000

}

/**********************************************************************

按键标识号检测子程序

**********************************************************************/

voidgetinput()

{

if(F3D==0){down_call[2]=1;}//3楼向下按钮,存放标识号

elseif(F1U==0){up_call[0]=1;}//1楼向上按钮,存放标识号

elseif(F2D==0){down_call[1]=1;}//2楼向下按钮,存放标识号

elseif(F2U==0){up_call[1]=1;}//2楼向上按钮,存放标识号

elseif(F1==0){in_call[0]=1;}//电梯内1楼按钮,存放标识号

elseif(F2==0){in_call[1]=1;}//电梯内2楼按钮,存放标识号

elseif(F3==0){in_call[2]=1;}//电梯内3楼按钮,存放标识号

}

/**********************************************************************

电梯报警停车子程序

**********************************************************************/

voidstop()

{

U=0;//上行指示灯灭

D=0;//下行指示灯灭

EN=0;//电机使能端关闭

IN1=0;

IN2=0;

IN3=0;

IN4=0;

while(b!

=120)//蜂鸣器报警

{

b++;

if(b>30){RING=0;}//31~120蜂鸣器不响

else

{

RING=1;//0~30蜂鸣器响

display(nf);//数码管显示

}

}

RING=0;//蜂鸣器不响

b=0;

}

/**********************************************************************

电梯上升子程序

**********************************************************************/

voiduper()

{

U=1;//上行指示灯亮

if(nf==1&&gf==3)//nf是否在1楼和gf目的楼层为3楼

{

getinput();//电梯在一楼去往三楼查询是否2楼有顺路乘坐(检测其他楼层的标识号)

check();//霍尔楼层查询当前电梯所在楼层

while(nf==1)//nf在1楼

{

getinput();//检测其他楼层的标识号

check();//霍尔楼层查询当前电梯所在楼层

EN=1;

run();

display(nf);//数码管显示

}

if((up_call[1]||in_call[1])==1)//2楼向上按钮按下或电梯内2楼按钮按下

{

stop();//到达2楼,电梯报警停车

up_call[1]=0;//清除2楼向上按钮标识号

in_call[1]=0;//清除电梯内2楼按钮标识号

}

}

while(nf!

=gf)//电梯所在楼层不等于目的楼层

{

U=1;//上行指示灯亮

getinput();//检测其他楼层的标识号

check();//霍尔楼层查询当前电梯所在楼层

EN=1;

run();

display(nf);//数码管显示

}

stop();//到达目的楼层,电梯报警停车

}

/**********************************************************************

电梯下降子程序

**********************************************************************/

voiddowner()

{

D=1;//下行指示灯亮

if(nf==3&&gf==1)//nf是否在3楼和gf目的楼层为1楼

{

getinput();//检测其他楼层的标识号

check();//霍尔楼层查询当前电梯所在楼层

while(nf==3)//电梯所在楼层为3楼

{

getinput();//检测其他楼层的标识号

check();//霍尔楼层查询当前电梯所在楼层

rerun();

display(nf);//数码管显示,disnum每秒+1

}

if((down_call[1]||in_call[1])==1)//2楼向下按钮按下或电梯内2楼按钮按下

{

down_call[1]=0;//清除2楼向下按钮标识号

in_call[1]=0;//清除电梯内2楼按钮标识号

stop();//到达2楼,电梯报警停车

}

}

while(nf!

=gf)//电梯所在楼层不等于目的楼层

{

D=1;//下行指示灯亮

getinput();//检测其他楼层的标识号

check();//霍尔楼层查询当前电梯所在楼层

run();

display(nf);//数码管显示

}

stop();//到达目的楼层,电梯报警停车

}

/**********************************************************************

霍尔楼层查询子程序

**********************************************************************/

voidcheck()

{

if(YI==0){nf=1;}//检测到楼层为1楼

if(ER==0){nf=2;}//检测到楼层为2楼

if(SAN==0){nf=3;}//检测到楼层为3楼

}

/**********************************************************************

电梯运行方式控制子程序

**********************************************************************/

voidfloor()

{

if(nf==1)//电梯所在楼层为1楼

{

if(down_call[1]||up_call[1]||in_call[1])//2楼向下按钮按下或2楼向上按钮按下或电梯内2楼按钮按下

{

gf=2;uper();down_call[1]=0;up_call[1]=0;in_call[1]=0;//gf前往目的楼层2楼,电梯上升,清除2楼向下按钮和2楼向上按钮和电梯内2楼按钮标识号

}

elseif(down_call[2]||in_call[2])//3楼向下按钮按下或电梯内3楼按钮按下

{

gf=3;uper();down_call[2]=0;in_call[2]=0;//gf前往目的楼层3楼,电梯上升,清除3楼向下按钮和电梯内3楼按钮标识号

}

}

if(nf==2)//电梯所在楼层为2楼

{

if(up_call[0]||in_call[0])//1楼向上按钮按下或电梯内1楼按钮按下

{

gf=1;downer();up_call[0]=0;in_call[0]=0;//gf前往目的楼层1楼,电梯下降,清除1楼向上按钮和电梯内1楼按钮标识号

}

elseif(down_call[2]||in_call[2])//3楼向下按钮按下或电梯内3楼按钮按下

{

gf=3;uper();down_call[2]=0;in_call[2]=0;//gf前往目的楼层3楼,电梯上升,清除3楼向下按钮和电梯内3楼按钮标识号

}

}

if(nf==3)//电梯所在楼层为3楼

{

if(down_call[1]||in_call[1]||up_call[1])//2楼向下按钮按下或2楼向上按钮按下或电梯内2楼按钮按下

{

gf=2;downer();down_call[1]=0;in_call[1]=0;up_call[1]=0;//gf前往目的楼层2楼,电梯下降,清除2楼向下按钮和2楼向上按钮和电梯内2楼按钮标识号

}

elseif(in_call[0]||up_call[0])//1楼向上按钮按下或电梯内1楼按钮按下

{

gf=1;downer();in_call[0]=0;up_call[0]=0;//gf前往目的楼层1楼,电梯下降,清除1楼向上按钮和电梯内1楼按钮标识号

}

}

}

/**********************************************************************

電動機正轉函數

**********************************************************************/

voidrun()

{

if(EN==1)

{

IN1=1;delay(4);IN3=0;delay(4);IN2=0;delay(4);IN4=0;delay(4);

IN1=0;delay(4);IN3=1;delay(4);IN2=0;delay(4);IN4=0;delay(4);

IN1=0;delay(4);IN3=0;delay(4);IN2=1;delay(4);IN4=0;delay(4);

IN1=0;delay(4);IN3=0;delay(4);IN2=0;delay(4);IN4=1;delay(4);

}

if(EN==0)

{

IN1=0;IN3=0;IN2=0;IN4=0;

}

}

/**********************************************************************

電動機反轉函數

**********************************************************************/

voidrerun()

{

if(EN==1)

{

IN1=0;delay(4);IN3=0;delay(4);IN2=0;delay(4);IN4=1;delay(4);

IN1=0;delay(4);IN3=0;delay(4);IN2=1;delay(4);IN4=0;delay(4);

IN1=0;delay(4);IN3=1;delay(4);IN2=0;delay(4);IN4=0;delay(4);

IN1=1;delay(4);IN3=0;delay(4);IN2=0;delay(4);IN4=0;delay(4);

}

if(EN==0)

{

IN1=0;IN3=0;IN2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2