NTC和温度的关系

一、NTC介绍

NTC(nagative temperature coefficient)负温度系数的热敏电阻。随着温度的升高,电阻越来越小

二、NTC和温度的关系 

生产NTC的厂家会提供一个RT表格,里面记录了温度和电阻的关系,他们的关系是一一对应的,生成的曲线是非线性的

NTC测量温度的原理,看下图表格,左边电路图可以简化成右边的电路图,我们已知了R1,VIN(VREF)和Vout的的值(Vout的值可以测出来),然后在参考RT表格,我们就可以明确的知道此时的温度是多少。

三、代码编写(查表法)

针对温度需要显示到小数点后1位,如果只需要显示到整数,那么将二分查找函数返回条件修改会返回如果找不到固定值,则返回最接近目标值的下标

#include <stdio.h>

int arr[201] = {
    3003200, 2818890, 2646990, 2486590, 2336860, 2197030, 2066390, 1944290, 1830130, 1723340, // -40℃~-31℃
    1623400, 1529830, 1442200, 1360100, 1283160, 1211020, 1143350, 1079860, 1020270, 964310,  // -30℃~-21℃
    911740, 862410, 816020, 772390, 731320, 692670, 656270, 621990, 589680, 559230,           // -20℃~-11℃
    530520, 503380, 477770, 453600, 430790, 409240, 388890, 369660, 351480, 334300,           // -10℃~-1℃
    326560, 310414, 295155, 280730, 267087, 254182, 241970, 230410, 219466, 209100, 198920,   // 0℃~10℃
    187490, 178990, 170920, 163260, 155980, 149050, 142460, 136190, 130220, 124550,           // 11℃~20℃
    119140, 114000, 109110, 104440, 100000, 95745, 91693, 87832, 84154, 80648,                // 21℃~30℃
    77305, 74118, 71078, 68177, 65410, 62768, 60247, 57838, 55538, 53341,                     // 31℃~40℃
    51242, 49235, 47317, 45483, 43728, 42051, 40445, 38909, 37438, 36030,                     // 41℃~50℃
    34701, 33427, 32204, 31032, 29907, 28827, 27791, 26797, 25842, 24925,                     // 51℃~60℃
    24044, 23199, 22386, 21605, 20855, 20134, 19441, 18774, 18133, 17517,                     // 61℃~70℃
    16914, 16334, 15777, 15241, 14725, 14230, 13753, 13294, 12852, 12427,                     // 71℃~80℃
    12018, 11624, 11244, 10879, 10527, 10191, 9867, 9555, 9255, 8965,                         // 81℃~90℃
    8686, 8418, 8159, 7909, 7668, 7436, 7211, 6995, 6787, 6585,                               // 91℃~100℃
    6392, 6205, 6025, 5850, 5682, 5519, 5361, 5209, 5061, 4919,                               // 101℃~110℃
    4781, 4647, 4518, 4393, 4272, 4155, 4042, 3932, 3826, 3723,                               // 111℃~120℃
    3623, 3526, 3432, 3342, 3254, 3168, 3084, 3003, 2925, 2849,                               // 121℃~130℃
    2775, 2704, 2634, 2567, 2502, 2438, 2377, 2317, 2259, 2202,                               // 131℃~140℃
    2147, 2094, 2043, 1992, 1944, 1896, 1850, 1805, 1762, 1719,                               // 141℃~150℃
    1678, 1638, 1599, 1561, 1524, 1488, 1453, 1419, 1386, 1354                                // 151℃~160℃
};

// 数组从大到小排列,二分查找找不到对应值,返回偏大值的下标
int search(int arr[], int size, int target)
{
    int left = 0;
    int right = size - 1;
    int middle = 0;

    if (size <= 0) {
        return -1;
    }
    if (arr[right] >= target) {
        return right;
    }
    if (arr[left] < target) {
        return -1;
    }

    while (right >= left)
    {
        middle = (left + right) >> 1;
        if (target < arr[middle])
        {
            left = middle;
        }
        else if (target > arr[middle])
        {
            right = middle;
        }
        else
        {
            return middle;
        }
        if (right - left == 1) // 找不到目标值且即将返回-1
        {
            return left;
        }
    }
    return -1;
}


int main() {
    int indexDot=0,temp=0;//temp单位 0.1摄氏度
    int index = search(arr,sizeof(arr)/sizeof(arr[0]), 100000);
    if(index != -1)
    {
        indexDot = (arr[index] - 100000) * 10 / (arr[index] - arr[index + 1]);
        temp = (index - 40) * 10 + indexDot;
        printf("index = %d indexDot = %d temp = %d\r\n", index, indexDot, temp);
    }
    else
    {
        temp = 2000;//非法值
    }
    
}


### NTC热敏电阻阻值温度关系 对于NTC热敏电阻而言,其阻值\( R \)随着温度\( T \)的变化而显著改变。这种变化遵循指数规律,并可以通过Steinhart-Hart方程或简化版的Beta参数方程来描述。 #### Beta 参数方程 一种常用的表达形式是基于两个固定温度点间的贝塔(\( B \))参数模型: \[ R(T)=R_0e^{B\left ( \frac{1}{T}-\frac{1}{T_0} \right ) } \] 这里, - \( R(T) \)是在绝对温度\( T \)[K]下的电阻; - \( R_0 \)是指定参考温度\( T_0 \)[K]处的标准电阻; - \( B \)代表材料常数,在一定范围内近似恒定;然而值得注意的是,不同温度间隔内选取的不同两点所得到的具体数值有所差异[^1]。 此公式适用于较窄的工作温区内的线性化处理,当涉及到更宽泛的应用场景时,则需采用更加精确的方法来进行数据拟合。 #### Steinhart-Hart 方程 为了获得更高精度的结果,通常推荐使用Steinhart-Hart多项式: \[ \frac{1}{T}=A+Bln(R)+Cl(n)^2+D(ln(R))^3 \] 其中\( A,B,C,D \)均为通过实验测定得出的经验系数。该方法能够更好地匹配实际测得的数据集,尤其适合于跨越较大范围的情况。 针对具体应用场合下如何绘制NTC热敏电阻的阻抗—温度特性图谱,可以利用MATLAB软件实现对已知样本点的有效逼近并生成相应的图形展示。下面提供一段简单的Matlab代码片段用于模拟这一过程: ```matlab % 定义给定点位对应的电阻值数组以及对应摄氏度单位的温度向量 Temp=[0 25 50 70]; % 温度列表(℃) Resistances=[319086 99003 35295 17017]; % 对应各温度下的电阻值(Ω) % 将温度由摄氏度转为开尔文 Temperature_Kelvin=Temp+273.15; % 使用polyfit函数执行最小二乘法拟合并获取回归系数 p=polyfit(log(Resistances),1./Temperature_Kelvin,1); % 计算斜率b截距a slope=-p(1); intercept=p(2); % 显示beta值 disp(['Estimated beta value:',num2str(slope)]); % 绘制原始散点图加上拟合直线 figure; plot(Temp,log(Resistances),'o'); hold on; fitted_line=@(x)slope*x+intercept; X_fit=linspace(min(Temp)-5,max(Temp)+5,100)'; Y_fit=fitted_line(X_fit); plot(X_fit,Y_fit,'r','LineWidth',2); xlabel('Temperature (\circ C)'); ylabel('Ln(Resistance)'); title('Logarithmic Fit of Resistance vs Temperature for an NTC Thermistor'); legend({'Data Points','Fitted Line'},'Location','BestOutside'); grid minor; ``` 上述脚本实现了从已有离散测量结果出发构建数学模型的过程,同时也直观展现了两者间存在的内在联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值