温度传感器MAX6662的应用研究

来源:本站
导读:目前正在解读《温度传感器MAX6662的应用研究》的相关信息,《温度传感器MAX6662的应用研究》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《温度传感器MAX6662的应用研究》的详细说明。
简介:本文利用MCS51系列单片机的三条I/O口线模拟了该传感器的SPI总线,成功地实现了传感器和单片机的通信。

1 温度传感器MAX6662

MAX6662是一款12位+符号位温度传感器,在单片封装中还集成了可编程过温报警和三线(SPI兼容)串行接口。它使用内部A/D转换器将其管芯温度转换为数字量。温度数据以13位字的形式存储在温度寄存器中,分辨率为0.062 5 ℃,温度数据可在任意时刻通过串口读取。工作电压范围为+3~+5.5 V,温度范围为-55~+150 ℃。

1.1 MAX6662的引脚定义

如图1所示,MAX6662采用8引脚SO封装。其接口信号描述如下: SCLK为串行时钟输入;CS为片选信号,低电平时使能串行数据的输入、输出;SIO为串行数据输入输出,双向口;ALERT为过温报警,温度过高或过低时默认输出低电平,可编程设置为高;OT为高温报警,温度过高时默认输出低电平,可编程设置为高。其中,ALERT和OT均为漏极开路,使用时需要加上拉电阻。

温度传感器MAX6662的应用研究

图1 MAX6662引脚图

1.2 MAX6662工作寄存器

MAX6662有6个工作寄存器:温度寄存器、配置寄存器、THYST寄存器、TMAX寄存器、TLOW寄存器和THIGH寄存器。

(1) 温度寄存器

温度寄存器为只读寄存器,MSB位为符号位(bit15);接下来的12位是温度数据位,最新转换的温度数据以℃为单位存储于温度寄存器,其中高8位表示温度整数位,低4位为小数位;3位最低有效位为温度标志位,显示报警信息,分别为Tover标志、Thigh标志、Tlow标志。

(2) 配置寄存器

配置寄存器只使用了第8~12位,用于配置MAX6662的工作模式,如表1所列。

表1 配置寄存器各位的定义

温度传感器MAX6662的应用研究

(3) 温度界限寄存器

TLOW寄存器、THIGH寄存器和THYST寄存器用于设置温度界限来触发ALERT;TMAX寄存器、THYST寄存器用于设置OT的温度极限。这些温度界限寄存器使用9位高位(符号位和8位数据位),双精度格式,1位最小单位,剩余7位保留。

1.3 MAX6662命令字

命令字第1位为高电平,代表传输开始;第2位是读/写位,高电平时读。总共有11个有效命令,温度转换持续进行并且可通过串行口异步读取。一旦读取温度寄存器,正在进行的转换失败并且把之前的转换结果输出。命令字定义如表2所列。

表2 命令字定义

温度传感器MAX6662的应用研究

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所示。

温度传感器MAX6662的应用研究

图2 通信时序

温度寄存器存储12位的转换数据和1位温度符号位,能确定的温度范围为-55~+155 ℃,数据传送格式如表3所列。

表3 数据传送格式

温度传感器MAX6662的应用研究

2 应用电路设计

2.1 硬件电路设计

温度传感器MAX6662的应用研究

图3 硬件接口电路

MAX6662传感器与MCS51系列单片机AT89S52的硬件接口电路如图3所示。

MAX6662的SIO、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个时钟周期的下降沿。

数据读取程序如下:

sbit CS=P1^2;//芯片片选

sbit SCLK=P1^1;//SPI串行时钟

sbit SIO=P1^0;//数据线

void command(uchar com){//写命令字函数

CS=1;//置芯片无效

SCLK=0;//拉低时钟线,使之从低电平开始

delay();//延时10 ms

CS=0;//选择芯片

delay();//延时10 ms

for(i=0;i<8;i++){//发送8位命令字

SIO= com&0x80;//命令字发送,首先发送最高位

SCLK=1;//时钟变换

delay();//延时10 ms

com=com<<1;

if(i!=7)//使第8个时钟周期以高电平结束

SCLK=0;

delay();//延时10 ms

}

}

uint datar(void){//数据的读取

uint dat;

for(i=0;i<16;i++) {

SCLK=0;//下降沿开始数据读取

delay();//延时

dat|=(P1&0x01);//读取串行数据

SCLK=1;//开始一个新的时钟周期

delay();

if(i!=15)

dat=dat<<1;//把读取的数据存入dat

}

CS=1;//禁止芯片

SCLK=0;//保证下次数据传输时钟从低电平开始

return(dat);

}

程序运行结束后,传感器送到单片机中的值就会存入变量dat中,以便后面的数据处理使用。

2.3 传感器数据的写入

向MAX6662传感器中写数据的功能主要是用于配置传感器或是规定报警温度值,每次写入也必须是24个时钟周期。数据的写入也分为2步:

① 前8个周期完成的操作与数据的读取相同,命令字各位在时钟的上升沿送入传感器。

② 后16个周期,主机控制SIO数据线将要写入的数据一位一位地送入数据线SIO。与读取数据不同的是,数据的写入开始于第9个时钟周期的上升沿,因为主机发送数据时,数据在上升沿时送入传感器。

写命令的函数与数据读取相同,数据写入程序如下:

void dataw(void) {

SCLK=0;

delay();//延时

for(i=0;i<16;i++) {

SIO=wdata&0x8000;//取最高位

SCLK=1;//上升沿进行数据传输

delay();//延时

SCLK=0;//时钟变换

delay();

wdata=wdata<<1;//把数据放入wdata的最低位

}

CS=1;//禁止芯片

SCLK=0;

}

初始化时,应首先把数据赋值给wdata,再调用此函数。

结语

本文提出了用单片机3根I/O口线模拟温度传感器MAX6662的SPI总线的方法。经实验验证,完全可行,并且由于MAX6662用于温度测量时具有高精度和附加报警功能,因而在需要精确温度控制和温度测量等方面也会有广泛的应用。

提醒:《温度传感器MAX6662的应用研究》最后刷新时间 2024-03-14 00:57:12,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《温度传感器MAX6662的应用研究》该内容的真实性请自行鉴别。