网站地图985论文网
主要服务:硕士论文、论文发表、论文修改服务

应用电子技术范文:基于单片机的智能温控风扇控制系统的设计

来源:985论文网 添加时间:2020-07-14 19:24
基于单片机的智能温控风扇控制系统的设计
 
摘要:风扇不仅作为一种生活小家电进入到人们的生活当中,它在很多的领域也被得到广泛的应用,比如像在工业生产或者建筑施工过程中用来给机械设备进行加热。随着电子技术的快速发展,风扇在造福于人的同时也在发挥着节能环保的作用,这便是可遥控型智能风扇的发展背景。
本次设计就是针对传统风扇存在的问题与不足来设计一款可调控的智能风扇,本次设计使用STC89C51单片机来控制外围电路以及采集传感器的数据;使用DS18B20数字温度传感器对周围环境中的温度进行实时的采集,采集完成之后发送给单片机进行处理;处理好的信息以及系统的运行状态可以在数码管液晶显示模块上实时的显示。
 
关键词:温控风扇,单片机,DS18B20,自动控制
 
Abstract:With the advent of the era of electrical appliances, power driven devices continue to be produced, fan is one of them. It can often be seen in people's daily life, and it can also be often encountered in the industrial field. Its main role is to heat, but it also has some shortcomings.            
This design is to design a kind of adjustable intelligent fan aiming at the problems and shortcomings of the traditional fan. This design uses STC89C51 single-chip microcomputer to control the peripheral circuit and collect the sensor data; uses DS18B20 digital temperature sensor to collect the temperature in the surrounding environment in real time, and sends it to the single-chip microcomputer for processing after collection; processes the information to And the operation state of the system can be displayed on the digital tube LCD module in real time.
Key words: temperature control fan, single chip, DS18B20, automatic control.
目录
1  绪论 1
2  系统方案设计 2
2.1  功能需求分析 2
2.2  系统框架设计 2
3  系统硬件设计 3
3.1  STC89C51单片机最小系统 3
3.1.1  STC89C51单片机介绍 3
3.1.2  STC89C51单片机最小系统设计 4
3.2  电机驱动电路设计 6
3.3  温度采集电路设计 7
3.4  数码管显示电路设计 8
3.5  信号调理与A/D转换电路的实现 9
3.6  风扇强电控制模块 11
3.7  继电器电路 11
4  软件程序设计 13
4.1  Keil C51开发环境介绍 13
4.2  主程序设计 14
4.3  子程序设计 15
4.3.1  温度检测程序设计 15
4.3.2  调速子程序设计 16
4.3.3  按键子程序设计 17
4.3.4  OLED液晶显示 17
5  系统调试 19
5.1  实物制作 19
5.2  功能调试 20
6  结论 21
 
1  绪论
生活中,我们经常会使用一些与温度有关的设备。比如,现在虽然不少城市家庭用上了空调,但在占中国大部分人口的农村地区依旧使用电风扇作为降温防暑设备,春夏(夏秋)交替时节,白天温度依旧很高,电风扇应高转速、大风量,使人感到清凉;到了晚上,气温降低,当人入睡后,应该逐步减小转速,以免使人感冒。虽然风扇都有调节不同档位的功能,但必须要人手动换档,睡着了就无能为力了,而普遍采用的定时器关闭的做法,一方面是定时时间长短有限制,一般是一两个小时;另一方面可能在一两个小时后气温依旧没有降低很多,而风扇就关闭了,使人在睡梦中热醒而不得不起床重新打开风扇,增加定时器时间,非常麻烦,而且可能多次定时后最后一次定时时间太长,在温度降低以后风扇依旧继续吹风,使人感冒;第三方面是只有简单的到了定时时间就关闭风扇电源的单一功能,不能满足气温变化对风扇风速大小的不同要求。又比如在较大功率的电子产品散热方面,现在绝大多数都采用了风冷系统,利用风扇引起空气流动,带走热量,使电子产品不至于发热烧坏。要使电子产品保持较低的温度,必须用大功率、高转速、大风量的风扇,而风扇的噪音与其功率成正比。如果要低噪音,则要减小风扇转速,又会引起电子设备温度上升,不能两全其美。
在这样的背景下,本文提出了一款基于单片机的可遥控智能风扇的设计,它采用的是STC89C51单片机作为控制核心,结合DS18B20温度传感器、数码显示模块、直流电机等电子元器来设计出这套温控风扇系统,从而可以根据人们的需要实现智能吹风降温的目的。
 
2  系统方案设计
2.1  功能需求分析
本系统要设计一款基于单片机的智能风扇设计,它具有高灵敏度的环境温度采集和智能化的控制功能设计,系统利用DS18B20温度传感器来进行环境温度的检测,并通过数码管液晶显示模块来进行系统工作状态的显示,单片机能够通过输出PWM信号来实现对风扇风速的调节。本系统应具备这些功能:
(1)按键控制风扇的启停和转速的快慢; 
(2)数码管液晶显示模块能够实时的显示系统当前的工作状态; 
(3)能够实时的采集环境中的温度信息反馈给单片机; 
(4)单片机输出PWM来实现对风扇风力大小的控制。
2.2  系统框架设计
本系统由STC89C51单片机最小系统、数码管液晶显示模块、风扇驱动电路、按键等模块构成,整体系统采用的电子元器均是市面上便宜廉价的电子器件,它们的功能可以通过软件编程来实现。系统的框图结构见图2-1所示:
 
图2-1 系统整体框图
图中各个模块的功能介绍如下:
(1)STC89C51单片机最小系统。用来处理传感器数据和控制外围电路进行工作;
(2)数码显示管。用来显示当前的温度值;
(3)DS18B20温度传感器。用来检测环境中的温度值;
(4)按键模块。用来设置温度变化范围和对系统工作进行控制;
(5)电机驱动。用来控制风扇进行转动。
 
3  系统硬件设计
3.1  STC89C51单片机最小系统
3.1.1  STC89C51单片机介绍
本文采用台湾宏晶公司推出的STC89C51单片机作为控制器,用来实现对传感器数据的处理和控制继电器等执行机构来完成相应的控制动作。STC89C51单片机是一款低功耗的8位单片机,集成了CPU、存储器、寄存器等电子元器件,可以用来满足很多场景中小型电子产品的设计,兼容51指令和引脚,方便进行扩展和维护。
如图所示为STC89C51单片机的封装图。
 
图3-1 STC89C51单片机的功能引脚图
它的管脚功能如下:。
P0口(P0.0-P0.7):它是由一个8位的三态并行I/O引脚,它可以作为数据和低 8位地址引脚。
P1口(P1.0-P1.7):它是由一个8位的三态并行I/O引脚。
P2口(P2.0-P2.7):它是由一个8位的三态并行I/O引脚,它可以作为数据和高 8位地址引脚。
P3口(P3.0-P3.7):它是由一个8位的三态并行I/O引脚,同时还具备特殊的第二功能,包括程序校验控制、Flash编程控制等。
RST:复位引脚。用来防范单片机的出现程序跑飞或者宕机。
ALE/ :ALE(地址锁存允许)、编程脉冲( ),用来对外部存储器或数据存储器进行访问控制。当不访问外部寄存器时,ALE输出低8位的锁存信号;当对外部寄存器进行访问时,ALE输出高8位的锁存信号,同时输入编程脉冲( )对外部存储器进行控制。
 :程序存储允许( )引脚,用来对外部程序存储器的读选通信号进行选通控制,在每个机器周期输出两次 脉冲信号有效。
EA/VPP:外部访问允许控制。单片机内部的CPU在对外部程序存储器(地址为0000H-FFFFH)进行访问控制,EA端保持低电平;当CPU访问内部程序存储器时,EA端保持高电平。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入端。
XTAL2:反向振荡放大器器的输出端。
VCC:电源正极。
GND:电源负极。
3.1.2  STC89C51单片机最小系统设计
STC89C51需要结合时钟电路、复位电路和电源电路来完成系统整体设计,它的最小系统见图3-2所示。
 
 
图3-2 STC89C51单片机的功能引脚图
(1)时钟电路
单片机最小系统采用RC振荡电路来完成系统复位部分的设计,它由两个电容和一个晶振并联组成的,在通电的状态下形成自振荡信号,用来提供给单片机进行工作的时钟信号。XTAL1和XTAL1引脚的功能主要是用来作为增益放大接入和输出使用[8],这里就不在累述。时钟电路的设计见图所示,本设计中电容的值为30pF,晶振采用12MHz。
 
图3-3 时钟电路
(2)复位电路
为了防止程序运行跑偏和出现宕机的情况,需要对单片机进行复位,除了单片机内置了上电复位以外,还可以通过外部复位和软件复位(开门狗)的方式,对系统进行重置。本文采用的是脉冲复位的方式对单片机进行复位,电路图如下图所示。
 
图3-4 复位电路
 
3.2  电机驱动电路设计
本设计采用直流电机来模拟风扇进行工作,由于单片机的引脚输出的电流较小,因此本文采用三极管来对其进行驱动,其中三极管的基级接在单片机的P3.7脚,它由单片机输出低电平来对三极管进行导通,如图3-5所示为直流电机驱动电路。
 
 
图3-5 直流电机驱动电路
3.3  温度采集电路设计
由于需要对工业锅炉中的水温进行测试,因此采用接触式的DS18B20温度监测传感器,接触到锅炉表面用来进行测温,它具有耐高压、耐腐蚀等特点,其形如三极管。
如图3-6所示为DS18B20温度检测电路设计,采用单总线技术来实现数据的传输与交互,其中DQ为传感器的双向单总线I/O口,用来进行数据的异步通信和交互。图中串联0.1uF电容的作用是用来进行滤波,提高测量的准确度。
 
图3-6 DS18B20温度传感器硬件设计
 
 
3.4  数码管显示电路设计
数据显示部分采用的是四段8位的集成数码管来进行显示,它能够显示的电压精度为0.01V,并且带小数点显示。如图4-7所示为数码管显示电路图,它一共有A、B、C……G、DR、1H……4H共计12个引脚,其中A、B……DR这八个引脚为位选端,1H、2H、3H、4H这四个引脚为段选端,它们与单片机I/O引脚之间的连接要接一个阻值为220Ω的排阻,它能够起到限流的作用,避免通过数码管内的电流过大导致数码管会很亮,这会影响到数码管的使用寿命。另外数码管的公共端采用的四个三极管来进行驱动,这里由于篇幅有限没有给予描述。
 
图3-7 数码管显示电路设计
3.5  信号调理与A/D转换电路的实现
由于温度传感器的输出为mV级信号,而且传感器的灵敏度和零点都存在差异,必须进行信号调理,以适合A/D转换器的输入范围。如图3-8,S1为传感器的输出范围,S2为由于传感器的差异造成的输出可能的最大范围,S4为A/D转换器输入的范围,S3是为了适应各种条件的变化,己经留有安全区的输入范围,信号调理电路的作用就是将S2与S3进行匹配。信号调理的最佳状态是调整到放大器的输出与A/D转换器的输入范围相匹配,这时系统的精度最高,否则,如果放大器的输出范围大于A/D转换器的输入,就会使系统的测量范围减小,如果放大器的输出范围小于A/D转换器的输入,则会使系统测量精度降低。但是考虑到传感器、放大器、A/D转换器等元件的温漂和时漂等因素造成的变化,应该给这些变化留有一定的空间,使系统有更好的适应性。对于数字温度表的设计来说,由于温度传感器都存在一定的超温安全系数,因此,应该在满量程以上留有一部分空间,仍然可以测量并显示温度。我们选择满量程的10%,超出之后显示超压错误。同样在零点也应该留有一定的安全余量,保证在零点漂移后仍能够有数据显示,这些都需要在校准过程中给予注意。
 
图3-8 信号调理的目标
传感器的输出为一个电阻桥路,数字温度表的精度目标设定在1%,因为P100传感器本身是一个电阻传感器,靠电阻的变化来测量温度的变化,而工业现场要求的远程测量需要远距离的导线,因为导线本身就存在电阻,如果不考虑这些因素的话,就会对测量精度造成很大的影响,甚至测量错误,因此必须进行温度补偿。本课题采用对放大器的正端输入测量信号,负端输入补偿信号,对远距离传输进行温度补偿。电路部分的工作原理如图3-9。
一般Pt100电阻范围为100Ω~175Ω左右,所以在温度补偿一端接一个100Ω的电阻,使正负端相互平衡,这样就可以实现温度补偿了。在传感器的上端接一个2K的电阻,使传感器的输出端V1约为0.25V~0.5V,因为信号放大器的基准电压为5V,因此可以用正端电压V1减去负端的0.25V然后放大20倍,就可以得到A/D转换所需要的电压值V2=0~5V。
 
图3-9 信号调理原理电路
 
3.6  风扇强电控制模块
电风扇的换档是改变电路中串联的电感量大小。目前常用的有两种方式:一种是一个铁芯电感,上面有几档抽头,不同抽头电感量不同,圈数越多,电感量越大,感抗也越大,串联进电扇电路后,电感上压降也大,电扇转速就低;另一种是不另用铁芯电感,只是在电机线圈上增加几个抽头,用改变电机线圈的圈数来调节电机的转速。
基于STC89C51单片机的智能风扇换挡采用的是改变电机线圈的圈数来换挡。由于我们设计的智能风扇控制系统采用的是STC89C51单片机,属于弱电,而智能风扇的工作电压是220V,属于强电,用弱电控制强电,我们采用继电器H K4100F进行弱电控制强电,采用光耦隔离芯片TLP521-4去除外部干扰,由于单片机引脚的电流约为十几毫安到二十几毫安,采用三极管8050对电流进行放大,以提高输入继电器的电流,达到继电器的驱动电流要求。
3.7  继电器电路
继电器是一种电子控制器件,它具有控制系统和被控系统,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。单片机是弱电器件,一般情况下它的工作电压为5V,电风扇的工作电压为220V,属于强电,继电器可实现弱电控制强电。具体电路如图3-10所示,继电器由相应的三极管Q31来驱动,当温度过高时,单片P1.6口输出高电平,三极管Q31处于放大导通状态,继电器线圈有电流经过,常开触点闭合,电路接通,电风扇开始转动。当温度过低时,单片机P1.6口输出低电平,三极管Q31处于截止状态,继电器线圈中没有电流经过,常开触点保持原断开状态,电风扇不能转动。继电器线圈两端反相并联的二极管起到吸收反向电动势的功能,保护相应的驱动三极管。发光二极管D31起到指示电风扇开启和关闭的作用。本系统采用继电器开启和关闭,动作敏捷且无误差,达到了智能控制的要求。
 
图3-10 控制执行电路原理图
4  软件程序设计
 
 
4.1  Keil C51开发环境介绍
微控制采用的是C语言来进行开发,它通过Keil软件来实现软件的编程、调试和仿真,Keil集成开发工具支持汇编、C语言及二者的混合编程,满足各种微控制器的开发需要。采用C语言开发的一个特点在于它支持模块化编程,通过封装函数来确保各个功能独立,便于对程序进行修改和移植,同时支持一个功能插件的定制,具有良好的可续性和扩展性。
单片机程序的开发支持汇编语言和C语言,C语言作为高级语言设计,一般情况下会选择C语言来进行单片机控制查程序的设计,其主要原因在于主要在于C语言的语言层次相对比较简洁、清晰和紧凑,方便进行模块化开发和调试。C语言还提供丰富的运算处理函数和数据类型,可以实现对各种复杂数据进行处理。与此同时,C语言还可以对硬件的内存地址进行操作,直接在内存上进行位运算,提高系统的处理性能。C语言兼具高级编程语言和低级编程语言的双重优势,既可以作为底层语言来对硬件进行操作,也可以作为应用软件开发语言来进行可视化程序设计,并直接作用于硬件。与汇编语言相比,C语言具有开发效率高、移植性强的特点,因此也成为了硬件开发和底层语言设计的首选。
如图4-1所示为Keil软件工具的程序开发与调试界面,首先我们需要新建一个工程,选择单片机主控制器的型号“STC89C51”;接下来我们在工程中新建一个“文件名.c”文件,我们在整个文件中进行我们的程序代码的编写。在编写的过程中我们用到一些头文件,这时我们需要右键单击工程名将这些头文件添加进来,并在这个”.c”文件中进行配置;最后就是我们把代码片段写好后我们对其“编译(build)”一下,如果没有任何问题的话它就会出现“0 Error”,这里需要注意的是出现“Warining”可以忽略不计。
 
图4-1  程序开发与调试界面
4.2  主程序设计
系统上电后开始完成初始化工作,这时LCD液晶显示模块开始显示系统设置的初始信息;单片机扫描是否要按键被按下,如果存在按键被按下则执行对应的按键程序,这时它会根据接收到的按键中断或者接收到的遥控信息来执行相应的操作;温度传感器开始采集环境温度信息并发送给单片机进行处理,通过将它与阈值进行对比判断它是否超过设定值,进而控制蜂鸣器进行报警提示,否则开始新一轮的循环。主程序设计如图4-2所示。
 
图4-2 主程序设计
4.3  子程序设计
4.3.1  温度检测程序设计
DS18B20温度传感器在上电后,会接受到来自单片机发送过来读数据的控制请求,这时传感器开始对环境中的数据进行采集,并整体转换为二进制数发送给单片机。温度传感器的每一步执行都严格的按照工作时序和单总线通讯方式来执行,才能够保证单片机在数据处理部分能够得到准确的值。单片机接受到温度传感器发送过来的数据后,可以启动定时器来进行计数。并对每个周期内数据进行处理,可通过调取第9位校验值来进行比较前8位的数据的和,如果相等则认为该数据有效,否则是该数据无效进行舍弃。见图4-3所示
 
图4-3 DS18B20程序流程图
4.3.2  调速子程序设计
如图4-4所示为电机调速子程序设计。系统上电后会接收到单片机的输出控制信号,电机通过接受不同占空比的PWM信号来实现对速度的调节;并且单片机输出正反转控制信号来控制电机的正转或者反转。
 
图4-4 电机调速子程序设计
 
4.3.3  按键子程序设计
如图4-5所示为按键子程序设计,系统上电后会启动定时器来检测是否有按键被按下,如果为检测到有按键被按下时,它会判断是那个按键被按下,并直线相应的功能。这里红外二极管接收到的控制信号存储在ircode数组的第三位上,即ircode,通过读取它的状态来识别遥控器的指令。
 
图4-5 按键子程序设计
 
4.3.4  OLED液晶显示
OLED采用SPI总线方式与单片机通信,基础程序包括写数据、命令等。数据显示原理是将相应的字符通过解码成或亮或暗的光点最终组成数据。图像显示一般将整个图像解码,显示在整个屏幕上。逻辑顺序如图4-6所示。
 
图4-6 液晶显示逻辑
5  系统调试
 
 
5.1  实物制作
结合前面的电路接线图设计,需要购买元器件来完成实物的开发,为了避免在开发过程中因为元件受损影响到系统的开发,核心元件的选择需要多预留一个,以便不时之需。实物的焊接一般采用手工焊接和机器焊接两种,由于本设计的功能比较简单,因此采用手工焊接的方式来进行实物的焊接。电路的焊接分为焊接前的准备、焊接温度的控制、清理焊面和检测焊点四个步骤,避免焊接过程中出现漏焊、脱焊、虚焊等情况时,影响到电路的工作。焊接结束后,需要对焊接的实物进行功能测试,用来验证系统的设计符合预期目标。如图5-1所示为系统实物图。
 
图5-1  系统硬件实物图 
5.2  功能调试
前面的内容里我们完成了对系统的软硬件的设计和与实现,在本节中需要对系统的功能进行测试,以验证它系统的软硬件功能是否均已经实现。软件功能主要围绕着这4个方面来展开测试与评价:风扇的启停、加速和减速、红外控制和自动模式。
(1)风扇的启停
风扇的启停是整个系统的核心部分,如果风扇都不能够正常启停,那么它的设计意义就不复存在了,因此我们首先需要对系统进行上电,然后来测试它的启停功能是否正常。
系统上电后硬件开始进行初始化,这时数码管开始显示温度传感器采集到的环境温度和系统当前的工作状态,检测结果显示风扇的“启/停”功能正常,并且风扇的运行状态会在数码管液晶显示模块中进行显示。
(2)风扇加速和减速
在风扇启动状态下可以通过按下按键“加速”或者减速按键来实现对风扇速度的控制,并且还可以通过“正/反转”按键来实现对风扇转动方向的控制,这时再数码管液晶显示模块上会进行相应的显示。
(4)自动模式
按下自动按键,在自动模式下风扇的会根据周围环境温度变化来进行风扇转动速度的调节,这里以风扇的转速与温度大小成反比进行举例说明。进入自动模式后风扇的速度达到最大,这时我们将手放在温度传感器上,温度在不断的升高超过了设定值,风扇的速度在逐渐的减慢, 
6  结论
通过这次设计使自己对单片机的应用得到了更深的认识,对电子元器件的使用以及小型项目的开发积攒了一定的经验,知道了自己在学习单片机方面有哪些不足之处,以便于以后更好更深入的来了解学习单片机。
本系统采用C语言来进行软件功能设计,硬件部分主要以STC89C51单片机作为主控制器,再结合DS18B20温度传感器、数码管液晶显示模块、托盘电机等电子元器件来进行系统硬件的开发。经过一学期的努力和实践,通过实物制作与调试,本系统的基本功能均已经实现,基本达到预期的设计要求。
由于我个人时间和精力有限,在课题设计过程中难免存在一些问题与不足,因此导致本系统在实现过程中可能存在一些功能逻辑上的错误,但是在本次课题设计中我所斩获的经验对于我来说是十分珍贵的,这也将激励我不断的励志前行。
 
参考文献
 
 
[1]胡慧之.基于STM32的智能风扇控制系统设计[J].信息与电脑(理论版),2019,31(23):59-61.
[2]陈峰,张泽华,朱彦成,张浩铭.智能风扇控制系统的设计[J].电子制作,2019(13):25-26+33.
[3]史嘉瑞,马一诺,王哲.基于Wifi控制的电动风扇的智能寻踪系统设计[J].电子制作,2018(23):19-21.
[4]马巧梅.一个智能风扇控制系统的设计[J].信息技术,2018,42(08):55-58+65.
[5]李晓赫,郭庆强.基于STC89C51单片机的智能风扇控制系统[J].自动化仪表,2018,39(06):99-102.
[6]李瑾.基于51单片机的PWM直流调速风扇控制系统[J].机械工程与自动化,2018(01):187-189. 
 
重要提示:转载本站信息须注明来源:985论文网,具体权责及声明请参阅网站声明。
阅读提示:请自行判断信息的真实性及观点的正误,本站概不负责。
jQuery右侧可隐藏在线QQ客服
在线客服