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

一、项目介绍

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

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

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

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

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

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

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

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

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

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

image-20230823175716494

image-20230823175741019

image-20230823175759809

image-20230823175843724

二、设计思路

硬件选型:

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

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

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

软件设计思路:

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

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

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

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

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

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

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

三、核心代码

3.1 基础框架

#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 优化版

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

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

#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)来立即关闭门。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高教社杯数模竞赛特辑论文篇-2018年D题:确定汽车装配顺序问题的算法(附获奖论文及C语言代码实现)

目录 摘 要 一、 问题重述 二、 问题分析 三、 模型假设 四、 定义与符号说明

数据结构───链表

花费一个周时间学完了链表&#xff08;的一部分&#xff09;&#xff0c;简单总结一下。 链表的学习离不开画图&#xff0c;将其抽象成一种逻辑模型&#xff0c;可以减少思考时间&#xff0c;方便理解。 链表大致分为8种结构&#xff0c;自己学习并实现了两种结构&#xff0c;也…

ubuntu无网络连接,没有网络标识,快速解决方法

在这里插入代码片当我们装虚拟机的时候&#xff0c;需要用到网络时发现没有网络连接&#xff0c;且右上角没有网络标识符&#xff0c;这时只需要简单的输入一下三个命令即可 sudo nmcli networking offsudo nmcli networking onsudo service network-manager restart然后重启客…

Vue源码-各实现原理简单总结

1&#xff0c;双向数据绑定的实现 简单总结为&#xff1a;通过js的层层封装&#xff0c;互相调用&#xff0c;实际就是利用js的Object.defineProperty()方法&#xff0c;然后实现了一个发布订阅模式。 整体逻辑是在vue初始化的时候&#xff0c;通过Object.defineProperty()重写…

(二)FreeRTOS任务控制(1)

1.任务延时vTaskDelay //task. hvoid vTaskDelay( const TickType_t xTicksToDelay ); 必须将 INCLUDE_vTaskDelay 定义为 1&#xff0c;此函数才可用。按给定的 tick 数延迟任务。任务保持阻塞的实际时间取决于 tick 频率。 常量 portTICK_PERIOD_MS 配合 tick 周期分辨率可用…

问题 D: 免费馅饼(类数塔问题)

免费馅饼 都说天上不会掉馅饼&#xff0c;但有一天gameboy正走在回家的小径上&#xff0c;忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了&#xff0c;这馅饼别处都不掉&#xff0c;就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了&#xff0c;所以…

【DriveGPT学习笔记】自动驾驶汽车Autonomous Vehicle Planning

原文地址&#xff1a;DriveGPT - Lei Maos Log Book 自动驾驶汽车的核心软件组件是感知、规划和控制。规划是指在给定场景或一系列场景的情况下为自动驾驶汽车制定行动计划的过程&#xff0c;以实现安全和理想的自动驾驶。 用于规划的场景是从感知软件组件获得的。计划的行动将…

深度学习——炼丹

学习率调整策略 自定义学习率调整策略 简单版 net MyNet()optimoptim.Adam(net.parameters(),lr0.05) for param_group in optim.param_groups: param_group["lr"] param_group["lr"]*0.5print(param_group["lr"]) #0.25复杂版&#…

(新手)vue git下载后无法在本地启动项目

npm run serve> xxxxxx0.1.0 serve > vue-cli-service serve vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 原因:缺少依赖 npm i 是 npm install 的简写形式&#xff0c;是用于安装 JavaScript 包和模块的 npm 命令。 npm …

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份&#xff1a; 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…

arcgis删除细长图斑的方法

1、有一张图斑数据如下&#xff1a; 如上图&#xff0c;有很多细长的面要素&#xff0c;需要保留的仅是图中的块状要素。 2、首先要将被合并的要素进行拆分&#xff0c;具体拆分步骤如下&#xff1a; 将所有要素选中&#xff0c;点击高级编辑中的拆分按钮。 3、拆分后图斑就…

信号、进程、线程、I/O介绍

文章目录 信号进程进程通信线程可/不可重入函数线程同步互斥锁条件变量自旋锁读写锁 I/O操作阻塞/非阻塞I/OI/O多路复用存储映射I/O 信号 信号是事件发生时对进程的通知机制&#xff0c;可以看做软件中断。信号与硬件中断的相似之处在于其能够打断程序当前执行的正常流程。大多…

C语言每日一题(23)兔子的序列

牛客网 BC159 兔子的序列 题目描述 描述 兔子发现了一个数字序列&#xff0c;于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名&#xff0c;命名应该要与这个序列有关。由于兔子十分讨厌完全平方数&#xff0c;所以兔子开创了一个新的命名方式&#xff1a;这个序列…

深度学习数据集大合集—疾病、植物、汽车等

最近又收集了一大批深度学习数据集&#xff0c;今天分享给大家&#xff01;废话不多说&#xff0c;直接上数据&#xff01; 1、招聘欺诈数据集 招聘欺诈数据集&#xff1a;共收集了 200,000 条数据&#xff0c;来自三个网站。 该数据集共收集了 200.000 条数据&#xff0c;分别…

算法-小红的ABC(最短回文子串)- [简单]

直通牛客-小红的ABC 题目描述 小红拿到了一个只包含 a , b , c 三种字符的字符串。 小红想知道&#xff0c;这个字符串最短的、长度超过 1 的回文子串的长度是多少&#xff1f; 子串定义&#xff1a;字符串取一段连续的区间。例如"abcca"的子串有"ab"、&…

Java程序设计2023-第五次上机测试

8-1使用按钮选择绘制不同图形 编写一个程序&#xff0c;实现如下的界面&#xff0c;当点击不同按钮时绘制相应的图形。点击“椭圆”&#xff0c;绘制一个椭圆形&#xff1b;点击“矩形”&#xff0c;绘制一个矩形&#xff1b;点击“直线”&#xff0c;绘制一条直线。实现图形绘…

短视频账号矩阵系统saas源码搭建/技术

一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享&#xff1a; 本系统采用MySQL数据库进行存储&#xff0c;数据库设计如下&#xff1a; 1.用户表&#xff08;user&#xff09;&#xff1a; - 用户ID&#xff08;user_id&#xff09; - 用户名&#xff08…

纯前端实现图片验证码

前言 之前业务系统中验证码一直是由后端返回base64与一个验证码的字符串来实现的&#xff0c;想了下&#xff0c;前端其实可以直接canvas实现&#xff0c;减轻服务器压力。 实现 子组件&#xff0c;允许自定义图片尺寸(默认尺寸为100 * 40)与验证码刷新时间(默认时间为60秒)…

MySQL - 系统库之 information_schema

information_schema 用于存储数据库元数据&#xff08;metadata&#xff09;。包含了有关数据库服务器、数据库、表、列、索引、权限、存储引擎和其他数据库对象的信息。information_schema 允许用户查询和检索数据库结构和对象的信息&#xff0c;而不需要直接访问系统表或文件…

天体学爱好者基础知识-太阳系//未完待续,业余者的学习

难过的时候&#xff0c;仰望天空吧&#xff0c;人类有时候&#xff0c;做的事情真的太愚昧且无聊了&#xff0c;渺小的尘埃&#xff0c;也可以飘际宇宙。 太阳系-八大行星 卫星围绕着恒星公转。行星必须围绕着恒星公转。 什么是行星&#xff1f;行星和恒星、卫星有什么区别&am…