热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于AT89C51的多层电梯控制系统

基于AT89C51的多层电梯控制系统摘要:本文介绍一种基于AT89C51的多层电梯控制系统,组合了电机、键盘输入、数码管显示和报警等模块,

基于AT89C51的多层电梯控制系统

摘要:本文介绍一种基于AT89C51的多层电梯控制系统,组合了电机、键盘输入、数码管显示和报警等模块,可以有效实现楼层呼叫、梯内楼层选择、同向响应、上下运行和开关门等常用功能。本系统硬件设计合理可靠,并结合软件编程,不仅可以保障使用者的安全舒适,同时为管理者提供极大的便利。
关键词:电梯控制 单片机 仿真


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 梯外按键设计
在这里插入图片描述
图6 梯内按键设计
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 附录

仿真设计图:
在这里插入图片描述

部分代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


推荐阅读
  • 最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。 ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 单片机入门指南:基础理论与实践
    本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • C语言中全部可用的数学函数有哪些?2.longlabs(longn);求长整型数的绝对值。3.doublefabs(doublex);求实数的绝对值。4.doublefloor(d ... [详细]
author-avatar
疯狂一夏531
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有