スポンサーリンク

ビニールハウスIoT化※自動開閉装置編

2021年10月9日

自宅からビニールハウスまで車で10分。
毎日の作業だから天気に心配なく自動化したいものです。

インターネットのおかげで先陣たちの知恵がたくさんあってありがたい時代です。
テクノロジーの力でビニールハウスの環境制御をしたいと思います。

ビニールハウスの換気

ビニールハウスは太陽光を通すので温度がとっても上がります。
晴れの天気の場合、日の出とともに気温が上昇して日の入りで気温が下がり始めます。

作物によって程度の差はあるとしても気温が上昇したら換気して温度を下げる。
気温が下がってきたら換気をやめて温度を維持する。

施設栽培に携わっている人には温度管理が極めて重要ですよね。
そんな私も、一日数回ビニールハウスの側面をくるくると巻き上げていました。

一日の天気が晴れの時は朝、晩だけで済みますが、曇りのち晴れなんていう時は、温度調整が難しくなります。
そんな天候に左右されないように環境制御ができたらいいなと思い、いろいろ調べてみると自動で換気ができる方法があることがわかりました。

ビニールハウスの自動開閉装置の価格

確かに自動開閉装置というの世の中にあります。
しかし、小規模なビニールハウスにはとても採用できないものばかりな高額なものです。
100万前後のものばかりです。
そこで、なんとか低コストで導入できないかと思いました。
もしくは、DIY(自作)できないかも検討してみました。

ビニールハウスの自動開閉装置のDIY(自作)開始

構成としては、巻き上げモーター巻き上げモーターを制御する制御盤が必要です。

巻き上げモーター

モーターといってもたくさんあります。
電気で動くものはモーターが使われているとがほとんどです。
家庭を見回しても、扇風機、エアコン、冷蔵庫など家電にはモーターが使われています。
もちろん構成要素がモーターだけでないのですが、作ろうとしている巻き上げモーターはモーターとビニールハウスと連結する金具だけです。

シンプルに考えれば、モーターの選定さえ間違わなければいいということです。
モーターの選び方
モーターはブラシ付きDCモーターというタイプにしました。
*20mの長さを想定しています。
ビニールを巻き上げることができるトルクでいいので12Vのギヤードモーターです。
775というモデルですが、このモーターは同じ775モーターでもいろいろあるみたいです。

部品にはよくあることですが、不良品という場合もあります。
なので、DCモーターを単体で動作確認しました。
直流安定化電源の選び方

単体で操作確認したところ回転が速いという結果でした。
12000rpmなので当然の結果ですが、私は見事に間違えました。

追記7/28(水)
モーターの変更です。

今度は3rpmです。
これならゆっくり巻き上げられそうです。
14kg.cmという力が巻き上げに可能かは実際に実験してみないとわかりません。
<<スペック>>

第1弾として、12V電源で正転させてみます。

第2弾として、定格電圧12V定格電流1.3Aということなので、モータードライバを使いモーターを正転、逆転させます。
モータードライバの選び方
モータードライバはDRV8835を使用しました。
5秒正転して5秒停止。
5秒逆転して5秒停止。

DCモーターは極性を変えれば回転方向が変わりますが、極性を変えるのをモータードライバDRV8835にしてもらっています。

第3弾として、温度を測定できるかを確認してみました。
今回、温度センサーはDHT22を利用しました。

そして、温度が表示できるように0.96インチOLEDディスプレイを使いました。

保冷剤を使い、温度が下がって行くことが確認しました。

第4弾として、温度によってモーターの回転、停止を確認してみました。
25度になったら、サイドのビニールを半分だけ開けることを想定して、モーターが回転するか確認しました。
回転数であるrpmを考えて、半分巻き上げるには何分モーターを回せば良いかはある程度計算はできますが、実際には現地で調整が必要です。

第5弾として、12Vのモーターから24Vのモーターどちらが良いか検討しました。
12Vのモーターだと力不足が懸念されます。
第6弾として、モータードライバL298Nを使用してみました。

このドライバはモーター駆動電圧が5V~35Vなので、Arduinoを使ったモーターを動かす用途では十分な性能です。

ソースコード>>

const int IN1 = 3; // IN1ピンをD3に
const int IN2 = 4; // IN2ピンをD4に
void setup() {
pinMode(IN1, OUTPUT); // デジタルピンを出力に設定
pinMode(IN2, OUTPUT);
}
void loop() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW); // 正回転
delay(5000);

digitalWrite(IN1, LOW); // モーターの停止
digitalWrite(IN2, LOW);
delay(3000);

digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH); // 逆回転
delay(5000);

digitalWrite(IN1, LOW); // モーターの停止
digitalWrite(IN2, LOW);
delay(3000);
}

自動化のための部品まとめ

マイコン(arduino uno)
モーター12V1.3A
モータードライバ
モーター用電源12V1A
温度センサーDHT22
0.96インチOLEDディスプレイ

Posted by toshio