他の記事では、さまざまな温度センサーが分析されています。 上記の温度を測定するために使用できる要素またはデバイスのXNUMXつは、正確には サーミスタ、英語のサーミスタ(熱に敏感な抵抗器または温度に敏感な抵抗器)。 その名前が示すように、それはそれがさらされる温度に応じてその電気抵抗を変化させる材料に基づいています。
このように、電圧とそれがさらされる強度を知っている簡単な式によって、抵抗を分析することができます 温度を決定する その規模に応じて。 ただし、温度センサーとして使用されるだけでなく、温度に基づいて回路の一部の特性を変更したり、過電流に対する保護要素として使用したりすることもできます。
La センサータイプの選択 プロジェクトに何を使用するかは、ニーズによって異なります。 温度センサーについて興味があるかもしれない他の記事:
サーミスタの紹介
市場ではたくさん見つけることができます サーミスタ さまざまなカプセル化とさまざまなタイプで。 それらはすべて同じ原理に基づいており、それらの半導体材料(酸化ニッケル、酸化コバルト、酸化第二鉄など)は、温度が変化すると変化し、その結果、内部抵抗が変化します。
種類
間で サーミスタタイプ XNUMXつのグループを強調することができます。
- NTC(負の温度係数)サーミスタ:負の温度係数を持つこれらのサーミスタは、温度が上昇すると、電荷キャリアの濃度も増加するため、抵抗が減少します。 これにより、次のように使用できるように実用的になります。
- 温度センサーは、多くの回路で低温の抵抗検出器として、自動車部門でモーターやデジタルサーモスタットなどで測定するために非常に頻繁に使用されます。
- 初期抵抗の高い材料を使用する場合の始動電流リミッタ。 回路がオンになっているときに電流がそれらを通過すると、このデバイスはそれが提示する抵抗のために熱くなり、温度が上昇するにつれて、抵抗は徐々に減少します。 これにより、最初は回路に流れる電流が非常に大きくなるのを防ぎます。
- PTC(正の温度係数)サーミスタ:それらは正の温度係数を持つ他のサーミスタであり、NTCとは逆の効果を与える非常に高いドーパント濃度を持っています。 つまり、温度の上昇に伴って抵抗が低下する代わりに、逆の効果が発生します。 このため、過電流回路を保護するためのヒューズ、CRTまたはブラウン管ディスプレイを消磁するためのタイマー、モーターの電流を調整するためのタイマーなどとして使用できます。
NTCの温度に対する抵抗曲線のグラフ
サーミスタとサーミスタを混同しないでください RTD(測温抵抗体)それらとは異なり、サーミスタは抵抗をほぼ直線的に変化させません。 RTDは、導体の抵抗の変化に基づいて温度を検出する測温抵抗体の一種です。 これらの金属(銅、ニッケル、プラチナなど)は、加熱されると、熱攪拌が大きくなり、電子が散乱して平均速度が低下します(抵抗が増加します)。 したがって、NTCと同様に、温度が高いほど抵抗が大きくなります。
RTD、NTC、およびPTCの両方、特にNTCは非常に一般的です。 その理由は、彼らが 非常に小さいサイズと非常に安い価格Amazonなどの店舗では、[amazon link="B00HUHC4UU" title="人気のMF52のようなNTCサーミスタ" /]を低価格で購入できます。また、[amazon link="B01CNMAQS8" title="RTDプローブ" /]やその他の専門の電子部品店でも購入できます。
のように ピン配置、通常の抵抗と同じように、ピンはXNUMXつしかありません。 接続方法は他の抵抗器と同じですが、ご存知のように抵抗値だけが安定しません。 許容温度範囲、最大サポート電圧などの詳細については、のデータを参照してください。ダッタシート 購入したコンポーネントの
Arduinoとの統合

へ サーミスタをArduinoボードと統合する、接続はこれ以上ないほど簡単です。 ArduinoIDEで生成する必要のあるコードにその理論と計算を適合させる必要があるだけです。 私たちの場合、NTCサーミスタ、特にMF52モデルの使用を想定しています。 別のサーミスタモデルを使用する場合は、A、B、Cの値を変更して、Steinhart-Hartの式に従ってそれらを適合させる必要があります:

あること T測定温度、T0は環境温度値(25ºCなど、必要に応じて調整できます)、R0はNTCサーミスタ(この場合はMF52データシートで提供されているもの)の抵抗値です。回路に追加した抵抗と混同してください)、係数Bまたはベータはメーカーのテクニカルシートに記載されています。
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);
}
このチュートリアルがお役に立てば幸いです...
