智能电脑散热系统.docx
《智能电脑散热系统.docx》由会员分享,可在线阅读,更多相关《智能电脑散热系统.docx(32页珍藏版)》请在冰豆网上搜索。
智能电脑散热系统
1前言
现代生活,电脑已经成为人们生活中不可缺少的一部分。
无论笔记本电脑还是台式电脑,人们在选择的时候都会考虑到它的散热性能,一个好的散热系统能够保证电脑的高速正常运行,给CPU足够的空间进行高负载的活动,才能享受计算机技术给我们生活带来的无穷魅力,可见一个好的散热系统,对电脑而言是多么的重要。
但是,计算机部件中大量使用的是集成电路,而众所周知,高温是集成电路的大敌。
高温不但会导致系统运行不稳,使用寿命缩短,甚至有可能使某些部件烧毁。
导致高温的热量不是来自计算机外,而是计算机内部,或者说是集成电路内部。
散热器的作用就是将这些热量吸收,然后发散到机箱内或者机箱外,保证计算机部件的温度正常。
多数散热器通过和发热部件表面接触,吸收热量,再通过各种方法将热量传递到远处,比如机箱内的空气中,然后机箱将这些热空气传到机箱外,完成计算机的散热。
说到计算机的散热器,我们最常接触的就是CPU的散热器。
散热器通常分为主动散热和被动散热两种;前者以风冷散热器较为常见,而后者多为散热片。
细分散热方式,又可分为风冷,液冷,半导体制冷,压缩机制冷等等。
其中,液冷·半导体制冷及压缩机制冷要么技术不成熟,要求高,能耗大;要么体积受限,价格昂贵。
风冷散热器作为区别于水冷散热器的一个主流产品类别,不断的引领着整个IT散热市场的前进和创新因此,风冷是最常见,性价比最高的散热方式,我们设计的“智能电脑散热系统”就是利用温度传感器实现对外界温度的感知,再利用单片机编程控制风扇的转速,从而实现温度的自动调节,以达到散热目的。
正是因为融合了温度传感器技术和单片机技术,使得本作品兼智能化和自动化于一体。
而温控调速技术的优点在于其能有效地提高散热器的的工作效率,节约能源,性价比高,适用范围广泛。
且本设计比较人性化,由于不同的电脑的散热能力不同,对于散热能力很差的电脑而言,只凭借温控可能无法实现正常降温,就需要人为控制来调节适合电脑的散热,因此我们增加了手控模式。
本设计中增加了实时温度显示,让我们随时看着CPU的具体温度,从而消除忧虑,并且,在这基础之上,还增加了高温报警功能,避免你的电脑因为温度过高烧毁一些部件甚至是CPU。
因此,我们的设计更加人性化,更加舒适。
2总体方案设计
2.1设计内容
根据对环境温度的测量控制小风扇的转速,并用数码管显示当前温度数值,温度升高风扇转速提高,温度降低风扇转速下降。
同时配备按键实现控制风扇的启、停,温控模式、手控模式、手控档位加,手控档位减,另外还要实现温度过高自动报警,以及按键按下时发声,提醒操作成功。
2.2方案比较
方案一:
选用热敏电阻作为感测温度的核心元件,通过运算放大器放大由于温度变化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用AD转换芯片ADC0809将模拟信号转化为数字信号输入STC89C52RC单片机处理。
采用液晶显示屏LCD显示温度,电机采用数模转换芯片AD0832控制,由单片机根据当前温度值送出相应数字量到AD0832,由AD0832产生模拟信号产生PWM波,控制直流电机转速。
如图2.1
图2.1系统总体框图
方案二:
采用数字式集成温度传感器DS18B20作为感测温度的核心元件,直接输出数字温度信号输入STC89C52RC单片机处理,采用四位共阳数码管显示温度,采用动态扫描显示方式,并且采用对单片机编程输出PWM调制波形经ULN2003驱动后直接控制电机转速。
如图2.2
图2.2系统总体框图
2.3方案论证
方案一:
此方案能够实现设计的功能,采用热敏电阻有价格便宜、元件易购的优点,但热敏电阻对温度的细微变化不敏感,在信号采集、放大、转换过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其本身电阻对温度的变化存在较大误差,虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温度环境温度变化中难以检测到小的温度变化。
液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点。
但是液晶显示模块价格昂贵,驱动程序复杂。
虽然用DA转化芯片产生PWM调制波能够实现,但是D/A转换芯片价格较高,与其温控状态下单片机直接编程相比性价比不高。
方案二:
本方案也能正常实现设计的功能,并且由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述方案的原理有着本质的不同,使得其温度分辨力极高。
温度值在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术,与单片机的接口变的非常简洁,抗干扰能力强。
LED数码管显示,成本低廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。
2.4方案选择
通过上面两种方案的论证比较,中和性价比和复杂度,我们选择第二种方案。
3.单元模块电路简介与设计
3.1本系统部分器件介绍
3.1.1DS18B20温度传感器简介
DS18B20单线数字温度传感器是Dallas半导体公司开发的世界上第一片支持“一线总线”接口的温度传感器。
它具有3引脚TO-92小体积封装形式。
温度测量范围为-55℃——+125℃,可编程为9位——12位A/D转换精度,测温分辨率可达0.0625℃。
被测温度用符号扩展的16位数字量方式串行输出。
工作电压支持3V——5.5V的电压范围,既可在远端引入,也可采用寄生电源方式产生。
DS18B20还支持“一线总线”接口,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
它还有存储用户定义报警温度等功能。
DS18B20内部结构及管脚图:
DS18B20内部结构如图3.1所示,主要由4部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
其管脚排列如图3.2所示,DQ为数字信号端,GND为电源地,VDD为电源输入端。
图3.1DS18B20内部结构
图3.2DS18B20外形及管脚
3.1.2STC89C52RC单片机简介
STC89C52RC是一种带4K字节闪存可编程可擦除只读存储器(FPEROM)256B片内RAM的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC的STC89C52RC是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
STC89C52RC单片机管脚如图3.3所示:
图3.3STC89C52RC单片机管脚
各管脚功能:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地接
收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口。
3.1.3ULN2003芯片简介
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
该电路的特点如下:
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统其管脚图如图3.4
图3.4ULN2003芯片引脚图
3.2单元模块电路设计
3.2.1电源电路
电源电路主要是为系统提供电源,在本设计中,为了使电路简单,我们直接用USB接口提供5V直流电源为电路供电。
下图中的第2个图是电源指示灯电路,指示是否给系统加电,第3个图是滤波电路,第4个图是为其余芯片供电电路。
电路如图3.5。
图3.5电源电路图
3.2.2单片机主芯片电路
芯片STC89C52RC是带2K字节快闪存储器的8位单片机。
P0-P3口都是并行I/O口,都可用于数据的输入和输出。
其中P1的P1.4,P1.5,P1.6,P1.7口用于LED显示的位选控制;P1.2高温报警;P1.3用于控制直流电机的转速。
P2口用于LED数码管的段选信号输出,P3.4用于DS18B20温度检测值的输入,而P0.0-P0.4用于按键的输入检测,同时P0口加上拉电阻。
电路如图3.6。
图3.6单片机芯片STC89C52的电路图
3.2.3时钟电路
单片机的晶振电路,即时钟电路。
单片机的工作流程,就是在系统时钟的作用下,一条一条地执行存储器中的程序。
单片机的时钟电路由外接的一只晶振和两只起振电容,以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统功耗也会相应增加,稳定性也会下降。
单片机系统常用的晶振频率有6MHz、11.0592MHz、12MHz、本系统采用11.0592MHz晶振,电容选30pF,电路如图3.7。
图3.7晶振电路图
3.2.4复位电路
系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复位时间。
一个稳定的单片机系统必须设计复位电路。
当程序跑飞或死机时,也需要进行系统复位。
复位电路有很多种,有上电复位,手动复位等,电路如图3.8。
图3.8复位电路图
3.2.5显示电路
LED采用共阳极数码管,利用单片机的I/O口驱动LED数码管的亮灭。
设计中为了简化电路,直接用P1.5-P1.7四位来作为数码管的片选信号,P2口来作为其段码控制LED数值显示。
其电路如图3.9
图3.9显示模块电路图
3.2.6温度检测电路
设计中利用DS18B20作为温度检测,并且它能自动将温度信号转换成数字信号输入给单片机的P3.4口,检测灵敏,速度较快。
模块电路如图3.10
图3.10温度检测电路
3.2.7按键控制电路
设计中利用五个按键控制,系统的启、停,模式选择,以及手控模式下的风扇转速增减(默认为温控模式),分别通过单片机I/O口的P0.0-P0.4输入,并且P0口加上拉电阻。
电路如图3.11
图3.11按键控制电路
3.2.8报警及电机电路
高温报警和按键发声采用同一电路,通过单片机的P1.2输出信号经ULN2003后控制此部分,而电机的控制则由单片机P1.3输出调制后的波形经ULN2003后驱动电机。
电路如图3.12
图3.12报警及电机电路
3.3模块联接总电路
根据以上各个部分的介绍,最后联接成整体,实现从DS18B20中采集温度,将温度值一数字信号送入单片机中经过处理后控制显示以及风扇转速,随着温度的变化,显示和电机的转速也会发生变化,并且进入手控模式后,通过按键也可以人为控制转速,其联接总图如3.13:
图3.13系统联接总电路图
4.软件设计
4.1程序设计原理及所用工具
本设计采用刚刚学过的51单片机汇编语言进行编程,采用模块化思想,即将其分为很多个模块,有DS18B20部分,显示部分,PWM调制部分,温度比较及高温报警部分,按键控制部分,编程所用的软件是Keil2,下载程序用到了STC_ISP_V481软件,程序调试时仿真用到Proteus7.0。
4.2主程序设计
主程序中主要完成将各模块程序联接起来,并且不断循环进行,达到连续工作,并且会进行状态查询,当开启后才能执行程序,否则不断待机查询,最后进行是否关闭查询,若没有关闭,正常执行,若关闭则进入待机查询开启键状态。
流程框图见图4.1
4.3各模块子程序设计
4.3.1DS18B20复位与检测子程序
在本子程序中首先进行DS18B20的复位并查询是否准备好,然后写入控制,读出温度,其代码如下:
RESET:
SETBDATA_LINE
NOP
CLRDATA_LINE
MOVR0,#64H
MOVR1,#03H
RESET1:
DJNZR0,$
MOVR0,#64H
DJNZR1,RESET1
SETBDATA_LINE
NOP
MOVR0,#25H
RESET2:
JNBDATA_LINE,RESET3
DJNZR0,RESET2
JMPRESET4
RESET3:
SETBFLAG1
JMPRESET5
RESET4:
CLRFLAG1
JMPRESET6
RESET5:
MOVR0,#064H
DJNZR0,$
RESET6:
SETBDATA_LINE
RET
本代码的过程是,首先由单片机向其输入大约600us的低电平信号,为了让DS18B20复位,然后将总线拉高就是等待它的反应,若存在并且准备就绪就会给单片机回复一个高电平,当我们查询到高电平后,就将标志位置高,表明其存在并准备好,查询不到高电平,则代表DS18B20存在故障,则标志位清零。
通过这个子程序,可以准确的判断DS18B20的状态,有利于系统的正常运行。
而从DS18B20中读取温度的程序如下:
READ:
MOVR4,#4;将温度高位和低位从DS18B20中读出
MOVR1,#30H;存入30H、31H、32H、33H
RE00:
MOVR2,#8
RE01:
CLRC
SETBDATA_LINE
NOP
NOP
CLRDATA_LINE;读前总线保持为低
NOP
NOP
NOP
SETBDATA_LINE;开始读总线释放
MOVR3,#09;延时18微妙
DJNZR3,$
MOVC,DATA_LINE;从DS18B20总线读得一个BIT
MOVR3,#23
DJNZR3,$;等待46微妙
RRCA;把读得的位值环移给A
DJNZR2,RE01;读下一个BIT
MOV@R1,A
INCR1
DJNZR4,RE00
RET
通过这个程序我们可以看出,在DS18B20准备就绪并且应答单片机后,就可以进行读取温度的操作。
将读取的数据放入单片机的数据储存器的4个储存单元。
从程序中可以看出,DS18B20是采用串行通信方式,只能进行位操作,通过将读取来的信息在累加器中进行带标志位移位操作,可以将串行变并行,完成读取后的温度信息是以字节的形式存在,方便后续的调用和处理。
4.3.2显示子程序
将温度读出转换后的温度数据分别存在70H-73H中,在本子程序中将其读出从P2口输出控制数码管显示。
将读取来的温度数据进行BCD码转换的代码如下:
CONVTEMP:
MOVA,TEMPH;判温度是否零下
ANLA,#80H
JZTEMPC1;温度零上转
CLRC
MOVA,TEMPL;二进制数求补(双字节)
CPLA;取反加1
ADDA,#01H
MOVTEMPL,A
MOVA,TEMPH;-
CPLA
ADDCA,#00H
MOVTEMPH,A;TEMPHCHI=符号位
MOVTEMPHC,#0BH
SJMPTEMPC11
TEMPC1:
MOVTEMPHC,#0AH;
TEMPC11:
MOVA,TEMPHC
SWAPA
MOVTEMPHC,A
MOVA,TEMPL
ANLA,#0FH;乘0.0625
MOVDPTR,#TEMPDOTTAB
MOVCA,@A+DPTR
MOVTEMPLC,A;TEMPLCLOW=小数部分BCD
MOVA,TEMPL;整数部分
ANLA,#0F0H
SWAPA
MOVTEMPL,A
MOVA,TEMPH
ANLA,#0FH
SWAPA
ORLA,TEMPL
MOVTEMP_ZH,A;组合后的值存入TEMP_ZH
LCALLHEX2BCD1
MOVTEMPL,A
ANLA,#0F0H
SWAPA
ORLA,TEMPHC;TEMPHCLOW=十位数BCD
MOVTEMPHC,A
MOVA,TEMPL
ANLA,#0FH
SWAPA;TEMPLCHI=个位数BCD
ORLA,TEMPLC
MOVTEMPLC,A
MOVA,R7
JZTEMPC12
ANLA,#0FH
SWAPA
MOVR7,A
MOVA,TEMPHC;TEMPHCHI=百位数BCD
ANLA,#0FH
ORLA,R7
MOVTEMPHC,A
TEMPC12:
RET
TEMPDOTTAB:
DB00H,01H,02H,03H,04H,05H,06H
DB07H,08H,09H
HEX2BCD1:
MOVB,#064H
DIVAB
MOVR7,A
MOVA,#0AH
XCHA,B
DIVAB
SWAPA
ORLA,B
RET
BCD码的转换是温度数据进入单片机后最重要的过程,之后的显示和PWM调制过程都要用到转换后的数据,如果本部分代码有误,整个系统都将无法运行。
从程序中可以看出,首先是判断温度是否零下,因为涉及到符号位的取值,如果没有这一步在后面的单字节的BCD码转换过程中就不能读取出符号信息。
当把温度数据转换成BCD码后,需提取出各位的值,将一个两位或者三位数分解成由百位,十位,各位构成的好处是有利于后面动态扫描显示的段码值查表。
显示部分代码如下:
DISP1:
MOVR1,#70H;指向显示数据首址
MOVR5,#80H;扫描控制字初值
PLAY:
MOVP2,#0FFH
MOVA,R5;扫描字放入A
MOVP1,A
MOVA,@R1;取显示数据到A
MOVDPTR,#TAB;取段码表地址
MOVCA,@A+DPTR;查显示数据对应段码
MOVP2,A;段码放入P2口
MOVA,R5
JNBACC.6,LOOP5;小数点处理
CLRP2.7
LOOP5:
LCALLDL_MS;显示2MS
INCR1;指向下一个地址
MOVA,R5;放回R5内
JBACC.3,ENDOUT;ACC.3=1时一次显示结束
RRA;A中数据循环右移
MOVR5,A;放入R5中
AJMPPLAY;跳回PLAY循环
ENDOUT:
MOVP1,#00H;一次显示结束,P1口复位
MOVP2,#0FFH;P2口复位
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H
DL_MS:
MOVR6,#25
DL1:
MOVR7,#100
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
通过转换后的数据存在70H-73H中,将其读出再通过查表,获得段码值,然后通过单片机的P2口送出控制LED显示,而位选信号通过P1口送出,本程序中为了简便,使用了移位循环显示,并且带有小数点的显示。
4.3.4按键扫描子程序
本子程序是进行控制模式选择按键查询,并且进入手控模式时的档位调节查询,并且伴有按键发声,按键扫描子程序代码:
KEYSCAN1:
JBK1,KEYSCAN1
LCALLBEEP_BL0
RET
KEYSCAN2:
JBK4,KEYSCAN2_OUT
CPLFLAG2
LCALLBEEP_BL
KEYSCAN2_OUT:
RET
KEYSCAN4:
JBFLAG2,KEY1
AJMPKEYSCAN4_OUT
KEY1:
JBK3,KEY2
LCALLBEEP_BL
MOVA,ZS_MR
ADDA,#5
MOVZS_MR,A
AJMPKEYSCAN4_OUT
KEY2:
JBK5,KEYSCAN4_OUT
LCALLBEEP_BL
MOVA,ZS_MR
SUBBA,#5
MOVZS_MR,A
AJMPKEYSCAN4_OUT
KEYSCAN4_OUT:
RET
KEYSCAN3:
JBK2,KEYSCAN3_OUT
LCALLBEEP_BL0
LCALLKEYSCAN1
KEYSCAN3_OUT:
RET
本代码中包含启动关闭按键,当供电后,单片机进入查询待机状态,只有在K1键按下后,才能够执行主程序,而K2键用于关闭系统,当其按下后,调用按键发声程序,转入查询K1待机状态。
而K4键是模式选择键,本设计精巧之一就有模式选择时,设定了标准位,可以通过查询标志位便能够确认模式,从而进行不同的PWM调制,默认模式为温控模式标志位为低,当按下K4便进入手控模式,同时标志位置高,只有在K4按下后,K3,K5按键才有效,分别为档位加和档位减,并且按键按下都会调用发声程序,并且二极管会发光,提醒操作成功。
图4.1主程序流程框图
5系统调试
5.1硬件调试
在完成电路图的仿真之后,进入了实物设计,实物设计主要是对自己所设计的电路图进去焊接,用到自己电路图上的所用器件,如果实在没有的,可以用功能相似的器件来代替。
在完成第一部分的焊接后,要对一些部件进行电压的测量,第一部分的焊接主要焊接电阻,电源,USB接口,发光二极管等,焊接完成后,我们接上USB接口,发现电路板上的USB接口处