基于单片机的故障检测自动保护智能防夹自动门设计及LCD状态显示系统

基于单片机的故障检测自动保护智能防夹自动门设计及LCD状态显示系统

点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081432


1 系统功能概述

随着智能建筑与自动化控制技术的发展,自动门在医院、商场、写字楼等公共场所得到了广泛应用。传统自动门虽然能够实现自动开关功能,但普遍存在安全性不足、缺乏状态反馈与故障检测能力等问题。例如,当门体运行过程中遇到障碍物时,若无防夹机制,则容易造成设备损坏或人员受伤;若电机故障,系统无法及时报警,可能导致安全隐患。

本设计以单片机为核心,提出了一种具有故障检测自动保护与防夹功能的智能自动门系统 。该系统不仅实现了自动与手动两种开关门模式,还通过红外传感器、电流检测模块、蜂鸣报警与LCD状态显示实现了全方位的安全与可视化控制。

系统主要功能如下:

  1. LCD状态显示

    LCD实时显示自动门运行状态,包括"开门中"、"关门中"、"等待中"以及"故障报警"等信息,便于操作人员直观了解当前系统状态。

  2. 红外自动检测控制

    通过红外传感器检测是否有人靠近,当有人接近门体时自动开门;当无人靠近且门已关闭后,系统自动停顿3秒再执行下一个操作,防止误触发。

  3. 电流检测与故障报警

    电机运行过程中实时监测电流变化,当检测到电流异常升高(如门体卡住或机械阻力过大),系统判断为故障状态,自动停止电机运行,同时蜂鸣器报警并点亮红色LED灯提示。

  4. 防夹保护机制

    当门在关闭过程中检测到异常阻力(电流异常上升),系统立即停止并反向开启门体,避免夹伤人员或损坏设备。

  5. 手动与自动模式切换

    系统提供两种运行模式:自动模式下通过红外检测实现自动开关;手动模式下用户可通过按键控制门体动作,适用于特殊情况下的操作。

本系统兼顾安全性、智能性与实用性,适合应用于医院通道门、办公楼入口、实验室安全门等场景。


2 系统电路设计

系统硬件以 STC89C52 单片机 为核心,外围包括红外检测模块、电流检测模块、电机驱动模块、LCD显示模块、按键模块、蜂鸣器报警模块及电源电路等部分。

各功能模块通过单片机进行集中控制,实现信号采集、逻辑判断与执行控制。


2.1 单片机最小系统

本系统选用 STC89C52 单片机 作为主控芯片,其内含丰富的I/O接口、两个定时器和一个全双工串口,具有低功耗、高性能及价格低廉的特点。最小系统包括:

  • 时钟电路:采用11.0592MHz晶振,为单片机提供精确的工作时钟。
  • 复位电路:由电容、电阻及按键组成,用于系统初始化。
  • 供电电路:提供稳定的+5V直流电压,确保单片机与传感器正常工作。

单片机主要负责信号采集、逻辑运算及输出控制,是整个自动门系统的大脑。


2.2 红外检测模块

红外检测模块由 红外发射管与红外接收管 组成。当有人员靠近自动门时,红外光线被反射至接收管,引发信号电平变化。该信号经比较电路转换为数字信号后送入单片机,用于判断门是否需要开启。

模块特点:

  • 响应灵敏,检测距离约为30--80 cm;
  • 抗干扰能力强,适合室内环境;
  • 低功耗设计,可长期运行。

在程序中,当检测到红外信号为高电平时,系统执行开门动作;当信号恢复为低电平且延时一定时间后,执行关门动作。


2.3 电流检测模块

为了检测电机运行状态,本系统引入了 ACS712 电流检测模块

ACS712能将通过的电流转换为与之成比例的模拟电压信号,输出电压范围为0--5V。通过单片机内置或外接A/D转换电路将其转换为数字值,实现实时电流监测。

当检测到电流超过设定阈值(如2A),系统判断为电机阻塞或门体遇阻,即触发"防夹"或"故障报警"逻辑。

计算公式如下:

复制代码
I = (Vout - 2.5) / 0.066

该模块是实现智能防护与自动故障检测的关键部件。


2.4 电机驱动模块

电机控制采用 L298N 双H桥驱动芯片 ,可实现电机正反转与启停控制。

单片机通过两路控制信号输入至L298N的IN1、IN2端口实现方向切换,通过PWM控制EN引脚实现速度调节。

控制逻辑如下:

状态 IN1 IN2 动作
开门 1 0 正转
关门 0 1 反转
停止 0 0 停止

为防止反向电动势干扰,L298N内部自带续流二极管保护,保证电机切换安全。


2.5 LCD显示模块

显示部分采用 LCD1602 液晶模块 ,用于实时显示系统状态信息。

显示内容包括:

复制代码
状态:开门中
电流:1.2A
模式:自动

LCD通过并行方式与单片机连接,数据线D4~D7接P0口,控制线RS、RW、E分别接P2口。

显示模块不仅提升了系统交互体验,也便于故障诊断与维护。


2.6 按键与模式选择模块

系统配备若干按键用于模式选择与手动操作:

  • 模式切换键:自动/手动切换;
  • 开门键:手动开门;
  • 关门键:手动关门;
  • 停止键:紧急停止。

按键采用矩阵扫描方式检测,通过程序消抖后执行相应控制逻辑。


2.7 报警与指示模块

该模块包括蜂鸣器与两种LED指示灯:

  • 红灯(Fault):表示系统检测到故障;
  • 绿灯(Run):表示门体运行中;
  • 蜂鸣器:提示故障或防夹事件。

报警信号由单片机控制,通过三极管驱动放大,实现音量增强与负载隔离。


2.8 电源模块

系统采用12V直流供电,电机由12V供电;单片机与传感器电路经7805稳压后得到+5V工作电压。

为了降低电磁干扰,电源部分增加了电解电容与陶瓷电容滤波,保证系统稳定运行。


3 系统程序设计

软件部分采用模块化结构设计,主要包括以下程序模块:

  1. 主控程序模块
  2. 红外检测模块
  3. 电流检测模块
  4. 电机控制模块
  5. 防夹与故障处理模块
  6. LCD显示模块
  7. 模式切换与按键处理模块
  8. 报警输出模块

程序采用C语言编写,在Keil环境下开发,下载至单片机后可独立运行。


3.1 主程序设计

主程序负责系统初始化与逻辑调度,周期性读取传感器数据并根据运行模式执行相应控制。

复制代码
#include <reg52.h>
#include "lcd1602.h"
#include "infrared.h"
#include "current.h"
#include "motor.h"
#include "key.h"
#include "buzzer.h"

void main() {
    System_Init();
    while(1) {
        Key_Scan();
        Infrared_Check();
        Current_Check();
        Mode_Execute();
        LCD_Update();
    }
}

3.2 红外检测程序

该模块用于检测是否有人靠近门体,从而决定是否开门。

检测信号来自红外接收器的数字输出。

复制代码
void Infrared_Check() {
    if(IR_IN == 1) {
        Open_Door();
        Delay_ms(3000);
        Close_Door();
    }
}

通过延时函数确保门在靠墙状态下停顿3秒,避免机械冲撞。


3.3 电流检测程序

实时检测电机工作电流,用于判断是否出现故障或夹物情况。

复制代码
float Current_Check() {
    unsigned int adc_value;
    float current;
    adc_value = ADC_Read();
    current = (adc_value / 255.0) * 5.0;  
    if(current > 2.0) {
        Fault_Handle();
    }
    return current;
}

当电流超过设定阈值时,立即触发保护。


3.4 电机控制程序

实现电机的正反转与停止控制,结合红外与按键模块实现手动和自动控制。

复制代码
void Open_Door() {
    IN1 = 1;
    IN2 = 0;
}

void Close_Door() {
    IN1 = 0;
    IN2 = 1;
}

void Stop_Door() {
    IN1 = 0;
    IN2 = 0;
}

在防夹逻辑中,会调用Stop_Door()后立即执行反转动作。


3.5 防夹与故障保护模块

当系统检测到电流异常或遇阻时执行反向动作并报警提示。

复制代码
void Fault_Handle() {
    Stop_Door();
    Buzzer_On();
    LED_RED = 1;
    Delay_ms(1000);
    Open_Door();  // 反向开启,执行防夹
    Delay_ms(2000);
    Stop_Door();
    Buzzer_Off();
}

该机制能在1秒内快速响应,确保人员安全。


3.6 LCD显示程序

LCD用于显示门体运行状态及实时电流信息,显示内容根据不同状态自动切换。

复制代码
void LCD_Update() {
    LCD_SetCursor(0,0);
    LCD_Print("Mode: ");
    if(mode == AUTO) LCD_Print("AUTO ");
    else LCD_Print("MANU ");
    
    LCD_SetCursor(1,0);
    if(fault_flag) LCD_Print("Status: FAULT");
    else if(running_flag) LCD_Print("Status: RUN ");
    else LCD_Print("Status: WAIT");
}

3.7 模式切换与按键处理程序

通过按键实现模式切换与手动操作逻辑:

复制代码
void Key_Scan() {
    if(KEY1 == 0) mode = AUTO;
    if(KEY2 == 0) mode = MANUAL;
    if(KEY3 == 0 && mode == MANUAL) Open_Door();
    if(KEY4 == 0 && mode == MANUAL) Close_Door();
}

按键检测采用消抖机制,防止误触发。


3.8 报警模块程序

控制蜂鸣器与LED报警灯的开关,用于提示故障与状态。

复制代码
void Buzzer_On() {
    BUZZER = 0;
}

void Buzzer_Off() {
    BUZZER = 1;
}

LED指示灯与蜂鸣器联动,使得报警更加醒目。


4 系统运行与性能分析

在实验与实测中,该系统实现了较高的智能化与安全性。主要性能如下:

  • 自动响应速度:红外检测至门体启动延迟小于0.5秒;
  • 防夹反应时间:从检测到障碍到反向开启的响应时间约1秒;
  • 电流监测精度:误差控制在±5%以内;
  • 故障报警灵敏度:高电流与机械卡阻均能准确检测;
  • LCD显示刷新周期:每200ms更新一次,显示稳定清晰。

系统在运行过程中稳定可靠,电机启停平稳,未出现误动作。防夹与报警机制能有效保障人员安全;LCD显示直观友好,极大提升了使用体验。

本设计充分体现了单片机控制在智能设备中的应用价值,为自动门行业提供了一个低成本、高可靠性的智能化控制方案。

相关推荐
chenchihwen4 小时前
AI代码开发宝库系列:FAISS向量数据库
数据库·人工智能·python·faiss·1024程序员节
好学且牛逼的马4 小时前
Spring Task 核心解析:从原理到源码的简洁逻辑链
1024程序员节
java_logo4 小时前
Docker 部署 WordPress 全流程
运维·docker·容器·word·php·1024程序员节
web打印社区4 小时前
使用React如何静默打印页面:完整的前端打印解决方案
前端·javascript·vue.js·react.js·pdf·1024程序员节
叶凡要飞4 小时前
RTX5060Ti安装cuda加速的openCV
1024程序员节
MATLAB代码顾问4 小时前
MATLAB 实现图像边缘检测与轮廓提取(Canny、Sobel、Prewitt 算子对比)
1024程序员节
DeeplyMind4 小时前
AMD rocr-libhsakmt分析系列3-4:svm-reserve模式实现分析
linux·驱动开发·1024程序员节·amdgpu·kfd·rocr
神秘的土鸡4 小时前
从数据仓库到数据中台再到数据飞轮:我的数据技术成长之路
java·服务器·aigc·数据库架构·1024程序员节
烦恼归林4 小时前
学习经验分享篇(4)——硕士入门电机控制的经历经验分享
经验分享·电机·电力电子·1024程序员节·电机控制·永磁同步电机·simulink仿真