## 0 前言
电梯是一种垂直方向的交通运输工具,在人民的日常生活中不可缺少。对于电梯呼叫、运行等常用功能已经很好地被人们掌握并使用,但对于电梯的控制方面的探索却在不断成为焦点。不少老旧住宅和仓库仍采用继电器逻辑控制电路,容易出现故障、维护不方便、使用寿命短等问题[1]。因此大部分的研究放在与继电器控制相比有巨大优势的PLC(Programmable Logic Controller,可编程逻辑控制器)控制上[2-4],并且有效提高了电梯运行平稳性与安全性。但PLC的针对性强,导致PLC和设备都是一一对应的,从而导致价格比较昂贵,得不到广泛应用。由于单片机有功能强大,易于扩展,价格便宜等的优点,因此单片机在不同电梯使用环境使用中都有较强的适用性。此外,FPGA器件[5]或者Arduino[6]作为主控制芯片的电梯控制系统也很常见。本文选择与五层电梯控制复杂程度相适应的AT89C51单片机作为主控部分,使用L296芯片驱动门系统和桥厢四相步进电机,并建立仿真以验证控制效果。
## 1 系统的组成与功能
系统采用AT89C51单片机作为主控电路部分,使用L296芯片驱动门系统和桥厢四相步进电机。图一中,AT89C51单片机配合其它模块,使得本系统除了实现楼层呼叫、梯内楼层选择、同向响应、上下运行和开关门等功能,也实现了数码管显示、上下行指示、紧急开关、紧急报警等增加实用性和安全性的功能。
图1 设计总体图
系统模拟了每层楼高度为4.5m、5层楼的电梯使用环境。为了合理利用IO口资源,系统采用4X4键盘,来完成楼层呼叫和梯内楼层选择及开关门等16个指令。可以高效地满足多个人在到达不同楼层的需要,另外电梯也采取先加速、再匀速、后减速的运行策略,可以将人安全舒适地送往不同楼层。
## 2 系统的设计分析
2.1 硬件设计
本系统采用Proteus 8 Professional进行硬件电路的仿真设计,在图2中,包括主控电路、按键电路、显示电路、指示电路、警报电路以及电机控制电路。
图2 设计仿真图
2.1.1主控电路
AT89C51一共4组32个IO口,可以在符合本系统要求的情况下,进行一些拓展工作的研究,使得芯片得到合理的利用[7]。表1是对于单片机IO口资源的具体分配情况,可以看出单片机很好地满足了设计的需要。
表1 单片机管脚资源分配
IO口 实现功能
P0 电机控制
P1 蜂鸣器、指示电路、使能和开关
P2 数码管显示电路
P3 4X4键盘
2.1.2显示电路与上下行指示
图3左侧,数码管显示当前楼层;图3右侧,发光二极管显示当前电梯运行状态,电梯静止则二极管不发光。
图3 显示电路与上下行指示电路
2.1.3键盘电路
在图4的4X4键盘中,Sn代表用户在n层呼叫电梯,表示用户需要上楼;Xn代表用户需要下楼,并在n层呼叫电梯;Nn、K、G、J设置在梯内,分别表示梯内用户需要到n层、开门、关门及警报等功能。
图4 键盘电路
为了达到实用美观,可将4X4个输入拆解拼装为图5的梯外按键设计和图6的梯内按键设计部分。
图5 梯外按键设计
2.1.4电机模块
图7是电机模块,在本模块中电路用L298驱动门系统和桥厢四相步进电机,在硬件电路设计时L298输出端与单片机四相连接时上下分别连接了四个续流二极管。这样设计的目的是为了将步进电机的反向电动势所产生的电流分流到地或电源正极,不损坏L298,保证芯片正常工作。虽然图中所有电源同接一个高电平,但它们所需要的电压大小是不一样的,部分接口需要独立供电[8]。
图7 电机模块电路
2.2 软件设计
按照图9的逻辑方框图,在Keil5开发换环境,用C语言进行编程,利用键盘扫描获取用户输入,并进行相应反应。到达指定楼层发出提示音,如果超重(按钮模拟压力传感器输入),电梯将会警报,直至压力在正常范围则开始运行,如果梯内或者梯外人员触发相应紧急按钮,会发出警报,并且电机会停止运转。此外,编程还注意到了电梯运行过程中开关门,电梯未关门进行运行等问题,并对其进行规避。而且,为了安全起见,在电机进行旋转之前,都会进行判断是否有紧急按钮按下。在优先级判断和电机控制中,使用了一些算法思路进行编程,以达到理想的效果。
2.2.1优先级判断
优先级判断有两个原则:第一,电梯按某一个方向运行时,优先响应该运行方向的按钮输入;第二,同一方向有多个按钮同时呼叫时,优先响应最近的楼层。
2.2.2电机控制
根据优先级的判定结果更新Layer(需要运行的楼层数)和Way(运行方向),然后根据两个值进行运行。由于每一楼层高4.5m,那么电梯最小运动距离为4.5m。考虑到宜人性,电梯采取0.75的加速度,先加速到1.5m/s,运动到0.75m处,然后以1.5m/s的速度匀速运动2s,行至3.75m处,最后以同样加速度减速到0m/s,到达相邻楼层。如果需要运动多个楼层,只需使得中间匀速环节时间相应变长即可。当进行匀速运行的过程中会对按键进行扫描,已确定是否优先级发生改变,决定是否更改匀速运行时间。
图9 电梯逻辑框图
## 3 实验结果及分析
对于系统进行仿真测试,无论是响应单个人请求,还是响应多人请求,电梯系统都是可以很好地运行,不发生逻辑错误。但是,电梯当前位置(Location),重启复位之后将会变置为1,这可能在现实系统中发生错误。因此,需要将变量Location存储到EEPROM中,这样可以实现掉电保护功能,为电梯的安全运行提供保障。
本文所做的探讨主要集中于对于电梯调度和电梯运行逻辑方面,没有过于要求运行的平稳和精确。虽然利用升降电机和编程思路可以将人们运到需要的位置,但以此提高的舒适度的效果还是十分有限的。因此需要采取新的措施,使得电梯运行的精度和平稳度达到要求。这个过程中反馈是必要的,所以要得到电梯的实时信息(运行位置、运行速度、加速度)。由于悬吊电梯的链条会发生形变,因此最好采用激光测距的方法来测量与地面的距离,运行速度和加速度可以使用常用的传感器。这样收集到的实时信息再对电梯进行控制,无论选取PID控制还是现代控制,可以提高电梯运行精度和人们舒适感。
## 4 结语
使用AT89C51模拟了实际中的电梯运行,虽然所实现功能简单,但可以很好满足调度需求。在不需要人为干预的情况下,电梯可以自主实现所设计的功能——楼层呼叫、梯内楼层选择、同向响应、上下运行和开关门。这需要考虑在实际运行中电梯可能出现的一切状况,并在设计的时候进行规避和预防。未来万物互联的大背景下,对于电梯的嵌入式开发是一个不错的尝试。电梯更加智能化可以更好地满足现代化的需求。不远的将来,电梯也不再限于载人的需求,而是可以和机器人互动自主完成更复杂的运载任务。
## 5 附录
仿真设计图:
部分代码: