基于单片机的智能风扇设计

news2024/9/21 22:07:45
摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整,必须人为地干预才能达到需求 本文基于单片机的智能风扇主要解决以往风扇存在的问题,其有两种工作模式: 手动操作模式和自动运行模式,人们可以根据需要进行模式选择。 在自动运行模式下,风扇随周围环境温度的变化而自主调节风速,可实现 温度高,风速大; 温度低,风速小”。 同时,智能风扇在两种模式中都配置了定时功能,用户可以根据需要选择不同的定时时间 本次设计中对风扇的控制采用了触摸屏面板和无线通信技术,这将给用户带来便利。
关键词: 单片机; 智能风扇; 风速调整; 工作模式; 定时
在我们国家,电风扇是 80 年代才流行的一种家用小型电器,作为传统的清凉和解暑工具,电风扇具有价格低廉,占据空间少等特点。 受消费水平的制约,大多数家庭尤其在中小型城市和农村,风扇仍旧会占有很大的市场份额。 然而由于其功能单一且耗电量大,极大地限制了电风扇的发展空间。 近年来,单片机凭借其小巧、 抗干扰能力强 且易操作 成本低等特点,已经深入各领域,使用很广泛。 随着大型集成电路技术的进一步成熟,单片机的性能仍在快速地提高,未来单片机技术及传感器技术等的发展必将给电风扇的进一步发展带来突破性的变化。对于目前风扇的发展,采用单片机技术和传感器技术可以使风扇的功能更加完善、使用更加人性化。 传统的风扇,尤其是夏天晚上,风扇以不变的风速工作这样会使老年人和小孩着凉、 感冒,因为传统风扇风速的大小无法根据周围环境温度的变化作出调整,所以迫切需要一款能够满足现代人生活的风扇。

1 硬件电路设计与实现

1. 1 系统整体设计

系统整体框图如图 1 所示
本设计的整体思路: 系统设计主要包括两部分:
( 1 ) 终端( 接收命令) 部分: 温度传感器 ds18b20实时采集周围的温度,将微处理器读取的温度值实时显示在 LCD1602 无线收发模块通过串口与 51 单片机通信,将从 stm32 发来的数据读给 51单片机。 51 单片机根据其接收的命令,控制与其相连的外设
(2 ) 控制端( 发送命令) 部分: 通过对 STM32 编程,在 TFTLCD 模块上做一个智能风扇系统的功能
界面,通过触摸模块界面的功能按钮,产生相应的数据。 产生的数据通过串口发送给无线收发模块,无线收发模块将从串口传来的数据发送出去。 同时,与 stm32 单片机连接的 DHT11 实时读取周围环境的温湿度,其中 stm32 通过单总线通信方式访问DHT11,将读取的温湿度数据实时显示在 LCD

1. 2 各部分电路设计

1. 2. 1 51 单片机最小系统电路

单片机最小应用系统即用很少的电路元件组成可以让单片机正常运行的系统。 对于 51 单片机,其最小系统一般包括: 微处理器、 晶振电路 复位电路 、电源电路。
( 1 ) 按键复位电路: 由按键 、10 uf 电容和电阻组 成,用来对单片机本身和其扩展模块进行复位,使程序重新执行。
( 2 ) 晶 振 电 路: 51 单 片 机 的 晶 振 一 般 取11. 0592 MHz,这样可以准确 产 生 9600 bps 和19200 bps,产生的波特率用于串口通信 外部晶振电路结合单片机内部电路产生单片机正常工作的时钟,单片机代码的执行都基于晶振电路产生的时钟频率。
( 3 ) 电源电路: 51 单片机采用 5 V 供电,由外部提供电源。

1. 2. 2 液晶 LCD1602 显示电路

液晶 LCD1602 是数字式的,因此和单片机连接的电路简洁,易编写程序。 液晶 LCD1602 51 单片机的通信使用 8 位数据口,采用并行方式,每次传输 8 bit 的数据
本次设计中 LCD1602 第一行显示周围环境温度,温度显示只有整数位。 第二行显示风扇的风速级别,风扇未开启时,显示为 - ; 风扇正常工作时显示的风速级别在数字 1 ~ 3 之间

1. 2. 3 温度采集电路

proteus 仿真软件上搭建的 ds18b20 温度采集电路如图 2 所示 由于其与单片机通信采用单总线方式,故只含数据端口 DQ

1. 2. 4 电机驱动模块电路

本次设计中采用 51 单片机的定时器模拟 PWM波输出数字信号,并利用电机驱动模块 L298N 来驱 动 12 V 的直流电机,通过改变 PWM 波的高电平所占的比例来实现风扇风速的调节。 实际生活中由于风扇只往一个方向转,所以对 L298N 模块的配置如图 3 所示

1. 2. 5 串口通信电路

在多机通信系统中,单片机之间的数据交换一般多采用串行通信方式。 本次系统中串口电路包括两部分: 一部分是 stm32 ZigBee 节点的串口通信电路: 系统设计中 stm32 通过其串口的 TX 端发送数据给 ZigBee 模块, ZigBee 模块只需要从串口的 RX端读取数据,故只使用了一条数据线,连接电路图如图 4 所示 另外一部分是 51 单片机与 ZigBee 节点的串口通信电路: 系统设计中 ZigBee 模块从串口TX 端发送数据给 51 单片机, 51 单片机从串口的RX 端读取数据,故只使用了一条数据线,连接电路图如图 5 所示

在实际的硬件电路测试中发现,两个单片机系统在进行数据通信时,必须要共地,否则数据传输出错或无法接收到数据。

2 软件设计与实现

程序的编写都使用的是 C 语言, C 语言程序本身不取决于硬件资源,基本上稍做修改就可以将用户程序从不同的硬件系统平台上移植。

2. 1 主程序设计

主程序是整个设计的中心,它是将各个子模块通过逻辑判断相互结合起来构成的。 由于基于单机的智能风扇系统采用无线通信方式,故主程序 为两部分: 一部分是执行控制命令端的主程序,这一部分的程序设计是以对 51 单片机编程为基础构成的,主要包括: 风扇模式选择及风速调节、51 单片机与 ZigBee 模块之间的数据通信、 51 单片机定时读取ds18b20 采集的温度值 LCD1602 显示温度值及风扇的风速档位、 定时器模拟 PWM 波输出等,该主程序流程图如图 6 所示 另一部分是发送控制命令端的主程序,这一部分的程序设计是以对 stm32 单片机编程为基础构成的,主要包括: TFTLCD 触摸屏界面设计与显示、 DHT11 采集温湿度 、stm32 与 ZigBee模块之间的数据通信等,该主程序流程图如图 7 所示。

2.2 触摸屏界面以及 LCD 显示子程序设计

该部分完成的主要功能包括: 汉字 字符串的显示,图片的加载与显示,触摸屏触摸的实现。 完成这些功能,涉及的知识特别多,包括 TFTLCD 显示 、SPI通信、 触摸屏的触摸实现 内存管理 SD FATFS文件系统模块、 汉字显示原理以及汉字字库的制作 、图片的解码等相关知识。 该部分的设计流程图如图8 所示

2.3  51 单片机读取 ds18b20 采集的温度子程序 设计

通过单总线方式 51 单片机与 ds18b20 进行数据通信,由于 stc89c52 单片机在硬件上不支持单总线通信方式,故选取编程的方法来演示单总线通信方式来完成对温度传感器的访问。
单总线协议规定了以下时序: 初始化时序 读数据时序、 写命令时序 全部时序都将控制器作主机,单总线器件( 例如: 传感器等) 作从机。 特别要说明的是: 每次命令和数据的交换都是主机自动开启写时序,若单总线器件回复数据,则在结束写命令后,主设备要开始读时序完成数据的接收。 该部分程序设计的流程图如图 9 所示

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

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

相关文章

TIM定时器 溢出时间计算

在f1系列,所有定时器的时钟源频率都是72mhz,因为不管是挂在apb1还是apb2时钟总线上的定时器,经过倍频或者不倍频以后都将把定时器的频率设置成72mhz 时钟源频率除以psc1以后得到实际的频率,之所以psc要加1,是因为设置…

无人机测绘技术如何?

无人机测绘技术作为现代测绘技术的重要组成部分,正以其独特的优势在多个领域发挥着重要作用。以下是对无人机测绘技术的详细分析: 一、技术特点 1. 高精度:无人机测绘搭载高精度传感器和相机,能够快速、准确地获取地面信息&…

Datawhale X 魔搭 AI夏令营第四期-魔搭生图task1学习笔记

根据教程提供的链接,进入相应文章了解魔搭生图的主要工作是通过对大量图片的训练,生成自己的模型,然后使用不同的正向、反向提示词使模型输出对应的图片 1.官方跑baseline教程链接:Task 1 从零入门AI生图原理&实践 2.简单列举一下赛事的…

【Material-UI】Floating Action Button (FAB) 详解:基础用法

文章目录 一、Floating Action Button (FAB) 简介1. FAB 的定义2. FAB 的特点 二、Basic FAB 的基础用法1. 基础 FAB 按钮2. 次要颜色的 FAB 按钮3. 扩展变体的 FAB 按钮4. 禁用状态的 FAB 按钮 三、FAB 按钮的高级自定义1. 自定义按钮大小2. 调整按钮的悬浮位置 四、FAB 的无障…

研究报告系列二:供应链安全风险原因分析及相关新质生产力重要技术探讨

随着软件开发的复杂性和动态性不断增加,软件供应链的安全风险成为了一个亟需重视的重要议题,而在技术的飞速发展和广泛应用下,新质生产力相关领域同样存在着软件供应链安全方面的问题,作为《2023软件供应链安全研究报告》系列中的…

js逆向——2024最新金山词霸(练习二)

首先还是看响应,返回了一串加密数据 继续放大招hook JSON,详细流程在上一篇文章 然后直接跟栈找到解密位置 var t 1 (null e || void 0 e ? void 0 : e.status) ? A(A({}, e), {}, {content: JSON.parse((0,_.B6)(e.content))}) : e; t是解密之后…

护眼大路灯哪个牌子好?公认五款最好护眼大路灯分享

护眼大路灯哪个牌子好?很多家长都是为了孩子的视力健康而置换的护眼大路灯,但是有一部分孩子用了之后反而会和家长说出现眼睛不太舒服,甚至近视加深的情况。而引发这种情况的大多数为产品不达标或非专业台灯,因为专业护眼大路灯是…

白屏检测系统的设计与实现

目录 一、 什么是白屏问题?二、 问题分析与拆解2.1 人工判定一个白屏问题的逻辑2.2 自动化判定一个白屏问题的算法思想 三、 白屏检测算法3.1 图像灰度化3.2 图像二值化3.3 计算(判定为白屏)置信度 四、 白屏检测系统的设计与实现4.1 UI自动化…

某通用系统0day审计过程

前言 代码审计篇章都是自己跟几个师傅们一起审计的1day或者0day(当然都是小公司较为简单),禁止未经允许进行转载,发布到博客的用意主要是想跟师傅们能够交流下审计的思路,毕竟审计的思路也是有说法的,或者是相互源码共享也OK&…

51单片机之动态数码管显示

一、硬件介绍 LED数码管是一种由多个发光二极管(LED)封装在一起,形成“8”字型的显示器件。它广泛用于仪表、时钟、车站、家电等场合,用于显示数字、字母或符号。 通过控制点亮a b c d e f g dp来显示数字,本实验开发板…

最长的一帧学习(待补)

文章目录 一、osgViewer:: ViewerBase:: frame()1.osgViewer:: View:: init()2.osgViewer::Viewer::realize(),窗口和场景的“设置”工作part1 GraphicsContextpart1.1 通过阅读osgViewer::View::setUpViewInWindow()了解osg最基础的操作 part2 DisplaySettingspart…

《机器学习by周志华》学习笔记-决策树-03

1、连续值处理 到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。 1.1、概念 取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对…

Java全栈开发知识图谱(概要)

Java全栈开发知识图谱 基础知识 Java基础 语法面向对象编程(OOP)异常处理集合框架并发编程JVM原理 下列的只是图谱来源与网路 ,仅作为学习笔记使用,侵删。 数据结构和算法 常用数据结构(数组、链表、栈、队列、树等…

通过提示词越狱解锁学习提示词的新姿势

一、什么是提示词越狱 提示词越狱是一种针对语言模型的攻击方法,攻击者通过设计特定的提示词或查询,诱导模型生成不当或有害的内容。这类攻击通常利用模型的脆弱性,绕过其内置的安全机制。通过巧妙的措辞或特殊的结构,攻击者能够…

【ML】为什么multi-lingual bert 有跨语言的能力?M-BERT有什么特点

【ML】为什么multi-lingual bert 有跨语言的能力? 1. Multi-lingual BERT的跨语言能力解析1.1 什么是Multi-lingual BERT?1.2 为什么Multi-lingual BERT有跨语言的能力?1.3 结论 2. 数据量减少对BERT识别能力的影响及Multi-lingual BERT的跨…

删除git中的.idea

删除git中的.idea 1. 修改 .gitignore 文件内容,添加 .idea echo .idea >> ./gitignore2. 删除本地暂存区的 .idea [git rm命令用于从Git仓库中删除文件或目录, 而--cached选项告诉Git仅删除Git索引中的.idea目录,并不会删除本地文件系…

【大数据】重塑时代的核心技术及其发展历程

🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是大数据 2、大数据技术诞生的背景 二、大…

Java并发编程(七)—ThreadLocal的原理及应用详解

目录 一、ThreadLocal的原理 1、ThreadLocal对象 2、ThreadLocalMap 3、Thread 对象 4、get() 和 set() 方法 5、内存管理 二、ThreadLcoal的应用 三、ThreadLocal扩展问题 四、总结 ThreadLocal 类在 Java 中提供了一种机制,可以在每个线程中存储独立的变…

【Python】基础语法介绍

目录 一、标识符和关键字 二、注释 三、缩进 四、输入和输出 五、字符串操作 六、基本数据类型 七、复合数据类型 7.1 列表 7.2 元组 7.3 字典 7.4 集合 八、数据类型转换 九、运算符 8.1 算术运算符 8.2 比较运算符 8.3 赋值运算符 8.4 位运算符 8.5 逻辑运…

网络编程day1

一、思维导图 网络基础