笔者根据自己的需要设计制作了一款可以方便调节、设定的电脑温度控制器,介绍给读者。
功能介绍
笔者设计的这一款温度控制器使用DS18B20集成温度传感器,利用3个七段数码管显示温度,采用AT89C2051单片机进行处理控制,电路简单,制作完成后无需调试,即可使用。该电路最大的特点是可以直观方便地调节所要限定的温度,上电后会显示当前的温度。按设定键时会闪烁显示设定温度值,这时可以按上/下调节键调整设定温度值,再次按下设定键则将返回当前温度显示,同时会将设定温度值保存在DS18B20中,掉电后也不会丢失,下次上电时,单片机将会自动读入上次的温度设定值。长按设定键为关闭显示和温控,再次按下则功能再次打开。电路中还设计了一路继电器控制,超出设定温度时继电器被驱动吸合。
元器件背景及选用
附表是制作本实例所需元器件的列表。在这个电路中关键的两个元器件分别是单片机AT89C2051和温度传感芯片DS18B20。本制作中2051单片机除要完成数据采集、处理、控制和显示的任务外,还要完成按键值的采集、处理。如果用常规的数字加模拟电路实现就会相对困难一些。DS18B20是DALLAS半导体公司(现属MAXIM公司)设计生产的单总线数字温度传感器(其资料可到www.maxim-ic.com上查询), 其测量温度范围为-55℃~+125℃, 在 -10℃~+85℃范围内其精度为±0.5℃,这个精度已可以满足普通型的环境温度控制或测温类消费电子产品的要求。DS18B20中有3个8位E2RAM单元(非易失性可电擦写储存器),可以读写上下限警报温度值和一个自定义值,在本制作中只使用了上限温度值单元。

电路原理
本实例中DS18B20使用外接电源的供电方式,数据端用4.7k电阻上拉,并联接到2051的11脚上。晶振选用12MHz的,使用简单的上电复位电路。选用共阳极的数码管,用S8550作位驱动,段引脚通过470Ω的限流电阻接入2051的P1口上,如选用的数码管亮度不足可以调小限流电阻值。笔者也使用过共阴极的数码管,在P1口用1k电阻上拉提供电流,亮度不高,但可以节省3个位驱动IO脚,电路更简单。本电路中有3个按键,分别是显示开关/温度设定、温度上调和温度下调,在电路上电运行时程序初始是处于关闭状态的,按一下S2,电路开始显示和监测,如再按一下S2则进入温度设定状态,设定值每秒闪烁一次。这时可以按S1或S3进行调节,再按下S2时退回显示当前温度状态并保存温度值到DS18B20。AT89C2051的第9脚作为控制输出端,低电平有效,用它通过9012去驱动一个5V的继电器。把这个电路安装到电脑前面板上,继电器触头端接机箱的散热风扇,设定一个温度值如28℃,当机箱内的温度超出28℃时,控制端为低电平,继电器闭合,风扇启动进行散热。图2就是装在电脑面板上的实物照片。


软件实现
这个温度控制器制作的最大难点是2051程序的编写和调试。因为在电路中有数字显示、按键设定、数据采集和继电器控制。首先要考虑的是3个数码管的阴极是接在P1上的,需要使用动态显示的编程方法。笔者在程序中使用了一个定时中断去处理显示,定时器的定时值为20ms,每间隔20ms程序便会执行定时中断,显示所要显示的数字,同时在这个定时中断中还会进行扫描按键,看是否有键被按下并对其结果进行处理。在这20ms的时间里,程序还会完成温度数据的采集和转换,以及对当前温度和设置温度的对比等。在编写采集DS18B20数据的函数时笔者运用了DS18B20的单总线协议,在读写DS18B20时IO口的电平时序应尽可能做到与资料上提供的数据相一致。
本实例源程序的文本文件可见本期配刊光盘的“本期程序”文件夹,程序大部分使用模块化设计,读者可修改或使用它的函数编写自己的温控程序,该程序的最新版本可以访问笔者的个人网站http://www.cdle.net。
(文/温正伟)