2010/03/02

導通チェッカー

PIC10F222で導通チェッカーを作りました。

プローブどうしを接触させれば電源オン。測定をやめて約16秒経ったら自動電源オフ。電源が入っているかどうか分かりやすいように、測定中は常に音が鳴り続けます。音はいわゆる「金属探知機」みたいな断続音で、抵抗値が低いほど周期が短くなり、約3Ω以下で連続音になります。

SDカードのケースに入れて、まっすぐに伸ばした安全ピンをプローブにしています。この、ぜんぜん安全じゃない安全ピンは、使うときだけはめ込みます。もう片方はワニ口クリップなので、測定対象に固定したり、別のプローブを挟んだりできます。

メイン基板(?)はPIC10の汎用マイコンボードとほぼ同じものです。ケースの厚みがないので空中配線してますが、回路は単純なのでたいしたことはありません。

A/D変換を使って抵抗値を測定する、という方法をとっています。測定対象には最大で0.3mAぐらい流れます。
測定回路自体の保護については、特に何もしていません。たいした回路じゃないし、PIC内部にもいちおう保護ダイオードがあるので。
導通判定の閾値を調整するための「ゲタ」として約12Ωの抵抗(20Ωと33Ωの並列)を入れてますが、これは別になくても良かったかも。
音と連動して光るLEDは、いちおう保護回路としての意味もあります。

HEXファイル: checker.HEX
プログラムのメインループでは、GP0の電圧をA/D変換して、その値から求めた抵抗値に応じて音のインターバルを変える、という処理を実行します。A/D変換値と抵抗値は比例してないし、抵抗値のlogをとりたいので、あらかじめ計算しておいたテーブルを参照しています。
オープン状態が長く続いたらGP0をデジタル入力にしてスリープし、そこからGP0のレベル変化で起きてリセット。これだけで電源の制御ができます。

電池ホルダがケースに入らなかったので、電池を直接ケースに入れて、ケース内部の出っ張りとかを利用して固定しています。電極は、100円ショップで売っている薄~い真鍮版を切って両面テープで貼り付けたもの。これが意外と簡単で、コストパフォーマンスも非常に良いのです。

2010/02/13

6セグ時計のボタン

アクリル板で6セグ時計のケースを作りました。

ボタンの数はできるだけ少なくしたい。
がんばったら1個でもできるけど操作しにくい。
2個あれば十分だけどなんか普通すぎる。
ということで2個のボタンをくっつけて1個の大きなボタンにしました。

ボタンというより棒です。スペースバーより長いです。
このバーの部分は、厚い透明のアクリル板を切り出して、
アクリル用の研磨剤で磨いたものです。

右と左の端にタクトスイッチが1個ずつ入っていて、
それぞれ独立して押せるようにしてあります。
右の端を押したら右だけ、左の端を押したら左だけが押されます。
では真ん中を押すとどうなるかというと、両方(ほぼ)同時に押されます。
ということは、バーを押す位置によって3通りの入力が識別できるわけです。

1個にするか2個にするかで迷った結果、
見た目1個で実質3個のボタンになったのでした。

2009/12/31

三角ねじを外す

ヘクスローブ用のドライバーがやっと100円ショップに出てきたと思ったら、
今度は三角形のねじですよ。しかもだんだん増えてきてるような気がする。

専用のドライバーは工具の店に行けば売ってるはずですが、
素人がジャンクいじりに使うには高価すぎます。
組み立て式の家具についてくる六角レンチとかを削って自作する、
という手もありますが、もっと手間のかからない方法もあります。

こうやってラジオペンチの片方の先を差し込んでゆっくり回せば、
いちおう外すことができます。
先があんまり細くないラジオペンチの方が良いと思います。

2009/12/23

PIC10の汎用マイコンボード

PIC10F Hobby Kit の基板にPIC10F222とチップLEDを乗せてみました。
8ピンDIPよりちょっと大きい程度のサイズですが、
これでもいちおう汎用のマイコンボードなのです。

LEDは、余ったランドを利用して、ICSPで使わないピンに接続してあります。
(べつになくても良いのですが、いちおう単体でも使えるように。)
6ピンのピンヘッダは書き込みおよび周辺回路との接続用ですが、
激しく本体基板からはみ出してます。。

回路は、ほぼICSP用の結線そのものです。

LEDには電流制限抵抗を入れずに、PICの内部抵抗を利用します。
電源が3V程度なら、これでも全然大丈夫です。
もしも明るすぎたら、PWMで暗くすれば良いのです。

こうやって書き込みます。

書き込み時は必然的に周辺回路と切り離されることになります。
後からプログラムを書き換えるのも楽です。

実際の使い方の例。
ガンプラに仕込んだLEDを制御しています。



本体を適当に押したら、底面に付けたスイッチが押される仕組みです。
このスイッチを検出して、押された回数に応じてLEDを制御します。
LEDがオフのときはスリープして実質的に電源オフ状態にしています。

2009/11/21

ewfy 1.0.1



今でも需要があるのかどうか分かりませんが、ewfyを更新しました。

ewfy 1.0.1

前のバージョン(1.0.0)では、EWF有効な状態から「常に無効」でコミットしたら、いつまで経っても「コミット中」という表示のままになります。
(その場合でも、実際のコミットはちゃんと終了します。)
いろいろ調べた結果、やはりewfyのコミット監視処理のバグということが分かったので修正しました。

ついでに、もう1点変更しました。
ewfyには、「自動コミット実行前に確認するという設定でも、メモリ使用量がコミット基準を急激に超えら確認なしでコミットを実行する」という機能があります。
もちろんこれは安全のためですが、よく考えたらむしろ危険な場合もあります。
「本当に」急激にメモリ使用量が増えたら、コミットの最中に落ちて、ディスクの内容が壊れてしまう可能性があるのです。これはEWFを使う上で最も避けたい事態です。
そういうわけで、デフォルトではこの動作を行わないようにしました。