通常PT100的参考电阻选择400欧姆,但板子上给的是430欧姆。所以程序里需要设置参考电阻为430。为什么选430欧姆呢?因为我猜400欧姆的精密电阻不常见。
c#define REF_RES 430
temps = temps / 32768.0 * REF_RES; /* Here is the rtd R value; */
板子上有三个位置用于设置线的。
四线接法:
三线接法:
遇到问题时一定要仔细查找板子的设计资料,否则容易走弯路。PT100电阻本身会随温度变化,可以直接用万用表测其电阻。
通过SPI对寄存器进行读写,寄存器如下图所示。配置寄存器时,读用0x00,写用0x80。转换后的RTD数值存放在0x01和0x02这两个8位寄存器中。可以设置错误报警的上下限,如PT100测温范围为-200℃到420℃,用户可设置下限报警值为-180℃,上限报警值为400℃。当max31865转换RTD后,如果结果超出设置范围,就会产生错误标志,错误标志存在0x07寄存器中。
读取温度过程:
错误标志可以手动清除,但如果问题未解决,下次检测时标志还是会被模块拉起。
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);
}
cMAX31865_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();
}
cdata_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 */
这个步骤有多种转换公式,具体根据需求自行选择。
读取PT100和PT1000:
cpphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!