0%

MAX6675使用笔记

前言

最近在做一款热风枪需要测量温度,所以用到了MAX6675这款K型热电偶测量芯片,MAX6675执行冷端补偿,并数字化K型热电偶的信号。 数据以SPI™兼容的12位分辨率,只读格式输出。
该转换器分辨率为0.25°C,允许读数高达+ 1024°C,并且在0°C至+ 700°C的温度范围内具有8LSB的热电偶精度。

一、MAX6675框图

2020121209111041.png

20201212091131183.png

20201212091159582.png

二、MAX6675详细介绍

MAX6675是一款精密的热电偶数字转换器,内置12位模数转换器(ADC)。 MAX6675还包括冷端补偿检测和校正,数字控制器,SPI兼容接口以及相关的控制逻辑。MAX6675设计用于在恒温,过程控制或监控应用中与外部微控制器或其他智能器件配合使用。

1.温度转换

MAX6675包括信号调节硬件,可将热电偶的信号转换为与ADC输入通道兼容的电压。T +和T-输入连接到内部电路,可减少热电偶导线引入的噪声误差。

在将热电电压转换为等效温度值之前,必须补偿热电偶冷端(MAX6675环境温度)与0°C虚拟基准之间的差异。对于K型热电偶,电压变化为41µV /°C,可通过以下线性方程式近似热电偶特性:

20201212092201852.png

VOUT是热电偶输出电压(µV)。TR是远端热电偶结的温度(°C)。TAMB是环境温度(°C)。

2.冷端补偿

热电偶的功能是感应热电偶线两端之间的温度差。 热电偶的热端可以读取0°C至+ 1023.75°C的温度。冷端(安装MAX6675的电路板的环境温度)只能在-20°C至+ 85°C的范围内变化。当冷端温度波动时,MAX6675继续准确地感应另一端的温差。

MAX6675利用冷端补偿来检测并校正环境温度的变化。该设备使用温度感应二极管将环境温度读数转换为电压。为了进行实际的热电偶温度测量,MAX6675测量来自热电偶输出和检测二极管的电压。器件的内部电路将二极管的电压(感测环境温度)和热电偶电压(感测远端温度减去环境温度)传递到ADC中存储的转换函数,以计算热电偶的热端温度。当热电偶冷端和MAX6675处于相同温度时,可实现MAX6675的最佳性能。避免在MAX6675附近放置发热设备或元件,因为这可能会产生与冷端有关的错误。

3.数字化

ADC将冷端二极管的测量值与放大后的热电偶电压相加,并将12位结果读出到SO引脚上。全零序列表示热电偶读数为0°C。全部为1的顺序表示热电偶读数为+ 1023.75°C。

三、应用信息

1.串行接口

典型应用电路显示MAX6675与微控制器接口。在本例中,MAX6675处理热电偶的读数,并通过串行接口传输数据。强制CS为低电平,并在SCK处施加时钟信号以读取SO处的结果。 强制CS为低电平将立即停止任何转换过程。 通过强制CS高电平来启动新的转换过程。

强制CS为低电平以输出SO引脚上的第一位。 完整的串行接口读取需要16个时钟周期。在时钟的下降沿读取16个输出位。第一位D15是伪符号位,始终为0。D14–D3位包含从MSB到LSB的转换温度.当热电偶输入断开时,D2位通常为低电平,而变为高电平。 D1为低电平,为MAX6675提供器件ID,D0为三态。图1a是串行接口协议,图1b显示了串行接口时序。 图2是SO输出。

20201214093003313.png

20201214093016851.png

20201214093029627.png

2.开放式热电偶

D2位通常为低,如果热电偶输入断开,则位为高。为了允许打开的热电偶检测器工作,T-必须接地。 接地应尽可能靠近GND引脚。

3.噪音考虑

MAX6675的精度容易受到电源耦合噪声的影响。 通过在器件的电源引脚附近放置一个0.1pF陶瓷旁路电容器,可以最大程度地减小电源噪声的影响。

20201214094048568.png

4.散热考虑

在某些应用中,自热会降低MAX6675的温度测量精度。温度误差的大小取决于MAX6675封装的导热系数,安装技术以及气流的影响。 使用较大的接地层可提高MAX6675的温度测量精度。遵循以下预防措施也可以提高热电偶系统的精度:

  • 使用尽可能大的电线,该电线不会使热量远离测量区域。
  • 如果需要细线,则仅在测量区域内使用,对没有温度梯度的区域使用延长线。
  • 避免机械应力和振动,以免拉紧电线。
  • 使用长热电偶导线时,请使用双绞线延长线。
  • 避免陡峭的温度梯度。
  • 尽量在温度范围内使用热电偶线。
  • 在恶劣的环境中使用合适的护套材料来保护热电偶线。
  • 仅在低温且梯度小的区域内使用延长线。
  • 保留事件日志并连续记录热电偶电阻。

    5.降低噪声的影响

    输入放大器(A1)是低噪声放大器,旨在实现高精度输入感测。 保持热电偶和连接线远离电气噪声源。

STM32 HAL库参考程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define Cs_Down()   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
#define Cs_Up() HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
double ReadMax6675()
{
uint8_t tmp[2];
Cs_Down();
uint8_t txData[1]={0xff};

HAL_SPI_TransmitReceive(&hspi1,&txData[0],&tmp[0],1,0xff);
HAL_SPI_TransmitReceive(&hspi1,&txData[0],&tmp[1],1,0xff);
Cs_Up();
__IO double temp=0;
__IO uint16_t tmp1=0;
tmp1=(tmp[0]<<8)+tmp[1];
tmp1=tmp1>>3;
temp=tmp1*0.25;
return temp;
}

Arduino 参考程序

需要用到max6675的库https://github.com/adafruit/MAX6675-library.git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "max6675.h"

int thermoDO = A3;
int thermoCS = A4;
int thermoCLK = A5;

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

void setup() {
Serial.begin(9600);

Serial.println("MAX6675 test");
// wait for MAX chip to stabilize
delay(500);
}

void loop() {
// basic readout test, just print the current temp

Serial.print("C = ");
Serial.println(thermocouple.readCelsius());
Serial.print("F = ");
Serial.println(thermocouple.readFahrenheit());

// For the MAX6675 to update, you must delay AT LEAST 250ms between reads!
delay(1000);
}