|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>1 温度传感器MAX6662</strong>
MAX6662是一款12 位+符号位温度传感器.在单片封装中还集成了可编程过温报警和三线(SPI兼容)串行接口。它使用内部A/D转换器将其管芯温度转换为数字量。温度数据以 13位字的形式存储在温度寄存器中,分辨率为O.062 5℃,温度数据可在任意时刻通过串口读取。工作电压范围为+3~+5.5 V,温度范围为一55~+150℃。
1.1 MA×6662的引脚定义
如图1所示,MAX6662采用8引脚SO封装。其接口信号描述如下:SCLK为串行时钟输入;CS为片选信号,低电平时使能串行数据的输入、输出;SIO为串行数据输入输出,双向口;ALERT为过温报警,温度过高或过低时默认输出低电平,可编程设置为高;OT为高温报警,温度过高时默认输出低电平,可编程设置为高。其中,ALERT和OT均为漏极开路,使用时需要加上拉电阻。
<ignore_js_op>
2010-4-25 18:11:45 上传
<strong>下载附件</strong> (3.62 KB)
</ignore_js_op>
1.2 MAX6662工作寄存器
MAX6662有6个工作寄存器:温度寄存器、配置寄存器、THYST寄存器、TMAX寄存器、TL0W寄存器和THIGH寄存器。
(1)温度寄存器
温度寄存器为只读寄存器,MSB位为符号位(bitl5);接下来的12位是温度数据位,最新转换的温度数据以℃为单位存储于温度寄存器,其中高8位表示温度整数位,低4位为小数位;3位最低有效位为温度标志位,显示报警信息,分别为Tover标志、Thigh标志、Tlow标志。
(2)配置寄存器
配置寄存器只使用了第8~12位,用于配置MAX6662的工作模式,如表1所列。
<ignore_js_op>
2010-4-25 18:11:46 上传
<strong>下载附件</strong> (10.26 KB)
</ignore_js_op>
(3)温度界限寄存器
TLOW寄存器、THIGH寄存器和THYST寄存器用于设置温度界限来触发ALERT;TMAX寄存器、THYST寄存器用于设置0T的温度极限。这些温度界限寄存器使用9位高位(符号位和8位数据位),双精度格式,1位最小单位,剩余7位保留。
1.3 MAX6662命令字
命令字第l位为高电平,代表传输开始;第2位是读/写位,高电平时读。总共有11个有效命令,温度转换持续进行并且可通过串行口异步读取。一旦读取温度寄存器,正在进行的转换失败并且把之前的转换结果输出。命令字定义如表2所列。
<ignore_js_op>
2010-4-25 18:11:46 上传
<strong>下载附件</strong> (11.55 KB)
</ignore_js_op>
1.4 MAX6662的工作模式
(1)比较模式
此模式下,对于ALERT,当温度超过TMAX寄存器的值或低于TLOW寄存器的值时,ALERT输出低电平;温度低于THIGH—THYST,或高于 TLOW+THYST时,ALERT输出高电平。
对于OT,当温度超过TMAX的值时建立OT(即变低);温度低于TMAX--THYST时,OT输出高电平。读操作均不能复位OT、ALERT,默认条件下,OT、ALERT均为低有效的输出信号,但可以在配置寄存器中配置为高。
(2)关断模式
MAX6662的一个特色是可编程的关断模式。将配置寄存器的关断位置1,即可进入关断模式。关断模式下,除了POR电源复位和串口外,其他工作均被禁止;所有寄存器的值都被保留,温度寄存器保留最后的温度转换值。
1.5 MAX6662的通信协议与数据格式
串行接口包括3条信号线:片选CS(低有效)、双向数据线SIO和串行时钟SCLK。其中,CS和SCLK只受主机控制,主机和MAX6662共同控制 SIO。当主机发送数据时,数据在上升沿被送入MAX6662。读数据时,数据在下降沿被读出。命令字节和数据字的MSB位首先写入或读出。前8个时钟周期用于传送命令字,命令字由SIO输入MAX6662。该命令字决定接下来16个周期的数据由主机还是MAX6662来控制。如果由MAX6662来控制 SIO,则开始于第8个时钟周期的下降沿。通信时序如图2所示。
<ignore_js_op>
2010-4-25 18:11:45 上传
<strong>下载附件</strong> (4.14 KB)
</ignore_js_op>
温度寄存器存储12位的转换数据和1位温度符号位,能确定的温度范围为一55~+155℃,数据传送格式如表3所列。
<ignore_js_op>
2010-4-25 18:11:45 上传
<strong>下载附件</strong> (8.74 KB)
</ignore_js_op>
<strong>2 应用电路设计</strong>
2.1 硬件电路设计
MAX6662传感器与MCS一51系列单片机AT89S52的硬件接口电路如图3所示。
<ignore_js_op>
2010-4-25 18:11:45 上传
<strong>下载附件</strong> (8.26 KB)
</ignore_js_op>
MAX6662的S10、SCLK、CS脚分别与AT89S52的P1.0、P1.1、P1.2脚连接,用于模拟三线SPI总线,以实现传感器串行数据的传输。报警端口OT和ALERT均为漏极开路端,使用时需要接上拉电阻,因此均经过10 kΩ的电阻接地;同时分别连接AT89S52的P3.3和P3.2脚,用于触发外部中断,实现报警操作。MAX6662的VCC脚经0.1μF的电容接地,用于滤除干扰。
2.2 传感器数据的读取
每次有效的数据传输只能使用24个时钟周期,数据的读取分为2步(读取前应首先置CS为低):
①前8个周期,单片机向传感器发送读取寄存器命令,可以读取传感器所有寄存器的值。此时为单片机向传感器串行发送数据,数据在时钟的上升沿送入传感器。
②后16个周期,传感器将寄存器的值串行送入数据线SIO,由单片机接收。此时为单片机接收传感器的串行数据,数据在时钟的下降沿送入单片机。即由 MAX6662来控制SIO,数据的传输开始于第8个时钟周期的下降沿。
数据读取程序如下:
<ignore_js_op>
2010-4-25 18:11:45 上传
<strong>下载附件</strong> (5.35 KB)
</ignore_js_op>
<ignore_js_op>
2010-4-25 18:11:46 上传
<strong>下载附件</strong> (14.28 KB)
</ignore_js_op>
程序运行结束后,传感器送到单片机中的值就会存入变量dat中,以便后面的数据处理使用。
2.3 传感器数据的写入
向MAX6662传感器中写数据的功能主要是用于配置传感器或是规定报警温度值,每次写入也必须是24个时钟周期。数据的写入也分为2步:
①前8个周期完成的操作与数据的读取相同,命令字各位在时钟的上升沿送入传感器。
②后16个周期,主机控制SIO数据线将要写入的数据一位一位地送入数据线SIO。与读取数据不同的是,数据的写入开始于第9个时钟周期的上升沿,因为主机发送数据时,数据在上升沿时送入传感器。
写命令的函数与数据读取相同,数据写入程序如下:
<ignore_js_op>
2010-4-25 18:11:46 上传
<strong>下载附件</strong> (5.36 KB)
</ignore_js_op>
初始化时,应首先把数据赋值给wdata,再调用此函数。
<strong>结语</strong>
本文提出了用单片机3根I/O口线模拟温度传感器MAX6662的SPI总线的方法。经实验验证,完全可行,并且由于MAX6662用于温度测量时具有高精度和附加报警功能,因而在需要精确温度控制和温度测量等方面也会有广泛的应用。
<strong>参考文献</strong>
1. 戴胜华.蒋大明.杨世武 单片机原理与应用 2005
2. Maxim 12-Bit+Sign Temperature Sensor with SPI-Compatible Serial Interface 2001
作者:北京交通大学 翟飞飞 刘绍国 戴胜华
来源:单片机与嵌入式系统应用2009 (1) |
|