max6675

1.引言
在工业检测系统中,热电偶作为一种主要的测温元件,具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点,被广泛应用于工业温度控制过程中。但热电偶输出电势及其微弱,而且存在冷端温度误差和输出电势与被测温度的非线性问题,易引起较大测量误差,尤其在以单片机为核心器件的智能装置中,需进行复杂的信号放大、A/D转换、查表线性、温度补偿及数字化输出接口等软硬件设计,硬件芯片使用过多,软件编写任务重,不能适应现阶段产品集成化、模块化的需要。MAX6675是MAXIM公司推出的K型热电偶串行模数转换器,它能独立完成信号放大、冷端补偿、线性化、A/D转换及SPI串口数字化输出功能,大大简化了热电偶测量智能装置的软硬件设计。
2.MAX6675的物理特点
MAX6675封装在SO-8脚的芯片中,推荐工作电压为一单+5V直流电压,连续工作时的功耗仅为47.1mW,电流为50mA,适用于体积不大,不利散热的装置条件下使用,其引脚图如图1所示。
其中SO为SPI串行输出端口引脚; 为片选信号;SCK为串行时钟输入;T+、T-分别接热电偶的测量端和冷端。
3.MAX6675的工作原理与功能
根据热电偶测温原理,热电偶的输出热电势不仅与测量端的温度有关,而且与冷端的温度有关,使用硬件电路进行冷端补偿时,虽能部分改善测量精度,但由于热电偶使用环境的不同及硬件电路本身的局限性,效果并不明显;而使用软件补偿,通常是使用微处理机表格法或线性电路等方法来减小热电偶本身非线性带来的测量误差,但同时也增加了程序编制及调试电路的难度。MAX6675对其内部元器件参数进行了激光修正,从而对热电偶的非线性进行了内部修正。同时,MAX6675内部集成的冷端补偿电路、非线性校正电路、断偶检测电路都给K型热电偶的使用带来了极大方便,其工作原理如图2所示。
MAX6675内部集成有冷端补偿电路;带有简单的3位串行SPI接口;可将温度信号转换成12位数字量,温度分辨率达0.25℃;内含热电偶断线检测电路。冷端补偿的温度范围-20℃~80℃,可以测量0℃~1023.75℃的温度,基本符合工业上温度测量的需要,其串行接口时序如图3所示。
由接口时序可以看出,当MAX6675的 引脚从高电平变为低电平时,MAX6675将停止任何信号的转换并在时钟SCK的作用下通过SO引脚向外输出已转化的数据(此数据是经过放大了的A/D转换后的数字量与冷端补偿之和);相反,当 从低电平变回高电平时,MAX6675将进行新的转换。在 引脚从高电平变为低电平时,第一个字节D15出现在引脚SO上,一个完整的数据读过程需要16个时钟周期,数据的读取

通常在SCK的下降沿完成。值得指出的是此芯片的AD转换速度在0.17~0.22s之间,比之一般的AD转换芯片微秒级的转换速度要长得多。
4.MAX6675与89C52的接口实现
MAX6675采用标准的SPI串行外设总线与单片机接口,因此它只能作为从设备即串行接口芯片。SPI(Serial Peripheral Interface)总线系统是一种同步串行外设接口,是Motorola公司推出的总线标准,它可以使单片机与各种外围设备以串行方式进行通信以交换数据。
以单路热电偶为例来说明MAX6675与C51系列单片机的接口连接。由于C51系列单片机不具有SPI串行总线接口,可以使用软件来模拟SPI操作,包括串行时钟、数据输入和数据输出。如图4所示,串行外部时钟由P3.1提供,它是单片机的串行输出口TXD,对应于SCK的串行时钟输入;片选信号由P3.2提供;转换数据由P3.0读取,它是单片机的串行输入口RXD,对应于SO的串行输出。MAX6675的转换结果在SCK的控制下连续输出。
值得指出的是我们将串行时钟输出口P3.1的初始状态设置为1,而在允许接口后再置P3.1为0。这样,单片机在输出1位SCK时钟的同时,将使接口芯片串行左移,从而输出一位数据至单片机的P3.0口(模拟MISO线),以后再置P3.1为1。至此,模拟一位数据输入过程完成。
5.MAX6675的软件设定
由以上的叙述可知MAX6675是可编程的K型热电偶A/D转换器,可以使用C汇编程序完成。MAX6675的输出数据为16位,其中D15始终无用且一直为零,D14~D3对应于热电偶模拟输入电压的数字转换量,D2用于检测热电偶是否断线(D2为1表明热电偶断开),D1为MAX6675的标识符,D0为三态。其转换结果与对应温度值具有较好的线性关系:温度值=1023.75 转换后的十进制数/4096。
温度信号读取程序如下所示,程序中定义的ADH和ADL分别对应转换后的数据高4位和低8位。程序里面还附加了扫描D2位的子程序,若其为1,标志flag置1,返回相应的错误代码,显示何路出现断偶,这样做减少了热电偶检修的难度,具体采样与AD转换源程序如下:
#include
#include
sbit SO=P3^0;
sbit CS=P3^2;
sbit SCK=P3^1;
unsigned char ADH,ADL;
unsigned char flag;
void read (void)
{
unsigned char i,j;
ADH=ADL=0;
SCK=0;
CS=0;
SCK=1; a
CS=0;
SCK=0; /*输出数据D15*/
SCK=1;
For(i=4;i>0;i--) /*读取转换结果高4位*/
{SCK=0;
ADH0=SO;
ADH=ADH<<1; /*数据左移*/
SCK=1;
}
for(i=8;i>0:i++) /*读取转换结果低8位*/
{SCK=0;
ADL0=SO;
ADL=ADL<<1; /*数据左移*/
SCK=1;
}
SCK=0;
flag=SO; /*读取D2断偶标志*/
SCK=1;
SCK=0; /*输出数据D0*/
CS=1;
Delay(10);}
void delay(unsigned int c)
{TMOD=0x10; /*设置定时器T1工作在16位定时方式*/
TR1=1;
while(c--!=0)
{TH1=(65536-11000)/

256; /*预置高8位定时初值*/
TL1=(65536-11000)%256; /*预置低8位定时初值*/
EA=1; /*允许全局中断*/
ET1=1; /*允许定时器中断*/
do{}
while(!TF1);
TF1=0; /*重置标志位*/
}
}
对于上文提出的AD转换速度较慢的问题,使用了T1定时器控制,延迟22us,共延迟220us,足够芯片完成AD转换。
6.试验总结
MAX6675作为测量热电偶的专用芯片,最大的特点是内部集成有冷端补偿电路,它类似一个AD590这样的温度传感器,通过感应芯片周围的温度来得到此时热电偶的冷端温度值,即是通过冷端补偿检测和校正周围温度变化的。当热电偶的冷端与芯片温度相等时,MAX6675可获得最佳的测量精度。因此在实际测温应用中,应尽量避免在MAX6675附近放置发热器件,这样会造成冷端误差。同时热电偶的输入负极T-必须接地,且尽可能地靠近MAX6675的引脚地;由于冷端温度是由MAX6675本身检测到的,在设计印刷电路板时,为了提高测量的精确度,地线尽可能地加粗。
由实验结果来看,MAX6675成功解决了热电偶非线性、冷端补偿等影响热电偶测量精度的问题,试验结果误差在0.5℃左右,相对与测量范围在几百度的热电偶来说,完全达到了测量精度,因此它可广泛使用在热电偶温度信号的采集装置中,从而大大减少装置的体积,减轻系统软硬件设计的困难,提高装置运行的可靠性。除此之外,此芯片亦可用于热电偶自动检定等其他需要使用热电偶测量的场合中。

相关文档
最新文档