2017年12月23日土曜日

井戸ポンプの制御とarduinoについて

雪国の我が家は降雪期の除雪が大問題となる。
降り積もった雪を除雪するのだが年々雪を捨てる場所が無くなっている。
そこで敷地内に積もった雪は井戸水で消雪しているが、ポンプを動かす電気代も馬鹿にならない。
今は、日中の温度が2~3度を超える時はタイマーを使って15分間隔で運転・停止を繰り返し23時~7時は連続運転とし、2度以下の場合は融雪水が凍結するのを防ぐため連続運転としている。
以上を全て人手で行っていたが今年からある程度自動化することとしてシステムを考え、amazonで中華製の温度センサーを購入してハードウエア構成を設計していたが、ふとした機会にarduinoを知った。
これを詳しく調べてみるとBASICと同様なプログラムが組めI/Oも充実しているのにトテモ安い!。
今回は勉強も含めarduinoを使ってみることにした。

最初はamazonでKUMANkitsを購入した。これはarduinoを勉強するに当たり本体と周辺部品+プログラムが含まれているので実習するのにピッタリでした。
(しかも安い)

サンプルプログラムをBASICを比較して違いを把握・互換することで何とか成ることが分かり自信がつきました。
kitsにはarduino-unoが入っていましたが、井戸ポンプ制御用には別の物を手配、価格が安いことから予備と称し数種類手に入れました。
arduino-UNO
arduino-NANO
arduino-pro-min


作業手順や流れは以下のとおり
1.PCにインストールしたarduino-IDEでプログラム作成
2.arduino-UNOでハード試作
3.arduino-UNOにプログラム転送
4.動作検証が
5.PCでプログラムデバック⇒2に戻る


井戸ポンプ制御システム製作紹介(まだ途中)
1.温度センサー(LM-35を使用)
 LM-35は0℃で0mV、以後1度上昇する毎に出力電圧が10mV上昇する(10℃で100mV)
 井戸ポンプは0~3℃で制御するので0~30mVでの制御となるが、aduinoのアナログ入力分解能は5Vで1024bit、つまり5V/1024bit⇒4.88mV/bit
(2bit/℃)のため3℃で約6bitと何かノイズレベルでの制御となってしまう。
 そこでOPE-AMPを使ってLM-35の出力を10倍にしてaruduinoに入力した。これで分解能が20bit/℃となり0.05℃/bitとなる

2.aduino
 価格が安く小型のarduino-pro-minを使った(1個279円)
 これはNANOのUSBインターフェースを省いた物とのこと。USB/シリアルアダプタが在ればUNOやNANOと同様に通信できるそうである。
 いざUNOで検証したプログラムをminにインストールして動作検証し同様に動作することを確認。次にバージョンアップした物をminに書き込みしようとしたら受け付けない?何度やっても駄目。
 頭が???と成ったが別のminで試したら異常なし。最初の物は壊れたと思っていたら、別の方も2回目から書き込みができなくなった。

 これは何かあると思いがネットで調べたら儀式?が必要とのこと。【以下自分用メモ】
 a.arduino-minの本体のリセットスイッチを押しっぱなしとする。
 b.PCからIDEで書き込み開始。
 c.USB/シリアルインターフェースの送信ランプが点滅したらリセットスイッチを離す。
 d.書き込み開始しとなり正常終了となる。

 以上の手順でプログラム書き換えができました。
 不便と感じるかと思いますが、arduinoを実機に組み込んだ後は悪意あるイジクリを防止する為にも安易にプログラム変更を不可能としていることは とても有効な事と思います。
 そもそもminは組込み用で1度プログラムをインストールしたら二度と書き換える事は無いかもしれません。