外设驱动库开发笔记36:NTC负温度系数热电阻测温驱动
时间:2022-09-08 18:30:00
??温度检测在嵌入式产品中非常常见。当成本敏感且精度要求低时,NTC电阻是个不错的选择。在本文中,我们将讨论如何设计和实现一般性NTC为了在后续项目中更方便地重用驱动。
1、功能概述
??NTC是指热敏电阻现象和具有负温度系数的材料。NTC热敏电阻由锰、铜、硅、钴、铁、镍、锌等金属氧化物制成。其电阻率和材料常数随材料成分比例、烧结氛围、烧结温度和结构状态而变化。以碳化硅、硒化锡、氮化钽为代表的非氧化物系NTC热敏电阻材料。因此,在实现小型化的同时,还具有电阻值、温度特性波动小、对各种温度变化响应快的特点,可进行高灵敏度、高精度的检测。
??NTC 热敏电阻是典型的具有温度敏感性的半导体电阻。根据标准IEC 60539-1的规定,NTC电阻与温度之间存在以下关系曲线:
??对于NTC这种电阻与温度的关系也可以用类似的舒徐公式来表示:
??其中,R绝对温度T时,NTC零功率电阻。Ra在绝对温度下Ta时,NTC零功率电阻。
??B值敏电阻器的热敏常数为负温度系数,每种既定材料只有一个B值。B在测量25摄氏度和50摄氏度(或85摄氏度)时,可以计算值。B该值与产品的电阻温度系数正相关,即B值越大,其电阻温度系数越大。
2.驱动设计与实现
??NTC我们已经理解了测温元件的原理,在此基础上,我们可以实现其测温驱动程序。
2.1、对象定义
??我们还是将军NTC作为对象,首先定义对象类型。对于不同的对象NTC有三个参数与自身密切相关,或者一旦制造就不会改变。即B值、标称温度和标称电阻。B值与材料有关。标称温度通常设置为25℃,标称电阻为标称温度下的电阻。因此,我们定义它NTC对象类型如下:
/* 定义NTC电阻测温对象 */ typedef struct NTCObject{ float BValue; //NTC的B常数 float nominalT; //NTC标称温度(摄氏度) float nominalR; //NTC标称电阻 }NTCObjectType;
??在一个对象使用之前必须对其实现初始化配置。主要是对指针进行检查及对属性变量和操作指针进行赋值。
/* NTC对象初始化函数 */ void NTCInitialization(NTCObjectType *ntc,float bValue,float nt,float nr) { if(ntc==NULL) { return; } ntc->BValue=bValue; ntc->nominalT=nt; ntc->nominalR=nr; }
2.2、对象操作
??在我们实现对象的定义和初始化后,我们可以操作对象来获得温度值。那么如何操作对象来获得温度值呢?我们前面提到过,NTC是一种随温度上升时,电阻值呈指数关系减小的热敏电阻。而这种指数关系就是我们前面提到的电阻与温度的关系表达式。于是我们就可以根据这一表达式推导出有电阻计算温度的公式:
??根据以上公式我们可以通过检测电阻来计算温度:
/*公式法计算NTC温度值*/ float NTCTemperature(NTCObjectType *ntc,float resistance) { float temp; float result=0.0; result=resistance/ntc->nominalR; result=(log(result)/ntc->nominalR) (1/(ntc->nominalT KELVIN_CONSTANT)); temp=1/result-KELVIN_CONSTANT; return temp; }
3.使用驱动器
??接下来,使用我们之前开发的驱动程序来实现NTC检测温度。首先需要使用。NTCObjectType对象类型声明NTC对象变量。
??NTCObjectType ntc;
??该对象变量必须初始化才能使用。因此,我们使用初始化函数初始化该变量:
??NTCInitialization(&ntc,bValue,nt,nr);
??若有多个NTC对象可以通过数组等方式处理。初始化完成后,我们可以操作对象。我们通常使用电桥电路进行检测NTC测量当前温度的电阻。电路图如下:
??在上图中,我们通过电桥收集NTC由于电阻的变化会导致电阻的变化C两端电压的变化。温度越高NTC电阻越小,C两端的电压差越大,反之亦然。当我们使用25摄氏度时,电阻值为10K的NTC。不难推断出输出电压和输出电压NTC电阻值的关系。当输出电压为0时V时,电阻约25K,检查表显示温度约为5摄氏度。当输出电压为5时V当电阻值接近0时,检查表显示在100摄氏度以上。这就是电路的理论测量范围。
??在检测到当前电阻后,我们调用它NTCTemperature(NTCObjectType *ntc,float resistance);计算相应温度值的函数。
4、应用总结
??使用NTC作为温度测量和温度控制元件,结果与预期基本一致。然而,温度控制的精度和响应速度略有不足,这足以用于一般应用。在要求较高的情况下,我们也可以通过软件提高温度控制精度。
??使用NTC作为温度测量元件,需要注意的是,由于电阻值和温度是非线性的,我们解非线性方程可能会造成很大的误差,所以温度测量有时会有很大的误差。NTC温度测量范围非常有限,因此虑。NTC存在较大的个体差异。当然作为一般的应用这些都不是问题。