google-site-verification: google3bd66dd162ef54c7.html

ソーラータイマースイッチの製作 ケースに入れて完成

 Arduinoで作るソーラータイマースイッチの話の最終回です。ソフトは完成しているので今回はハードを完成形に持って行きます。

 これまで Arduino UNO とブレッドボードで動かしていた回路を、CPUの単独動作にします。さらにケースに入れて使い易くします。ハード製作には回路図が必要なので完成型の回路図に書き直します。具体的には、Arduino UNO の状態からCPUのATmega328P単独動作の状態の回路図に書き直します。

▼回路図 (クリックで別窓に拡大図)
ソーラータイマースイッチ

 電源は5VのUSB充電器から取ることとし、USBーAケーブルを直出しにすることにしました。

 後でプログラムの書き換えが出来るように、6ピンのICSPコネクタを付けておきました。

 Timer Outの出力(回路図の右下)はとりあえずパワーFET(Q1)のバッファを入れて5V出力でLEDを点灯出来るようにしておきました。なお、LEDまでの配線が長くなりそうで、発振が怖いので、ゲートに抵抗(R2)を入れておきました。また、点灯テスト用にマニュアル点灯スイッチを追加しています。

 基板はおなじみの秋月のC基板(片面100ミル)を使い、ケースは秋月のABS樹脂ケース(P-07423)を使いました。

▼完成品の外観
ソーラータイマースイッチ完成
 いい感じに仕上がりました。スイッチはケースの上蓋を開けて操作します。実は、蓋を開けないで操作出来るようにしたかったのですが、細工が面倒だったのでやめました。左側に出ている黒い線は電源ケーブルで、先に付いているUSB-Aコネクタから電源(5V)を供給します。

▼内部基板
基板に液晶を乗せた状態
 スイッチの機能を手書きで記入していますが、左から、Reset、Dec.、Inc.、Enterです。右端のスライドスイッチは出力の強制ONです。

▼液晶を取り外した状態
基板
 左上の3ピンコネクタが出力(Timer Out)です。中央上の青い小さな基板は、液晶の取り付け位置を上にシフトさせるために付けた物で、強度を確保するため両面スルホール基板を使っています。右上はパワーFETで、足を変則的に曲げて液晶との干渉を防いでいます。
 記事を書いていて気付きましたが、この写真は電源のパスコン(C1,C2)が付いていませんでした。液晶やRTCの中にパスコンが入っているので、入れなくてもまあ大丈夫です。

▼裏面
裏面、配線が丸見え
 透明ケースなので配線が丸見えです。基板はプラビスで固定しています。

◆まとめ
 とりあえずソーラータイマースイッチが完成しました。市販のソーラータイマースイッチは1万円以上しますが、その1/10くらいの値段で作ることが出来ました。とは言っても、市販品は計装部品として必要な各種のマージンを確保しているので単純な比較は出来ません。ただ、機能としては遜色無い物が出来たと思います。

 今後このタイマーを使って、テレビボードのLEDダウンライトの自動点灯をやってみる予定です。

 ところで今回28ピンのICソケットを切らしていたのでCPUを直付けしました。ICSPコネクタがあるのでCPUを引っこ抜かなくてもプログラムの書き換えが出来るはずだったのですが、、、なぜかUSBシリアルケーブルがうまく動きません。チップはPL2303を使った物です。
 ちなみに以前もおかしくなったことがあり、対策のためにドライバの入れ替えをやったのですが、またしても動かなくなりました。最近 Windows10 の大きなアップデートがあったったので、たぶんその影響だと思います。

 やれやれ、また対策を調べないといけません。たぶんパチ物のUSBシリアルチップを使っている報いが来ているんでしょう。こういう非生産的なことに何度も時間を使うのは馬鹿らしくなってきたので、正規品を一つ持っていた方が良さそうです。あと、28ピンのICソケットも補充しないといけません。暑いけど久しぶりに秋月に行ってみようかなと思います。

【追記】
 書き忘れていましたが、回路の消費電流は0.2mAで、1秒に一回の表示更新時には約20msの間消費電流は16mAまで増えます。平均としては消費電流は0.5mAということになりますが、USBのACアダプタを電源に使うなら問題にならない消費電流だと思います。

ソーラータイマースイッチの製作 ソフトほぼ完成

 この間からArduinoで動かすソーラータイマースイッチを作っているのですが、そのソフトがほぼ完成しました。

 とは言ってもまずは回路図から、

▼回路図
ソーラータイムスイッチ回路図

 前回の記事とほとんど同じですが、スイッチが一つ増えています。このプログラムは沢山のパラメーターの設定が必要になるので、操作を効率的に行うために、Dec.(-)、Inc.(+)、Enterの3ボタン方式にしました。なお、以下の資料ではボタンを(Dec)、(Inc)、(Enter)と括弧付きで表現します。

  タイマーの出力の Timer Out にはインターフェイス回路の追加が必要ですが、それは相手が決まってから考えればいいので、今は状態表示用のLEDだけ接続しておきます。

▼実験用ボード
デバッグ中のソーラータイマースイッチ
 まだArduinu UNOとブレッドボードで動かしています。

◆機能
 ところで、ソーラータイムスイッチは計装機器として多くのメーカーから販売されています。調べてみると夜はON、朝になるとOFFになるのが基本動作になっていました。でも流石にこれだけでは単純すぎるのでしょう、どのメーカーも固定時間タイマーを組み合わせることが出来るようになっていました。以下は動作モードの説明図で、大崎電機の資料から抜粋したものですが、他メーカもほとんど同じす。

▼市販のソーラータイムスイッチの動作モード(大崎電機の資料から抜粋)
ソーラータイマースイッチの動作モード

 少し説明すると、日没/日の出時刻は設置場所や季節によって変わります。ソーラータイマーはそういう変化を反映した時刻で動作します。ただ設置環境によっては「朝明るくなるのが遅い」などの個別の違いがあります。そういう違いを補正するために、「早め」、「遅め」の調整が1分単位で出来るようになっています。

 固定タイマーは時計に連動したタイマーで、設定時刻にON/OFFの操作を行うものです。これは例えば、日没で自動的にONとした照明を夜明けまで点灯させ続けるのは無駄なので、24時になったら消す、という動作にしたい時に使います。他にもいろいろな理由が考えられると思いますが、ともかく固定ONとOFFのタイマーを各々、有効/無効に設定することで、上の表のような各種の動作パターンを選択出来るようになっています。

◆プログラム
 Arduinoで動かしますが、せっかくなので市販のソーラータイマーと同等の機能を実現することにとにしました。

 プログラムは700行以上あって長いので、下記リンクに置いておきます。なお、同じような機能の関数が複数あったりして汚いソースになっていますがご容赦を。
 ソーラータイムスイッチのプログラム_20170721SolarTimeSwich (Shift_JISでエンコードしています。拡張子をinoに要変更)
 プログラムはピン割り込みを使って省エネで動くようになっていますが、そのあたりの話は割愛し、この記事では操作方法につき説明することにします。

 操作は大きく以下の二つのグループに分かれています。
1.起動時のボタン操作による動作条件の設定
  (指定ボタンを押した状態でリセットボタンを押す。その状態で先にリセットボタンを離す)
2.動作中のボタン操作による状態表示

 以下、この順に機能を解説します。

1.起動時のボタン操作による設定

1-1  時計の時間合わせ (Dec)と(Inc)を押しながらリセット
▼開始メッセージ
時計合わせ開始
 時計合わせモードに入ったことを表示。ボタンを離すと次の画面へ進みます。

▼時計の時刻合わせ
時計合わせ中
 カーソルの位置の値をInc/Decボタンで設定し、Enterで確定します。確定するとカーソルは次の位置に移動。分の値を決定(Enterを押)したタイミングで、00秒として時刻合わせが行われます。なお、カーソルは逆方向へは動きません。間違いに気付いた時はリセットで最初から入力。

1-2 ソーラータイマーのオフセット設定 (Dec)を押しながらリセット
▼開始メッセージ
ソーラータイマー

▼オフセット値の設定(日没補正)
ソーラータイマー
 日没でONにする時刻の補正量を設定します。遅くしたい場合は+、早くしたい場合は-の合値を入れます。設定は分単位で行い、±99分まで設定可能です。

▼オフセット値の設定(日の出補正)
ソーラータイマー
 日の出でOFFにする時刻の補正。設定方法は上記と同じ。

1-3 固定タイマーの設定 (Inc)を押しながらリセット
▼開始メッセージ
Fixタイマー設定

▼固定OFFタイマーの設定画面
Fixタイマー 時刻設定
 USE/NO USEの選択と、動作時刻を設定します。この画面は、23時10分にOFFを設定しています。

 市販のソーラータイマースイッチは、固定時間タイマーは夜間(日没から日の出まで)しか設定出来ないようになっているようですが、このタイマーではそのような制限は無く、昼間の時刻も設定出来ます。

▼固定ONタイマーの設定画面
Fixタイマー
 この画面では、固定ONタイマーは不使用(NO USE)に設定しています。

1-4 経緯度の表示 (Enter)を押しながらリセット
▼経緯度の表示
経緯度表示
 設定されている経度、緯度を表示します。この座標を使って日の出、日の入り時刻を計算しています。この画面から抜けるにはリセットします。なお、座標の値の設定機能は無いので値を変更したい場合は再コンパイルが必要です。デフォルトの値は東京(日本地図原点)です。

2.動作中のボタン操作で表示
2-1 何も操作しない場合 ボタン操作無し
▼情報表示(ノーマル)
通常表示
 何もスイッチを操作しないとこの画面が表示されます。

 上段に現在の 月/日、時:分:秒を表示。下段にその日の日の出/日の入り時刻を表示します。右上の黒丸はタイマーがONの時に表示されます。

2-2 ソーラータイマーのオフセット表示 (Dec)を押す
▼ソーラータイマーの設定状態確認
ソーラータイマー
 右端にソーラータイマーが動作するオフセット値を±の値で表示します。なお、値は分単位。表示している時刻は当日の日の入り/日の出時刻です。操作を統一するため、ソーラータイマーの設定と状態確認は(Dec)を使うようにしています。

 ボタンを離すと通常表示に戻ります。なお、ボタン押しの検出は1秒間隔で行っているので、短時間押した場合は表示が変わらない場合があります。ボタンは少し長めに押す必要があります。以下同様です。

2-3 固定時間タイマーの表示 (Inc)を押す
▼固定時刻タイマーの設定状態確認
Fixタイマー
 Incボタンを押すと、固定時刻タイマーの設定状態を表示します。なお、操作を統一するため、固定タイマーの設定と状態確認は(Inc)を使うようにしています。

 この例では、23:00にタイマーをOFFし、ON時刻の指定が無いのでONはしません。日の出にソーラータイマーからOFF指示が出ますが、元々OFFだったので状態変化は無しという動作になります。

2-4 西暦の表示 (Enter)を押す
▼年表示の情報表示
通常表示
 左上の 月/日を表示していた位置に西暦を表示します。(2017/)

◆まとめ
 予想外に長いプログラムになってしまいましたが、たぶん市販されているソーラータイマースイッチと同等の機能を作り込むことが出来たと思います。そのまま使っていただいてもいいし、流用できる部分があれば、そこだけつまみ食いしていただいてもかまいません。

 市販のソーラータイマースイッチでは設置場所を、日本を10のブロックに分けて設定するようになっています。この方法は判り易いですが、同じブロック内でも日の出時刻は数分くらい違うので精度はあまり良くありません。
 このソーラータムスイッチは設置場所の経緯度をピンポイントで指定出来るので、市販の物より精度良く日の出日の入り時刻を予想出来ると思います。また、日本本土から遠く離れた島でも安心して使えるはずです。

 この先の予定としては、このソーラータイムスイッチを使って、夜になったらテレビボードのLEDダウンライトを点灯させる仕掛けを作ってみたいと思います。実は7年前に、暗くなるとLEDを点灯する回路(太陽電池の電圧検出方式)というのを作りましたが、この発展型ということになります。昔はトランジスタのシュミットトリガ回路がちゃんと動いただけで喜んでいたのですが、7年経つとマイコンが使えるようになりました。自分で言うのもなんですが、我ながら進歩したと思います。

アナログ気圧計2号機の電池電圧

 5月2日から運転を開始したLPS25HとArduinoを使ったアナログ気圧計2号機の電池電圧の状況です。と言っても、どんな気圧計だけ知らない人がいそうなので外観写真を先に、

▼アナログ気圧計2号機
稼働開始
 ケースを開けて中が見える状態の写真です。

▼電池電圧推移
電池電圧推移
 電池を入れて動かし始めてからの電池電圧の変化です。(3本直列の電圧です)

 最初は4.9Vくらいあったのが4.7Vくらいまで下がってきました。この先4.5Vくらいになると、電圧低下のペースはゆっくりしてくると思います。

 電池電圧がグラフの赤い点線で示した3.4Vまで下がると、プログラムでバッテリーが空になったと判断して、指針をバッテリーエンプティ表示エリアに移動させて、そのまま停止する仕掛けになっています。そうなるのは、たぶん3年後と予想していますが、ともかく現時点ではこの気圧計は想定通りに動いていると思います。

 これ以外にアナログ気圧計の1号機も並行して動かしていたのですが、こちらは電池電圧の低下で表示がおかしくなりました。

▼気圧計1号機(左側)は電池切れで表示がおかしくなった
アナログ気圧計、前作は電池切れ
 全然違う値を表示していますが、正しいのは右側の気圧計です。 

 電池を交換したのは2015年11月3日なので、1年と8ケ月動いたことになります。この前に電池交換した時は1年10ケ月動いていたので、このあたりが1号機の気圧計の実力ということでしょう。

 実は最初は3年くらい動くと思っていたのですが、予想より早く電池寿命になってしまいました。マイコンは正常に動いているのですが、電源電圧低下に伴い、パルスモーターの駆動条件が変わってモーターが脱調するようになり、その結果表示がおかしくなったのだと思います。
 もう少し詳しく説明すると、モーターを逆方向(CCW)に回転させる場合の駆動条件のマージンが少なく、順方向(CW)は正常に針が動くので、気圧が上下に変動していく過程で、針が本来の位置より高い方向(CW方向)にだんだんずれていったのだと思います。

 何のアラームも出さないでこういう表示になってしまうのは、指示計器としてはちょっと問題です。それに、電源電圧は 4.22V あり、電池一本当たりまだ1.4Vの電圧が残っている訳で、これはもったいないないです。
 ということで、この気圧計をこれ以上動かし続けるのは電池の無駄使いになるので、ここで動かすのを止めることにします。

 パルスモーターの駆動条件を、電池電圧が下がった状態を想定して設定していれば、もう少し電池寿命が延びた可能性があります。そこらへんも考慮して作ったのが気圧計2号機なので、今後はこちらの気圧計の動きを見守りたいと思います。なお、2号機の電源供給方式の検討についてはこのあたりの記事で解説しています。

◆ちょっと気になる情報
 この気圧計の電池はダイソーの単三アルカリ電池を3本使っています。3年動かすつもりなら一流メーカーの電池を使えよ、という声が聞こえて来そうですが、貧乏性なので安い電池を使いました。何しろ 5本で100円です。

 居酒屋ガレージ日記さんの最近のブログに、ダイソーの単4アルカリ、やってくれるという記事が書かれていて、ダイソーで買った同じような外装の電池が液漏れした話が出てきます。居酒屋ガレージさんの記事の電池は単四で、今回使っているのは単三の違いがありますが、外観のデザインは同じなので、たぶん同じメーカーの製造だと思います。ちょっと心配な情報です。
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード