当前时间:
2014年2月7星期五下午9:10:34
当前位置:首页  ?  新闻中心
NTC热敏电阻(温度传感器)电路基础知识发布
来源:本站  更新时间:2018-12-26 09:43:05  查看次数:

彩之家彩票 www.pmsx123.net      

 
 ??????Arduino????o|?? ?????¨?????-?????μé??????¨????

  NTC热敏电阻电路相对简单,价格低廉,组件精确,可以轻松获取项目的温度数据。远程气象站,新能源电池温度?;?,家用电器,工业自动化系统以及设备控制和?;さ缏肥侨让舻缱枥硐氲囊恍┯τ?。它们是模拟传感器,因此与需要特殊库和大量代码的数字温度传感器相比,代码相对简单。

  在本文中,热敏电阻生产厂家富温传感工程师将解释热敏电阻的工作原理,然后将向您展示如何设置一个带有Arduino的基本NTC热敏电阻电路,该电路将温度读数输出到串行监视器。

  

NTC热敏电阻的工作原理

热敏电阻是可变电阻,可随温度改变其电阻F发生变化。它们按其电阻对温度变化的响应方式进行分类。负温度系数(NTC)热敏电阻中,电阻随温度的升高而降低。正温度系数(PTC)热敏电阻中,电阻随温度的升高而增加。

NTC热敏电阻是最常见的,这是我们将在本教程中使用的类型。NTC热敏电阻由半导体材料(例如金属氧化物或陶瓷)制成,其被加热和压缩以形成温度敏感的导电材料

导电材料包含允许电流流过它的电荷载流子。高温导致半导体材料释放更多电荷载流子。在由氧化铁制成的NTC热敏电阻中,电子是电荷载体。在氧化镍NTC热敏电阻中,电荷载流子是电子空穴。

Arduino??-?????μé??????o|?? ?????¨????????μè·ˉ

 

热敏电阻基本电路

让我们构建一个基本的热敏电阻电路,看看它是如何工作的,这样你就可以在以后将它应用到其他项目中。

 

由于热敏电阻是可变电阻,我们需要在计算温度之前测量电阻。但是,Arduino不能直接测量电阻,它只能测量电压。
 

Arduino将测量热敏电阻和已知电阻之间的电压。这被称为分压器。分压器的等式是:
V_ {out} = V_ {in} \ times???\ frac {R2} {R1 + R2}???

就热敏电阻电路中的分压器而言,上述等式中的变量为:
V_ {out}???\ Voltage \????o?\ thermistor \???\ known \ resistor \\ V_ {in}???\ V_ {cc}???\ ie \ 5V \\ R1???\ Known \ resistor \ value \\ R2???\ Resistance \??-?????μé??

这个等式可以重新排列和简化,以解决R2,即热敏电阻的电阻:
R2 = R1 \??????\ frac {V_ {in}} {V_ {out}}  -  1???

最后,Steinhart-Hart方程  用于将热敏电阻的电阻转换为温度读数。

 

连接电路

将热敏电阻和电阻连接到Arduino,如下所示:
Arduino??-?????μé????o???è????????

 

电阻值应大致等于热敏电阻的电阻值。在这种情况下,我的热敏电阻的电阻是100K欧姆3950,所以我的电阻也是100K欧姆。

热敏电阻的制造商富温传感会提供NTC热敏电阻的R/T特性表给到您,可以按照的  Arduino Ohm Meter教程,使用Arduino制作欧姆表。您只需知道热敏电阻的大小。例如,如果您的热敏电阻电阻为34,000欧姆,则它是一个10K3435热敏电阻。如果它是340,000欧姆,它是一个100K的温控器。

串行监视器温度读数输出代码

连接上面的电路后,将此代码上传到Arduino,将温度读数输出到华氏温度的串行监视器:

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
 
void setup() {
Serial.begin(9600);
}
 
void loop() {
 
  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 
 
  Serial.print("Temperature: "); 
  Serial.print(T);
  Serial.println(" F"); 
 
  delay(500);
}

要以摄氏度显示温度,只需在行的开头插入两条正斜杠(“//”)即可注释掉第18行。

该程序将同时显示摄氏度和华氏度:

int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
 
void setup() {
Serial.begin(9600);
}
 
void loop() {
 
  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0)/ 5.0 + 32.0; 
 
  Serial.print("Temperature: "); 
  Serial.print(Tf);
  Serial.print(" F; ");
  Serial.print(Tc);
  Serial.println(" C");   
 
  delay(500);
}

 

温度读数的LCD输出代码

要将温度读数输出到  16X2 LCD,请按照我们NTC热敏电阻(温度传感器)电路基础知识的教程,如何在Arduino上设置LCD显示器,然后将此代码上传到电路板:

#include <LiquidCrystal.h>
 
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() {
Serial.begin(9600);
}
 
void loop() {
 
  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  T = T - 273.15;
  T = (T * 9.0)/ 5.0 + 32.0; 
 
  lcd.print("Temp = ");
  lcd.print(T);   
  lcd.print(" F");
  
  delay(500);            
  lcd.clear();
}

 

NTC热敏电阻典型应用参考电路:




 

  


 

Copyright?版权所有:深圳市富温传感技术有限公司 电话:0755-29402582  
全国免费电话:4009605108 邮箱:ntcfuwen@foxmail.www.pmsx123.net 地址:深圳市宝安区沙进街道万丰荣泰科技园B栋5楼 粤ICP备:13020894号