部屋に座って寒さを感じていて、ヒーターを自動的にオンにし、室温が上がるとしばらくしてからオフにしたい場合、このプロジェクトは、温度に応じて家電製品を自動的に制御するのに役立ちます。ここでは、温度に基づいてArduinoで家庭用ACアプライアンスを制御しています。ここでは、サーミスタを使用して温度を読み取りました。すでにサーミスタとArduinoを接続し、LCDに温度を表示しました。
このチュートリアルでは、リレー付きのACアプライアンスを接続し、Arduinoを使用して温度制御されたホームオートメーションシステムを作成します。また、回路に接続された16 * 2LCDディスプレイに温度とアプライアンスのステータスを表示します。
必要な材料
- Arduino UNO
- リレー(5v)
- 16 * 2LCDディスプレイ
- 電球(CFL)
- NTCサーミスタ10k
- 接続線
- 抵抗器(1kおよび10kオーム)
- ポテンショメータ(10k)
回路図
この温度ベースのホームオートメーションシステム は、Arduinoボード、LCDディスプレイ、リレー、サーミスタなどのさまざまなコンポーネントで構成されています。動作は主にリレーとサーミスタに依存します。温度が上昇するとリレーがオンになり、温度がプリセット値を下回るとリレーがオフになります。リレーに接続されている家電製品もそれに応じてオンとオフになります。ここでは、ACアプライアンスとしてCFL電球を使用しました。トリガープロセス全体と温度値の設定は、プログラムされたArduinoボードによって実行されます。また、0.5秒ごとの温度変化とLCD画面のアプライアンスステータスの詳細も表示されます。
リレー:
リレーは電磁スイッチであり、小さな電流で制御され、比較的大きな電流のオンとオフを切り替えるために使用されます。小さな電流を流すことで、リレーをオンにして、はるかに大きな電流を流すことができます。リレーは、はるかに小さいDC電流を使用してAC(交流)デバイスを制御する良い例です。一般的に使用されるリレーは 単極双投(SPDT)リレー、それは以下のように5つの端子があります。
コイルに電圧が印加されていない場合、COM(共通)はNC(通常閉接点)に接続されます。コイルに電圧が印加されると、アーマチュア(スプリングに接続されたレバー)を引き付ける電磁界が生成され、COMとNO(通常開接点)が接続され、より大きな電流が流れるようになります。リレーには多くの定格がありますが、ここでは7A〜250VACの電流を流すことができる5Vの動作電圧リレーを使用しました。
リレーは 、トランジスタ、ダイオード、抵抗で構成される小さなドライバ回路を使用して構成されています 。トランジスタは電流を増幅するために使用され、(DC電源からの)全電流がコイルを流れて完全にエネルギーを供給できるようにします。抵抗は、トランジスタにバイアスをかけるために使用されます。また、トランジスタがオフになっているときに逆電流が流れるのを防ぐためにダイオードが使用されています。すべての誘導コイルは、突然オフにすると等しく反対のEMFを生成します。これにより、コンポーネントに恒久的な損傷が生じる可能性があるため、逆電流を防ぐためにダイオードを使用する必要があります。 リレーモジュールは、 ボード上のすべてのドライバ回路と、市場で容易に入手可能であるか、コンポーネント上で使用することによって、それを作成することができます。ここでは5Vリレーモジュールを使用しました
サーミスタを使用した温度の計算:
分圧回路から次のことがわかります。
V out =(V in * Rt)/(R + Rt)
したがって、Rtの値は次のようになります。
Rt = R(Vin / Vout)– 1
ここで、Rtはサーミスタの抵抗(Rt)になり、Rは10kオームの抵抗になります。
この式は、出力電圧Voの測定値からサーミスタ抵抗を計算するために使用されます。以下のArduinoコードに示すように、ArduinoのピンA0のADC値からVoltageVoutの値を取得できます。
サーミスタ抵抗からの温度の計算
数学的には、サーミスタ抵抗はStein-Hart方程式を使用してのみ計算できます。
T = 1 /(A + B * ln(Rt)+ C * ln(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の値を取得した後、スタインハートの式に値を入力すると、単位ケルビンで温度の値が取得されます。出力電圧にわずかな変化があるため、温度が変化します。
Arduinoコード
この温度制御さ れた家電製品の完全なArduinoコードは、この記事の最後に記載されています。ここでは、そのいくつかの部分について説明しました。
数学演算を実行するには、ヘッダーファイル 「#include」 を使用します
#include
起動時にリレー(出力として)とLCDを セットアップするに は、 voidセットアップ 部分にコードを記述する必要があり ます
Void setup(){lcd.begin(16,2); lcd.clear(); pinMode(RELAY、OUTPUT); }
サーミスタの電気抵抗を使用した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)
温度が28℃以上上がると点灯するように温度値を設定するので、温度に応じて点灯・消灯する条件のコードを書く必要があります。したがって、温度が28度を超える場合は常に、リレーモジュールをオンにするためにリレーピン(ピン8)を高くする必要があります。また、温度が28度を下回ると、リレーモジュールをオフにするためにRELAYピンをローにする必要があります。
if(Tc> 28)digitalWrite(RELAY、HIGH)、lcd.setCursor(0,1)、lcd.print( "Light status:ON")、delay(500); else if(Tc <28)digitalWrite(RELAY、LOW)、lcd.setCursor(0,1)、lcd.print( "Light status:OFF")、delay(500);
温度制御されたホームオートメーションシステムの動作:
Arduinoに電源を供給するために、USB経由でラップトップに電力を供給するか、12vアダプターを接続します。LCDはArduinoとインターフェースして温度値を表示し、サーミスタとリレーは回路図に従って接続されています。アナログピン(A0)は、サーミスタピンの電圧を常にチェックするために使用され、Arduinoコードを介してStein-Hart方程式を使用して計算した後、温度を取得して、摂氏と華氏のLCDに表示できます。
温度が摂氏28度を超えると、Arduinoは温度が28度を下回ると、ピン8をHIGH(リレーモジュールが接続されている場所)にすることでリレーモジュールをオンにします。ArduinoはピンをLOWにすることでリレーモジュールをオフにします。CFL電球もリレーモジュールに応じてオンとオフを切り替えます。
このシステムは、温度制御ファンおよび自動AC温度コントローラープロジェクトで非常に役立ちます。
また、次の ようなさまざまなテクノロジーやマイクロコントローラーを使用した、さまざまなタイプのホームオートメーションプロジェクトも確認してください 。