この記事では、周囲温度が事前に決定されたしきい値レベルに達すると、ファンまたはそれに接続されている他のガジェットをオンにする、いくつかの単純なArduinoベースの自動温度制御DCファン回路を構築します。このプロジェクトでは、DHT11センサーとarduinoを利用します。
概要概要
マイクロコントローラーの優れている点は、それに接続されている周辺機器を非常に正確に制御できることです。このプロジェクトでは、ユーザーはプログラムにしきい値温度を入力するだけで、残りの機能はマイクロコントローラーが処理します。
コンパレータやトランジスタの使用など、インターネット上にはマイクロコントローラベースではない自動温度コントローラプロジェクトがたくさんあります。
それらは非常に単純で、うまく機能しますが、プリセット抵抗またはポテンショメータを使用してしきい値レベルを校正するときに問題が発生します。
キャリブレーション中には盲目的なアイデアがあり、ユーザーはスイートスポットを見つけるために試行錯誤の方法を実行する必要があるかもしれません。
これらの問題はマイクロコントローラーによって克服されます。ユーザーはこのプロジェクトで摂氏で温度を入力するだけなので、キャリブレーションは必要ありません。
このプロジェクトは、回路の内部温度を安定させたり、過熱から保護したりする必要がある場合に使用できます。
図1では、CPUファンを出力として接続しています。この設定は、閉回路の内部周囲温度を制御するために使用できます。
しきい値温度に達すると、ファンがオンになります。温度がしきい値温度を下回ると、ファンがオフになります。つまり、基本的には自動化されたプロセスです。
図2では、テーブルファンなどの主電源電圧で動作するデバイスを制御するためのリレーを接続しました。
室温がしきい値温度に達すると、ファンはオンになり、部屋が冷えるとオフになります。
これは電力を節約するための最良の方法であり、他の人が暖かく感じたときにファンをオンにすることを望む怠惰な人々にとっては天国になる可能性があります。
DCファン制御を示す回路図
このセットアップは、ボックスで囲まれた回路に展開できます。プリセットしきい値レベルに達するとLEDが点灯し、ファンも点灯します。
より大きなファンを制御するためのリレーの接続
この回路は前の回路と同様の機能を果たしますが、現在はファンがリレーに置き換えられています。
この回路は、テーブルファンやシーリングファン、または周囲温度を下げることができるその他のガジェットを制御できます。
接続されたデバイスは、温度が事前設定されたしきい値レベルを下回るとすぐにオフになります。
ここに示されている温度制御されたDCファンの回路図は、多くの可能性のほんの一部です。あなたはあなた自身の目的のために回路とプログラムをカスタマイズすることができます。
注1:#Pin7が出力されます。
注2:このプログラムはDHT11センサーとのみ互換性があります。
Arduinoを使用した上記の自動温度調整回路のプログラム:
プログラムコード
注:プログラム内 int th = 30 //しきい値温度を摂氏で設定します。 「30」を目的の値に置き換えます。 セカンドデザイン 以下で説明する2番目の温度制御DCファン回路プロジェクトは、周囲温度を自動的に検知し、ファンモーターの速度を調整して、周囲温度を制御下に保ちます。この自動処理は、Arduinoと温度センサーICLM35を介して行われます。 沿って:アンキットネギ 1)。周囲の温度が摂氏25度を超えるとすぐに(必要に応じてプログラムでこの値を変更できます。作業セクションで説明されています)、モーターが動作を開始します。 2)。また、温度が上がるたびに、モーターの速度も上がります。 3)。温度が摂氏40度に上昇するとすぐに、モーターは最高速度で動作します(この値はプログラムで変更できます)。 上記のタスクを実行するために、tempを使用します。広く簡単に使用できるセンサーLM35。 図に示すように、LM35には3つのピンがあります。 1. Vin--このピンは4〜20vのDC電源に接続されています。 LM35は、電源に接続すると、 周囲の温度 そして、その出力ピンを介して、温度の1度の上昇に応じて同等の電圧を送信します。 LM35は任意の温度を感知できます。摂氏-50度から+150度の間で、温度が1度上昇すると出力が10ミリボルト増加します。したがって、出力として与えることができる最大電圧は1.5ボルトです。 Arduinoは、LM35の出力ピンから受信したアナログ値をデジタル値に変更し、対応するデジタル出力(PWM)をMOSFETのベースに送信する必要があります。 また使用します 温度を印刷するarduinoコマンド、 ARDUINOIDEのシリアルモニター上のMOSFETへの対応するアナログ値とデジタル出力。 この回路は、大電流モーターを実行できない場合は役に立ちません。したがって、このようなモーターを実行するには、パワーMOSFETが使用されます。 ダイオードは、走行中にモーターによって生成されるバックE.M.FからMOSFETを保護するために使用されます。 1. LM35 2. ARDUINO 3.パワーMOSFET(IRF1010E) 4.ダイオード(1N4007) 5.ファン(モーター) 6.ファン電源 回路図のように接続してください。 a)lm358のvinピンをarduinoの5vに接続します A)。変数X- これは単にピン番号で受信されるアナログ値です。 LM35の出力ピンからのA0。 B)。変数および- この変数のみのため、ファンモーターは対応する温度に従って動作します。この変数が行うことは、アナログ値、つまり変数xを周囲の対応する温度に変更することです。 Y =(500 * x)/ 1023 C)。可変Z- z = map(x、0、1023、0,255) 注意 :: lm35は最大1.5ボルトを供給でき、温度が上がるとそれも供給できることがわかっています。 150度です。これは実用的ではありません。 これは、摂氏40度の場合は0.40ボルト、25度の場合は0.25ボルトになることを意味します。これらの値はMOSFETの適切なpwmに対して非常に低いため、係数を掛ける必要があります。 したがって、これに10を掛け、代わりにこの値をPWMピン10へのアナログ出力として与えます。 ** analogWrite(10、z * 10) さて、0.25ボルトの場合、MOSFETは0.25 * 10 = 2.5ボルトになります .40ボルトの場合、MOSFETは0.40 * 10 = 4ボルトになり、モーターはほぼフルスピードで動作します。 ケース1。 25度未満です この場合、arduinoはコードの最後の行のように0PWM電圧をピン10に送信します ** そうしないと MOSFETベースのpwm電圧は0であるため、オフのままになり、モーターが回路から切断されます。 この場合のシミュレーション回路を参照してください。 ご覧のとおり、気温は20度です。 アナログ値= 41 しかし、温度が25度未満であるため、fig(青い点で示されている)に示すように、MOSFETは0ボルトになります。 温度が25度に達すると、コードで指定されているように、pwm信号がMOSFETのベースに送信され、温度が上昇するたびに、このPWM電圧も増加します。 この場合のシミュレーション回路を参照してください。 温度が20度から40度まで上昇するとわかるように、3つの値すべてが変化し、摂氏40度になります。 アナログ値= 82 温度が25度を超えるため、MOSFETはfig(赤い点で示されている)に示すように対応するPWM電圧を取得します。 したがって、モーターは25度で動作を開始し、それに対応して、ピン10からMOSFETのベースまでの温度ごとのpwm電圧が上昇します。したがって、モーター速度は温度の上昇とともに直線的に増加し、摂氏40度でほぼ最大になります。 ファンとArduinoを使用した上記の自動温度制御DCファン回路についてさらに質問がある場合は、いつでも下のコメントボックスを使用して、私たちに意見を送ることができます。早急に取り戻そうと思います。//--------------------Program developed by R.Girish---------------------//
#include
dht DHT
#define DHTxxPIN A1
int p = A0
int n = A2
int ack
int op = 7
int th = 30 // set thershold tempertaure in Celsius
void setup(){
Serial.begin(9600) // May be removed after testing
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
pinMode(op,OUTPUT)
digitalWrite(op,LOW)
}
void loop()
{
digitalWrite(p,1)
digitalWrite(n,0)
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
// you may remove these lines after testing, from here
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.print('
')
// To here
if (DHT.temperature>=th)
{
delay(3000)
if(DHT.temperature>=th) digitalWrite(op,HIGH)
}
if(DHT.temperature {
delay(3000)
if(DHT.temperature }
}
if(ack==1)
{
// may be removed after testing from here
Serial.print('NO DATA')
Serial.print('
')
// To here
digitalWrite(op,LOW)
delay(500)
}
}
//-------------------------Program developed by R.Girish---------------------// 私たちの目的:
温度センサーLM35:
2. Vout--このピンは、電圧の形で出力を提供します。
3.GND--このピンは回路のgnd端子に接続されています。 このDCファンコントローラープロジェクトにARDUINOを使用する理由
パワーMOSFETの役割は何ですか?
ダイオードが使用される理由
プロジェクトのパーツリスト:
“p型とn型
”
回路図:
b)lm358のvoutピンをarduinoのA0に接続します
c)lm358のグランドピンをarduinoのGNDに接続します
d)MOSFETのベースをarduinoのPWMピン10に接続します コード:
float x// initialise variables
int y
int z
void setup()
{
pinMode(A0,INPUT) // initialize analog pin A0 as input pin
Serial.begin(9600) // begin serial communication
pinMode(10,OUTPUT) // initialize digital pin 10 as output pin
}
void loop()
{
x=analogRead(A0) // read analog value from sensor's output pin connected to A0 pin
y=(500*x)/1023// conversion of analog value received from sensor to corresponding degree Celsius (*formula explained in working section)
z=map(x,0,1023,0,255) // conversion of analog value to digital value
Serial.print('analog value ')
Serial.print( x) // print analog value from sensor's output pin connected to A0 pin on serial monitor( called 'analog value')
Serial.print(' temperature ')
Serial.print( y) // print the temprature on serial monitor( called 'temprature')
Serial.print(' mapped value ')
Serial.print( z*10) // multiply mapped value by 10 and print it ( called ' mapped value ' )
Serial.println()
delay(1000) // 1 sec delay between each print.
if(y>25)
{analogWrite(10,z*10) // when temp. rises above 25 deg, multiply digital value by 10 and write it on PWM pin 10 ( ** explained in working section)
}
else
{analogWrite(10,0) // in any other case PWM on pin 10 must be 0
}
} WORKING(コードを理解する):
1.最初のアナログ値を対応する電圧に変更する必要があります。
1023:5v
したがって、(5000ミリボルト* x)/ 1023 V
2.これで、温度が1度上昇するごとに、対応する電圧出力が10mv増加することがわかりました。
摂氏1度:10ミリボルト
したがって、(5000ミリボルト* x)/(1023 * 10)度
この変数は、ピン10のpwm出力のアナログ値をデジタル値に変更します。
{analogWrite(10,0)//それ以外の場合、ピン10のPWMは0でなければなりません
} **
温度= 20
マップされた値= 100
ケース2。 25度以上if(y>25)
{analogWrite(10,z*10)
} which is z* 10.
温度= 40
マップされた値= 200
前:シンプルな冷蔵庫プロテクター回路 次へ:無停電電源装置(UPS)回路を設計する方法