用二阶导数切线法,根据电阻接近零度电阻程度,用1到3次计算可得到较为精确的温度值:
1. 先用线性公式得到一个粗略的温度:
t1 = (Rt / R0 - 1) / A
计算t1的阻值:
0度以上用公式:Rt1=R0 * (1 + A * t1 + B * t1 * t1);
0度以下用公式:Rt1=R0 * [1 + A * t1 + B * t1 * t1 + C * (t1 - 100) * t1 * t1 * t1];
如果 |Rt1 - Rt| < 0.001,t1 就是所要的温度,反之继续进行下面的计算:
2. 计算一阶导数和二阶导数:
如果 Rt ≥ R0
t1' = 1 / [R0 * (A + 2 * B * t1)]
t1'' =-2 * B * R0 * t1' * t1' * t1'
如果 Rt < R0
t1' = 1 / [R0 * (A + 2 * B * t1 - 300 * C * t1 * t1 + 4 * C * t1 * t1 * t1)]
t1''=- R0 * (2 * B - 600 * C * t1 + 12 * C * t1 * t1) * t1' * t1' * t1'
3. 基于 Rt,t1,Rt1 计算近似温度 t2:
t2 = t1 + t1' * (Rt - Rt1) + 0.5 * t1'' * (Rt - Rt1) * (Rt - Rt1),再计算出 t2 对应的电阻 Rt2。
4. 如果 |Rt2 - Rt| < 0.001,t2 就是所要的温度,反之再从第二步开始计算 t2 的一二阶导数,最终得出精确的温度值。
这个算法涵盖全量程,可以把这个算法写成程序。