max31865模块 PT100测温 PT1000测温 接线说明要点说明 使用说明

国内资料少,找到个非常详细的资料:
https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier?view=all

最后成果(STM32F103C8T6):
在这里插入图片描述

要点1 参考电阻

一般PT100选400欧姆参考电阻,但是板子上给的是4300,也就是430欧姆。程序里需要设置参考电阻为430。为啥选4300呢,因为我猜400欧姆没有精致电阻生产。
#define REF_RES 430

 temps = temps / 32768.0 * REF_RES;        /* Here is the rtd R value; */

在这里插入图片描述

要点2 接线

板子上有三个位置用于设置线的。
在这里插入图片描述
在这里插入图片描述
四线最后这样:
在这里插入图片描述
三线这样:
在这里插入图片描述

要点3 体会

遇到问题一定要好好找找设计这块板子的资料,不然自己瞎转悠。
PT100电阻本身就是一个随温度变化的电阻,可以直接用万用表测其电阻。

要点4 max31865模块重要细节

SPI对其寄存器进行读写,寄存器如下图。
配置寄存器,想读就读0x00,想写就写0x80。
转化后的RTD数值存放于0x01和0x02这2个8位寄存器。
可以设置错误报警门限上限和下限,通俗来说,比如一个PT100能测温范围是-200℃到420℃,用户想设置下限报警值为-180℃,上限报警值为400℃,那么当max31865转换RTD后,会将0x01和0x02寄存器结果与上限值和下限值比较,如果不在设置的范围,就会产生错误标志。
错误标志存在0x07寄存器中。
在这里插入图片描述
读取温度过程:
(1)读取0x07寄存器,看是不是等于0x00,即是说无错误标志。有错误标志时,0x07寄存器里面某个值就是1。
在这里插入图片描述
错误标志可以手动清除,但如果没实际解决问题,下次检测这个标志还是会被模块拉起。

//清除错误
void maxim_clear_fault_status(void)
{
 uint8_t uch_config;
 
  uch_config=MAX31865_SB_Read(0x00);
  uch_config&=0xd3;
  uch_config|=0x02;
  MAX31865_SB_Write(0x80, uch_config);  
}

(2)如果能过错误检测,就开始下面的过程。向0x80写入配置,这里写入的是说进行一次转换(One_Shot_Conversion ),然后等待DRDY 引脚变成低电平(意味转换结束)。然后读取0x01和0x02这2个8位寄存器,0x02的最低位装的是错没错的标志,没错的话就可以利用0x01和0x02这2个8位寄存器合成电阻数值。

MAX31865_SB_Write( 0x80, ON + One_Shot_Conversion + RTD_3wire + Filter_50Hz );  
while ( DRDY == 1 );                                                                       
auch_rtd[0]	= MAX31865_SB_Read( 0x01 );                                     
auch_rtd[1]	= MAX31865_SB_Read( 0x02 );                                     
if ( (auch_rtd[1] & 0x01) == 0x01 )                                             
{
}else{
	tempture = (int)Get_tempture();                                              
}

(3)合成电阻

data_temp	= (dtemp[0] << 8) | dtemp[1];/* Get 15Bit DATA; */ 
data_temp	>>= 1;/* Get 15Bit DATA; */ 

temps = temps / 32768.0 * REF_RES;        /* Here is the rtd R value; */

(4)PT100电阻变成温度
这个就各显神通了,有各种各样的转换公式。

猜你喜欢

转载自blog.csdn.net/x1131230123/article/details/105446353