含程序 区间线性回归 巧用Excel求解NTC 10K 温度传感器 (升级版

@请叫我常思聪
NTC 10K 温度传感器快速读取(自定义库)区间线性回归(升级版)(开源下载)
(上一版本的区间线性回归原理请移步↓)
温度传感器快速读取(C程序)区间线性回归
升级之后的用法
可以安装在内直接使用,并且制作了使用例程
从原来的函数调用改为自定义库
#include //分压电阻为 4.7K//连接方式:GND----|4.7K|--|--|NTC10K|---+5V//|-A0→读取AD值NTC10K T0(A0);//NTC10K T1(A1);//NTC10K T2(A2);可新增对象//NTC10K T3(A3);float T[8];int AD;void setup() {// put your setup code here, to run once:Serial.begin(9600);}void loop() {// put your main code here, to run repeatedly:T[0] = T0.AD_to_temp();AD = analogRead(A0);Serial.print("AD value is:");Serial.print(AD);Serial.print("");Serial.print("temperature is:");Serial.println(T[0],2);delay(100);}
效果演示
一、上一代缺陷 1. 函数调用不方便
× 原来的文件要调用还要将整个库添加到项目文件夹中;
√ 升级后直接将库文件复制进安装根目录下库文件夹 直接在中打开示例 。
2. 温度解算效率低
× 原来的文件解算时是以温度的最高位作为索引,在解算时执行太多的 case
float AD_to_temp(int AD){float T0,K_Value,b_Value;if(AD > index[0]) {AD = index[0];}if(AD < index[12]){AD = index[12];}switch(AD/100){//百位索引值case 9:K_Value = http://www.kingceram.com/post/K[0];b_Value = b[0];break;case 8:if(AD index[9]) {K_Value = http://www.kingceram.com/post/K[8];b_Value = b[8];}else if(AD> index[10]){K_Value = http://www.kingceram.com/post/K[9];b_Value = b[9];}else if(AD> index[11]){K_Value = http://www.kingceram.com/post/K[10];b_Value = b[10];}else{K_Value = K[11];b_Value = b[11];} break;case 0: K_Value = K[11];b_Value = b[11];break;}T0 = b_Value - K_Value*AD;return T0;}
【含程序 区间线性回归巧用Excel求解NTC 10K 温度传感器 (升级版】√升级后的解算方式为差值排序算法,排序后进入区间内进行线性回归 。
float NTC10K::AD_to_temp(){float T;int AD_value;char i;AD_value = http://www.kingceram.com/post/analogRead(this->Analog_pin);if(AD_value < index[0] && AD_value > index[10]){for(i=0;i<=9;i++){if(AD_value<=index[i] && AD_value>index[i+1]) //排序{if(i == 8) //特例二项拟合{T = AD_value*AD_value;T = 0.0013*T;T = T+189.37;T = T-0.7403*AD_value;}else{//线性拟合T = b[i] -K[i]*AD_value;}break;//跳出循环}}}else{if(AD_value >index[0]) {T = -30;}if(AD_value <=50){T = 168;}}return T;}
3. 程序可读性低
× 原来的文件case中还有多重分支结构难于理解
√ 升级后解算方式改为排序→易于理解
4.解算温度的范围变宽
× 原来的由于分压电阻原因温度只能支持-20℃–100℃;
√ 升级后分压电阻在10位AD转换下采用4.7K可以达到-20℃–167℃ 。(之后的AD采样值就不为一对一函数关系)
5. 程序使用麻烦(“长”得不官方)
× 原来使用方式为个人库
√ 升级后为自定义库 。(库格式 有高亮设置)