#include "Rt10K3435.h"
const unsigned int RtTable[50][2]={\
{0,2749},{1,2632},{2,2521},{3,2415},{4,2314},{5,2218},{6,2126},{7,2039},{8,1956},{9,1877},\
{10,1801},{11,1729},{12,1660},{13,1595},{14,1532},{15,1472},{16,1415},{17,1360},{18,1308},{19,1257},\
{20,1210},{21,1164},{22,1120},{23,1078},{24,1038},{25,1000},{26,963},{27,928},{28,894},{29,862},\
{30,830},{31,801},{32,773},{33,745},{34,719},{35,694},{36,670},{37,647},{38,624},{39,603},\
{40,582},{41,563},{42,540},{43,526},{44,508},{45,491},{46,475},{47,460},{48,44},{49,430}};
unsigned int Rttempruture(unsigned int ad)
{
unsigned char i;
static unsigned int Te;
unsigned int Rt;
//插值算法
/*
* 实际温度= 查表得到的对应温度 + ((查表得到的电阻值-当前计算到的电阻值)+5)/(查表电阻值-下一级温度对应的电阻值)
* 使用时注意大小顺序,如果热每电阻装在高端,则式子后半部分需要相应调整,总之为当前超过查表的部分的差除查表所得的两级之间的差。
*/
//Rt=Rup*ad/(1024-ad);
Rt=(1000*(long)ad)/(1024-ad);//计算得到阻值
for(i=0;i<50;i++)
{
if((Rt>=(RtTable[i][1]))&&(Rt<(RtTable[i-1][1])))
{//把计算得到的电阻值与二维表进行对比,
//Te = RtTable[i][0];//这是直接取温度
Te = RtTable[i][0]*10+((Rt-RtTable[i][1])*10+5)/(RtTable[i][1]-RtTable[i+1][1]);
//Te = Te-27;//根据实际来修正
//插值温度算法,把数据全部扩大10倍,使小数变为整数,
//+5是四舍五入
break;
//对应输出二维数组的第0位,即温度值
}
}
return Te;
}
标签:Rt,ad,int,代码,unsigned,电阻值,Rt10K3435,查表
From: https://www.cnblogs.com/goodgongdstudy/p/17613374.html