《毕业文章吉祥 毕业论文--修改完成稿.doc》由会员分享,可在线阅读,更多相关《毕业文章吉祥 毕业论文--修改完成稿.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、广州大学松田学院毕业论文(设计)题 目 USB可调速风扇控制系统设计 学生姓名 吉 祥 学 号 1107010109 专业班级 11电子信息工程 导师姓名 杜 和 军 二一五 年 六 月毕业论文原创性声明本人郑重声明:所呈交的毕业论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本毕业论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名:2015 年 月 日毕业论文版权使用授权书本毕业论文作者完全了解学校有关保障、使用毕业论文的规定,同意学校保留并向有关毕业论文管理部门或机构送交毕业论文的复印件和电子版,
2、允许毕业论文被查阅和借阅。本人授权优秀毕业论文评选机构将本毕业论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业论文。本毕业论文属于 1、保密 囗,在10年解密后适用本授权书2、不保密囗。(请在以上相应方框内打“”)作者签名:2015 年 月 日导师签名:2015 年 月 日33USB可调速风扇摘要: USB可调速风扇是基于单片机为核心的PWM占空比输出的直流调速系统的风扇,特点是选用单片机。整个模块的电源由USB接口提供,实现无级调速,主要通过键盘输入信号到单片机,在进行判断运算后,输出PWM信号调节直流电机转速,通过红外对管对黑白信号检测反馈电机运
3、转速度。其中,电机(电扇)的电源都是通过USB接口提供的。实验结果显示,理想的调速范围是0至100r/min。关键词:直流电机,直流调速,单片机,PWM,USBUSB speed-adjustable fanAbstract: Fans can speed USB microcontroller core based on the output of the PWM duty DC fan speed control system, it is characterized by the choice of microcontroller. Power to the entire module
4、interface is provided by USB, stepless, mainly through the keyboard input signal to the microcontroller, after making judgments operation, the output PWM signal conditioning DC motor speed, black and white infrared signal detection tube feed motor running speed. Among them, the motor (fan) power is
5、provided through the USB interface. Experimental results show that the ideal speed range from 0 to 100r / min.Keywords:DC motor,DC speed control,MCU,PWM,USB目 录1. 绪 论41.1. 选题的背景和意义41.1.1课题的相关背景4 1.1.2选题的目的和意义42.方案论证42.1温度传感器的选用42.2控制核心的选择52.3显示电路52.4调速方式62.5控制执行部件63.系统硬件设计和原理73.1系统总体设计73.2 STC89C52单片
6、机简介73.3本设计任务和主要内容73.4控制装置原理83.5温度检测和显示电路83.5.1 DS18B20的温度处理方法83.5.2 温度传感器和显示电路组成93.6 电机调速电路103.6.1 电机调速原理103.6.2 电机控制模块设计114.控制器软件设计124.1 主程序124.2 数字温度传感器模块和显示子模块134.3 电机调速与控制子模块155.电路调试175.1调试中出现问题175.2调试的结果17结 束 语18参考文献18致谢19附录1 源程序代码:21附录2:元器件清单31附录3:电路图32附录4:实物图片331. 绪 论1.1. 选题的背景和意义1.1.1课题的相关背景
7、 传统电风扇大部分是用机械方式进行控制,并且存在很多缺点,如风扇运行时噪音很大,不能对风速进行精细化调整等。USB可调速风扇,指只需插入电脑的USB端口即能实现风扇转动,并能智能调速的风扇,其原理是使用电脑USB端口供电并通过单片机调控风扇转动,实现其智能调速。其风扇的扇叶是采用软质材料制作的,即使旋转速率很快,但其噪音很小,且绝对安全,方便携带。1.1.2选题的目的和意义在当今社会,电脑已成为各行各业工作的必需品,在带给我们无可比拟的工作效率的同时,我们必须正视其工作产生的温度问题,现今CPU的工作温度是逐渐升高,为了避免其温度过高而影响工作。因此,必须降低CPU的工作温度显得越来越重要。本
8、系统设计实现的是一个可智能调速的USB接口风扇,重点是解决风扇随着温度的变化而调整转速的问题,现在市场中的电脑散热器大部分还是恒速的,这就限制了随着电脑工作CPU温度的变化来改变风速。因此设计一个可调速USB接口风扇来解决CPU工作温度问题已经迫在眉睫。2.方案论证2.1温度传感器的选用温度传感器可由以下几种方案可供选择:方案一:感测温度的核心元件采用热电偶,并结合桥式电路,通过放大电路及AD转换电路,把温度变化信号交给单片机处理。方案二:温度感测的核心元件选用热敏电阻,通过转换器可以将模拟信号转化为单片机可以处理的数字信号。方案三:感测温度的核心元件选择数字温度传感器DS18B20,直接输出
9、供单片机处理的数字信号。对于方案一,热电偶和桥式测量电路的测温范围非常宽,并可以提高温度的敏感性和器件的非线性误差。但本系统要求的温度敏感性标准很高,并存在电路复杂的问题,故该方案不可行。对于方案二,热敏电阻对温度的细小变化不敏感,且R-T关系的非线性,电阻对温度的变化存在较大误差,因此该方案不适合本系统。对于方案三,数字式集成温度传感器不仅可以提高温度的分辨力极高,而且可以大大降低电路的误差因素,所以该方案可行。2.2控制核心的选择方案一:控制部件选择电压比较电路。通过比较风速,切换相应档位。方案二:控制核心选择单片机。温度用软件来进行判断后,并输出调控信号。对于方案一,以电压比较电路作为控
10、制部件,电路简单、易于实现,但不能自由设置上下限温度,无法满足客观要求,故不在本系统中采用。对于方案二,采用单片机能精确检测微小的环境变化变化,并可以自由设置上下限温度值,满足市场需求。故本系统采用方案二。2.3显示电路方案一:采用五位共阳数码管显示温度。方案二:采用液晶显示屏LCD显示温度。对于方案一,该方案成本低,功耗低,编写显示驱动程序也较为简单,可以清晰醒目的显示温度。由于五个LED是逐个点亮的,因此会有闪烁,但可以通过增大扫描频率来消除闪烁感。对于方案二,液晶体显示屏显示更加逼真形象。但是液晶显示屏价格太高,编写程序困难,故本系统采用方案一。2.4调速方式方案一:采用变压器调节方式。
11、方案二:采用晶闸管构成无级调速电路。对于方案一,采用变压器调节风速,有风速级别限制,不能适应要求。对于方案二,采用电位器控制导通角大小,可实现从限定值之间任意风速的自由调节。故本系统采用方案二。2.5控制执行部件方案一:以数模转换芯片AD0832为控制部件,因为晶闸管的导通角由AD0832控制,因而可以实现无级风力调节。方案二:以继电器为控制部件,继电器与电阻的控制晶闸管的导通角是否连接到电路由单片机控制。对于方案一,该方案的优点在于即使风扇在温控状态也能实现无级调速,缺点是芯片价格昂贵。对于方案二,虽然存在在温控状态下不能实现无级调速的缺点,但继电器价格低廉,也能实现准确控制,且在温控状态时
12、并不特别需要无级调速的功能,综合考虑采用方案二。3.系统硬件设计和原理3.1系统总体设计键盘输入温度显示单片机系统电机控制模块数字温度传感模块图1 系统总体结构框图3.2 STC89C52单片机简介单片机STC89C52是ATMEL公司生产的,具有高性能、低电压的特点。STC89C52单片机可灵活应用于各种控制领域。3.3本设计任务和主要内容本文以STC89C52单片机为核心,设计出一个可以使风扇随着温度变化而自动调节风速的智能温控系统。本设计主要内容如下:(1)风速设为2个档位,通过电脑设定。(2)每当温度低于下限值时,则电风扇风速关闭。(3)每当温度在下限和上限之间时,则电风扇转速缓慢。(
13、4)每当温度高于上限值时,则电风扇风速全速运转。3.4控制装置原理本文介绍的USB电风扇是基于STC89C52单片机的设计,该设计利用单片机精细控制、温度数据传感、无级调速等技术,从而实现根据周围环境温度变化自动调节风速。3.5温度检测和显示电路采用DS18B20数字温度传感器,它的强大之处在于可以直接将模拟温度信号转换成数字信号,电路复杂程度大大降低的同时,电路运行质量得到了极大的提高。3.5.1 DS18B20的温度处理方法DS18B20能够直接读出被测温度,一根口线就可以完成读写信息的工作,总线可以向所挂接的DS18B20供电,不需要其他电源,同时他的温度测量精度也很高。DS18B20简
14、介:(1) 在使用中不需要任何外围元件。(2) 可用数据线供电,电压范围:+3.0+5.5 V。(3) 测温范围:-55 +125 。固有测温分辨率为0.5 。(4) 用户可以自行设置关于非易失性的上下限警报值。(5) 支持多点组网功能,实现温度的多点测量。(6) 良好的负压特性,当反接时,不会因发热而烧毁温度计。单线(1wire)技术:该技术虽然采用单根信号线,但可同时双向传输时钟和数据。对于单主机系统,主机能够控制一个或多个从设备。单线1wire协议包括复位脉冲、写0、写1、读0、读1、应答脉冲6种信号类型,这些信号中复位脉冲、写0、写1、读0、读1都是主机的,从机只发起应答脉冲,所有数据
15、字节及指令都是低位在前。测量得到的温度值由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 0008H0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0110 1
16、110 FF5EH-25.625 1111 1111 0110 1111 FF6FH-55 1111 1100 1001 0000 FC90H表1 部分温度值与DS18B20输出的数字量对照表3.5.2 温度传感器和显示电路组成本模块由DS18B20、STC89C52、温度显示分别作为温度传感器、处理器、温度控制输出单元组成。整个系统力求结构简单,功能完善。电路图如图2所示。系统工作原理如下:采集现场温度的工作DS18B20数字温度传感器完成,STC89C52单片机P2.4口接收测量到的数据,将数据转换显示为温度值,然后与下限和上限设定的温度值作比较,如果低于设定下限或高于设定上限,则自动调节
17、点击转速。图2 DS18B20温度计原理图3.6 电机调速电路控制中相当重要的一点就是电机调速。3.6.1 电机调速原理双向可控硅的导通条件如下:(1)阳-阴极间加正向电压;(2)控制极-阴极间加合适的正向触发电压;(3)阳极电流IA 必须大于可控硅的最小维持电流IH。电风扇的风速从低到高设为、档,每档都有一个风速限定值。在额定功率、额定电压下,以最大转速运转时,要求风叶最大圆周上的线速度不大于2150m/min。且线速度可由下列公式求得V=Dn103 (1)式(1)中, D为扇中的最大顶端扫出圆的直径(mm),n为电风扇的最高转速(r/min) ,V为扇叶最大圆周上的线速度(m/min)。代
18、入数据求得n51555r/min,取n5=1250 r/min.又因为:取n1=875r/min。则可得出五个档位的转速值:n1=875r/min,n2=980r/min,n3=1063r/min,n4=1150 r/min,n5=1250r/min又由于负载上电压的有效值u0=u1 (2)式(2)中,u1为输入电压的有效值,为控制角。解得:当5=0时,t=0ms;当4=23.5时,t=1.70ms;当3=46.5时,t=2.58ms;当2=61.5时,t=3.43ms;当1=76.5时,t=4.30ms。上述计算出的是控制角和触发时间,当检测到过零点时,按照所求得的触发时间延时发脉冲,便可实
19、现预期转速。3.6.2 电机控制模块设计本模块电路中采用的是过零双向可控硅型光耦MOC3041M ,具有过零触发、过零检测的功能,并且使输出通道隔离2驱动电路的结构得以简化。所设计的可控硅触发电路原理图见图3。其中RL即为电机负载,其工作原理是:单片机响应用户的参数设置,在I/ O输出高电平, 经反向器处理后,低电平被输出,导通光电耦合器,同时双向可控硅被触发,导通工作电路。给定时间内,负载得到的功率为: (3)式中: P 为负载得到的功率( kW); n 为给定时间内可控硅导通的正弦波个数; N 为给定时间内交流正弦波的总个数; U为可控硅在一个电源周期全导通时所对应的电压有效值(V); I
20、 为可控硅在一个电源周期全导通时所对应的电流有效值(A)。由式(3) 可知,当U,I,N 为定值时,控制功率的输出只需改变n 值的大小即可,电机转速从而被调节。图3 电机控制原理图4.控制器软件设计本系统的运行程序是用C语言编写的,运用了面向对象的方法设计,由主程序和键盘扫描、显示、电机控制以及红外线接收等程序模块组成整体程序。4.1 主程序在主程序开始运行后,各模块缓冲区的标志被反复检测相,如果缓冲器被设置,指示相应的数据进行处理,然后主程序调用相应的处理模块。如图7所示。系统初始化温度变化?温度控制子模块键盘输入?键盘处理子模块开始红外信号?红外接收处理模块YNYNYN显示子模块图7 主程
21、序模块流程图4.2 数字温度传感器模块和显示子模块开始DS18B20初始化启动DS18B20测温内部判断调用读子程序显示子程序结束调用相应的控制程序调用相应的键值处理程序调用写子程序异常正常如图8所示,由主机控制DS18B20数字温度传感器进行温度信号转换成数字信号时必须经过以下三个过程:DS18B20初始化、ROM操作、存储器操作。单片机所用的系统频率为12MHz。图8 数字温度传感器模块程序流程图DS18B20芯片功能命令表如下:命令 说明 协议READ ROM 读取激光ROM64位 33HMATCH ROM 匹配ROM 55H SKIP ROM 跳过ROM CCHSEARCH ROM 搜
22、索ROM F0HALARM SEARCH 告警搜索 ECHWRITE SCRATCHPAD 把字节写入暂存器的地址2和3 4EHREAD SCRATCHPAD 读取暂存器和CRC字节 BEHCOPY SCRATCHPAD 把暂存器内容拷贝到非易失性存储器中 48HCONVERT T 开始温度转换 44HRECALL E2 把非易失性存储器中的值召回暂存器 B8HREAD POWER SUPPLY 读电源供电方式:0为寄生电源,1为外电源 B4H表2 DS18B20功能命令表4.3 电机调速与控制子模块本模块使用可控硅过零触发,由单片机可控硅断控制,通过改变打开和关闭交换完整的全波信号来调整负载
23、功率,从而实现调速的目的。有以下两种方法:中断服务程序和回路控制执行程序。EX0中断温度大于等于下限值并且小于上限值控制可控硅截止中断返回设置T0参数启动定时T0中断控制可控硅导通停止T0定时中断返回图9 电机控制模块中断响应流程图5.电路调试5.1调试中出现问题测试前,首先观察整个电路是否虚焊、断路等问题,然后使用万用表测量电路的参数,最后再测试焊接时是否有短路、断路等情况,待确认电路板没问题后再接通电源。通电后要观察电路是否有异常现象,若有的话,马上断掉电源,解决问题后再通电。编写数码管显示程序时,有时会出现乱码,经检查后,发现是键盘输入时有抖动现象,增加了键盘消抖程序后,数码管显示基本正
24、常。对于数码管片选段选部分要注意使用单片机的I/O,使用同一端口时注意编程混乱问题。5.2调试的结果将做好电路板检测设计方案及原理,通电后温度传感器将当前的温度信号传送到单片机,由单片机控制风扇转动速率。具体运行过程:系统上电后,启动单片机,首先开始初始化程序,各个寄存器的值被赋初值。其次运行主程序。未按下键时,单片机P1口输出高电平。当按下键时,INTO口产生一个中断,CPU将跳转到中断程序入口地址,开始执行中断程序,在中断程序中将对按键进行扫描获取键值,然后根据键值向P1口输出不同的数值,实现对风扇的控制。结 束 语本系统核心是STC89C52单片机,其发挥的主要作用是采集、处理、显示外界
25、环境的温度信号;绘制PCB电路印刷板图和电路原理图由Altium Designer 6软件实现,仿真测试由Protues软件完成,程序利用MCS-51 C语言编制。运行程序该系统的主要特点是:(1)适用性强,用户只需要设置接口参数,并开始系统运行即可满足不同用户的最适宜温度的要求,以达到实时监测最适温度的功能,改善用户体验。(2)可扩展性强。可以根据需要编写新的功能加入产品,添加其他使用功能。本系统是以STC89C52单片机为基础设计的智能风扇调速系统,具有成本低,性能好,稳定性高,节省能源等优势。本设计在模拟检测中运行较好,有待改进的地方是增加档位,并且把档位之间的临界温度处理的更好一些。参
26、考文献:Error! Reference source not found.李广弟.单片机基础.北京:北京航空航天出版社,2001Error! Reference source not found.胡汉才.单片机原理及接口技术.北京:清华大学出版社,2003Error! Reference source not found.马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,2003Error! Reference source not found.李东升.Protel99SE电路设计教程.北京:电子工业出版社,2007Error! Reference source not fo
27、und.刘川来,胡乃平.计算机控制技术.北京:机械工业出版社,2011Error! Reference source not found.李平.单片机入门与开发.北京:机械工业出版社,2008Error! Reference source not found.周航慈.单片机应用程序设计技术.北京:北京航空航天大学出版社,1991Error! Reference source not found.阎石.数字电子技术基础.北京:高等教育出版社,2006Error! Reference source not found.童诗白,华成英.模拟电子技术基础.北京:高等教育出版社,2006Error! R
28、eference source not found.张立强.电路原理图与PCB板设计Protel99 DXP.北京:科技出版社,2008Error! Reference source not found.Behzad Razavi.Design of Analog CMOS Integrated Circuits,2001Error! Reference source not found.Todd Charles Weigandt.Low-phase-noise,low-timing-jitter design techniques for delay cell based VCOS and
29、frequency synthesizers,1998致谢首先,感谢广州大学松田学院电气与汽车工程系的老师对我四年以来的专业技能的培养,通过这次毕业设计,使我深刻领略到单片机技术领域的广泛应用,这不仅巩固我单片机的知识,更多的是让我学到很多知识,受益终身。其次,感谢我的指导老师杜和军老师,从毕业设计选题、开题报告、电路设计到最后论文定稿及重复修改等过程,正是有你的悉心指导和精心点拨,我才能顺利完成我的毕业设计。最后,感谢我的同学们,给予我莫大的帮助和关怀,有你们的支持和鼓励,我才有勇气去克服一个个困难和疑惑,谢谢你们!附录1 源程序代码: #include /调用单片机头文件#define u
30、char unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include eeprom52.h/数码管段选定义 0 1 2 3 4 56 7 8 9uchar code smg_du=0x28,0xee,0x42,0x52,0xe5,0xa8,0x41,0xe7,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff; /断码/数码管位选定义uchar code smg_we=0xef,0xdf,0xbf,0x7f;uchar dis_smg8 =
31、 0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8;uchar smg_i = 3; /显示数码管的个位数sbit dq = P24;/18b20 IO口的定义bit flag_lj_en; /按键连加使能bit flag_lj_3_en; /按键连3次连加后使能 加的数就越大了 uchar key_time,key_value; /用做连加的中间变量bit key_500ms ;sbit pwm = P23; uchar f_pwm_l ; /越小越暗uint temperature ; /bit flag_300ms ;uchar menu_1; /菜单设计的
32、变量uint t_high = 300,t_low = 100; /温度上下限报警值 /*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j= smg_i)i = 0;P1 = 0xff; /消隐 P3 = smg_wei; /位选P1 = dis_smgi; /段选 /*把数据保存到单片机内部eepom中*/void write_eeprom()SectorErase(0x2000);byte_write(0x2000, t_high % 256);byte_write(0x2001, t_high / 256);b
33、yte_write(0x2002, t_low % 256);byte_write(0x2003, t_low / 256);byte_write(0x2055, a_a);/*把数据从单片机内部eepom中读出来*/void read_eeprom()t_high = byte_read(0x2001);t_high = 8;t_high |= byte_read(0x2000);t_low = byte_read(0x2003);t_low = 8;t_low |= byte_read(0x2002);a_a = byte_read(0x2055);/*开机初始化保存的数据*/void i
34、nit_eeprom()read_eeprom();/先读if(a_a != 22)/新的单片机初始单片机内问eepromt_high = 320;t_low = 280;a_a = 22;write_eeprom(); /保存数据/*18b20初始化函数*/void init_18b20()bit q;dq = 1;/把总线拿高delay_uint(1); /15usdq = 0;/给复位脉冲delay_uint(80);/750usdq = 1;/把总线拿高 等待delay_uint(10);/110usq = dq;/读取18b20初始化信号delay_uint(20);/200usdq
35、 = 1;/把总线拿高 释放总线/*写18b20内的数据*/void write_18b20(uchar dat)uchar i;for(i=0;i= 1;/*读取18b20内的数据*/uchar read_18b20()uchar i,value;for(i=0;i= 1; /读数据是低位开始dq = 1; /释放总线if(dq = 1) /开始读写数据 value |= 0x80;delay_uint(5); /60us读一个时间隙最少要保持60us的时间return value; /返回数据/*读取温度的值 读出来的是小数*/uint read_temp()uint value;ucha
36、r low; /在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); /初始化18b20EA = 0;write_18b20(0xcc); /跳过64位ROMwrite_18b20(0x44); /启动一次温度转换命令EA = 1;delay_uint(50); /500usinit_18b20(); /初始化18b20EA = 0;write_18b20(0xcc); /跳过64位ROMwrite_18b20(0xbe); /发出读取暂存器命令low = read_18b20(); /读温度低字节value = read_18b20(
37、); /读温度高字节EA = 1;value = 8; /把温度的高位左移8位value |= low; /把读出的温度低位放到value的低八位中value *= 0.625; /转换到温度值 小数return value; /返回读出的温度 带小数/*定时器0初始化程序*/void time_init() EA = 1; /开总中断TMOD = 0X11; /定时器0、定时器1工作方式1ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时ET1 = 1; /开定时器0中断 TR1 = 0; /允许定时器0定时/*独立按键程序*/uchar key_can; /按键值void key() /独立按键程序static uchar key_new;key_can = 20; /按键值还原P2 |= 0x07;if(P2 & 0x07) != 0x07)/按键按下if(key_500ms = 1)/连加key_500ms = 0;key_new = 1;delay_1ms(1); /按键消抖动if(P2 & 0x07) != 0x07) & (key_new = 1)/确认是按键按下key_new = 0;switch(P2 & 0x07)