当前时间:
2014年2月7星期五下午9:10:34
当前位置:吉利彩票  »  吉利彩票登陆
NTC(温度)热敏电阻使用Arduino IDE进行模拟读取
来源:本站  更新时间:2019-01-17 16:49:25  查看次数:

     在本文中,我们将向您展示使用esp8266和ntc(热敏电阻)传感器读取温度。

注意: 
您需要具有ADC引脚的ESP板。只有ESP8266 - 07和ESP8266 - 12板具有ADC引脚。

我们使用:
-ESP8266 - 07 
-10k NTC -150k 
欧姆电阻器。

我们将使用非常简单和基本的电阻 - ntc电路。电路如图1所示。
 


通常,如果您在互联网上搜索,您将看到使用10k ntc和10k电阻的电路。在我们的电路上使用150k电阻。

在图2中,有一个图表说明了ntc传感器的电阻和温度。
该传感器表示NTC电阻器的高值约为18-20k,而室温为3-4k。


如果我们使用10k NTC的10k电阻,

假设
NTC最大电阻= 18kohm 
NTC最小电阻= 3k欧姆
VCC = 3.3V

 
 
 
这是问题所在。ESP8266 ADC引脚参考电压为1V。
这意味着您的模拟电压最高值必须为1V。因此,出于这个原因,我将使用150k电阻和最大150k电阻,最小模拟值低于。

 
 
 
 

您可以使用较低的电阻来获得更高的温度分辨率。在我的项目中,温度恢复并不是很重要。

ESP8266每伏特模拟分辨率:

1V = 1024 
1/1024 = 0.00097 V分辨率。

0.3535 V / 0.00097 V = 364 
0.0647 V / 0.00097 V = 66 

这意味着,我们有298个不同的温度值。现在我们已经解决了硬件问题。但是使用这个解决方案,我们遇到了软件问题。您可以在互联网上找到的功能是10k ntc和10k电阻,但没有足够的解释。

首先,

我们需要找到NTC的顽固抵抗。您可以在Arduino IDE上将ESP8266 ADC引脚用作A0。

简单的模拟读取代码:  

int RawData = analogRead(A0); 

过滤的模拟读取代码:  


int AnalogRead(){ 
  int val = 0; 
  for(int i = 0; i <20; i ++){ 
    val + = analogRead(A0); 
    延迟(1); 
  } 

  val = val / 20; 
  返回; 


在我的项目我使用过滤模拟读码。这非常有效且更稳定。我们在NTC上读取了模拟电压。现在我们将计算NTC的不稳定阻值

void loop(){ 
  double Vcc = 3。3V; 
  unsigned int Rs = 150000; 
  double V_NTC =(double)AnalogRead()
  double R_NTC =(Rs * V_NTC)/(Vcc-V_NTC);  

  Serial.println(R_NTC); 
}

我们已成功完成第一步。我们计算了NTC的阻值。您可以使用万用表检查参数,但现在需要触摸ntc传感器时,ntc电阻会立即改变。

第二步是利用ntc的瞬时阻力来计算温度。

所述斯坦哈特-Hart公式是在不同温度下的半导体的电阻的模型。等式是:


1Ť=3
  • Ť
  • 是温度(以开尔文为单位)
  • [R是阻值 Ť(欧姆)
  • 一个, ,和 CSteinhart-Hart系数 ,它们根据热敏电阻的类型和型号以及感兴趣的温度范围而变化。(应用方程的最一般形式包含a2
    • 术语,但这经常被忽略,因为它通常比其他系数小得多,因此上面没有显示。)

  • A = 0.001129148 
    B = 0.000234125 
    C = 0.0000000876741 

    现在我们已准备好计算温度。

    其中:
    Rs = 150000; // 150k欧姆电阻
    Vcc = 3.3; 

    double Thermister(int val){

      double V_NTC =(double)val / 1024; 
      double R_NTC =(Rs * V_NTC)/(Vcc-V_NTC); 
      R_NTC = log(R_NTC); 
      double Temp = 1 /(0.001129148 +(0.000234125 +(0.0000000876741 * R_NTC * R_NTC))* R_NTC); 
      温度=温度 - 273.15;         
      返回温度; } 

这是完整的项目代码。

#include <math.h> 

unsigned int Rs = 150000; 
double Vcc = 3.3; 
void setup(){ 
  //将您的设置代码放在这里,运行一次:
  Serial.begin(115200); 


void loop(){ 
  //将你的主代码放在这里,重复运行:

  Serial.println(Thermister(AnalogRead())); 
  延迟(1000); 



int AnalogRead(){ 
  int val = 0; 
  for(int i = 0; i <20; i ++){ 
    val + = analogRead(A0); 
    延迟(1); 
  } 

  val = val / 20; 
  返回; 


double Thermister(int val){ 
  double V_NTC =(double)val / 1024;
  double R_NTC =(Rs * V_NTC)/(Vcc-V_NTC); 
  R_NTC = log(R_NTC); 
  double Temp = 1 /(0.001129148 +(0.000234125 +(0.0000000876741 * R_NTC * R_NTC))* R_NTC); 
  温度=温度 - 273.15;          
  返回温度; 

}


注意(重要!):NTC(温度)热敏电阻使用Arduino IDE进行模拟读取,如果要使用不同的R,请确保您的实时模拟输入电压值低于1V。

Copyright©版权所有:深圳市富温传感技术吉利彩票登陆 电话:0755-29402582  
全国免费电话:4009605108 邮箱:ntcfuwen@foxmail.com 地址:深圳市宝安区沙进街道万丰荣泰科技园B栋5楼 粤ICP备:13020894号
桔子彩票官网 桔子彩票注册 博发彩票登陆 广西快3 吉利彩票开户 桔子彩票平台 博发彩票开户 博发彩票登陆 快赢彩票计划 浙江11选5