サーミスタを使用すると、温度を簡単かつ安価に検出できます。また、サーミスタで正確な温度を測定するには、マイクロコントローラーが必要になります。したがって、ここでは、サーミスタを備えたArduinoを使用して温度を読み取り、 LCDを使用して温度を表示しています。これは、遠隔気象観測所、ホームオートメーション、産業用および電子機器の保護と制御などのさまざまなプロジェクトで役立ちます。
このチュートリアルでは、サーミスタとArduinoのインターフェースを取り、LCDに温度を表示します。サーミスタを使用して、さまざまな電子回路ベースのプロジェクトを作成できます。それらのいくつかを以下に示します。
- サーミスタを使用した温度制御されたDCファン
- サーミスタを使用した火災警報器
必要なコンポーネント:
- NTCサーミスタ10k
- Arduino(任意のバージョン)
- 10kオームの抵抗器
- 接続線
回路図
サーミスタは、その中の電気抵抗の変化に従って温度値を提供します。この回路では、Arduinoのアナログピンがサーミスタに接続されており、ADC値のみを提供できるため、サーミスタの電気抵抗は直接計算されません。そのため、NTCと直列に10kオームの既知の抵抗を接続することにより、回路は上図に示すように分圧回路のようになります。この分圧器を使用して、サーミスタの両端の電圧を取得でき、その電圧を使用して、その瞬間のサーミスタの抵抗を導出できます。そして最後に、以下のセクションで説明するように、サーミスタの抵抗をスタインハートの式に入れることで温度値を取得できます。
サーミスタ
この回路の重要なコンポーネントは、温度の上昇を検出するために使用されているサーミスタです。 サーミスタは温度に敏感な抵抗器で、その抵抗は温度に応じて変化します。サーミスタNTC(負の温度係数)とPTC(正の温度係数)の2種類があり、NTCタイプのサーミスタを使用しています。NTCサーミスタは、温度が上昇すると抵抗が減少する抵抗器ですが、PTCでは温度が上昇すると抵抗が増加します。
サーミスタを使用した温度の計算:
分圧回路から次のことがわかります。
V out =(V in * Rt)/(R + Rt)
したがって、Rtの値は次のようになります。
Rt = R(Vin / Vout)– 1
ここで、Rtはサーミスタの抵抗、Rは10kオームの抵抗になります。この分圧器計算機から値を計算することもできます。
この式は、出力電圧Voの測定値からサーミスタ抵抗を計算するために使用されます。以下のArduinoコードに示すように、ArduinoのピンA0のADC値からVoltageVoutの値を取得できます。
サーミスタ抵抗からの温度の計算:
数学的には、サーミスタ抵抗はStein-Hart方程式を使用してのみ計算できます。
T = 1 /(A + Bln(Rt)+ Cln(Rt)3)
ここで、A、B、Cは定数、Rtはサーミスタ抵抗、lnはlogを表します。
プロジェクトで使用されるサーミスタの定数値は、 A = 1.009249522× 10-3、B = 2.378405444× 10-4、C = 2.019202697× 10-7です。これらの定数値は、3つの異なる温度でのサーミスタの3つの抵抗値を入力することにより、ここで計算機から取得できます。これらの定数値は、サーミスタのデータシートから直接取得するか、異なる温度で3つの抵抗値を取得し、指定された計算機を使用して定数値を取得することができます。
したがって、温度を計算するには、サーミスタ抵抗の値のみが必要です。上記の計算からRtの値を取得した後、その値をStein-hartの式に入力すると、単位ケルビンで温度の値が取得されます。出力電圧にわずかな変化があるため、温度が変化します。
Arduinoサーミスタコード
サーミスタをArduinoとインターフェースするための完全なArduinoコードは、この記事の最後に記載されています。ここでは、そのいくつかの部分について説明しました。
数学演算を実行するには、ヘッダーファイル 「#include」 を使用します
LiquidCrystal lcd(44,46,40,52,50,48);
起動時にLCDを設定するには、void設定部分にコードを記述する必要があります
Void setup(){lcd.begin(16,2); lcd.clear(); }
サーミスタの電気抵抗を使用したStein-Hart方程式による温度の計算では、上記の計算で説明したように、コードでいくつかの簡単な数式を実行します。
float a = 1.009249522e-03、b = 2.378405444e-04、c = 2.019202697e-07; float T、logRt、Tf、Tc; float Thermistor(int Vo){logRt = log(10000.0 *((1024.0 / Vo-1))); T =(1.0 /(A + B * logRt + C * logRt * logRt * logRt)); //このスタインハート方程式からケルビン単位の温度値を取得しますTc = T --273.15; //ケルビンを摂氏に変換Tf =(Tc * 1.8)+ 32.0; //ケルビンを華氏に変換returnT; }
以下のコードでは、関数サーミスタがArduinoのアナログピンから値を読み取っています。
lcd.print((Thermistor(analogRead(0))));
その値は以下のコードで取得され、計算は印刷を開始します
フロートサーミスタ(int Vo)
サーミスタとArduinoによる温度の測定:
Arduinoに電源を供給するために、USB経由でラップトップに電力を供給するか、12vアダプターを接続します。LCDはArduinoとインターフェースして温度値を表示し、サーミスタは回路図のように接続されています。アナログピン(A0)は、サーミスタピンの電圧を常にチェックするために使用され、Arduinoコードを介してStein-Hart方程式を使用して計算した後、温度を取得して、摂氏と華氏のLCDに表示できます。