关键字:AT89S51,ADC0809,24C02,温度控制器电路图
这款计算机温度自动控制器能根据温度的高低自动调整相关风扇的转速及开停,同时轮流显示各处的温度,节能降噪,使用方便,不占用系统资源。
一、工作原理
本装置的工作原理如下图所示,IC2为主控芯片AT89S51,IC4为8位逐次逼近式A/D转换芯片ADC0809,RT1~RT4分别是测量CPU、电源、机箱、显卡温度的热敏电阻,FAN1~FAN4分别是控制CPU、电源、机箱、显卡温度的风扇。以CPU温度控制为例,当温度升高时RT1阻值变小,A点电压升高,该变化的电压作为待转换的模拟量进入ADC0809的输入通道IN0,经AD转换、查表后换算成温度值在数码管上显示出来,其中最左边一位显示“1”(1代表CPU,2代表电源,3代表机箱,4代表显卡),左边第二位不显示,最后两位显示CPU当前的实际温度值。显示范围为0~70℃,当温度低于设定的温度下限时,单片机通过串行口发出控制指令经74LS164.移位输出,使V5、V9截止,风扇FAN1停止转动。
当温度高于下限而低于上限时,V5饱和,V9截止,12V电源经VD1降压后变为9V加至FAN1的两端,使FAN1低速运转。当温度高予设定的上限时,V5、V9饱和,12V电压全部加在FAN1上,FAN1全速运转给CPU降温。其他各处的温度控制与此相同。正常工作时,数码管轮流显示4路当前温度值,每路显示时间为8秒。图中AN1~AN3是温度设定用按键,设定时按一下AN1,数码管左边第一位显示“1”第二位显示“H”,最后两位显示CPU当前上限温度设定值,按动AN2可设定上限值的十位,按动AN3可设定上限值的个位,设定好后再次按一下AN1,CPU上限温度设定值被写入24C02永久保存,同时数码管显示“1L”和CPU当前下限温度设定值,按同样的方法设定好下限值后,第三次按动AN1,CPU下限温度设定值被写入24C02,同时数码管显示“2H”和当前电源上限温度设定值,按照同样的方法,依次设定好电源、机箱、显卡温度的上、下限后,按一下AN1,数码管重新轮流显示当前各处的温度值。
AT89S51电脑自动温度控制器AT89S51 temperature controller
二、软件设计
本文程序采用模块化编程,考虑到热敏电阻的阻值随温度变化的非线形,温度值计算采用查表的方式实现,A/D转换采用等待的方式进行编程,四个通路寄存器地址为7FF0H~7FF3H,整个程序由主程序、温度判断程序、上下限设定程序、A/D转换程序、查表程序、二一十进制转换程序、显示程序、键扫描程序、键等待释放程序、串行口发送程序、24C02读写程序等组成。片内主要RAM分配如下:28H存放键码,29H存放AN1键序,34H、35H为十进制转换暂存单元,40H~43H为显示缓冲区,49H为12C寻址字节写存放单元,4BH为寻址字节读存放单元,4DH存放传送字节数,4EH是数据子地址存放单元,50H~57H分别存放CPU、电源、机箱、显卡的温度上、下限设定值。5AH为风扇运行状态暂存单元。
三、安装调试
由于装置采用了串行EEPROM存储器24C02来保存数据,使设定值能够长久保存,每次开机后不用重新输入数据即可运行,大大增强了装置的实用性。在制作好后第一次运行时,可能会出现风扇全部不转的现象,这是因为所用24C02是空白芯片的原因,只需要按照前述方法设定好各路的温度上、下限即可。本装置的电源为12V和5V,可直接取自主机电源的多余插头。RT1、RT2、RT4可用导热胶分别固定在各自散热片的沟槽底部,由于热敏电阻处于风扇的下方,为了使其真实反映散热片的温度,安装时最好在用导热胶固定后,再在其表面涂上一层较厚的万能胶或热溶胶。RT3可固定在机箱中上部的合适地方。实际使用时,一般把下限值设定为25℃左右,上限值设定为40℃左右较为合适。由于控制指令采用串行输出,本装置还有很大的扩展空间,例如可以根据需要增加硬盘风扇、显示器风扇等,这时只需要对软件稍作改动即可。当然本装置也可用于其他需要控制温度的场所。