Rt10K3435 代码

奋斗小青年1 / 2023-08-08 / 原文

   #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;
}