您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页基于单片机的智能风扇控制系统论文

基于单片机的智能风扇控制系统论文

来源:小侦探旅游网
 摘 要

随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。

近年来,电风扇增设了各种新功能,既彰显了个性,也在无形中提高了档次。电风扇起停的自动控制,能够解决夏天人们晚上熟睡时,由于夜里温度下降而导致受凉,或者从睡梦中醒来亲自开关电风扇的问题,具有重要的现实意义。从此目的出发,本文介绍了一种基于ATC51单片机的电风扇智能调速器的设计,该设计以ATC51控制器为核心,巧妙利用温度传感器电路,及时而准确的采集环境温度,利用双向晶闸管对电机进行无级调速,把智能控制技术用于家用电器的控制中,用人体周围的环境温度对风扇进行温控。

关键字:电风扇,单片机,温度传感器,数码管

Smart fan control system based on single chip microcomputer

Author: Yang wanli

Tutor: He hongli

Abstract

With the rapid development of modern information technology, temperature measuring control system play an increasingly important role in industry, agriculture and People's Daily life. It has a great influence on people's lives, so the design of the control system of temperature acquisition and research has the very vital significance.

In recent years, Electric fans added lots of new features . It doesn’t reveal the individual

character, but in virtually it also improves the level. The automatic control of fan’s start and stop can solve the problem which when people are sleeping at night in summer, due to temperature drop and lead to catch cold at night, or waking from sleep to switch electric fan, so it has important practical significance . Therefore, the paper introduces the design of electric fan intelligent governor based on ATC51 . The design uses ATC51 controller as the core, skillfully using temperature sensor circuit timely and accurately to collect environment temperature, and using the two-way thyristor to stepless speed regulation of motor. The intelligent control technology is used in home appliances control, and uses the human body environment temperature to realize the control of temperature of fan.

Key words: Fan,Single chip microcomputer , The temperature sensor ,Nixietube

目 录

1绪论 ......................................................................................................................................... 1 2芯片介绍 ................................................................................................................................. 2 2.1 ATC51单片机介绍 .................................................................................................... 2 2.2 温度传感器DS18B20介绍 ........................................................................................... 5 3 硬件电路及系统原理分析 .................................................................................................... 8 3.1 系统总体设计 ................................................................................................................ 8 3.2 功能描述 .......................................................................................................................... 8 3.3 单片机最小系统电路 .................................................................................................... 10 3.4 键盘控制电路 ................................................................................................................ 11 3.5数码管显示电路 ............................................................................................................. 12 3.6 电机调速电路 .............................................................................................................. 13

3.6.1 电机调速原理 ................................................................ 13 3.6.2 电机控制模块设计 ............................................................ 14 3.7 报警电路 ........................................................................................................................ 15 4 控制器软件设计 ................................................................................................................ 16 4.1 主程序 .......................................................................................................................... 16 4.2 温度传感器模块 .......................................................................................................... 17 4.3 电机调速与控制子模块 .............................................................................................. 18 5仿真结果 ............................................................................................................................... 20 结论 .......................................................................................................................................... 23 致谢 .......................................................................................................................................... 24 参考文献 .................................................................................................................................. 25 附录 .......................................................................................................................................... 26

1绪论

随着空调在日常生活中的普遍应用,很容易想到电风扇会成为空调的社会淘汰品,其实经过市场的考验和证实,事实并非如此。虽然空调产品仍然具有很强大的生命力,但是电风扇在市场的验证下也显示着它的市场优势,并且其销售在不停的复苏中具有强大的发展空间。据市场调查,电风扇的不停复苏主要在于以下三个方面:一是电风扇虽然没有空调机的强大的制冷功能,但电风扇是直接取风,风力更加温和,比较适合老年人、儿童以及体质虚弱的人使用[1]。二是电风扇经过多年的市场使用,较符合人们的使用习惯,而且结构简单、操作方便、安装简易。三是电风扇比起空调产品而言,其价格低廉,相对省电,更容易进入老百姓的家庭。

随着人们生活水平及科技水平的不断提高,现在家用电器在款式、功能等方面日益求精,并朝着健康、安全、多功能、节能等方向发展。过去的电器不断的显露出其不足之处,电风扇作为家用电器的一种,同样存在类似的问题。传统的电风扇较为突出的缺点是:一是风扇的风力大小不能根据温度的变化自动的调节风速,对于那些昼夜温差比较大的地区,这个自动调节风速就显得优其的重要了,特别是人们在熟睡时常常没有觉察到夜间是温度变化,那样既浪费电资源又容易引起感冒;二是传统的风扇是用机械式的定时方式,机械式的定时方式常常会伴随着很大的机械运动的声音,特别是在夜间影响人们的睡眠质量,机械定时也有一定的局限性,定时范围有限;三是传统的电风扇没有远程遥控控制电风扇的功能,对平时需要调节风扇风速,而又不想走近风扇带来很多不便。鉴于以上方面的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题。

我们都知道,传统电风扇多采用机械方式进行控制,功能少,噪音大,各档的风速变化大,况且,档速调换也不方便。而基于ATC51单片机的智能电风扇调速器的设计,巧妙的利用红外线遥控技术、单片机控制技术、无级调速技术和温度传感技术,把智能控制技术应用于家用电器的控制中,将电风扇的电机转速作为被控制量,由单片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速,从而达到无须人为控制便可自动调整风速的效果。

2芯片介绍

2.1 ATC51单片机介绍

ATC51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,其内部程序代码容量为4KB[2]。

1、ATC51主要功能列举如下: ①为一般控制应用的 8 位单芯片

②晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) ③内部程式存储器(ROM)为 4KB ④内部数据存储器(RAM)为 128B ⑤外部程序存储器可扩充至 KB ⑥外部数据存储器可扩充至 KB

⑦32 条双向输入输出线,且每条均可以单独做 I/O 的控制 ⑧5个中断向量源 ⑨2组的 16 位定时器 ⑩1个全多工串行通信端口

2、ATC51各引脚功能介绍如图3.1所示。

图2.1 ATC51引脚图

VCC:ATC51 电源正端输入,接+5V。 VSS:电源地端。

XTAL1:单芯片系统时钟的反相放大器输入端。

XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 30PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。

RESET:ATC51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,ATC51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。

EA/VPP:\"EA\"为英文\"External Access\"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序[3]。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。

ALE/PROG:ALE是英文\"Address Latch Enable\"的缩写,表示地址锁存器启用信号。ATC51可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为ATC51是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。

PSEN:此为\"Program Store Enable\"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。ATC51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用K的定址范围。

PORT0(P0.0~P0.7):

端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0

表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到K的外部存储器空间。

PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。

PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在ATC51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了[4]。

PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:

P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。 P3.3:INT1,外部中断1输入。 P3.4:T0,计时计数器0输入。 P3.5:T1,计时计数器1输入。

P3.6:WR:外部数据存储器的写入信号。 P3.7:RD,外部数据存储器的读取信号。

2.2 温度传感器DS18B20介绍

DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器[5]。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:

(1)系统的特性:测温范围为-55℃~+125℃ ,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。

(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。

(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。

(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。

DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长[6]。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。

1、DS18B20的性能特点

DS18B20的引脚图如图2.3所示。独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5V;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20的

引脚功能描述如表1所示。

图2.3 DS18B20的引脚排列

表1 DS18B20引脚功能描述 序号 1 2 名称 GND DQ 引脚功能描述 地信号 数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源 3 VDD 可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地 2、DS18B20的内部结构

DS18B20的内部框图如图2.4所示。位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。

存储器和控制逻辑位和单线端口暂存器电源探测位产生器内部温度传感器上限触发下限触发

图2.4 DS18B20的内部框图

该技术采用单根信号线,既可传输时钟,也能传输数据,而且是双向传输。适用于单主机系统,主机能够控制一个或多个从机设备,通过一个漏极开路或三态端口连至该

数据线,以允许设备在不发送数据时能释放该线,而让其他设备使用。单线通常要求外接一个5K的上拉电阻,这样当该线空闲时,其状态为高电平。

主机和从机之间的通讯分成三个步骤:初始化单线器件、识别单线器件和单线数据传输[7]。

单线1—wire协议由复位脉冲、应答脉冲、写0、写1、读0、读1,这几种信号类型实现,这些信号中除了应答脉冲其他都由主机发起,并且所有指令和数据字节都是低位在前。

DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器件的工作时序。

表2 部分温度值与DS18B20输出的数字量对照表

温度值/℃ 数字输出(二进制) 数字输出(十六进制) +125 0000 0111 1101 0000 07D0H

+85 0000 0101 0101 0000 0550H +25.625 0000 0001 1001 0001 0191H +10.125 0000 0000 1010 0010 00A2H +0.5 0000 0000 0000 1000 0008H 0 0000 0000 0000 0000 0000H -0.5 1111 1111 1111 1000 FFF8H -10.125 1111 1111 0110 1110 FF5EH -25.625 1111 1111 0110 1111 FF6FH -55 1111 1100 1001 0000 FC90H

3 硬件电路及系统原理分析

3.1 系统总体设计

系统总体设计图如图3.1所示。

ATC51 数字温度传感器 图3.1 系统总体设计结构图

蜂鸣器 温度、档位显示 键盘功能输入 电机调速 本系统是以单片机为核心,由数字温度传感器DS18B20、温度、档位显示、电机调速电路和蜂鸣器报警电路组成。

通过键盘可以控制系统为几个不同的工作状态,休眠状态、自动档以及手动的几个档位进行工作。

对于单片机处理系统的方案设计,根据要求,我们可以选用具有 4KB 片内E2PROM 的 ATC51 单片机作为处理器作为整个控制系统的核心,ATC51 内部已包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统[8]。整个系统结构紧凑,抗干扰能力强,性价比高。 3.2 功能描述

传统电风扇供电采用的是220V交流电,电机转速分为几个档位,通过人工手动调整电机转速达到改变风速的目的,亦即,每改变一次风力,必然有人参与操作,这样就会带来诸多不便[9]。

温度显示或者报警显示风扇档位显示L1L2L3L4L5R17R16R15RP1RESPACK-8300300300R14300R13300ABCDEFGDPL1L2L3L4C111234567ABCDEFGDPL5停止1档2档30pFY1CRYSTALU1C219XTAL1VCC1830pFK1U2U7AND_5321VCCDQGNDDS18B2029.0XTAL23档R1010kRSTR3510uFL1L2L3L4L5C39RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD73938373635343332自动C1图3.2 系统总体原理图

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A152122232425262728GND1kR2610k1293031PSENALEEAU461nFV1VSINE2U3:A340092ZeroCrossingU5L2008LMOC3031MR1110kABCDEFGDPP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD1011121314151617R1R2R103kR104kR105kR106kR107kR108k10k10k12345678R910kR12BUZ1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7C51模拟电机R2510010kQ1PN2907BUZZERGND 本设计是以ATC51单片机控制中心,主要通过提取温度传感器DS18B20得到的温度以及内部定时器设定时间长短来控制电风扇的开关及转速的变化。

电风扇可工作在两种状态:手动调速状态、自动调速状态。 手动状态时可以手动调节速度;

自动状态时通过温度高低自动调节速度:“温度高,转速快;温度低,转速慢”; 本设计主要介绍根据温度传感器DS18B20所采集的温度来实现自动调速。 在接通电源之后,CPU处于休眠状态,当用户选择了相应的按键即挡位(自动挡、1挡、2挡、3挡)之后,风扇就进入了相应的工作状态。本风扇系统的自动档是通过数字温度传感器DS18B20测量环境温度,在测量完温度之后,通过LED数码管显示出实时温度,第四位显示的是当前温度的警告信息[10]。C标识温度不是很高(30度以下),处于1挡进行工作;E标识温度稍高一点(30~35度之间),用2挡工作,风扇转速快一点,降温快;F标识温度很高(37度以上),应该让风扇处于最快的转速,以快速的降低温度。还有一位数码管是单独的显示档位的。系统总体电路图如图3.2所示。 3.3 单片机最小系统电路

在设计的温度控制系统设计中,控制核心是STCC52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS[11]。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图3.3所示。 C2U11nF19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617X1CRYSTAL18C31nFXTAL2R7C11uF9RST4.7k200R6293031PSENALEEA 图3.3 单片机最小系统 12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C513.4 键盘控制电路

单片机系统中完成控制参数输入及修改的基本输入设备,是人工干预系统的重要手段[12]。

按编码方式可分为编码键盘与非编码键盘。按键组连接方式可分为连接式键盘与矩阵连接式键盘。

键盘:每键相互,各自与一条I/O线相连,CPU可直接读取该I/O线的高/低电平状态。其优点是硬件、软件结构简单,判键速度快,使用方便;缺点是占I/O口线多。多用于设置控制键、功能键。适用于键数少的场合。

矩阵键盘:键按矩阵排列,各键处于矩阵行/列的结点处,CPU通过对连在行(列)的I/O线送已知电平的信号,然后读取列(行)线的状态信息。逐线扫描,得出键码。其特点是键多时占用I/O口线少,硬件资源利用合理,但判键速度慢。多用于设置数字键,适用于键数多的场合。

鉴于以上键盘和矩阵键盘的特点,本系统使用按键较少,对按键的速度要求不是很高,因此我们选择键盘作为本系统的输入部分。如图3.4所示。

图3.4 键盘控制电路

3.5数码管显示电路

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

本设计一共用5个数码管显示:即前3个显示温度,第4个显示温度单位C,第5个显示档位。通过单片机的P1口控制数码管的段选信号,用P2口的P2.0到P2.4控制数码管的位选[13]。通过DS18B20采集温度信号,并作为单片机的输入信号,根据输入信号的不同,通过不同的软件程序产生相应的输出信号来控制数码管的显示。数码管显示电路如图3.5所示。

图3.5 数码管显示电路

3.6 电机调速电路

电机调速是整个控制装置中的一个相当重要的方面。通过控制改变双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。 3.6.1 电机调速原理

双向可控硅的导通条件如下: (1)阳-阴极间加正向电压; (2)控制极-阴极间加正向触发电压;

(3)阳极电流IA 大于可控硅的最小维持电流IH。

电风扇的风速从高到低设为3、2、1档,每档风速都有一个限定值。在额定电压、额定功率下,以最高转速运转时,要求风叶最大圆周上的线速度不大于2150m/min。且线速度可由下列公式求得

V=πDn×103 (1)

式(1)中,V为扇叶最大圆周上的线速度(m/min),D为扇中的最大顶端扫出圆的直径(mm),n为电风扇的最高转速(r/min)。

代入数据求得n3≤1555r/min,取n3=1250 r/min.又因为:

调速比最低调速档的转速100%70%最高调速档的转速

取n1=875r/min。则可得出五个档位的转速值: n1=1063r/min,n2=1150 r/min,n3=1250r/min 又由于负载上电压的有效值

sin22 (2) u0=u1式(2)中,u1为输入交流电压的有效值,α为控制角。解得: 当α3=0°时,t=0ms; 当α2=23.5°时,t=1.70ms;

当α1=46.5°时,t=2.58ms;

上述计算出的是控制角和触发时间,当检测到过零点时,按照所求得的触发时间延时发脉冲,便可实现预期转速[14]。 3.6.2 电机控制模块设计

本模块电路中采用了过零双向可控硅型光耦MOC3041M ,集光电隔离、过零检测、过零触发等功能于一身,避免了输入输出通道同时控制双向可控硅触发的缺陷, 简化了输出通道隔离2驱动电路的结构。所设计的可控硅触发电路原理图见图3.6。其中RL即为电机负载,其工作原理是:单片机响应用户的参数设置, 在I/ O 口输出一个高电平, 经反向器反向后, 送出一个低电平,使光电耦合器导通, 同时触发双向可控硅, 使工作电路导通工作。给定时间内,负载得到的功率为:

PU1XTAL1nUIN (3) 9837给定时间内交流正弦波的总个数; U为可控硅在一个电源周期全导通时所对应的电压有XTAL2效值(V); I 为可控硅在一个电源周期全导通时所对应的电流有效值(A)[15]。由式(3) RST9可知,当U , I , N 为定值时, 只要改变n 值的大小即可控制功率的输出,从而达到调 3U6VCC节电机转速的目的。风扇电机控制电路如图3.6所示。 P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A1521222324252627281011121314151617AND_421DQGND29.0DS18B20L5P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7式中: P 为负载得到的功率( kW); n 为给定时间内可控硅导通的正弦波个数; N 为39383635343332U2901PSENALEEAR1010k12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDC1U4161nFV1VSINEU3:A3400922ZeroCrossingU5L2008LR1110kR910kR1210kMOC3031M 图3.6风扇电机控制电路

3.7 报警电路

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、复印机、报警器、定时器等电子产品中作发声器件。

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路[16]。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器。

蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.5引脚控制,当P3.5输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P3.5输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,结合电路我们可以通过程序控制P3.5脚的电平来使它发出声音和关闭[17]。 程序中改变单片机P3.5引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。蜂鸣器的报警电路如图3.7所示。

图3.7 蜂鸣器报警电路

4 控制器软件设计

本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和显示、键盘扫描、红外线接收以及电机控制等子程序模块组成。 4.1 主程序

在主程序进行初始化后,开始反复检测各模块相关部分的缓冲区的标志,如果缓冲区置位,说明相应的数据需要处理,然后主程序调用相应的处理子模块。如图4.1所示。

图4.1 主程序模块流程图

4.2 温度传感器模块

如图4.2所示,主机控制DS18B20数字温度传感器完成温度转换工作必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。单片机所用的系统频率为12MHz[18]。

根据DS18B20数字温度传感器进行初始化时序、读时序和写时序分别可编写3个子程序:初始化子程序、写子程序、读子程序。

开始 DS18B20初始化 启动DS18B20测温 调用相应的键值处理程序 异常 调用相应的控制程序 内部判断 正常 调用读子程序 调用写子程序 显示子程序 结束 图4.2 数字温度传感器模块程序流程图

DS18B20芯片功能命令表如2所示。

表2 DS18B20功能命令表

命令 说明 协议 READ ROM 读取激光ROM位 33H MATCH ROM 匹配ROM 55H SKIP ROM 跳过ROM CCH SEARCH ROM 搜索ROM F0H ALARM SEARCH 告警搜索 ECH WRITE SCRATCHPAD 把字节写入暂存器的地址2和3 4EH READ SCRATCHPAD 读取暂存器和CRC字节 BEH COPY SCRATCHPAD 把暂存器内容拷贝到非易失性存储器中 48H CONVERT T 开始温度转换 44H RECALL E2 把非易失性存储器中的值召回暂存器 B8H READ POWER SUPPLY 读电源供电方式:0为寄生电源,1为外电源 B4H

4.3 电机调速与控制子模块

本模块采用双向可控硅过零触发方式,由单片机控制双向可控硅的通断,通过改变每个控制周期内可控硅导通和关断交流完整全波信号的个数来调节负载功率,进而达到调速的目的[19]。

因为INT0信号反映工频电压过零时刻,所以只要在外中断0的中断服务程序中完成控制门的开启与关闭,并利用中断服务次数对控制量n进行计数和判断,即每中断一次,对n进行减1计数,如果n不等于0,保持控制电平为“1”,继续打开控制门;如n=0,则使控制电平复位为“0”,关闭控制门,使可控硅过零触发脉冲不再通过[20]。这样就可以按照控制处理得到的控制量的要求,实现可控硅的过零控制,从而达到按控制量控制的效果,实现速度可调。

(1)中断服务程序:执行中断服务程序时,首先保护现场,INT0中断标志置位,禁止主程序修改工作参数,然后开始减1计数,判断是否关断可控硅,最后INT0中断

标志位清零,还原初始化数据,恢复现场,中断返回。(设1秒钟通过波形数N=100)

(2)回路控制执行程序:主回路控制执行程序的任务是初始化数据存储单元,确定电机工作参数Nmin/Nmax,并将其换算成“有效过零脉冲”的个数;确定中断优先级、开中断,为了保证正弦波的完整,工频过零同步中断INT0确定为高一级的中断源。电机控制模块中断响应流程图如图4.3所示。

EX0中断 T0中断 温度大于等于下限值并且小于上限值 控制可控硅导通 控制可控硅 截止 停止T0定时 设置T0参数 中断返回 启动定时 中断返回 图4.3 电机控制模块中断响应流程图

5仿真结果

当温度小于30度时,为1档。如图5.1所示。

L1L2L3L4R17R16R15ABCDEFGDPR14300L5R13300RP1RESPACK-8300300300ABCDEFGDPL1L2L3L4L51U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617L1L2L3L4L523456718XTAL2 U2U6AND_4321VCCDQGNDDS18B2029.09RSTR1010k293031PSENALEEAC1U4161nFABCDEFGDPR1R2R310kR410kR510kR610kR710kR810k10k10k12345678V1VSINEP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51U3:A3400922ZeroCrossingU5L2008LR1110kR910kR1210kMOC3031M图5.1 温度小于30度

当温度大于30度小于35度时,为2档。如图5.2所示。

温度显示或者报警显示风扇档位显示L1L2L3L4L5R17R16R15ABCDEFGDPR14300R13300RP1RESPACK-8300300300ABCDEFGDPL1L2L3L4C1130pFL51234567停止1档2档Y1CRYSTAL19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617L1L2L3L4L5C2VCC30pF18K1RST9XTAL2C3R3510uFGND1kRSTU2U7AND_5321VCCDQGNDDS18B2032.73档R1010k自动C11nFR2610kR1R2R310kR410kR510kR610kR710kR810k10k10k293031PSENALEEAABCDEFGDP12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7C51U3:A340092RL1G2RL-1AB-DC5V1VSINER1110kR910kR1210k电机BUZ1R25100Q1PN2907BUZZERGND 图5.2 温度大于30度小于35度

当温度大于35度时,为3档。如图5.3所示。

温度显示或者报警显示风扇档位显示L1L2L3L4L5R17R16R15ABCDEFGDPR14300R13300RP1RESPACK-8300300300ABCDEFGDPL1L2L3L4C1130pFL51234567停止1档2档Y1CRYSTAL19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617L1L2L3L4L5C2VCC30pF18K1RST9XTAL2C3R3510uFGND1kRSTU2U7AND_5321VCCDQGNDDS18B2037.73档R1010k 自动C11nFR2610kR1R2R310kR410kR510kR610kR710kR810k10k10k293031PSENALEEAABCDEFGDP12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7C51U3:A340092RL1G2RL-1AB-DC5V1VSINER1110kR910kR1210k电机BUZ1R25100Q1PN2907BUZZERGND图5.3 温度大于35度

当温度大于40度时,蜂鸣器响起,此时显示OL。如图5.4所示。

温度显示或者报警显示风扇档位显示L1L2L3L4L5R17R16R15ABCDEFGDPR14300R13300RP1RESPACK-8300300300ABCDEFGDPL1L2L3L4C1130pFL51234567停止1档2档Y1CRYSTAL19U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617L1L2L3L4L5C2VCC30pF18K1RST9XTAL2C3R3510uFGND1kRSTU2U7AND_5321VCCDQGNDDS18B2040.73档R1010k 自动C11nFR2610kR1R2R310kR410kR510kR610kR710kR810k10k10k293031PSENALEEAABCDEFGDP12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7C51U3:A340092RL1G2RL-1AB-DC5V1VSINER1110kR910kR1210k电机BUZ1R25100Q1PN2907BUZZERGND图5.4 温度大于40度

结论

21世纪是一个科技高度发展的时代,创新性、合理性将在未来的市场里占据主流地位。大多数字化的产品以其灵巧轻便、功能强大、美观得体为卖点而深受广大市民的青睐,由此可见市民的消费观念大多取决于新潮与创意,所以现今产品的发展越来越趋向人性化和智能化。

本系统以单片机ATC51为控制核心,实现由温度对电风扇开启和关闭的智能控制,以及温度的实时显示。利用单片机实现的智能温控电风扇系统,性能可靠,成本较低,适合大众消费,有重要应用价值。本系统的电路和程序稍作修改,还可以实现其他一些功能,比如大棚温度控制、电动机温度检测、自动定时闹钟、家庭电器自动控制系统等,系统移植性强。

从04年开始,电风扇行业就出现了创新的高潮,如今,这股高潮还在继续。正所谓“万变不离其宗”,透过当今千姿百态的电风扇市场,我们可以预言:今后的电风扇一定会继续吹着创新设计风、人性功能风及智能控制风。

致谢

回想这篇论文完成前的一段时间,特别感谢我的指导老师和吴教授以及身边关心帮助我的朋友们,在论文的写作过程中遇到了无数的困难和障碍,但都在他们的热心帮助下度过了。尤其要强烈感谢我的论文指导老师—何红丽老师,她对我进行了无私的指导和帮助,不厌其烦的帮助我进行论文的修整和改进。不论是面对面交流还是电话、网络交流,她都耐心的指导,帮助我解决一个又一个阻碍,真的很感谢何老师!

同时也要感谢这篇论文所涉及到的各位学者,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!

论文接近尾声的同时,也意味着四年的大学时光即将敲响结束的钟声。离别在即,站在人生的又一个转折点上,心中难免思绪万千,一种感恩之情油然而生。感谢生我养我含辛茹苦的父母,为我的学习创造了条件;感谢黄河科技学院的各位领导对我们教育与培养,特别感谢信息工程信的所有专业老师,没有你们的辛勤劳动,就没有我们今日的满载而归!

参考文献

[1] 张洪润,张亚凡. 单片机原理及应用[M].北京:清华大学出版社,2005

[2] 丁建军,陈定方,周国柱. 基于ATC51的智能电风扇控制系统[J].湖北:湖北工学院学报,2003,第2期.

[3] 李庆梅.基于ATC51单片机的智能电风扇调速器的设计[J].自动化技术与应用,2008,第1期.

[4] 路勇.电子电路实践及仿真(第一版)[M].北京:.清华大学出版社,2004.

[5] 萧宝瑾.protel 99 SE操作指导与电路设计实例(第一版)[M].山西:太原理工大学,2004 [6] 杨家成.单片机原理与应用及C51程序设计[M] .北京:清华大学出版社,2007 [7] 邓兴成.单片机原理与实践指导[M] .北京:机械工业出版社,2010.

[8] 周航慈.单片机应用程序设计技术[M] .北京:北京航空航天大学出版社,2002 [9] 谢宜仁.单片机实用技术问答[M] .北京:人民邮电出版社,2000.

[10] 刘书明.高斌.高性能模数与数模转换器件[M].西安:西安电子科技大学出版社,1999 [11]李广弟等.单片机基础[M].北京:北京航空航天出版社,2001. [12]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.

[13]陈海宴.51单片机原理及应用[M].北京:北京航空航天大学出版社,2010. [14]刘守义等.单片机技术基础[M].西安:西安电子科技大学出版社,2007. [15]钟富昭等.8051单片机典型模块设计与应用[M].北京:人民邮电出版社,2007. [16]李平等.单片机入门与开发[M].北京:机械工业出版社,2008.

[17]黄保瑞,贾之豪,邵婷婷.基于ATC51单片机的温度测控系统设计[J].现代电子技术,2011.

[18]吕胜杰,霍淑艳.基于DS1820的单总线多点测温技术[J].现代电子技术,2011. [19] Analog Device.Inc.Loop-Powered4—20mv DAC.Data Sheet[J].1996

[20] DALLAS.DS18B20 Programmable Resolution 1-Wire Digital Thermometer. DALLAS [J]. 2006

附录

#include

#include //包含_nop_()函数定义的头文件 #include #include #define uchar unsigned char #define uint unsigned int

uchar code xiaoshu[]={0xc0,0xc0,0xf9,0xf9,0xa4,0xb0,0xb0,0x99, 0x92,0x92,0x82,0xf8,0xf8,0x80,0x80,0x90};//小数部分编码

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管显示字符

//端口的定义

uchar time_DS18B20; //设置全局变量,专门用于严格延时 uchar TL; //储存暂存器的温度低位

sbit DQ=P2^5; sbit L1=P2^0; sbit L2=P2^1; sbit L3=P2^2; sbit L4=P2^3; sbit L5=P2^4;

uchar TH; //储存暂存器的温度高位

uint flag; uchar temp,temp1; uchar shi,ge,dot,xiao;

/*------------------------延时函数------------------------------*/ void delay(unsigned char ms) { }

/*------------------DS18B20的初始化------------------------*/ bit Init_DS18B20(void) {

bit flag_DS18B20; //储存DS18B20是否存在的标志,flag=0,表示存在;

unsigned char i; while(ms--) { }

for(i = 0; i< 250; i++) { }

_nop_(); _nop_(); _nop_(); _nop_();

flag=1,表示不存在

微秒

DQ = 0; //再将数据线从高拉低,要求保持480~960us

for(time_DS18B20=0;time_DS18B20<200;time_DS18B20++); //略微延时

DQ = 1; //先将数据线拉高

for(time_DS18B20=0;time_DS18B20<2;time_DS18B20++) ;//略微延时约6

约600微秒以向DS18B20发出一持续480~960us的低电平复位脉冲

DQ = 1; //释放数据线(将数据线拉高)

for(time_DS18B20=0;time_DS18B20<10;time_DS18B20++);//延时约30us

(释放总线后需等待15~60us让DS18B20输出存在脉冲)

flag_DS18B20=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time_DS18B20=0;time_DS18B20<200;time_DS18B20++); //延时足够

长时间,等待存在脉冲输出完毕

}

/*--------------------读一个字节的程序---------------------- */ unsigned char ReadOneChar( ) { 读时序

作准备

for(time_DS18B20=0;time_DS18B20<3;time_DS18B20++); //延时

dat>>=1;

_nop_(); //等待一个机器周期

DQ = 1; //将数据线\"人为\"拉高,为单片机检测DS18B20的输出电平

unsigned char i=0;

unsigned char dat; //储存读出的一个字节数据 for (i=0;i<8;i++) {

DQ =1; // 先将数据线拉高 _nop_(); //等待一个机器周期

DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动 return (flag_DS18B20); //返回检测成功标志

约6us,使主机在15us内采样

if(DQ==1)

dat|=0x80; //如果读到的数据是1,则将1存入dat

else

dat|=0x00;//如果读到的数据是0,则将0存入dat将单片机检测到的

电平信号DQ存入r[i]

for(time_DS18B20=0;time_DS18B20<8;time_DS18B20++);//延时3us,两

个读时序之间必须有大于1us的恢复期

}

/*--------------------写一个字节的程序---------------------- */ WriteOneChar(unsigned char dat) {

unsigned char i=0; for (i=0; i<8; i++)

{

DQ =1; // 先将数据线拉高 _nop_(); //等待一个机器周期

DQ=0; //将数据线从高拉低时即启动写时序

DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,并将其送

}

return(dat); //返回读出的十进制数据

到数据线上等待DS18B20采样

for(time_DS18B20=0;time_DS18B20<10;time_DS18B20++);//延时约

30us,DS18B20在拉低后的约15~60us期间从数据线上采样

DQ=1; //释放数据线

for(time_DS18B20=0;time_DS18B20<1;time_DS18B20++) ;//延时3us,

两个写时序间至少需要1us的恢复期

}

dat>>=1; //将dat中的各二进制位数据右移1位

for(time_DS18B20=0;time_DS18B20<4;time_DS18B20++) ; //稍作延时,给硬件

一点反应时间

}

/*---------------------读温度子函数----------------------*/ void ReadyReadTemp(void) {

Init_DS18B20(); //将DS18B20初始化

WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换

for(time_DS18B20=0;time_DS18B20<100;time_DS18B20++); //温度转

换需要一点时间

}

void dispose() {

if(TH>=8)

TL=ReadOneChar(); //先读的是温度值低位 TH=ReadOneChar(); //接着读的是温度值高位

Init_DS18B20(); //将DS18B20初始化 WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高

{

TH=~TH; //当温度为负数时求负数的补码 TL=~TL; TL=TL+1;

flag=1; //当温度为负值时标志置1

if(TL==0)

TH+=1;

}

//保存小数部分的值

//将高8位的低3位和低8位的高4

temp1=TL&0X0f;

temp=(((TH<<4)&0x70)|(TL>>4));

位合并构成温度的整数部分

shi=temp%100/10; //取出十位 ge=temp%10; //取出个位 xiao=temp1*10;

}

/*-----------------------温度、档位以及警告信息显示---------------------------*/ void dis() {

L1=1; L2=0; L3=0; L4=0; L5=0; P1=table[shi]; delay(3); P0=0XFF; L1=0; L2=1; L3=0; L4=0; L5=0;

dot=table[ge]&0x7f; P1=dot; //个位 delay(3); P0=0XFF; L1=0; L2=0; L3=1; L4=0; L5=0;

P1=xiaoshu[temp1]; //小数 delay(3);

//十位

P0=0XFF; L1=0; L2=0; L3=0; L4=1; L5=0; if(temp<30)

{ }

P1=0xc6;

//警告C

if(temp<35&&temp>29)

{ }

P1=0x86;

//警告E

if(temp>34)

{ }

P1=0x8e;

//警告F

delay(3); P0=0XFF; L1=0; L2=0; L3=0; L4=0; L5=1; if(temp<30)

{

P1=table[1]; //档位

}

}

if(temp<35&&temp>29)

{ }

P1=table[2]; //档位

if(temp>34)

{ }

P1=table[3]; //档位

delay(3); P0=0XFF;

uint mm=1; void main()

while(1)

{

ReadyReadTemp(); dispose(); dis();

{

//P2=0xff; //P1=0xb0;

//0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务