基于51单片机的室内湿度加湿温度声光报警智能自动控制装置设计

wx供重浩:创享日记
对话框发送:单片机湿度
获取完整无水印论文报告(内含电路原理图和源程序代码)


在日常生活中加湿器得到了广泛的应用,但是现有的加湿器都需要手工控制开启和关闭并且不具备对室内空气温湿度的监测,人们在使用过程中存在过度加湿和干烧的问题,不仅给室内空气舒适度造成负面影响并且还存在安全隐患。因此开发设计一种价格低廉、功耗低、具有自动控制功能的加湿器显得尤为必要。本设计采用智能控制,以AT89C51单片机为核心,外接辅助电路,通过实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。
在这里插入图片描述


第一章 任务来源意义及目的

在日常生活中加湿器得到了广泛的应用,但是现有的加湿器都需要手工控制开启和关闭并且不具备对室内空气温湿度的监测,人们在使用过程中存在过度加湿和干烧的问题,不仅给室内空气舒适度造成负面影响并且还存在安全隐患。因此开发设计一种价格低廉、功耗低、具有自动控制功能的加湿器显得尤为必要。

本设计采用智能控制,以AT89C51单片机为核心,外接辅助电路,通过实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。


第二章 设计方案

2.1 总体设计
智能加湿器需满足以下要求:
1)相对湿度低于40%时自动加湿;
2)用户可以设置系统温湿度报警值;
3)由5V稳压直流电源供电,提供温湿度调节控制信号,实现自动控制;
4)检测得到的数据可以通过显示模块显示。

硬件设计不仅要满足系统需求,还要满足功能和外形尺寸要求。
根据设计要求确定了系统的总体方案,包系统由两个DS18B20温度传感器一个水位传感器、单片机、1602LCD液晶显示屏、声光报警器、以及一个光电耦合开关等部分组成。系统功能原理图如图1-1所示,两个温度传感器分别采集室内空气的干湿球温度,并将采集的温度传送至单片机。单片机对这两个数据加以处理并结合室内湿度要求参数控制加湿器的开启和闭合。另外,水位传感器还能监测水位,单片机根据水位高低控制声光报警装置。自动加湿器包括加湿模块、报警模块、自动断电模块。
在这里插入图片描述

2.2 实现方式自动加湿器功能原理图

要达到自动加湿器功能要做好硬件和软件设计和调试三个方面的工作。首先硬件方面,通过合理的设计单片机管脚及其他外围电路的链接,使之既有I/O口的功能,又有控制型号的功能。由于时间仓促,没有找到合适的水位传感器,在开发过程中利用三个按钮开关代替水位传感器分别代表高、中、低水位,而加湿器开关则由一发光二级管代替,在方正过程中更容易观察系统开发效果。这方面的内容详见硬件设计部分内容。其次软件方面,通过合理设计软件的结构和安排子程序,使程序以最简洁有效的方式实现目的。最后,调试方面,程序编辑用LAC51系列开发与仿真环境,编辑过程可使用软件仿真观察,并对其进行调试。在程序编辑完成之后使用硬件仿真,最终用烧录器将程序写入单片机进行实测。

本系统分信号的主要有温度传感器的输入信号和单片机输出的控制信号构成。首先由单片机向温度传感器发出读信号,随后温度传感器做出响应,单片机待DS18B20完成收集到得温度信息进行AD处理并存储为数字信号后,开始读取温度值,并对其信号做位处理使之达到用户需求的精度以及计算得到相对湿度,最后通过1602LCD显示温湿度值。另外,系统在运行过程中还有专门的控制声光报警系统、光电耦合开关的控制信号。

2.3 理论基础(详见下载)


第三章 硬件设计

3.1 设计方案
在这里插入图片描述
3.2 电路图
单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能。硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起。这种设计方法可以降低系统设计的复杂性。系统电路原理图如图2所示。本系统主要硬件设计包括电源电路、蜂鸣器电路、晶振电路、复位电路、LCD显示电路以及温度传感器电路。
控制电路的核心器件是由美国Atmel公司生产的AT89C51单片机,属于MCS-51系列。AT89C51是一种低功耗、高性能的CMOS8位微控制器,具有2K在系统可编程Flash存储器,采用的工艺是Atmel公司的高密度非易失存储器技术;片上Flash允许程序存储器在系统可编程,亦适于常规编程器;在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案;价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。
在这里插入图片描述
系统的声光报器电路(警蜂鸣和LED发光二极管组成)、振落电路、复位电路。显示模块选用1602字符型液晶模块,是目前工控系统中使用最为广泛的液晶屏之一,电路图如图所示。1602字符型液晶模块是点阵型液晶,驱动方便,经编码后显示内容多样化。由于时间仓促,没有找到合适的水位传感器,在开发过程中利用三个按钮开关代替水位传感器分别代表高、中、低水位,而加湿器开关则由一发光二级管代替,在方正过程中更容易观察系统开发效果。

3.3 信号分析
本系统分信号的主要有温度传感器的输入信号和单片机输出的控制信号构成。首先由单片机向温度传感器发出读信号,随后温度传感器做出响应,单片机待DS18B20完成收集到得温度信息进行AD处理并存储为数字信号后,开始读取温度值,并对其信号做位处理使之达到用户需求的精度以及计算得到相对湿度,最后通过1602LCD显示温湿度值。另外,系统在运行过程中还有专门的控制声光报警系统、光电耦合开关的控制信号,这些控制信号比较简单,不再一一论述。

3.4 功能描述
参考舒适性空调的相对湿度采用40%—65%的要求[x],在功能设计过程中以40%为最适相对湿度参考值。单片机一方面通过监测加湿器内部的水位,达到加湿器防干烧的功能,即只有在水位在水位下限以上时加湿器才能通电工作。另一方面通过处理两个温度传感器测得的干湿球温度得到室内相对湿度,并和人体最适相对湿度做比较。在水位符合要求的前提下,若室内相对湿度高于人体最适值则控制加湿器不动作,反之则对加湿器通电开始加湿,直到室内空气达到最适湿度时断电。另外,单片机通过和声光报警器以及1602LCD显示屏相连,还具有了温湿度及水位的显示功能。总之,在现有的加湿器内加入此单片机将实现加湿器的防干烧、声光报警、智能开启和关闭以及室内温湿度的显示功能基本实现加湿器的智能化。

3.5 复位电路
复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。图3-3所示的RC复位电路可以实现上述基本功能,图3为其输入-输出特性。但解决不了电源毛刺(A点)和电源缓慢下降(电池电压不足)等问题 而且调整 RC 常数改变延时会令驱动能力变差。左边的电路为高电平复位有效 右边为低电平Sm为手动复位开关 Ch可避免高频谐波对电路的干扰。
在这里插入图片描述
3.6液位定位及光电开关(详见下载)
3.7 1602显示屏(详见下载)
3.8 DS18B20温度传感器(详见下载)


第四章 软件设计

4.1整体设计及说明
系统单片机代码采用汇编语言编译,以伟福仿真器V8/L为开发环境。系统软件实现的功能:
1)通过LCD显示温湿度值及水位;
2)比较监测到的水位,发现低水位时自动掉电并声光报警;
3)根据相对湿度值控制加湿器的开关。
根据监控系统功能要求,系统软件流程图设计如图所示。
在这里插入图片描述
初始化开始,然后载入程序,根据显示数据读出干球温度T,湿球温度TS,根据干湿球温度求出相对湿度D,然后读出显示的水位H,判断水位H是否大于最小水位Ho:若H<=Ho,则声光报警并关闭加湿器,然后显示温湿度,再读出一个干球温度T,湿球温度TS,计算出相对湿度D,读出水位H循环,直至H>Ho成立后,判断相对湿度D与最小湿度Do的大小比较,若D<=Do则开启加湿器,显示温湿度,循环直至相对湿度D<=Do,关闭加湿器,然后显示温湿度过程循环。

4.2 DS18B20流程设计
每个DS18B20温度传感器的流程图设计如下:
在这里插入图片描述
传感器DS18B20复位,跳过ROM匹配后启动温度转换,DS18B20复位然后跳过ROM匹配,再读取温度后进行温度处理,保留一位小数。读取数据及传送的程序如下:(详见下载)

4.3 1602字符型LCD流程设计
1602字符型LCD流程设计如下:
在这里插入图片描述
显示器1602初始化后延时15ms,显示模式设置,再延时5ms,显示关闭,延时5ms显示清屏,再延时5ms显示光标移动设置延时5ms显示开及光标设置,然后显示位置设置,延时,显示温度各位数值。此部分主要程序过长,参见附录一。


第五章 系统调试

系统与LAC51系列的仿真环境下开发,编程过程中利用软件仿真调试系统,当软仿通过则利用该仿真器仿真,并按顺序检查错误进行修改,最终将程序的HEX文件烧录进入单片机进行实测。

(附录及其它详见下载)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微信小程序】-- 页面导航 -- 编程式导航(二十三)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

chartgpt 告诉我的,loss 函数的各种知识

一、libtorch中常见的损失函数及其使用场景的总结1. CrossEntropyLoss:CrossEntropyLoss&#xff08;交叉熵损失&#xff09;主要用于分类任务。它适用于多分类问题&#xff0c;其中每个样本只属于一个类别&#xff08;互斥&#xff09;。该损失函数将预测概率与真实标签的one-…

Android DataBinding 自定义View实现数据双向绑定

看不懂的可以先看看单向数据绑定&#xff1a;Android DataBinding数据变化时自动更新界面_皮皮高的博客-CSDN博客 然后再确定已经启动了dataBinding的情况下&#xff0c;按下面的顺序来&#xff1a; 首先创建一个自定义View&#xff1a; import android.content.Context imp…

中国蚁剑AntSword实战

中国蚁剑AntSword实战1.基本使用方法2.绕过安全狗连接3.请求包修改UA特征伪造RSA流量加密4.插件使用1.基本使用方法 打开蚂蚁宝剑&#xff0c;右键添加数据&#xff1a; 输入已经上传马的路径和连接密码&#xff1a; 测试连接&#xff0c;连接成功&#xff01; GetShell了&…

【Linux】Linux下权限的理解

前言&#xff1a;在之前我们已经对基本的指令进行了深入的学习&#xff0c;接下来我将带领大家学习的是关于权限的相关问题。在之前&#xff0c;我们一直是使用的【root】用户&#xff0c;即为“超级用户”&#xff0c;通过对权限的学习之后&#xff0c;我们就会慢慢的切换到普…

大公司为什么禁止SpringBoot项目用Tomcat?

前言 在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat。同时&#xff0c;SpringBoot也支持Undertow容器&#xff0c;我们可以很方便的用Undertow替换Tomcat&#xff0c;而Undertow的性能和内…

动态规划---线性dp和区间dp

动态规划(三) 目录动态规划(三)一&#xff1a;线性DP1.数字三角形1.1数字三角形题目1.2代码思路1.3代码实现(正序and倒序)2.最长上升子序列2.1最长上升子序列题目2.2代码思路2.3代码实现3.最长公共子序列3.1最长公共子序列题目3.2代码思路3.3代码实现4.石子合并4.1题目如下4.2代…

STM32外设-定时器详解

0. 概述 本文针对STM32F1系列&#xff0c;主要讲解了其中的8个定时器的原理和功能 1. 定时器分类 STM32F1 系列中&#xff0c;除了互联型的产品&#xff0c;共有 8 个定时器&#xff0c;分为基本定时器&#xff0c;通用定时器和高级定时器基本定时器 TIM6 和 TIM7 是一个 16 位…

【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

目录 一、前言 二、nacos介绍 2.1 什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测 2.2.2 动态配置服务 2.2.3 动态 DNS 服务 2.2.4 服务及其元数据管理 2.2.5 nacos生态地图 2.3 与其他配置中心对比 三、nacos快速部署 3.1 获取安装包 3.2 修改脚…

如何成为优秀的程序员

崔宝秋&#xff0c;现任小米首席架构师、小米云平台负责人。1995年赴美留学&#xff0c;纽约州立大学石溪分校计算机科学系博士毕业&#xff0c;曾任IBM高级工程师和高级研发经理、雅虎搜索技术核心团队主任工程师、LinkedIn主任工程师&#xff0c;2012年回国加入小米科技。 20…

【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下基于策略的深度强化学习方法&#xff0c;策略梯度法是对策略进行建模&#xff0c;然后通过梯度上升更新策略网络的参数。我们使用了 OpenAI 的 gym 库&#xff0c;基于策略梯度法完成了一个小游戏。完整代码可以从我的 GitHub 中获得&…

51单片机8*8 LED点阵实现原理讲解

文章目录前言一、LED8*8点阵的原理二、LED8*8点阵原理图三、74HC595模块讲解四、74HC595模块写一个字节数据代码讲解总结前言 本篇文章将为大家讲解LED8*8点阵的使用方法。 一、LED8*8点阵的原理 LED 88点阵是由64个LED灯珠组成的&#xff0c;它们排列在一个88的矩阵中。每个…

手机验证发送及其验证(基于springboot+redis)保姆级

在Java开发中&#xff0c;发送手机验证码时需要考虑以下几个问题&#xff1a; 验证码的有效期&#xff1a;验证码应该有一定的有效期&#xff0c;一般设置为几分钟或者十几分钟。过期的验证码应该被认为是无效的&#xff0c;不能用于验证用户身份。手机号码格式的校验&#xf…

Docker【基本使用】

1&#xff1a;启动Docker1.1&#xff1a;操作systemctl start docker.service1.2&#xff1a;常见问题【第一步】启动docker&#xff0c;提示启动失败&#xff0c;查询运行状态systemctl start docker.service【第二步】查询docker运行状态&#xff0c;提示不支持SELinux【第三…

你还不会递归?告别困惑,我来教你

文章目录如何理解“递归”&#xff1f;递归需要满足的三个条件如何编写递归代码&#xff1f;递归代码要警惕堆栈溢出递归代码要警惕重复计算最后说一句&#x1f431;‍&#x1f409;作者简介&#xff1a;大家好&#xff0c;我是黑洞晓威&#xff0c;一名大二学生&#xff0c;希…

多线程(三):Thread 类的基本属性

上一个篇章浅浅了解了一下 线程的概念&#xff0c;进程与线程的区别&#xff0c;如何实现多线程编程。 而且上一章提到一个重要的面试点&#xff1a; start 方法和 run 方法的区别。 start 方法是从系统那里创建一个新的线程&#xff0c;这个线程会自动调用内部的run 方法&…

JNI原理及常用方法概述

1.1 JNI(Java Native Interface) 提供一种Java字节码调用C/C的解决方案&#xff0c;JNI描述的是一种技术。 1.2 NDK(Native Development Kit) Android NDK 是一组允许您将 C 或 C&#xff08;“原生代码”&#xff09;嵌入到 Android 应用中的工具&#xff0c;NDK描述的是工具集…

【软件测试】基础知识第一篇

文章目录一. 什么是软件测试二. 测试和调试的区别三. 什么是测试用例四. 软件的生命周期五. 软件测试的生命周期一. 什么是软件测试 软件测试就是验证软件产品特性是否满足用户的需求。 那需求又是什么呢&#xff1f;在多数软件公司&#xff0c;会有两种需求&#xff0c;一种…

使用chatGPT实现数字自增动画

num-auto-add&#xff1a;数字自增动画 序言 我们经常在一些好的网站上遇到数字自增的动画效果&#xff0c;为用户提供了更加丰富的交互体验&#xff0c;看起来非常酷。 我之前也有写过&#xff0c;为了方便以后使用&#xff0c;打算将它优化&#xff0c;并上传到npm中。 首…

数字信号处理_QA_2023_超长

1、直接计算DFT存在什么问题&#xff1f; 直接计算离散傅里叶变换&#xff08;DFT&#xff09;存在以下问题&#xff1a; 计算复杂度高&#xff1a;直接计算DFT需要进行mmm次复杂度为O(m)O(m)O(m)的复数乘法和加法运算&#xff0c;因此总的时间复杂度为O(m2)O(m^2)O(m2)。 精…
最新文章