前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于单片机设计的自动门控制系统

基于单片机设计的自动门控制系统

作者头像
DS小龙哥
发布于 2023-11-03 02:03:40
发布于 2023-11-03 02:03:40
67400
代码可运行
举报
运行总次数:0
代码可运行

一、项目介绍

随着科技的不断发展,自动门成为公共场所、商业建筑和住宅社区等地的常见设施。自动门的出现使得进出门的操作更加便捷,提高了人们的生活质量和工作效率。为了实现自动门的开关控制,本项目基于单片机设计了一套自动门控制系统。

本项目的主控芯片选择了STC89C52,这是一款性能稳定且广泛应用于嵌入式系统的单片机。具有较高的计算能力和丰富的外设接口,非常适合用于本项目中的自动门控制。

自动门的开关控制通过红外热释电传感器实现。红外热释电传感器是一种能够检测人体红外辐射的传感器,当有人靠近时,传感器会感知到人体的存在。本项目中,红外热释电传感器被安装在自动门的控制区域,用于检测人体的接近。

为了实现自动门的开关动作,本项目采用了SG90舵机进行控制。SG90舵机是一种小型直流电机,具有较高的转动精度和响应速度。通过模拟控制方式,根据控制信号的脉冲宽度来控制门的开关状态。

在系统运行时,红外热释电传感器不断检测周围的人体活动。当传感器检测到人体接近时,会向主控芯片发送信号。主控芯片接收到信号后,会控制SG90舵机执行开门动作,使门自动打开。当人体离开控制区域时,传感器再次发送信号,主控芯片控制舵机执行关门动作,实现自动门的关闭。

自动门控制系统具有以下优点:

(1)通过红外热释电传感器实现人体接近检测,无需人工干预,使门的开关更加智能化。

(2)采用SG90舵机进行控制,具有较高的转动精度和响应速度,门的开关动作更加准确和迅速。

(3)通过使用STC89C52主控芯片,系统具有良好的扩展性和可靠性,可以方便地进行功能扩展和故障排除。

自动门控制系统可以广泛应用于各种场所,如商场、酒店、医院、办公楼、住宅小区等,为人们提供便捷、安全的出入门体验,提高生活和工作的效率。

二、设计思路

硬件选型:

(1)主控芯片:STC89C52是一款常用的8位单片机,具有丰富的外设资源和较大的存储空间,适合用作自动门控制系统的主控芯片。

(2)红外热释电传感器:红外热释电传感器可以检测到人体的红外辐射,用于感知人体接近门的情况。常用的红外热释电传感器模块包括HC-SR501等。

(3)舵机:SG90舵机是一种小型伺服舵机,适合用于控制门的开关动作。可以按照指定的角度精确控制转动。

软件设计思路:

(1)引脚连接:将红外热释电传感器的输出引脚连接到STC89C52的一个GPIO口,将舵机的控制引脚连接到另一个GPIO口。

(2)初始化设置:在程序开始时,初始化GPIO口的方向和状态设置。

(3)检测人体接近:通过读取红外热释电传感器的输出状态,判断是否有人体接近门。如果有人体接近,则执行下一步开门操作;否则执行关闭门操作。

(4)开门动作:控制舵机旋转至开门角度,使门打开。

(5)关闭门动作:控制舵机旋转至关闭门角度,使门关闭。

(6)延时处理:为了避免舵机转动过快或过慢,可以增加适当的延时操作。

(7)循环检测:通过循环结构,不断检测人体接近状态,实现自动门的开关控制。

三、核心代码

3.1 基础框架

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <reg52.h>

sbit infraredSensor = P1^0;  // 红外热释电传感器连接的引脚
sbit servoMotor = P2^0;      // SG90舵机连接的引脚

void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = ms; i > 0; i--)
        for (j = 112; j > 0; j--);
}

void servoRotate(unsigned int angle) {
    unsigned int i;
    for (i = 0; i < angle; i++) {
        servoMotor = 1;   // 产生脉冲信号
        delay(1);         // 控制脉冲宽度,控制舵机转动角度
        servoMotor = 0;
        delay(19);
    }
}

void main() {
    while (1) {
        if (infraredSensor == 1) {   // 检测到人体接近
            servoRotate(90);        // 打开门,舵机转动90度
            delay(2000);            // 延时2秒,保持门开启状态
            servoRotate(0);         // 关闭门,舵机转动至初始位置
        }
    }
}

代码框架中,使用了reg52.h头文件来定义了单片机的寄存器和引脚。红外热释电传感器连接到P1口的第0位引脚,SG90舵机连接到P2口的第0位引脚。

主函数中使用了一个无限循环,不断检测红外热释电传感器的状态。当检测到有人接近时,调用servoRotate函数控制舵机打开门(转动角度为90度),然后延时2秒,保持门开启状态。最后,再次调用servoRotate函数将舵机转动至初始位置,关闭门。

3.2 优化版

增加防夹功能,预防小孩子、小动物 误开门设计。

要增加防夹功能以防止小孩子、小动物误开门,可以通过阻挡传感器来实现。当前的改进方案用于检测门是否被阻挡,如果有阻挡则停止或反向门的运动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <reg52.h>

sbit infraredSensor = P1^0;      // 红外热释电传感器连接的引脚
sbit obstructionSensor = P1^1;   // 阻挡传感器连接的引脚
sbit servoMotor = P2^0;          // SG90舵机连接的引脚

void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = ms; i > 0; i--)
        for (j = 112; j > 0; j--);
}

void servoRotate(unsigned int angle) {
    unsigned int i;
    for (i = 0; i < angle; i++) {
        servoMotor = 1;   // 产生脉冲信号
        delay(1);         // 控制脉冲宽度,控制舵机转动角度
        servoMotor = 0;
        delay(19);
    }
}

void main() {
    while (1) {
        if (infraredSensor == 1) {   // 检测到人体接近
            if (obstructionSensor == 0) {   // 检测到门被阻挡
                // 停止或反向门的运动
                // 可以在此处添加相应的代码来停止或反向门的运动
                // 例如,可以调用servoRotate(0)来立即关闭门
            } else {
                servoRotate(90);        // 打开门,舵机转动90度
                delay(2000);            // 延时2秒,保持门开启状态
                servoRotate(0);         // 关闭门,舵机转动至初始位置
            }
        }
    }
}

在代码改进中,添加了一个名为obstructionSensor的阻挡传感器,连接到P1口的第1位引脚。该传感器用于检测门是否被阻挡。在检测到人体接近的同时,检测阻挡传感器的状态。如果阻挡传感器检测到门被阻挡,可以根据需求添加相应的代码来停止或反向门的运动,例如调用servoRotate(0)来立即关闭门。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【CC2530开发基础篇】人体红外传感器
热释电人体红外传感器广泛应用于智能家居、安防监控、自动控制等领域,能够通过检测人体的热辐射变化来判断是否有人存在。该传感器通过热释电效应将人体热辐射转化为电信号,进而通过数字信号输出,实现对环境中人体活动的感知。与其他传感器相比,热释电人体红外传感器具有响应速度快、灵敏度高、成本低等优势,特别适用于需要检测人体存在或运动的场景。
DS小龙哥
2025/05/29
1060
【CC2530开发基础篇】人体红外传感器
基于单片机设计的电子柜锁
随着现代社会的不断发展,电子柜锁的应用越来越广泛。传统的机械柜锁存在一些不便之处,例如钥匙容易丢失、密码容易泄露等问题。设计一款基于单片机的电子柜锁系统成为了一个有趣而有意义的项目。
DS小龙哥
2023/11/01
2880
基于单片机设计的电子柜锁
通过51单片机控制SG90舵机按角度正反转转动
本文介绍如何通过51单片机控制SG90舵机实现角度的正反转转动。SG90舵机是一种常用的微型舵机,具有体积小、重量轻、结构简单等特点,被广泛应用于机器人、遥控模型和各种自动控制系统中。
DS小龙哥
2023/11/08
1.7K0
通过51单片机控制SG90舵机按角度正反转转动
基于单片机设计的激光测距仪(采用XKC-Kl200模块)
随着科技的不断进步和应用需求的增加,测距仪成为了许多领域必备的工具之一。传统的测距仪价格昂贵、体积庞大,使用起来不够方便。本项目采用STC89C52单片机作为主控芯片,结合XKC-KL200激光测距模块和LCD1602显示器,实现了一个简易且高效的激光测距仪。这个测距仪可以帮助用户快速准确地测量目标与测距仪之间的距离,并将结果通过LCD1602显示器直观地展示出来。
DS小龙哥
2023/12/01
6060
基于单片机设计的激光测距仪(采用XKC-Kl200模块)
基于单片机的数字温度计设计
数字温度计是一种用于测量和显示环境温度的设备。本文章介绍基于STC89C52主控芯片的数字温度计的设计过程和实现原理。该设计采用DS18B20温度传感器进行温度采集,使用LCD1602显示屏进行温度显示,通过按键设置温度的上限和下限阀值,并通过蜂鸣器进行报警。
DS小龙哥
2023/09/01
1K0
基于单片机的数字温度计设计
基于单片机设计的指纹锁(读取、录入、验证指纹)
指纹识别技术是一种常见的生物识别技术,利用每个人指纹的唯一性进行身份认证。相比于传统的密码锁或者钥匙锁,指纹锁具有更高的安全性和便利性,以及防止钥匙丢失或密码泄露的优势。
DS小龙哥
2023/12/23
7310
基于单片机设计的指纹锁(读取、录入、验证指纹)
MCS-51单片机温度控制系统的设计
注塑机是一种常用的制造设备,用于生产塑料制品。在注塑机的工作过程中,溶胶必须达到一定的温度才能被注入模具中进行成型。因此,在注塑机的生产过程中,温度控制是非常重要的一环。
DS小龙哥
2023/09/07
3780
MCS-51单片机温度控制系统的设计
单片机红外传感器_基于51单片机的声音传感器
我们工作久了,久坐导致的毛病就显现出来了,腰酸背痛颈椎疼,最近看到利用番茄钟工作法挺好,工作25分钟,休息5分钟,既能调整工作节奏,避免精力过分消耗,也能避免久坐导致的身体问题。 我刚开始使用闹钟做提醒,后来尝试番茄钟软件,但是都要手动去操作手机,拿起手机看到信息,然后就会去处理手机上的事情了,起不到作用… 直到有一天收拾东西看到了我大学期间基于51单片机做的一个电子设计,激起了我的灵感,开始了基于51单片机的自动番茄钟,久坐提醒神器的设计和制作。 整体方案硬件部分继承了大学时焊接的电路板,更换了传感器部分,软件部分重新编写了控制部分的代码。 之前的软硬件设计方案可以参考这篇文章《基于51单片机的上下限可调的数字温度控制系统》,本文重点阐述差异部分。
全栈程序员站长
2022/11/15
7450
单片机红外传感器_基于51单片机的声音传感器
C51 单片机开发模拟 PWM 控制舵机
闲话:学习的时候笔记一定要记好,很多东西学的时候感觉用的很熟了,结果一个月不用全都忘记了。再学,发现好像以前都没学过似的。记笔记也是一个学问,记得太多了看不过来,记得太少了又看不懂!
码农UP2U
2024/06/21
3900
C51 单片机开发模拟 PWM 控制舵机
基于单片机设计的超声波测距仪(采用HC-SR04模块)
本项目是基于单片机设计的超声波测距仪,主要采用了STC89C52单片机和HC-SR04超声波测距模块。通过LCD1602液晶显示屏来展示测量的距离信息。
DS小龙哥
2023/11/28
8530
基于单片机设计的超声波测距仪(采用HC-SR04模块)
基于单片机设计的水平仪(STC589C52+MPU6050)
水平仪是一种常见的测量工具,用于检测物体或设备的水平姿态。在许多应用中,如建筑、制造和航空等领域,保持设备的水平姿态是非常重要的。为了实现实时的水平检测和显示,基于单片机设计的水平仪是一个常见的解决方案。
DS小龙哥
2023/11/17
4410
基于单片机设计的水平仪(STC589C52+MPU6050)
基于单片机设计的智能窗帘控制系统
智能家居技术在近年来取得了巨大的发展,并逐渐成为人们日常生活中的一部分。智能家居系统带来了便利、舒适和高效的生活体验,拥有广泛的应用领域,其中之一就是智能窗帘控制系统。
DS小龙哥
2023/10/26
7040
基于单片机设计的智能窗帘控制系统
基于单片机设计的智能水泵控制器
在一些场景中,如水池、水箱等水体容器的管理中,保持水位的稳定是至关重要的。传统上,人们通常需要手动监测水位并进行水泵的启停控制,这种方式不仅效率低下,还可能导致水位过高或过低,从而对水体及相关设备造成损坏。
DS小龙哥
2023/12/02
6450
基于单片机设计的智能水泵控制器
基于单片机设计的太阳能跟踪器
随着对可再生能源的需求不断增长,太阳能作为一种清洁、可持续的能源形式,受到越来越多的关注和应用。太阳能光板通常固定在一个固定的角度上,这限制了它们对太阳光的接收效率。为了充分利用太阳能资源,提高太阳能光板的收集效率,需要设计一个能够自动跟踪太阳光的系统。
DS小龙哥
2023/11/02
4250
基于单片机设计的太阳能跟踪器
基于51单片机四路循迹小车
本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用红外传感器检测轨道,控制电动小汽车的自动循迹,快慢速行驶。
全栈程序员站长
2022/09/10
1.2K0
基于51单片机四路循迹小车
基于51单片机室内灯光控制系统
这是基于STC89C52单片机设计的灯光控制系统,实现对室内灯光的控制,采集光敏传感器,红外线热释电传感器,声音传感器,光照照度传感器等数据进行处理,完成室内灯光的智能控制。
DS小龙哥
2022/02/17
1.1K0
基于51单片机室内灯光控制系统
基于单片机的智能小车设计
随着科技的发展,智能机器人在日常生活中的应用越来越广泛。智能小车作为智能机器人的一种,具有便携性和多功能的特点,在教育、娱乐和工业等领域得到了广泛关注和应用。智能小车可以通过远程控制实现各种动作,如前进、后退、转弯等,并且可以通过搭载传感器实现避障、测距等功能。
DS小龙哥
2023/09/01
7040
基于单片机的智能小车设计
基于单片机的遥控器设计
随着科技的不断发展,红外遥控器已经成为我们日常生活中普遍使用的一种电子设备。它能够给我们带来便捷和舒适,减少人工操作的繁琐性。然而,在实际应用中,有时候我们可能需要制作一个自己的红外遥控器,以便于更好地满足个性化需求。这样的需求可能来自于家庭影音设备的控制、智能家居系统的控制,或者其他自动化控制方案等。
DS小龙哥
2023/09/02
4810
基于单片机的遥控器设计
人体检测–热释电传感器开发
大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。 Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
全栈程序员站长
2022/09/28
5770
人体检测–热释电传感器开发
基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
本项目是基于单片机设计的电子指南针,主要利用STC89C52作为主控芯片和LSM303DLH模块作为指南针模块。通过LCD1602液晶显示屏来展示检测到的指南针信息。
DS小龙哥
2023/11/18
4830
基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)
推荐阅读
相关推荐
【CC2530开发基础篇】人体红外传感器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验