この投稿では、Arduinoを使用して温度と湿度を自己調整できるインキュベーターを構築します。このプロジェクトは、このウェブサイトの熱心な読者であるイムラン・ユーサフ氏によって提案されました。
前書き
このプロジェクトは、イムラン氏の提案に従って設計されましたが、このプロジェクトをすべての人に普遍的に適したものにするために、いくつかの追加の変更が加えられています。
あなたはこのプロジェクトを成し遂げるためにあなたの創造性と想像力を使うかもしれません。
では、インキュベーターとは何かを理解しましょう。 (初心者向け)
インキュベーターは、内部環境が周囲環境から隔離された密閉型装置です。
これは、ケア中の標本にとって好ましい環境を作り出すためです。たとえば、インキュベーターは実験室で微生物を増殖させるために使用され、インキュベーターは病院で未熟児の世話をするために使用されます。
このプロジェクトで構築するインキュベーターの種類は、鶏の卵やその他の鳥の卵を孵化させるためのものです。
すべてのインキュベーターには、温度と湿度を調整し、適切な酸素供給を提供するという共通点が1つあります。
付属のボタンを押すだけで温度や湿度を設定でき、内部の温度や湿度もリアルタイムで表示されます。両方のパラメータが設定されると、設定値を満たすように発熱体(バルブ)と気化器(加湿器)が自動的に制御されます。
それでは、インキュベーターの装置と設計について理解しましょう。
インキュベーターのシャーシは、発泡スチロール/サーモコールボックスまたはアクリルガラス製で、優れた断熱性を提供できます。作業しやすい発泡スチロール/サーモコールボックスをお勧めします。
装置の設計:
25ワットの電球は熱源として機能し、ワット数が高いと小さな容器の卵を傷つける可能性があります。湿度は気化器によって提供されます。以下に示すような気化器を使用できます。
それはインキュベーターへの入口となる蒸気の厚い流れを生成します。蒸気は、任意のフレキシブルチューブを介して運ぶことができます。
フレキシブルチューブは、以下に示すようなものにすることができます。
装置の設計に示されているように、蒸気は発泡スチロール/サーモコールボックスの上部から流入する可能性があるため、過剰な熱は湿度制御穴から逃げ、卵を傷つけません。
サーボモーターに接続された、周りにいくつかの穴がある卵を運ぶシリンダーがあります。サーボモーターはシリンダーを8時間ごとに180度回転させ、卵を回転させます。
卵子の回転は、胚が殻膜に付着するのを防ぎ、特に孵卵の初期段階で、卵子の食品素材との接触を提供します。
回転シリンダーには、適切な空気循環が存在するようにいくつかの穴が必要であり、シリンダーの両側が中空である必要があります。
回転シリンダーは、PVCチューブまたはボール紙シリンダーにすることができます。
アイスクリームスティックが2つの等しい半円になるように、中空シリンダーの両端にアイスクリームスティックを貼り付けます。サーボモーターのアームをアイスクリームスティックの真ん中に貼り付けます。反対側に穴をあけ、つまようじをしっかりと貼り付けます。
ボックス内につまようじを挿入し、ボックス内の反対側の壁にサーボを貼り付けます。シリンダーは可能な限り水平に保つ必要があります。これで、サーボモーターが回転するときにシリンダーが回転できるようになります。
そして、はい、物事をより良くするためにあなたの創造性を使用してください。
より多くの卵を収容したい場合は、そのようなシリンダーを増やし、複数のサーボモーターを同じ制御ラインピンに接続できます。
湿度調節穴は、上部の発泡スチロール/サーモコールボックスに鉛筆を突き刺すことで開けることができます。不要な穴をたくさん開けた場合、または湿度や温度が急激に逃げる場合は、電気テープまたはダクトテープを使用して穴の一部を覆うことができます。
DHT11センサーはプロジェクトの中心であり、インキュベーターの4つの側面の中央(内側)に配置できますが、バルブまたは湿度インレットチューブからは離して配置できます。
CPUファンは、空気循環装置の設計に示すように配置できます。適切な空気循環のために、少なくとも2つ使用してください ファンが空気を反対方向に押します たとえば、CPUファンの1つが下向きに押し、別のCPUファンが上向きに押します。
ほとんどのCPUファンは12Vで動作しますが、9Vでは問題なく動作します。
装置については以上です。それでは、回路について説明しましょう。
回路図ダイアガルム:
上記の回路はArduinoからLCDへの接続用です。 LCDコントラストを調整するために10Kポテンショメータを調整します。
Arduinoはプロジェクトの頭脳です。温度と湿度を設定するための3つの押しボタンがあります。ピンA5は、気化器のリレーとバルブのA4を制御します。 DHT11センサーはピンA0に接続されています。押しボタンに使用されるピンA1、A2、およびA3。
ピン#7(非PWMピン)はサーボモーターの制御線に接続されています。複数のサーボモーターをピン#7に接続できます。サーボモーターはArduinoのPWMピンでのみ動作するという誤解がありますが、これは真実ではありません。非PWMピンでも問題なく動作します。
オンとオフを切り替える際の高電圧スパイクを排除するために、逆バイアスでリレーコイルの両端にダイオード1N4007を接続します。
電源:
上記の電源は、リレー、Arduino、サーボモーター(SG90)、CPUファンに9Vと5Vの電源を供給できます。 DCジャックはArduinoに電力を供給するために提供されています。
電圧レギュレータにはヒートシンクを使用してください。
これで電源は終わりです。
ライブラリDHTセンサーをダウンロードします。
https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip
プログラムコード:
//------------------Program Developed by R.GIRISH-------------------//
#include
#include
#include
#define DHT11 A0
const int ok = A1
const int UP = A2
const int DOWN = A3
const int bulb = A4
const int vap = A5
const int rs = 12
const int en = 11
const int d4 = 5
const int d5 = 4
const int d6 = 3
const int d7 = 2
int ack = 0
int pos = 0
int sec = 0
int Min = 0
int hrs = 0
int T_threshold = 25
int H_threshold = 35
int SET = 0
int Direction = 0
boolean T_condition = true
boolean H_condition = true
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
Servo motor
dht DHT
void setup()
{
pinMode(ok, INPUT)
pinMode(UP, INPUT)
pinMode(DOWN, INPUT)
pinMode(bulb, OUTPUT)
pinMode(vap, OUTPUT)
digitalWrite(bulb, LOW)
digitalWrite(vap, LOW)
digitalWrite(ok, HIGH)
digitalWrite(UP, HIGH)
digitalWrite(DOWN, HIGH)
motor.attach(7)
motor.write(pos)
lcd.begin(16, 2)
Serial.begin(9600)
lcd.setCursor(5, 0)
lcd.print('Digital')
lcd.setCursor(4, 1)
lcd.print('Incubator')
delay(1500)
}
void loop()
{
if (SET == 0)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Temperature:')
lcd.setCursor(0, 1)
lcd.print(T_threshold)
lcd.print(' *C')
while (T_condition)
{
if (digitalRead(UP) == LOW)
{
T_threshold = T_threshold + 1
lcd.setCursor(0, 1)
lcd.print(T_threshold)
lcd.print(' *C')
delay(200)
}
if (digitalRead(DOWN) == LOW)
{
T_threshold = T_threshold - 1
lcd.setCursor(0, 1)
lcd.print(T_threshold)
lcd.print(' *C')
delay(200)
}
if (digitalRead(ok) == LOW)
{
delay(200)
T_condition = false
}
}
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Set Humidity:')
lcd.setCursor(0, 1)
lcd.print(H_threshold)
lcd.print('%')
delay(100)
while (H_condition)
{
if (digitalRead(UP) == LOW)
{
H_threshold = H_threshold + 1
lcd.setCursor(0, 1)
lcd.print(H_threshold)
lcd.print('%')
delay(100)
}
if (digitalRead(DOWN) == LOW)
{
H_threshold = H_threshold - 1
lcd.setCursor(0, 1)
lcd.print(H_threshold)
lcd.print('%')
delay(200)
}
if (digitalRead(ok) == LOW)
{
delay(100)
H_condition = false
}
}
SET = 1
}
ack = 0
int chk = DHT.read11(DHT11)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack = 1
break
}
if (ack == 0)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Temp:')
lcd.print(DHT.temperature)
lcd.setCursor(0, 1)
lcd.print('Humidity:')
lcd.print(DHT.humidity)
if (DHT.temperature >= T_threshold)
{
delay(3000)
if (DHT.temperature >= T_threshold)
{
digitalWrite(bulb, LOW)
}
}
if (DHT.humidity >= H_threshold)
{
delay(3000)
if (DHT.humidity >= H_threshold)
{
digitalWrite(vap, LOW)
}
}
if (DHT.temperature
delay(3000)
if (DHT.temperature
digitalWrite(bulb, HIGH)
}
}
if (DHT.humidity
delay(3000)
if (DHT.humidity
digitalWrite(vap, HIGH)
}
}
sec = sec + 1
if (sec == 60)
{
sec = 0
Min = Min + 1
}
if (Min == 60)
{
Min = 0
hrs = hrs + 1
}
if (hrs == 8 && Min == 0 && sec == 0)
{
for (pos = 0 pos <= 180 pos += 1)
{
motor.write(pos)
delay(25)
}
}
if (hrs == 16 && Min == 0 && sec == 0)
{
hrs = 0
for (pos = 180 pos >= 0 pos -= 1)
{
motor.write(pos)
delay(25)
}
}
}
if (ack == 1)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('No Sensor data.')
lcd.setCursor(0, 1)
lcd.print('System Halted.')
digitalWrite(bulb, LOW)
digitalWrite(vap, LOW)
}
delay(1000)
}
//------------------Program Developed by R.GIRISH-------------------//
回路の操作方法:
・ハードウェアと装置のセットアップが完了したら、回路の電源をオンにします。
・ディスプレイに「設定温度」と表示されます。上下ボタンを押して希望の温度を取得し、「設定ボタン」を押します。
・ディスプレイに「湿度設定」と表示されます。上ボタンまたは下ボタンを押して希望の湿度を取得し、「設定ボタン」を押します。
・インキュベーターの機能を開始します。
卵の温度と湿度のレベルについては、インターネットを参照するか、専門家からアドバイスを受けてください。
このArduino自動インキュベーターの温度と湿度の制御回路に関して具体的な質問がある場合は、コメントセクションで自由に表現してください。迅速な返信が届く場合があります。
前:自動ドライランシャットオフを備えたSMSベースのポンプコントローラー 次へ:SMSベースの給水警報システム