2011年07月28日

フェレット用エアコン制御装置 制作メモ

【追記】
作りやすくしたV2もありますので、そちらも参照下さい。それに合わせて本エントリのV1についても初期に記載していたものと回路/プログラムを改善しています。
前回紹介したフェレット用エアコン制御装置の制作記を。電子工作とPICマイコンのプログラムができる人向けです。

最初にこの装置を考えた時は、リモコン部も自作しようかと思ったのだが、学習リモコンのパーツを盛り込むよりは市販のエアコン用リモコンを流用した方が面倒もないし、最終的な部品代と安物リモコン代が大差なさそうな感じになったので、市販リモコンを流用する事に。これで大体設計方針は決まって
・動作電源はリモコン用電池からもらう
・リモコンのほとんどが電池2本なので3Vで駆動すること
・温度センサで室温を監視してエアコン用リモコンのON/OFFボタンを電気的に制御
・基本的に動作させっぱなしなので極力省電力設計
・電池切れは致命的なので電池切れお知らせ機能を付ける
という辺りの仕様がポンポンと決まる。
停電で切れたエアコンをONにするのは、室温監視してある温度範囲を外れたらとにかく一定間隔でエアコンONをやりつづければ良いよね、エアコンがONになったかどうかの判断も室温の上下具合で判るはずだし… とこの辺りでプログラムの概要も大体決まり。

メインとなるマイコンは我が家にある開発環境がPICなのでPIC一択。省電力動作となると最新の16F1823が良いみたい。
困ったのは温度センサ。室温監視の要なのできちんと精度があるセンサにしたいけど、定番のLM35DZは最低4V駆動なので電池2本では動かない。色々探したけど入手容易で電池が減った時の2V台前半でも動くような精度がある温度センサがない…。せっかくPICマイコンは2V以下でも動作するのに…
結局この問題は5Vへの昇圧コンバータを使う事で安直に解決する事に。ちょっとパーツ代がかかるけど電池が減っても安定して一定電圧が取れるので回路の信頼性が高まるということで妥協。

ということでEAGLEで設計したのが以下の回路図。回路図では16F688になっているが実際に使用しているのは16F1283です。
aircon11sch.png
以下PICのポートを中心に解説すると…
2つの4bit DIPロータリースイッチはS1が温度範囲設定でS2が基準温度設定。両スイッチの入力は配線の作業性重視でバラバラなポート(RA2-3,RC0-5)に入っているので値の読取りはソフト側で対処している。
RA1は温度センサをON/OFFする出力で、使わない時は温度センサの電源をカットして省電力化。ついでにここにはLEDをつなげて電池切れの時には8秒に1秒点滅するようにして電池切れを知らせる(通常は256秒に1回温度を測るので4分ちょっとに1回しか光らない)。
RA4はアナログ電圧入力(AN3)で電池電圧が直接入り、電圧が1.9V以下になったら電池切れ警告モードになって、上のLEDを8秒に1回点滅させるようになる。
RA0もアナログ電圧入力(AN0)でこちらは温度センサLM35DZの電圧で温度を測る。LM35DZは1℃=0.01Vで0〜100℃(0〜1V)を測れる温度センサICなのでプログラムで扱うのは簡単。
RA5がエアコン用リモコンのON/OFFスイッチを操作する出力でエアコンONが必要と判断したら100msほど(電気的に)ボタンを押してリモコン信号を送る。実際にはリモコンはON信号ではなくOFF信号を送ってしまう時も出るのだが、その時には次回(4分ちょっと後)にリカバリするようになっている。
これで14ピンのPICポートはちょうど全部使い切り。

Eagleで25x15のユニバーサル基板の配線パターンを起こしたのが下の基板図。とにかく作業性を重視してジャンパ線をできるだけ基板ホールで固定できるようにした。
aircon11brd.png

PICのプログラムはいつものごとくアセンブラで直接書いた。なんかマイコンのプログラムをCで書くのは性に合わなくて… もちろん規模が大きくなったらそうは言っていられないと思うけど。プログラムの解説はソースコード内のコメント読んで下さい。
フェレット用エアコン制御装置PICプログラム(アセンブラ, ZIPファイル)

プログラムはシミュレーションでデバッグ後、基板でハンダ付けする前にブレッドボードで動作確認。
IMG_0671.jpg

ブレッドボード上で確認できたら基板にハンダ付けして完成。先日公開したのは基板コネクタ未入手だったので最終完成バージョンは以下の写真のようになってます。(写真は初期バージョンなので上で紹介した回路図、基板図と異なります)
IMG_0676.jpg
エアコン用リモコンはAV-R630Nという多機能リモコンを使ってるが、これは単にエアコン用リモコンとして安かった型落ちのAV-R600Yを買ったら初期不良で交換品としてこれが来ただけで、とにかく自宅のエアコンがON/OFFできるリモコンならなんでもOKです。
(買ったショップに初期不良を連絡したら「メーカーに電話してくれ」と言われたが、電話したオーム電機の対応は素晴らしかったです。メーカー不明のもっと安いものもあったけどこちらにして正解だった。)

最終的にできあがった回路の電流を測ってみるとスリープしている時は0.6mA程度なので結構省電力にできたかなと。でもやっぱり5V昇圧させてるのがちょっと悔しい。現在バージョン2としてサーミスタを使った電池2本3Vでそのまま動作するものを設計中。うまくいけば機能自体に全く変更無しで部品代は今の1,500円ぐらいから1,000円ぐらい(いずれもリモコン代除く)になるはず。ただ5V昇圧させている今の方が電池切れ警告時の動作は安定するけど(電池切れ前の安定性は変わらない)。
posted by kaishi at 01:00| Comment(0) | TrackBack(0) | ペット

2011年07月21日

フェレット用エアコン制御装置 完成

前回のエントリから約4ヶ月。結局、計画停電は原則実施しないことになったが、絶対無いとも断言できないし、それよりも雷その他で突発的な停電があるかも判らない。
前回紹介したのはタイマー機能をもつ市販のリモコンだったけど、突発停電には全然対応できないし、これを機会に作ってみた。

IMG_1322.jpg
市販のエアコン用リモコンを使った「室温監視型エアコン自動ON機」。約4分ごとに室温を測定して、設定した温度範囲を外れるとリモコンのスイッチを電気的に押してエアコンONを試み続ける。設定温度範囲内なら当然何もしない(室温測定は継続する)。
電源はリモコン側の電池からもらっていて、ついでに電池切れ警告機能も付けている(電池切れだとLEDが8秒おきに点滅する)。

IMG_1328.jpg
白いダイヤルが基準温度(+15℃)、赤いダイヤルが温度範囲。上の写真だと白いダイヤルが"4"、赤いダイヤルが"9"なので、基準温度が19℃(4+15)で温度範囲が±9℃、つまり10℃〜28℃が設定温度範囲になる。
約4分(256秒)ごとに温度を測って、夏を例に書くと28℃を超えたらエアコンが切れているとみなしてリモコンの電源ボタンを(電気的に)押す。
また256秒後に温度を測り、前回よりも下がっていれば電源ONに成功したと判断して何もしない。逆に温度が前回以上なら再度電源ボタンを押す。その後も設定温度範囲(28℃以下)にならない限り、前回より温度が下がれば何もしない、前回以上なら電源ボタンを押すのを繰り返してエアコンをONにする
冬には全く逆に10℃以下になったら暖房用にエアコンONを試みる(もちろんリモコンで事前に暖房設定をしておく)。フェレットで暖房自動ONを使うことは無いと思うがせっかく作るので汎用的にしてみた。

何だかちょっと複雑だがエアコン用リモコンは電源ボタンが一つで押す度にON/OFFが切り替わるので、こういう事をしないと折角ONにしたエアコンを止めてしまう事になる。またエアコン本体が止まっているのにリモコンがON状態の時は電源OFFを送信してしまう(つまり空押し)ことになるが、その時は次回には電源ONを送信する。
このように1,2回ミスはするかもしれないが、設定した温度範囲に入るまでは頑張り続けてくれるので最後にはエアコンをONにしてくれる。
もちろん設定する温度範囲は、エアコンが動いてれば絶対にならないような温度にしないと駄目で、エアコンの温度設定が26℃なのに温度範囲上限を26℃にしたら、エアコンをやたらと止めたり動かしたりしてしまうことになる。


この装置、停電以外にも夏の始めや終わりなどにも使える。朝出かける時「今日は暑くなるか微妙だから、エアコンかけて出かけるべきか迷う」という時にエアコン切って出かけても、室温を監視して必要だったらエアコンを自動で入れてくれる。実はこれがメイン目的…(^^;)

自分が部屋にいる時にわざとエアコン止めてみたり温度センサを手で温めたりして実験したけど、なかなか良い感じに動作してくれる。これで夏の停電も大丈夫だし、夏の終わりにエアコン付けて出勤するかで悩まないで済みそう。
posted by kaishi at 00:48| Comment(4) | TrackBack(0) | ペット