2024-09-01
售卖作品
00

目录

最终成果展示(STM32F103C8T6)
要点1:参考电阻
要点2:接线
要点3:心得体会
要点4:MAX31865模块的关键细节
程序代码

最终成果展示(STM32F103C8T6)

在这里插入图片描述

要点1:参考电阻

通常PT100的参考电阻选择400欧姆,但板子上给的是430欧姆。所以程序里需要设置参考电阻为430。为什么选430欧姆呢?因为我猜400欧姆的精密电阻不常见。

c
#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这两个8位寄存器中。可以设置错误报警的上下限,如PT100测温范围为-200℃到420℃,用户可设置下限报警值为-180℃,上限报警值为400℃。当max31865转换RTD后,如果结果超出设置范围,就会产生错误标志,错误标志存在0x07寄存器中。

在这里插入图片描述

读取温度过程:

  1. 读取0x07寄存器,确认其值为0x00,即无错误标志。如果有错误标志,0x07寄存器中的某个值为1。

在这里插入图片描述

错误标志可以手动清除,但如果问题未解决,下次检测时标志还是会被模块拉起。

c
//清除错误 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); }
  1. 如果通过错误检测,开始下面的过程。向0x80写入配置,进行一次转换(One_Shot_Conversion),等待DRDY引脚变为低电平(表示转换结束)。然后读取0x01和0x02两个8位寄存器,0x02的最低位装有错误标志,若无错误即可利用0x01和0x02合成电阻数值。
c
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) { // Handle error } else { temperature = (int)Get_temperature(); }
  1. 合成电阻
c
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 */
  1. PT100电阻转换为温度

这个步骤有多种转换公式,具体根据需求自行选择。

程序代码

读取PT100和PT1000:

在这里插入图片描述

cpp
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!