您的当前位置:首页基于单片机的电梯控制系统

基于单片机的电梯控制系统

2020-09-16 来源:小侦探旅游网
1 课题概述

1.1 课题的主要研究内容及设计步骤

本课题的主要任务是完成一个电梯系统的调度模块,即根据每个楼层不同顾客的按键需求,让电梯做出合理的判断,正确高效地知道电梯完成各项载客任务。根据此任务,本课题需要研究的内容有:

1、根据系统的技术要求,进行系统硬件的总体方案设计; 2、学习单片机的相关知识,并且加以运用;

3、选择恰当的芯片,并对其内部协议有所掌握,便于应用。

4、研究C语言编程,并且规定电梯的工作规则,用C语言加以实现; 5、对软件和硬件进行调试,让其协调工作,完成指定任务。 结合以上内容,本课题的设计方案步骤如下: 关于硬件部分:

首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、显示二极管、数码管等,由于这是一个调度模块,故没有设计具体的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。接着,要完成电路图的设计,画出PCB板,焊接相关器件后进行硬件调试,看是否好用并加以适当的更正。

关于软件部分:

关于电梯调度时所遵循的原则作出规定,其必须基于高效与人性化两个原则。最后是使用C语言将规定程序化,以便电梯真正的运作。

当然,二者的关系并不是分离的,它们是相辅相成,硬件依据软件来验证,软件依据硬件来调试。经过一个个的发现问题、一个个的解决问题,最终做出完美的电梯调度模块。

1.2课题的开发环境简介

1.2.1 电路图制作软件proteus 7.2

Proteus是目前最好的模拟单片机外围器件的工具,因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。 1.2.2 C51的程序开发软件Keil

Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。

2 方案论证

2.1 设计功能要求

本设计是为一六层电梯设计一调度系统,即使电梯能够合理高效地运行,完成各楼层顾客的接送任务。形象地说,就是要应对不同楼层顾客的不同需求,作出合理高效的判断,使所有顾客在整体运用时间最短的条件下将其运往各自的目的地。

这个设计的成品应该可以作为真实电梯的控制系统一样,遵守以下两个原则:一是高效性,二是人性化。而实际电梯所面临的情况无比复杂,故本设计的难点除了硬件上面外,还有对这些复杂的情况归类化,分为若干个基本情况,另外是用恰当的C语言描述来表达这些复杂的逻辑。

核心处两个步骤:第一判断电梯是上行还是下行;第二,判断是去接人还是去送人。

2.2 系统的结构框图

图2-1 系统的结构框图

如上图2-1所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入;

单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。电动机的驱动和控制就是接收单片机的PWM脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。

3 系统的硬件设计

电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为6楼,因此6楼应仅有下降按键。其他楼层则既有上升按键,也有下降按键。在电梯内部按键设置方面,则应有1~6楼的各层选择按键。按键的一端接地,另一端通过集成电路芯片连至单片机引脚。这里,由于按键数量很多,又要求电梯控制系统能以最快速度响应按键的需求,因此,所有按键通过与门连接单片机。用五片双4输入与门74LS21即可实现16个按键对象的集体与运算的最终结果,按键动作最终是送到单片机的INT0端。即:

INT0←(P1.0*P1.1*P1.2*P1.3)*(P1.4*P1.5*P1.6*P1.7)*(P3.0*P3.1*P2.0*P3.3)

*(P3.4*P3.5*P2.1*P2.2)

无论哪一个按键有动作,低电平信号就会送到INT0端,从而引发外部中断0服务子程序运行。当定时器0中断时,单片机向电动机发送PWM脉冲信号,电动机接到脉冲信号后,经过驱动器的驱动,电动机便牵引电梯上下运动。

电梯的楼层显示用七段数码管完成显示。本设计电梯只有6层,因此用七段数码管即可,数码管的显示数据通过单片机的P0口来进行传送。设计中要求数码管随着电梯的位置变化而变化,即数码管显示数据要与楼层数同步,因此数码管的片选线直接连接地,而不需要再选择。

电梯升降的状态用上升和下降指示灯来进行显示,通过单片机的P3.7和P3.6引脚分别连接上升和下降指示灯的负极,其正极均连接至系统正电源处。

3.1单片机最小系统模块

在本设计中,最小系统应该包括:单片机、晶振电路、复位电路。如图3-1所示,晶振电路由C3与C2和晶振组成。C3与C2是两个30pF的瓷片电容接地用来削减偕波对电路的稳定性的影响。复位电路采取的为手动按键复位电路,由电容

C13,电阻R1、C1和开关RESET组成,当单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。

图3-1 单片机的最小系统

3.2电动机的选择

我们选用三相异步电动机来做电梯的动力装置,因为国产Y系列的电动机具有高效、节能、特性好及低噪声等优点,我们将选用国内最先进的Y系列异步电动机。这里我们选用Y100L24三相异步电动机,因为它还具有性能好、寿命长、可靠性高、维护方便、启动转矩大等优点,其功能参数为额定电压380V,额定频率50HZ,额定功率3000W,额定转速1400转/分。如图3-2,在PROTEUS中,我们选用的普通的MOTOR-BCD代替进行仿真。

图3-2电动机正反控制电路

3.3中断电路

图3-3 中断电路图

中断电路如上图3-3所示。图中外部0中断INT0与74LS21与门相接,低电平有效,所以当单片机接电源后,P1.0~P1.3引脚此时为高电平,当任一按键按下后,相应的中断输入口直接与地相接,高电平变为低电平,外部0中断立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。

3.4 数码管显示模块

图3-4 数码管显示电路

七段数码管外形如图3-4所示,即左边的7个引脚跟单片机P0口相接,下边的引脚连接地。楼层内外分别用一个7段数码管显示,可以共用一个P0口。

3.5 按钮控制电路模块

图3-5电梯不同楼层的按钮

如图3-5所示,按键显示电路模块包括电梯内部的按钮和每层楼的上下按钮,这些按钮一端与地相接,一端又与单片机和与门74LS21相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。

3.6 报警电路

如图3-6所示,电梯内添加手动报警电路,假若电梯发生故障,电梯内的人可自行发出报警信号,向外界求救。该电路接在单片机的P2.7口。

图3-6电梯不同楼层的按钮

3.7 模拟电路图

如下图3-7所示,电路原理图包括状态指示灯模块、内外按键模块、中断电路模块、单片机的主要外围模块、数码管显示模块和电动机驱动控制模块、报警模块。P0口的P0.1~P0.6引脚与数码管模块相接,P2口的P2.4~P2.7引脚与电动机驱动控制模块相接,P3口的P3.2引脚与中段电路模块相接,P1口的P1.0~

P1.7引脚、P3.0~P3.1引脚、P3.3~P3.5引脚分别与对应的内外按键模块相接,P3.6~P3.7引脚与状态指示灯模块相接。

图3-7 模拟电路原理图

4系统的软件设计

从程序功能上来分,本设计的高层软件程序大概可以分为以下几类:一、运行与决策函数;二、中断处理函数;三、置位各状态变量函数;

其中,第一类函数起作用于按键按下的时刻,当有按键按下时,通过74LS21以中断的方式发送给单片机,此时,单片机即对程序中所用到的各个状态变量进行置位并且点亮相关发光二极管,如置位按键所对应的去向变量等,方便决策函数使用。第二类函数起作用于电梯到达目标楼层时,这时函数负责把相关发光二极管熄灭,并且及时清除相关状态位,以免影响判别函数作出正确判断。第三类函数是程序的核心。它直接负责管理电梯下一次所要到达的楼层,并且要基于短时间、高效率、人性化等原则。每当电梯经过一楼层时,此函数即会被调用,然后返回一个变量名为aim的值,它即为下一个电梯要停留的目标楼层值。

4.1 单片机中断处理函数

本设计主要用到了单片机的中断系统。当有按键按下时,利用函数将键值存储起来,并在单片机引脚输出高电平发出中断进行相关处理。中断的相关设置以及中断处理如图4.1所示。

读取键值分析键值来源点亮相应发光二极管置位相应状态变量

图4.1 中断处理中的相关操作

4.2 电梯判决函数

在电梯经过一个楼层时,就会自动调用该函数。其流程如图4.2所示。

开始按键标识全为0?否是电梯不再运行电梯向上运行电梯向下运行电梯上楼接人电梯上楼送人电梯下楼接人电梯下楼送人相关处理1相关处理2相关处理3相关处理4 图4-2 电梯判决流程图

由图可知,程序中将实际情况分为四种情况来判断:电梯上行且是去送人、电梯上行且是去接人、电梯下行且是去送人、电梯下行且是去接人。电梯各情况下所对应的处理方法,以电梯上行的两种状态为例:

在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人按下按键呼叫,然后电梯便响应呼叫。但是,实际情况往往比这复杂的多,往往会有

多人呼叫电梯。那么就必须得为电梯规定好一个特定的优先级规则,以免乱作一团。

若电梯处于上行状态,则在该过程中响应不同顾客的优先级为:高层呼叫上行顾客>高层呼叫下行顾客>底层呼叫下行顾客>底层呼叫上行顾客。

若上行,且是送人,比如电梯当前在二层,六楼有人呼叫上楼,那么它就要响应这一呼叫,从而把自己的目标楼层锁定为六楼并向上运行,而在六楼呼叫后不久,五楼也有人呼叫上楼(且电梯此刻还未运行到五楼),那么在电梯运行中,每经过一个楼层,会做一次判决,因为五楼也有人呼叫,所以正常情况下,它应该在判决后将目标楼层定位五楼。而若五楼的顾客按下的是下行键,或者二楼的人按下呼叫键,电梯此时都会暂时不予理会。

在程序中,当五楼有上行键呼叫时,状态变量f5up便会被置位,程序走到判别if((f5up==0)|(present>5))时,里面的内容即为假,则不再继续向下判断,而转向else语句中,里面又有一个判断,当确定此时确实有键按下且电梯当前所处楼层小于五楼时,目标楼层就会被变更到五楼,程序最终返回一个aim值。由于程序中没有下行键的出现,故下行键的状态是不会影响到该程序的判决的。

此时程序的检测依据两个标准:第一,由低层像高层开始检查;第二,对于电梯已经过的楼层和按下下行键所发出的请求,电梯暂时是不予理会的。这也是很明显的,因为上行送人状态中,低层的优先权大于高层的。程序就是靠着上面这些if语句的嵌套,来完成这种优先级设置的。

至于上行接人状态时,所坚持的标准是由高层到底层的顺序进行排查,而对于上行键的呼叫暂时不予理会。下行的状态,恰好与上行相反,在此不再赘述。

4.3 电梯运行函数

该函数直接控制电梯的上行与下行、运行与停止。起关键作用的还是判决函数给它提供的目标楼层值。其具体的流程如图4.3所示。它的功能就是判断目标楼层与当前楼层间的关系:若前者大于后者,则上行;若前者小于后者,则下行;若相等,则停止片刻把门打开。当然,之后它还要做一次判断,因为可能还有其他的楼层需要呼叫,此时程序会自动装入合适的目标楼层值,指挥电梯继续运行下去,直到所有的呼叫都完成为止。

开始是当前楼层与目标是否相等?否当前楼层小于目标楼层?是否判决目标楼层是否改变否停止判决目标楼层是否改变是改变目标楼层判决目标楼层是否改变?是改变目标楼层否清零相应状态变量与二极管是开门上行下行当前楼层加1当前楼层减1否

图4.3 运行函数流程图

4.5 主函数

之所以把主函数放于最后才说,是因为它最为简单,它之上把上面所有的函数按照恰当的顺序排列起来,便于相互调用而已。

首先,各按键按下的信息是通过中断来告知单片机的,故我们要对单片机中断有相应的程序语句加以说明,如开总中断,开外部中断0以及其触发方式等等。最后就是一个大的死循环了,当电梯运行到这里的时候,就一直执行判决函数,检测有目标楼层有无改变,如果有,就开始调用运行函数,而运行函数没当经过一个楼层又会再次调用判决函数等等。而当有中断发生时,单片机又可以转而处理相应的中断。就这样,各子函数间通过主函数形成了一个统一的整体,使得整个系统得以完美运行。

5 电路仿真及调试

在画好电路图和将程序导入单片机中后,进行仿真,部分结果如下

图5-1 电梯默认停在一楼

解析:

如上图5-1所示,电梯没有其他响应时,默认停在一楼,数码管显示1楼。此时各内外按键接地的一侧全部为低电平,接单片和74LS21与门一侧全部为高电平,电动机处于停止状态。

图5-2 高处5楼呼叫电梯,上行指示灯亮

解析:

如上图5-2所示,电梯在1楼,电梯内有上升到5楼的指令,电梯上行,经过四楼且上行指示灯亮,而到一到五楼,五楼按键和指示灯另一侧马上转为高电平,指示灯熄灭,因此截上升到四楼的图。

图5-3 电梯下行要去2楼,经过三楼,此时外部按下6楼下的指令

解析:

如上图5-3所示,电梯在接到下行指令要去2楼,经过三楼时,此时6楼外有人呼叫电梯,由于电梯内依然有人,电梯依旧处于下行中,此时电梯内2楼和电梯外6楼指示灯都亮,且电梯下行指示灯也亮,先不理会6楼的向下指令,到达2楼后,直接前往6楼,到达六楼时,六楼指示灯也会立即熄灭。在这个过程中电动机先反转到2楼,然后正转到6楼。

总 结

本文对电梯控制系统这一课程设计做了详细的报告与总结,其中包括硬件部分与软件部分两大模块,而且对其中各个重要的子模块加以了重点详细地说明。

经验证,本设计所设计的电梯完全符合当初的预想,该电梯的调度完全符合高效、省时、人性化的特点。运行结果完美无误,可以作为真实电梯的调度系统使用。

本毕设的主导思想是:当有顾客按下按键呼叫电梯时,运用单片机的中断,将该信息传递给单片机,从而单片机置位相关的状态参量,为电梯判决函数的判断提供依据,然后单片机再实时地点亮或者熄灭相关发光二极管。其中,单片机中断系统是基础,电梯运行函数为主导,电梯目标楼层判决函数为关键与核心。

总的来说,由于精心设计与调试,课设的成品还是很成功的,而且本程序的编写不仅仅是为了应对六层楼的电梯,更多层的电梯也可以实现,比如使用矩阵键盘就可以实现十几层电梯的需求。当然,如果更高层的电梯,就会受到单片机管脚资源的限制了。而程序本身的思想本身是可以支持更多层电梯的运行调度的,如果用其他管脚多的处理器的话(如ARM型处理器),则这一设想完全可以实现。

当然,本设计还是有些不足之处的,比如这只是单个电梯在运行,如果某些大楼载客量过多时,当然无法满足需求,故我想以后可以设计出两个轿厢的电梯,这样两者相互补充,可以满足更多要求,使顾客更方便。当然难度也是有的,它们之间需要共同维护一些变量,都会带来一些未知的麻烦等等,但我想只要去思考,总会可以找到解决之路的。

因篇幅问题不能全部显示,请点此查看更多更全内容