XRQ技研業務日誌

ものづくりを楽しんでいます。日々の暮らしの中に面白そうなものを探しながら

モールス符号で電圧を表示する

shig552008-01-12

年末年始の多様な中で、すっかりブログを書くことから遠ざかってしまった。気が付けばすでに2008年。前回のブログが11月半ばなので、2ヶ月近く間が開いてしまった。
冬至を過ぎ、日照は伸びているのだが寒さはこれからのようだ。今日は朝から霧のような雨が降り気温の上がらない一日だった。
先日、南房総方面に行くことがあったが、水仙はもうそこここに咲いていて、ポピーは満開、ストックやヒャクニチソウもたくさん咲いていた。冬とは言え、もう春の兆しが感じられる。

Jackson Harbor Pressから発売されている、DC-Deeperというキットを組み立てた。小さな12F675という8ピンのPICにプログラムされているのだが、なかなかの優れものである。モールス符号で電圧を教えてくれる。液晶やLEDで表示されるものはこれまでもあったが、表示画面がないだけ小さくできるし、車の運転中など目をそらさずに電圧の確認が出来る。

このアイディアでバッテリー監視の装置を自分で作ってみたいと考えた。MikroBasicを使ってプログラムを考えることとする。
12F675にはA/Dコンバータが内蔵されているので、この機能を使って電圧を監視し、三色のLEDで正常・注意状態・電圧低下警報を出す仕組みはすぐに作ることが出来た。教科書通りのプログラムである。MikroBasicにはLibraryがあるのでそれを利用して電圧によってLEDやブザーを動作させることは順調に進んだ。
しかし、そのA/Dコンバートされた数値を電圧としてモールス符号に変換するところでつまずいてしまった。電圧を4桁の数字としてその一桁ごとにモールス符号として送出すればいいのだが、音は出ても意味のある符号にならない。それでも、しばらく悩んでプログラムのバグ取りをして符号が出るようになった。しかし、本来出てこなければならない数字ではないのだ。
行き詰まったときには、小休止が必要だ。一つのことに思考が方向付いてしまうと全体が見えなくなってしまう。バグ取り作業から離れて数日を過ごした。
私は風呂に入っているときにアイディアが涌くことが多い。この日も湯船に浸かってぼーっと中空を見ていた。そのときに閃いたのが「変数」である。これまでバグ取りに集中し、プログラムの流ればかりを追っていたのだが、「変数」について十分検討していなかった。
プログラムの中ではいくつもの変数を使っている。byteは255までwordは65535までの数を扱うことが出来る。これ以上になると切り捨てられてしまうのだ。このことに気づき、変数を吟味した。すると電圧を変換する過程でこの範囲をオーバーしてしまうところがあったのだ。この部分を修正するとプログラムは正常に走り出した。
わかってしまえば単純で初歩的なミスである。しかし、産みの苦しみはこんなところにあるのかも知れない。
回路は出来たので次はケースへの組み込みである。出来るだけ小さくしたいのでレイアウトを工夫しなくてはならない。ブザーを含めすべての回路を基板上に載せてしまうとケースの蓋が閉まらない。ブザーを外し、どこかの空間に収めなくてはならない。結局、ユニバーサル基板を切り抜き、ブザーを収めるスペースを確保することが出来た。
もの作りはおもしろい。方針を立て全体の構成を決め、その一つ一つの部分を作っていくのだが、いつも壁が待っている。いろいろと試行錯誤をし、後戻りをして他の道を考え、乗り越える方策を探す。少しずつ前進をし、最後の壁を乗り越えられたときの喜びは大きい。
小さな装置だが、早速、車に取り付けた。ボタンを押すと4桁の数字が返ってくる。正常電圧を示すブルーのLEDが光っているのも愛おしく感じる。