基于单片机的风扇控制系统设计.pdf
- 文档编号:3439603
- 上传时间:2023-05-05
- 格式:PDF
- 页数:22
- 大小:632.67KB
基于单片机的风扇控制系统设计.pdf
《基于单片机的风扇控制系统设计.pdf》由会员分享,可在线阅读,更多相关《基于单片机的风扇控制系统设计.pdf(22页珍藏版)》请在冰点文库上搜索。
基于单片机的风扇控制系统设计基于单片机的风扇控制系统设计(德州学院机电系,山东德州253023)摘要:
介绍一种基于单片机的风扇控制系统设计方案。
设计出以单片机技术、可控硅技术和温度传感器技术为核心的智能风扇控制器。
该设计从硬件和软件两方面设计完成。
硬件系统采用的单片机为AT89S51,利用了DS18B20对室内温度进行探测并适时显示当前温度值,通过控制可控硅的导通来实现对电风扇的调速控制。
软件系统则主要由主程序、键盘控制程序、温度显示程序和电机调速程序四部分组成。
关键词:
AT89S51;DS18B20;仿真;电机调速;温度显示1前言1.1课题的设计目的和意义单片机在检测和控制系统中得到广泛的应用,温度则是系统常需要测量、控制和保持的一个量。
该论文从硬件和软件两方面介绍了AT89S51单片机的风扇温度控制系统的设计。
单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。
因此在本文设计了基于单片机AT89S51的风扇温度测量系统设计。
这是一种低成本的利用单片机I/O口实现的温度检测电路。
由于采用了智能控制器控制风扇,所以节约了电能,具有很好的市场发展前景。
在夏天时,由于天气温度高,人们通常直接打开风扇的电源而不用风扇的定时功能。
当夜深时,环境温度会降低。
此时,如果风扇直接吹到人上,人们很容易得感冒。
本论文设计出的智能风扇控制器,可以实时监控环境温度,当环境温度低于用户设定的温度时,风扇会自动关闭。
该智能温度控制器也可用于工业温度测量的场所。
1.2国内外现状及发展趋势国内外现状:
目前,温控风扇的设计已经有了一定的成效,可以使风扇根据环境温度的变化进行自动无极调速,当温度升高到一定是能自动启动风扇,当温度降到一定时能自动停止风扇的转动,实现智能控制。
温控风扇已经广泛用于工业控制和生产生活中。
发展趋势:
随着技术的进步,温控风扇将会得到进一步的发展,不断提高其智能控制的精确度,不断的降低其运转的噪音,甚至实现零噪音,不断的降低功耗以节能,以及充分提高其集成度使其嵌入到更多的机械设备中将是其发展的趋势。
2系统硬件电路设计2.1总体硬件设计利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机进行处理,完成温度转换工作。
在LED数码管上显示当前环境温度值以及预设温度值。
通过控制双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。
具体如图1。
图1系统原理框图2.2数字温度传感器模块设计在选定单片机类型后,通常还要对一些严重影响系统性能指标的器件(如传感器)进行选择。
有时一个设计合理的测控系统往往因为传感器的限制而达不到应有的效果。
由于该电路的根本任务是温度的实时测量。
所以选用一块好的温度传感器是本设计的关键。
典型的温度测控系统包括AD转换电路、单片机和模拟温度传感器三部分。
但是因为模拟温度传感器在输出时是模拟信号,必须在经过AD转换这个环节获得了数字信号后才可以和单片机完成接口,从而使得硬件的电路结构非常复杂,成本比较高5。
近年来,由于以DSl8B20作为代表的这种新型的单总线数字式的温度传感器具有突出优点,从而使得它能得到充分利用。
2.2.1DS18B20的介绍DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器1。
DS18B20的测量的温度范围为-55+125。
这个温度传感器输出的温度数据可以和摄氏度校准,可以采用查找表或者转换规则就可以得到计算温度值。
它采用单根信号线,既可以传输时钟,同时又可以传输数据,并且数据传输是双向的,于是具有节省IO口线资源、成本低廉、结构简单、方便总线扩展和维护的优点。
它可以直接将模拟温度信号转化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。
2.2.2DS18B20的功能及使用说明DS18B20高精度数字温度传感器具有以下功能:
(1)利用AT89S51单片机与DS18B20温度传感器通信,来控制温度采集过程及进行数据通信;
(2)能提供DS18B20使用外围电路的温度显示LED电路和DS18B20与单片机的通信接电源键盘控制复位温度显示温度传感器电机调速控制单片机口电路;(3)运用发光二极管的指示系统工作状态,在DS18B20里置温度上下限;(4)编写程序,来完成单片机对温度的数据采集过程与和DS18B20数据的传输过程的控制。
图2温度传感器单片机控制DS18B20进行温度转换如图2。
具体操作为:
在每一次读写前要对DS18B20完成复位操作,在复位成功后发送一条ROM指令,在最后要发送RAM指令,这样做才能对DS18B20完成预定的操作。
复位时主CPU要将数据线往下拉500微秒,然后释放,当DS18B20收到信号等待1660微秒以后发出60240微秒的存在低脉冲,若主CPU收到这个信号则表示复位成功。
部分温度值与DS18B20输出的数字量对照表如图表1。
表1部分温度值与DS18B20输出的数字量对照表温度四进制输出十六进制输出+8500000101010100000550H+25.62500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101101110FF5EH-25.6251111111101101111FF6FH-551111110010010000FC90H2.2.3DS18B20寄存器的存储器及格式DS18B20温度传感器的内部存储器是由一个高速暂存RAM和一个非易失性的可电擦除的E2RAM组成的,后者存放了高温度及低温度的触发器TH、TL及结构寄存器。
而暂存存储器中包含8个连续的字节,前面的两个字节为测得的温度信息。
其中第一个字节的内容为温度的低八位;第二个字节的内容为温度的高八位;第三个与第四个字节为TH、TL易失性的拷贝;第五字节为结构寄存器易失性的拷贝,这三个字节的内容在每一次的上电复位时都要被刷新;第六、七及八字节可用于内部的计算;第九个字节则为冗余的检验字节3。
DS18B20温度寄存器的格式如表2。
表2DS18B20温度寄存器的格式LSByTebit7bit6bit5bit4bit3bit2bit1bit0232221202-12-22-32-4MSByTebit15bit14bit13bit12bit11bit10bit9bit8SSSSS2625242.2.4DS18B20使用注意事项DS18B20虽然拥有测温的精度高、系统较简单、连接较方便和占用口线少的优点,但是在实际的应用过程中也应该注意下面几个问题:
(1)由于硬件开销较小,所以需要较复杂的软件来进行补偿,由于DS18B20和微处理器间用的是串行数据传送,所以在对DS18B20完成读写的编程时必须严格保证读写的时序,不然将不能读取到测温结果。
(2)当单总线上所挂的DS18B20超过8个时,就需要解决微处理器的总线驱动问题。
(3)在DS18B20测温的设计过程中,向DS18B20发出要温度转换时必须要等待DS18B20做出的返回信号,如果某个DS18B20接触不良或短路,当程序读到该DS18B20时,将不会返回信号,程序进入死循环。
2.3键盘输入模块设计键盘在单片机应用系统中是必不可少的,人们通过它往计算机中传递信息。
常用的键盘电路包括独立式键盘和矩阵式键盘两种。
2.3.1键盘的选择与原理独立式键盘:
是最简单的键盘,每个键对应I/O端口的一位,没有键闭合时,I/O端口各位均处于高电平。
当有一个键被按下时,就使对应位接地成为低电平。
而其他位仍为高电平。
这样,只要CPU检测到I/O端口的某一位为“0”,便可以辨别出对应键已经被按下。
矩阵式键盘:
当系统所需按键较多时,为了减少键盘电路占用的I/O引脚数目,一般采用矩阵式电路。
设有一个含有mn个键的键盘,如果采用独立式的键盘结构设计,需要mn条引线和mn位I/O端口。
如果采用矩阵式键盘结构,便只要m+n条引线和m+n位I/O端口就行了。
它包括行线与列线,在行、列交叉点上有按键设置,在按键的开关两端分别连接上行、列线。
行线则通过上拉电阻来连接到+5v上。
当没有按键的动作时,行线处在高电平的状态,但当有按键按下时,行线的电平状态将由和这个行线相连列线的电平来决定。
如果列线的电平为高,则行线的电平为高;如果列线的电平为低,则行线的电平为低。
这一点是识别矩阵是否按下按键的关键。
因为在矩阵键盘中,行、列线为多键共用,每个按键都可以影响该键所在行和列的电平,所以每个按键之间互相都会发生影响,因此必须将行、列信号配合起来并做适当的处理,才能确定闭合键的位置5。
键盘功能手动按钮:
在此状态下,手动调节等级调速来实现调速;自动按钮:
在此状态下,自动调速以使室温等于设定温度;设定按钮:
按下时,温度显示设定温度,并可改变设定温度;+按钮:
改变设定温度使设定温度增加;-按钮:
改变设定温度使设定温度减小;高中低档:
手动控制调速等级。
2.3.2键盘电路根据所需按键个数、I/O引脚输出级电路结构以及可以利用的I/O引脚数量,确定键盘电路形式。
本方案有8个按键,又考虑到I/O口的数量,采用独立式键盘电路。
8个按键如图3分别定义如下:
K1、自动按钮;K2、手动按钮;K3、设定键;K4、+按键;K5、-按键;K6、高档;K7、中档;K8、低档2。
图3键盘电路电路图2.4温度控制模块设计在单片机控制系统中,常用LED显示器来显示各种数字和符号。
这种显示器显示清晰,亮度高,接口方便,广泛用于各种控制系统中。
2.4.1LED显示灯介绍LED显示器在电路连接上有两种形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极型LED显示器;另一种是8个发光二极管的阴极都连在一起的,称为共阴极型LED显示器4。
显示器的显示方式有两种:
静态显示和动态扫描显示。
所谓静态显示,是指当显示器显示某个字符时,相应段的发光二极管处于恒定的导通或截止状态,直到需要显示另一个字符为止。
在这种工作方式下,LED的亮度高,软件编程也比较容易;但是它占用比较多的I/O资源,常用于现实位数不多的情况。
LED显示器动态接口的基本原理是利用人眼的“视觉暂留”效应。
接口电路把所有显示器的8个笔端a到h分别并联在一起,构成“字段口”,每个显示器的公共端COM各自独立的受I/O线控制,称“位扫描口”。
CPU向字段输出口送出字形码时,所有的显示器都能接受到,但是究竟点亮哪个显示器,取决于此时的位扫描口德输出端接通了哪个LED显示器的公共端。
所谓动态,就是利用循环扫描的方式,分时轮流选通各显示器的公共端,使各个显示器轮流导通。
当扫描速度达到一定程度时,人眼就分辨不出来了,认为是各个显示器。
本设计是对室内温度进行显示,一般用户室内温度是两位,所以我采用两位数码管显示,共阳极、动态显示方式。
P0.0P0.7连接数码管的段输出,P3.0、P3.1连接数码管的位输出,温度显示模块如图4所示。
图4温度显示模块2.5电机控制模块设计电机调速是整个控制系统中的一个重要方面。
控制双向可控硅导通角,使得输出端的电压发生改变,而使施加到电风扇的输入电压改变,来调节风扇转速,从而实现各档位的风速的无级调速。
2.5.1电机调速原理可控硅导通必须满足以下条件:
(1)在阳极与阴极间加上正向电压;
(2)在控制极与阴极间加上正向的触发电压;(3)可控硅最小的维持电流IH应小于阳极电流IA。
把电风扇风速设定为从低到高1、2、3、4、5档,每个档都设有一个特定的风速值。
在满足额定电压和额定功率的条件下,以最高的转速运转的时候,风叶的最大圆周上线速度应不大于2150m/min。
线速度能由公式
(1)求得:
310VDn
(1)式中,V时扇叶上最大圆周线速度(m/min),D是扇中最大顶端扫出圆直径(mm);n是电风扇的最高转速(r/min)。
代入数据求得5n1555r/min,取5n=1250r/min。
又因为:
(2)取n1=875r/min.则可得出五个档位的转速值:
5n=1250r/min4n=1150r/min3n=1063r/min2n=980r/min1n=875r/min又因为负载上的电压有效值其中,u1是输入的交流电压有效值,是控制角。
解得:
5=0t=0ms4=23.5t=1.70ms3=46.5t=2.58ms01sin2()2uu10070最低转速调速比最高转速(3)2=61.5t=3.43ms1=76.5t=4.30ms从上面可以计算出控制角与触发时间。
检测到过零点时,依据所求得的触发时间延时发脉冲,便可实现预期转速。
2.5.2电机控制模块硬件设计本电路采用的是拥有过零检测、过零触发、光电隔离等多项功能的过零双向可控硅型光耦MOC3041,可以避免输入输出通道可以同时控制双向可控硅触发,简化了输出通道隔离2驱动电路的结构。
如图5所示,RL为电机负载。
它的工作原理为:
利用单片机来响应用户的参数设置,使得在I/O口输出一个高电平,再经过反向器的反向后,得到一个低电平,从而使得光电耦合器的导通,同时可以触发双向可控硅,使得工作的电路被导通。
在额定的时间内,负载的功率为:
nPUIN(4)式中:
P为负载的功率;N为额定时间内的交流正弦波总个数;n为额定时间内的可控硅导通时的正弦波个数;I为可控硅在一个电源周期中全导通时的电流有效值;U为可控硅在一个电源周期中全导通时电压的有效值。
通过式(4)可知,当U,I,N为定值时,只需要改变n值大小就可控制功率的输出,从而达到调节电机转速的目的6。
电机控制原理图如图5。
图5电机控制原理图3软件设计3.1总体软件设计软件是单片机应用系统中的一个重要的组成部分。
一般计算机包括系统软件和用户软件两种应用系统软件,而单片机只有用户软件这一种,称为应用系统软件9。
在软件设计中,最关键的是要确定软件应完成的任务和选择相应的软件结构。
根据系统软、硬件不同的功能分工,可确定出软件要完成的各项功能。
那些实现控制功能的软件应明确控制信号、控制对象及控制时序;同样的那些实现处理功能的软件应明确输入是什么、要做什么处理(处理算法)及产生何种输出。
本方案按照功能的不同可以把系统软件部分分成五大模块,每个独立的模块通过联系程序联系起来,再与硬件联系,从而形成一个完整的控制系统。
系统的主要功能模块有:
(1)主程序;
(2)传感器温度检测模块;(3)温度显示模块;(4)按键控制模块;(5)电机调速模块。
3.2主要程序流程图3.2.1主程序流程图系统初始化,开始运行程序,利用DS18B20检测出温度,然后显示出温度,是否有键按下,取得键值,最终再对它进行处理。
具体如图6。
图6主程序流程图3.2.2数字温度传感器模块程序流程图本系统的运行程序采用汇编语言编写,采用模块化设计,整体程序包括主程序和子程序两部分。
如图7所示,主机控制DS18B20完成温度转换工作必须经过三个步骤:
初始化、ROM操作指令和存储器操作指令。
单片机所用的系统频率为12MHz。
根据DS18B20初始化时序、读时序和写时序分别可编写4个子程序,即初始化子程序、写子程序、读子程序、显示子程序。
开始调用检测温度子程序调用显示子程序有键按下取得键值功能处理图7数字温度传感器模块程序流程图DS18B20功能命令如表3。
表3DS18B20功能命令表命令功能描述命令代码CONVERT开始温度转换44HREADSCRATCHPAD读温度寄存器(共9字节)BEHREADROM读DS18B20序列号33HWRITESCRATCHPAD将警报温度值写如暂存器第2、3字节4EHMATCHROM匹配ROM55HSEARCHROM搜索ROMF0HALARMSEARCH警报搜索ECHSKIPROM跳过读序列号的操作CCHREADPOWERSUPPLY读电源供电方式:
0为寄生电源,1为外电源B4H开始设置参数初始化DS18B20启动DS18B20测量内部判断调用读子程序输出显示调用相应的控制程序调用相应的键值处理程序调用写子程序结束异常设置系统初始化正常3.2.3显示程序流程图DSl8B20是一个典型的单总线传感器,其命令序列如图8。
图8显示程序流程图3.2.4电动机程序设计原理以及流程图程序设计原理:
采用双向可控硅过零触发的方式,通过单片机来控制双向可控硅通断,由改变每个控制周期内的可控硅导通与关断交流完整全波信号的个数来调节负载功率,以达到调速的目的。
因为信号INT0反映的是工频电压的过零时刻,所以可以在外中断0的中断服务程序之中来完成对控制门开启和关闭,并且利用中断服务的次数来对控制量n进行计数与判断,即每中断一次,对n进行减1计数,如果n不等于0,则保持控制电平是“1”,保持打开控制门;如果n等于0,则让控制电平复位至“0”,并关闭控制门,使得可控硅的过零触发的脉冲不能通过。
这样就能通过在控制处理中得到的控制量要求,来完成可控硅过零控制,来达到按照控制量来控制的目的,来实现速度可调10。
具体流程图如图9。
中断入口重置定时初取计数值取表得位码P3口第2位置1位码与P3口相“与”显示计数器01显示计数器=2吗显示计数器清零返回
(1)回路的控制执行程序。
主回路的控制执行程序目的是初始化数据的存储单元,以确定电机的工作参数,并将它换算成为“有效过零脉冲”个数;来确定中断优先级及开中断,为保证正弦波完整,工频过零的同步中断INT0应确定为高一级的中断源。
(2)断服务程序。
执行中断服务的程序时,首先要保护现场,INT0中断标志的置位,禁止主程序来修改工作参数,之后开始减1计数,来判断是否需关断可控硅。
最后INT0的中断标志位清零,以还原初始化数据;恢复现场后中断返回。
图9电机控制流程图4设计总结该设计主要是以单片机为核心设计一个智能风扇控制器,具备倒数计时、时间修改、实时显示温度、预设关机温度、预设报警温度等功能。
可适用于家用风扇控制器和工业用于温度控制的场合。
本论文设计的智能风扇控制器,可以实时监控环境温度,当环境温度升高到一定时能自动启动风扇,当环境温度低于用户设定的温度时,风扇会自动关闭。
本智能温度控制器也可用于工业温度测量的场所,从本次设计中我们可以学到关于单片机在实际生活中的设计应用,也可以深入地学习到单片机的编程。
参考文献:
1张大明.单片微机控制应用技术实操指导书M.机械工业出版社,2007.35-432陈贵银.单片机原理及接口技术M.电子工业出版社,2011.126-1373周坚.单片机轻松入门(第二版)M.北京航空航天大学出版社,2004.57-654潘永雄.新编单片机原理与应用M.西安电子科技大学出版社,2007.231-2495王幸之,钟爱琴.AT89系列单片机原理与接口技术M.北京航空航天大学出版社,2004.196-207下降沿中断置位I/O输出延时脉冲电机转速延时t等待中断附录A系统原理图附录B程序清单2.12.1主程序主程序KEY_AUTOBITP1.0;定义自动按钮端口KEY_HANDBITP1.1;定义手动按钮端口KEY_FOUNDBITP1.2;定义设定按钮KEY_ADDBITP1.3;定义设定加按钮KEY_DECBITP1.4;定义设定减按钮KEY_ONEBITP1.5;定义高档按钮KEY_TWOBITP1.6;定义中档按钮KEY_THREEBITP1.7;定义低档按钮OUTPUTBITP2.7;定义电动机输出端口ORG0000HLJMPMAINORG0100HORG001BHMAIN:
MOVSP,#60HMOV4AH,#22;单片机复位后默认设定温度为22摄氏度CLROUTPUT;上电后输出停止MAAI:
LCALLTEMPER1;调用检测温度子程序LCALLDISPLAY;调用显示子程序LCALLKEYSCAN;调用按键子程序LCALLOUTPUT;调用电动机输出子程序SJMPMAIN2.22.2温度检测主要程序如下:
温度检测主要程序如下:
TEMPER1:
TEMPER_LEQU29H;用于保存读出温度的低8位TEMPER_HEQU28H;用于保存读出温度的高8位FLAGEQU38H;是否检测到DS18B20标志位A_BITEQU20H;数码管个位数存放内存位置B_BITEQU21H;数码管十位数存放内存位置DQBITP3.4MAIN:
ACALLRE_TEMPER;调用读温度子程序ACALLTURN;调用转化子程序ACALLDISPLAYJMPMAIN;读出转换后的温度值RE_TEMPER:
SETBDQLCALLINIT_1820;先复位DS18B20JBFLAG,STRET判断DS1820是否存在?
若DS18B20不存在则返回ST:
MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820;这里通过调用显示子程序实现延时;一段时间,等待AD转换结束,12位的话750微秒LCALLDISPLAYLCALLINIT_1820;准备读温度前先复位MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_1820;将读出的温度数据保存到35H/36HRET;这是DS18B20复位初始化子程序INIT_1820:
SETBDQNOPCLRDQ;主机发出延时537微秒的复位低脉冲MOVR1,#3DLY:
MOVR0,#107DJNZR0,$DJNZR1,DLYSETBDQ;然后拉高数据线NOP;等待DS18B20回应NOPNOPMOVR0,#25HT2:
JNBDQ,T3;等待DS18B20回应DJNZR0,T2;延时LJMPT4T3:
SETBFLAG;置标志位,表示DS1820存在LJMPT5T4:
CLRFLAG;清标志位,表示DS1820不存在LJMPT7T5:
MOVR0,#117T6:
DJNZR0,T6;时序要求延时一段时间T7:
SETBDQRET;写DS18B20的子程序(有具体的时序要求)WRITE_1820:
MOVR2,#8;一共8位数据CLRCWR1:
CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_1820:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 风扇 控制系统 设计