摘 要: 传统风扇无法根据周围环境的温度变化进行风速的调整,必须人为地干预才能达到需求 。 本文基于单片机的智能风扇主要解决以往风扇存在的问题,其有两种工作模式: 手动操作模式和自动运行模式,人们可以根据需要进行模式选择。 在自动运行模式下,风扇随周围环境温度的变化而自主调节风速,可实现 “ 温度高,风速大; 温度低,风速小”。 同时,智能风扇在两种模式中都配置了定时功能,用户可以根据需要选择不同的定时时间 。 本次设计中对风扇的控制采用了触摸屏面板和无线通信技术,这将给用户带来便利。
关键词: 单片机; 智能风扇; 风速调整; 工作模式; 定时
在我们国家,电风扇是 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 所示 。