自己动手制作CPU温度计

🏠 首页 《无线电》杂志 2002年 🔗 第3期 🔗 第32页 分类:电脑与单片机 🔗

CPU是计算机中最重要且昂贵的部件;CPU工作时会产生大量的热量,所以为了CPU安全、稳定、可靠地工作,我们都要为它配上散热装置。另一方面,对CPU进行超频也是电脑DIY玩家最热衷的事情,超频是对CPU性能进行提升,但性能提升的同时,CPU会产生更大的热量,这样一来不少爱好者为了把CPU的性能发挥到极限,不惜购买各种昂贵的散热器来对CPU进行散热,甚至自己动手用半导体制冷器制作CPU的“空调”。但这些花费了大量心思和银子的散热装置工作得怎么样呢?最好的办法是测量CPU的温度,非常直观,但是主板上带的温度探头根本无法与CPU接触,所以测量结果肯定很不准确,而内部自带温度检测的CPU又很少,还需要主板支持才能完成这种功能。为此,我们设计制作了一款CPU温度计,采用数字显示,可以实时监控CPU的温度,了解散热器的效果,对超频爱好者是一个不可或缺的工具。

数字温度指示装置的核心采用AT89C2051单片机,温度探头使用的是MAX6577,能够测量-40~+125℃的温度。

显示部分使用了一个数字钟的显示屏(也可以采用数码管)。显示屏共4位,前2位显示2位数的温度值,后两位用来显示摄氏度的符号℃,温度值的符号用最前端的一个点表示,该点点亮时表示负温度,不亮表示正温度。因为只用了2位数字来表示温度,在超过100℃时,程序是这样处理显示的:第1位数字显示的是一个下划线表示10(温度值的百位和十位),第2位数字显示温度值的个位数。所以这个数字温度计的实际显示范围是

-40℃~+109℃,对于计算机内部的各种芯片,这个测量范围都是足够了的。

下面介绍详细的制作方法。

一、元件的选用

作为本电路的核心,单片机的选择是比较关键的,主要考虑成本要低,I/O口要多,可以直接驱动数码管而不需要用数字电路来扩展。最后确定采用了ATMEL公司的AT89C2051,它是一种廉价的20脚的51单片机,具有2K字节的FLASH程序区,128字节的内部RAM,15个I/0口,最快速度0.5μS(采用24M晶振)。

为了保证测量精度,温度探头选用了MAXIM公司新推出的数字温度传感器MAX6577。(该传感器的详细资料读者可到:http://pdfserv.maxim-ic.com/arpdf/MAX6576-MAX6577.pdf上下载)。MAX6577温度传感器采用数字输出,可以省略掉A/D转换部分,并能直接和单片机连接,对电路简化和降低成本都有好处。它采用6脚SOT-23封装,只占很小的面积(实际大小和一粒大米相仿),用来做探头非常合适。MAX6577采用单线数字接口,只用一条控制线和单片机进行通信。

MAX6577可将环境温度转换为频率正比于绝对温度值的方波,将其两个时间选择引脚连接至VDD或GND,可将方波的频率设定在4个不同的预定范围之内。

二、电路原理简介

电路原理如图1所示。AT89C2051采用12MHz晶振,P1.0至P1.6驱动显示7段码的各个笔画,P3.0至P3.3选通4个7段码。7段码模块采用的是数字钟的显示屏(7段码部分共阴极,各个点引脚独立),由于AT89C2051的驱动能力较弱,高电平输出电流很小,所以在P1.0至P1.6加有330Ω的上拉电阻,这样在5V供电下可以给7段码的LED提供15mA的电流。温度的符号使用数字钟显示屏前端的一个点来表示,由P3.5来控制。电源指示由P3.7来控制。

图1
图1 🔍原图 (850×523)

温度检测由于采用了MAX6577,所以线路十分简单,只有一根I/O线用来输入温度数据。由于温度信号的频率用AT89C2051的内部计数器来计算,所以由P3.4(T0)输入。由电路原理图可知,MAX6577的④、⑤脚的两个时间选择引脚的接法设定输出方波的频率与绝对温度的比值为1,也就是说1Hz代表1℃。

三、AT89C2051的程序编制

由于MAX6577输出方波的频率与温度成正比,并且已经设置频率与温度的比值为1,所以只要编写程序测量出这个频率值就可以计算出温度了。

频率的计算间隔我们定时为1s,使用 AT89C2051的定时器1(T1)来完成,T1定时50ms,每隔50ms会发生定时溢出中断,在中断服务程序中计数20次,这样就是1s间隔。温度信号是由P3.4(T0)输入的,我们把T0通过程序设置为计数器工作方式,这样当外部输入信号电平发生从“1”到“0”的跳变时,计数器加1。配合T1的1s定时,当1s到时,T0的计数器值就是我们所需要的频率值。

由于把频率和温度的比例设为1∶1,所以现在得到的频率值就等同于温度值,但这个温度值是指的绝对温度,绝对温度是以摄氏零下273度为0度,所以我们还需要把得到的温度值减去273,这样得到的数值才是摄氏度。最后把得到的温度值使用P1口和P3口的7段码选通信号扫描驱动数码管显示出来。程序流程图见图2。

四、制作和调试

根据电原理图把电路焊接好,焊接前需要安排好各个元件的位置。并且还需要注意以下两点:

1. 温度探头

由于需要测量某个物体的温度,为了方便测量温度,所以需要把MAX6577焊接在一块小印板上,并且通过连线引出信号这样就制作出一个温度探头。温度探头的印板图见图3。图4是温度探头的实物照片。

图2
图2 🔍原图 (425×633)
图3
图3 🔍原图 (425×330)

2. 电源

由于这个温度计是使用在电脑上的,所以可以直接使用电脑的机箱电源,只需要制作一个电源插头,插在机箱电源的输出接头上即可。图5给出了电脑电源插头的实物照片。

图4
图4 🔍原图 (567×415)

AT89C2051是需要烧写入程序才能工作的,可以使用通用的编程器来写入程序,也可以自己制作一个AT89C2051编程器(如果你需要我们做好的CPU温度计程序,可以向我们联系索取,EMAIL:ediy2000@sina.com)。

当所有的元器件都焊接完成后,先不要插上AT89C2051芯片,连接好电源,使用万用表测量一下供电是否正常,如果正常就可以插上芯片使用了。

五、应用

1. CPU温度计

CPU风扇的散热片是和CPU核心紧密靠近的,散热片底部的温度和CPU核心的温度最接近。为了准确地测量到CPU的温度,我们可以在CPU散热片的底部钻个孔,把测温探头用硅胶封进去。不过为了简单,也可以把测温探头粘在散热片的缝隙中。见图6。温度显示部分可以装在计算机面板上空余的挡板上,这样观看比较方便。安装完成后,只要一打开计算机,该电路就开始显示当前的CPU温度值。见图7。

图5
图5 🔍原图 (425×260)
图6
图6 🔍原图 (306×294)

对于那些用半导体制冷器自制的CPU散热器,可以把CPU温度降得很低,但同时也有结霜的危险,这时可以把本电路修改成为一个带温度指示的温控器,当测量温度低于某个值时关掉半导体制冷器,当测量温度高于某个值自动打开半导体制冷器。这样就不会有结霜的危险了。

本电路还可以修改一下,设计成当温度超过设定值时发出报警信号并触发系统关机。这样对毒龙系列CPU最为适用,因为毒龙系列CPU的温度都比较高,并且内部没有超温保护电路,如果散热系统出现问题,温度太高,就有可能烧毁CPU。

2. 作一个测温器,检测机箱内各部件的温度。

电脑机箱内的其他部件如硬盘、显卡、光驱等发热量都比较大,当这些部件的温度太高时,都会影响电脑的稳定性。所以我们也可以把测温探头放在这些部件上,来看看这些部件的实际温度。

3. 它也可作为一个环境温度计来使用。

六、扩展

1. 增加温度报警设置,在超过某温度值时输出报警信号或触发系统关机。

2. 增加多个温度探头,可以同时检测多个部件的温度。这些温度探头可以直接连接到AT89C2051的任何I/O口上,由于我们现在是使用T0的计数器功能来计算的频率,这时我们需要修改程序,可以采用查询的方式来检测各个温度数据的I/O口来计算频率。

3. 增加按键,并修改程序。以便可以手动设置温度报警值、切换显示各个温度探头的温度、设置工作状态(如轮换显示多点温度、固定显示某点温度等)。

4. 增加和计算机的接口,可在电脑上做个小程序来记录温度的变化曲线。

(电子DIY工作室)