lu ru
キーボード型電源制御装置(経過報告)

[キーボード表面(穴が開いてます)] 昨年末から今年の初めにかけて出鼻をくじかれた 「ブロードバンドルータの停止」からはや2ヶ月半。 今のところは嘘のように安定して動いてます。 とは言え、対策は必要なのだ!

nekodama.com の信頼性向上のための必殺ハードが ようやく動き出しました!! 未だご覧のように(→)キーボード上に穴が開いたままの 状態なのでかっこ悪いんです。 表側は完成後に写真を入れ替える予定です。

さて、このハード、 基本方針は簡単明瞭、「ブロードバンドルータがハングしたら 一旦電源を入れなおす」というものです。 nekodama の Linux サーバで定期的にルータに ping を打ち、 反応が返らない状態が続いた場合に電源の OFF, ON を 行うというものです。

なぜキーボードに組み込んだかと言えば、

  • +5V の電源が取れる
  • Num Lock, Caps Lock, Scroll Lock の3ビットの信号が取れる
  • すき間が多い(組み込みやすい)
という理由からです。
とは言え、制御用に使おうと思っている3つのLEDは キーボードを操作すると変化するものであり、誤動作の危険性があります。 そこで、3つのLEDを普通はありえないようなパターンで点滅させた時に のみ有効となるようにしました。
また、大きな設計方針として省エネにします。 やっぱり、二酸化炭素の排出を抑えないとね。
一番大きいのは、リレーにキープリレーを使っているという点です。 キープリレーは状態を変化させる時だけ通電すれば良いという、 画期的な省エネリレーです。 また、今回制御用にワンチップマイコン PIC 16F84 を使ったのですが これはそもそも 10[mW] 以下という低消費電力です。
その他電流が大きいのは LED ですが、これは約15秒に1回0.1秒だけ 光らせる事で電力消費を極力抑えています。
[キーボード裏面(基板が入ってます)]

さて、中身なんですがキーボードの裏を開けると 右の写真のようになっています。
左側にあるのがもともとのキーボード制御基板です。 で、上側真ん中にあるのがメインの電源制御基板で、 その右側にはスパークキラーを搭載した小さな基板があります。
[電源制御ボード] 電源制御基板はご覧の通り、穴あき基板の上に作りました。
左側のチップが、ワンチップマイクロコンピュータのPICです。
中央部分に4つ並んでいるのが、リレー駆動用のトランジスタと抵抗です。
右側に2つ並んでいる黒い箱がリレーです。
[電源制御ボードの配線図] 右の図は、電源制御ボードの部品配置および配線を示した図です。

全体の配線図は、下記の図の通りです。
大半の機能はワンチップマイクロコンピュータの PIC 16F84 に 押し込めたため実にシンプルです。

以下はこの回路の設計ポイントです。 結構自分の世界にはまってしまっているので、 時間の無い方はスキップして結構です。

レーの接点は実は「DCは30Vまで」らしくて、 リレー2の方に つなぐ予定のオーディオテクニカの外部制御型のテーブルタップ の「DC 50V」がうまく切れない可能性がありました。 そこで、接点が2つあったので直列にして耐圧を増やしました。 また、スパークキラーもDC用ってのがあったのでそれにしました。 何でも、「NTT仕様」だとかで多分黒電話なんかに入っているもの なのかも知れません。やたらでかい! 「ACの方は125Vまで」 らしいのでOKです。ただし、電流が 0.5[A]〜0.25[A]程度まで なので、こちらは接点を並列にして電流を稼ぎます。 安全のため、0.2[A] のヒューズをかませました。
ロックは 4[MHz]のセラロックを使いました。ホントは 32,768[Hz]の時計用のやつを使ってもう一段の低消費電力化を 狙いたかったところではあるのですが、「つい4MHzのセラロックを 買っちゃった」のでそのまま使いました。
ランジスタは実はPNPタイプを使いました。これは、当初 汎用ロジックICを使って駆動しようと考えていて、 その場合否定論理のチップが多いため LOW で ON になる方が やりやすいと思ったためです。が、PICを使う場合は どっちでもOKです。なお、リレー駆動の際にダイオードを かませるのはいわゆる「定石」のノウハウで 半導体で誘導性の負荷を駆動する際にはこれを入れないと OFFにした際のスパイク電流でトランジスタを壊してしまいます。
ニタ用のLED4個は、 実は当初計画していなかったのですが、 評価用の回路を組んだときに出力が余っていたので付けたら これが結構良かったので、急遽後から付ける事にしました。 PICの出力能力が高いので、もう直接駆動!です。 電流も多めに 5[mA]弱を流して明るく発光させてます。
とは、リレーのコイルを駆動する際に電源が不安定にならない ように、入り口に 100μFのコンデンサとノイズ防止に 0.1μF のセラミックコンデンサを付けました。

[回路図]

PIC制御ファームウェア(ソース)

このファームで特に工夫した点は、キーボードのLEDの読み取り部分です。 キーボードのLEDは、単純に点灯しているように「見える」のですが、 実はダイナミック点灯となっていて(点いたり消えたりしている)、 単純に読み込むと「点いている」はずなのに、「消えている」ように 読み込めてしまいます。

そこで、0.1 秒間の間に1ミリ秒、0.8ミリ秒、0.64ミリ秒間隔で サンプリングして、サンプル値全体の50%以上を占める安定した状態を決定 するというアルゴリズムにしました。 これにより、安定した状態読み取りが実現しました。

実は、このこと自体当初わかっていなくてファームの試験中に発見 しました。いやぁ、汎用ロジックICで作っていたら今頃は 「なんで??」って誤動作に悩まされ続け、しかも解決のためには もっとたくさん回路を組み込まないといけない!とかいう事に なっていた可能性があります。 いやぁ、ワンチップマイクロコンピュータさまさまです!

とは言え、このマイクロコンピュータ、制御用に特化しているだけあって アーキテクチャがちょっととんがっている訳ですよ。 だから、アセンブラーや内部I/Oの使い方に慣れるまで ちょっと違和感がありました。 あと、各入出力のピンに「特徴」があって、どれも同じという訳では なくてこの辺りも慣れが必要ですね。 でも、無機質な構造よりも昔の 8080 シリーズのようにちょっと 「味のある」設計で、手で作るにはなかなか良いと思います。
なお、このソースは秋葉原の(株)秋月電子通商の 「PICプログラマーキット」に付属の独自アセンブラー用です。 オリジナルに比べて格段に使いやすくなっていますが、 独自なのでやはりその違いがわからないと混乱しちゃいます。 ご注意下さい。(下記の参考リンクはオリジナル版で 書いてあります。混乱しまくりました。(T_T)

(Linux 上の監視プログラムは目下開発中です。 完成後また報告予定です。)

[参考]
http://www.omron.co.jp/ecb/products/pdf/omron/relay/g6a.pdf OMRON データシート (G6シリーズ, PDF)
http://www.interq.or.jp/japan/se-inoue/pic.htm PIC入門
http://www6.ocn.ne.jp/~sunnydog/PICアセンブラー (tonyの小部屋)




[ホームページへ戻る] ・ [いんぎらーっとしまっし Part2] [ねこだま掲示板2] [ねこだまについて] [カップルズ・バイオリズム]

2002.02.17 Written by , all rights reserved.

lb rb