卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章1829本站已运行4109

NTC电阻反推温度计算

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);

}
 
卓越飞翔博客
上一篇: 油猴解析多个学术网站(新增皮书)文章下载链接
下一篇: php 实现txt转excel脚本

相关推荐

留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏