import 'dart:ffi';
import 'dart:math';
/// NTC是Negative Temperature Coefficient的缩写,意思是负的温度系数,泛指负温度系数很大的半导体材料或元器件
/// 所谓NTC热敏电阻器就是负温度系数热敏电阻器
/// RN : 在额定温度TN (K) 时的NTC热敏电阻阻值
/// T : 规定温度 (K)
/// B : NTC热敏电阻的材料常数,又叫热敏指数
/// exp : 以自然e为底的指数(e = 2.71828...)
/// T1T2 Rt1
/// B = ------- ln -------
/// T2 - T1 Rt2
/// RT2 : 温度 T2 (K) 时的零功率电阻值
/// T1,T2: 两个被指定的温度(K)
///
/// NFC电阻反推温度计算公式 :
///
/// ADC采样电压 = 基准电压 / 4096 * ADC采样电压
/// ADC对应电阻 = 分压电阻 * ADC采样电压 / (基准电压 - ADC采样电压)
/// 标准温度(25,36,50) = 273.15 + T
/// B1 = ln(R2/R1)/(1/T2 - 1/T1) B1 = ln(R3/R1)/(1/T3 - 1/T1)
/// Avg B = (B1 + B2) / 2
/// T = 1/ln()
///
///
class NTC {
///采样电压 Voltage of sampling
///分压电阻 voltage-splitter resistance
static int s_vpr = 60000;
///基准电压 Reference voltage
static int s_rv = 3;
///
static double s_B = 0.0;
static double s_R1 = 0.0;
static double s_T1 = 298.15;//default 25
static double s_T2 = 309.15;//default 36
static double s_T3 = 323.15;//default 50
static double Temp(int adc){
var temp = 0.0;
double res = ValueOfResistance(adc);
temp = 1.0 / (log(res/s_R1) /s_B + 1/s_T1) - 273.15;
return temp;
}
///采样电压
static double SamplingVoltage(int adc)
=> s_rv / 4096 * adc;
///电阻
static double ValueOfResistance(int adc)
=> s_vpr * SamplingVoltage(adc) / (s_rv - SamplingVoltage(adc));
///B
static double B(double r1,double r2,double t1, double t2)
=> log(r2/r1)/(1/t2 - 1/t1);
}
NTC电阻反推温度计算
相关推荐
标签:
留言与评论(共有 0 条评论) |