笔者在本刊今年第3期介绍了一款采用单片机制作的测量电脑内部器件温度的电路。本期我们将介绍另一个很有特色的电路,制作起来比较简单,它可以同时监控室内和室外的温度,该电路连接到计算机的任一串口上,再通过程序在显示器上实时显示当前的温度。电路中没有用到任何类似单片机这样的可编程元件,无需校准就可以达到0.5℃的精度。另外这个电路的成本也很低廉。让你的Windows的任务栏多一个温度显示,是一个很不错的主意,你难道不想做一个吗?
即使对于初学者来说,电路也是足够简单的。在制作的过程中,你还可以顺便学习一下I2C总线的原理:怎样用两个电阻和两个稳压管来实现串口的I2C通讯。实物外型见图1。

技术参数
在Windows任务栏显示室内外温度
适用于任一串口
测量范围:-20℃~+125℃(-4~257华氏度)
分辨率:0.5℃
摄氏度、华氏度随意切换
可将测量数据保存为文本文件
采样速率:1,5,30或60s
可连接一到多个传感器(最多可接8个)
电路电源由串口提供,无需外接电源
无需校准
电路的构成
电路原理图如图2所示。

元件列表
电路工作原理
这个电路的核心是DALLAS公司的温度传感器芯片DS1621。读者可以到www.maxim-ic.com上查找此芯片的相关资料。该芯片采用8脚贴片封装,只要提供+5V的电源,它就可以测量温度并通过两线以串行方式传送温度数据。大多数的串行芯片都可以并行连接,DS1621也不例外,它有3条地址线输入口,因此可组成8个地址,也就是说最多可将8个DS1621并联起来使用。在本电路中,只并联了2个DS1621,用来测量室内温度的DS1621地址被设置为0,用来测量室外温度的DS1621地址被设置为1。如果你只使用一个DS1621的话,可把地址设置为0。DS1621芯片的引脚图见图3。

引脚功能
1-SDA 两线串行数据输入输出引脚
2-SCL 两线串行数据时钟引脚
3-Tout 温度报警输出
4-地
5-A2 地址输入
6-A1 地址输入
7-A0 地址输入
8-电源
DS1621地址对应表如下:

注:0表示接地,1表示接+5V
-无需外围元件即可进行温度测量
-测量范围-55℃~+125℃,分辨率0.5℃
-输出的温度值为一个9bit的数值
-宽电压范围(2.7~5.5V)
-温度转换速率1次/s
-可由用户来设置温度临界值,该设置保存在非易失性存储器中
-温度数据通过一个两线串行接口进行读写操作
DS1621无需外部的AD转换,测量到的温度值直接输出为一个9bit的数值,另外它具有一个温度报警输出,用户可设定一组临界的温度值(包括一个上限温度值和一个下限温度值),当测量到的温度超过这个上限温度值时,③脚(Tout)输出高电平,当测量到的温度低于这个下限温度时,③脚复位,这可以方便地用于一些温度控制系统。
DS1621传输数据是以两线串行方式进行的,因为它符合I2C的标准,所以可以把它当做I2C方式来使用。I2C总线接口与计算机的串口之间存在的一个最大的问题是电平匹配问题。I2C的电平范围为0~5V,但是RS232的电平范围为-12~+12V。通常情况下,需要采用一个电平转换芯片,比如MAX232,不过为了简化电路,另一方面也是为了节省成本,采用了另外一个办法:一般来说,尽管计算机的RS232电平为-12~+12V,但是实际上它们都可以很好地适应0~5V电平,因此不必提升I2C的输出来适应RS232电平,SDA数据线可直接连接到计算机串口的CTS线上。相反,RS232电平输出超出了I2C的电平范围,因此需要使用稳压电路将其电平限制在+5V以内,以防损坏I2C芯片,这样的电路实现起来很简单,如图2所示,在SCL时钟输入和SDA数据输入线上,R1,VD2,R2,VD1组成了限制电平的电路(需要注意的是,SDA是双向的,它从DTR接收数据,从CTS发送数据)。
上文讲过,因为电路的耗电量很小,所以没有采用外置电源供电。电路的电源供应是从串口获得的。因为RS232的线上可提供+12V的电压,这个电压经过简单的稳压电路就可转变为+5V为电路供电,为了获得足够的电流,同时从CTS和DTR引进+12V,两个1N4148起到了隔离的作用。如果打算采用三端稳压的话,一定要采用低压差的型号,因为有的串口电平很低。
软 件 使 用
图4所示为此PC温度计软件界面。
这个软件是用Visual Basic 5写成的。在初次运行该程序时,会出现一个提示:设置文件不存在(它会自动建立一个),将使用默认值。当程序启动后,它会自动最小化到任务栏,在任务栏你将看到一个带有温度计的任务图标。点击这个图标进入设置窗口。
首先要进行串口选择,在这一项中列出了4个COM口,选择你的电路连接的那个COM口,电路才能正常工作,如果你选错了端口,那么将得到错误的测量结果或者不能读取信息。然后要选择传感器数量(一个或两个),你可以根据你做的电路中有几个DS1621进行选择,需要注意的是应把DS1621地址为0的那个传感器放在室内,地址为1的那个放在室外,否则测量的结果将是反的。关于温度计量单位的选择,可以使用默认值即我们所习惯的摄氏度,当然如果你有特殊要求也可设置为华氏度。采样时间间隔表示传感器间隔多长时间重新测量温度,这可根据实际情况进行选择。如果温度数值对你有用的话,你可以选择把测量结果记录为一个文本文件供日后参考,这个文件记录了每次采样的时间和当时的温度值,根据这些数值,你可以绘制出一段时间内的温度变化曲线。
软件及VB源代码请到这里下载:http://ediy.yeah.net。
(赵晓杰 刘河川)
