Tesmistor:测量项目温度所需的一切

热敏电阻

其他文章中也分析了不同的温度传感器。 可以用来测量该温度的元素或设备之一就是 热敏电阻,英文热敏电阻(热敏电阻或温度敏感电阻)。 顾名思义,它是基于一种材料,该材料会根据其承受的温度改变其电阻。

这样,通过一个简单的公式,就可以知道电阻所承受的电压和强度,从而对电阻进行分析,得出 确定温度 根据其规模。 但它不仅用作温度传感器,还可以根据温度改变电路的某些特性,作为防止过电流的保护元件等。

La 传感器类型的选择 您将用于项目的内容取决于您的需求。 您可能对温度传感器感兴趣的其他文章:

热敏电阻简介

热敏电阻符号

在市场上,您可以找到很多 热敏电阻 具有不同的封装和不同的类型。 它们都是基于相同的原理,它们的半导体材料(氧化镍,氧化钴,三氧化二铁等)会随着温度变化而改变,从而改变其内部电阻。

类型

其中 热敏电阻类型 我们可以突出显示两组:

  • NTC(负温度系数)热敏电阻:这些热敏电阻的温度系数为负,随着温度的升高,载流子的浓度也会增加,因此其电阻会降低。 这使它们实用,因此可以用作:
    • 温度传感器在许多电路中都很常见,例如低温电阻检测器,汽车领域中的电机,数字恒温器等测量中。
    • 当使用具有高初始电阻的材料时,启动电流限制器。 当电路接通时电流流过它们时,该设备会因其存在的电阻而发热,并且随着温度的升高,电阻将逐渐减小。 这样可以防止在开始时流过电路的电流过高。
  • PTC(正温度系数)热敏电阻:它们是温度系数为正的其他热敏电阻,具有很高的掺杂剂浓度,使其与NTC的作用相反。 即,与其在温度升高时降低电阻,不如在它们中产生相反的效果。 因此,它们可以用作保险丝以保护过电流电路,也可以用作使CRT或阴极射线管显示器消磁的计时器,以调节电动机的电流等。
NTC热敏电阻图

相对于NTC温度的电阻曲线图

不要将热敏电阻与 RTD(电阻温度检测器)由于与它们不同,热敏电阻不会几乎线性地改变电阻。 RTD是一种电阻温度计,可根据导体电阻的变化来检测温度。 这些金属(铜,镍,铂等)在加热时会产生较大的热搅动,这会散射电子并降低其平均速度(增加电阻)。 因此,与NTC一样,温度越高,电阻越大。

RTD,NTC和PTC都很常见,尤其是NTC。 原因是他们可以通过 非常小的尺寸和非常便宜的价格。 能够 购买像流行的MF52一样的NTC热敏电阻 在像亚马逊这样的商店中只需很少的价格,就像 没有找到产品。,以及其他专门的电子商店。

至于 引脚,它只有两个引脚,就像普通电阻器一样。 如您所知,其连接方式与任何电阻器相同,只是电阻值将不会保持稳定。 有关可接受的温度范围,最大支持电压等的更多信息,您可以查阅数据表 您购买的组件的数量。

与Arduino集成

带有热敏电阻的Arduino原理图

将热敏电阻与Arduino开发板集成,连接再简单不过了。 只需要使该理论和计算适应您必须在Arduino IDE中生成的代码即可。 在我们的案例中,我假设使用NTC热敏电阻,特别是MF52模型。 如果使用其他热敏电阻模型,则必须根据Steinhart-Hart公式更改A,B和C的值以使其适应:

Steinhart-Hart模型方程式

存在 T测得的温度,T0是环境温度值(您可以根据需要进行校准,例如25ºC),R0是NTC热敏电阻的电阻值(在我们的情况下是MF52数据表提供的电阻值),您不应将其与我添加到电路中的电阻相混淆),系数B或Beta可以在制造商的技术资料中找到。

El 因此,它将是这样的:

#include <math.h>
 
const int Rc = 10000; //Valor de la resistencia del termistor MF52
const int Vcc = 5;
const int SensorPIN = A0;

//Valores calculados para este modelo con Steinhart-Hart
float A = 1.11492089e-3;
float B = 2.372075385e-4;
float C = 6.954079529e-8;
 
float K = 2.5; //Factor de disipacion en mW/C
 
void setup()
{
  Serial.begin(9600);
}
 
void loop() 
{
  float raw = analogRead(SensorPIN);
  float V =  raw / 1024 * Vcc;
 
  float R = (Rc * V ) / (Vcc - V);
  
 
  float logR  = log(R);
  float R_th = 1.0 / (A + B * logR + C * logR * logR * logR );
 
  float kelvin = R_th - V*V/(K * R)*1000;
  float celsius = kelvin - 273.15;
 
  Serial.print("Temperatura = ");
  Serial.print(celsius);
  Serial.print("ºC\n");
  delay(3000);
}

希望本教程对您有所帮助...


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。