本来は鉄道や連続運転装置などで使うものです。
デッドマンスイッチ(製作中)
半田ごての切り忘れ、けっこうしてしまいがちです(実際何度もしました:苦笑)。
15Wほどの半田ごてがちゃんとこて台に固定されていれば問題は無いのですが、何かの拍子に作業台の上に落ちたり異常過熱しないとも限りません。電源切り忘れは思わぬ事故に至る危険性が潜んでいるのです。
という事で放置しておくと一定時間で電源が切れるタイマーを作る事にしました。
オフタイマーと呼んでも良いのですが、動作がちょっと違うのであえてデッドマンスイッチとしてみました。元々は産業機械等で作業者が継続して操作を行うか監視をしているような場合で、作業者が運転中に予期しない状況(心神喪失や死亡するなど)になった場合、スイッチ等の正常操作ができなくなると運転を中止するためのものを指します。
鉄道等では運転ハンドルのグリップに付けられていて、グリップのスイッチが握られない状態になったり放されたりすると自動停止するようになっていたりします。
運転中に「生きてるよ!」とボタンを押すとオンの状態のままタイマーをリセットし、カウントダウンが再度最初から始まる仕掛けなので、単純なオフタイマーと違ってリセット動作でカウントゼロのオフ状態になるわけではありません。
今回は手持ちでそこそこ在庫があったPIC16F628Aを使ってみました。プログラムメモリが倍の容量あるPIC16F648Aも手持ちにあったのですが、そんなに大きいプログラムにもなりそうに無いので2kワードのデバイスとしました。
I/Oピンの数がギリギリなのでATtiny2313の方が良かったも知れませんが、開発環境であるMPLAB XとCコンパイラであるXC8がどんなコードを吐き出すかのテストも含めてAVRではなく、あえてPICを選定してみました。もっともいまでは会社が併合してAlmelは無くなりMicrochipに統合されてしまっていますのでどちらのMPUを使っても同じ開発環境であるMPLAB Xが使えるようになっています。
今回の製作で一番悩んだのはロジック系のための電源です。
制御対象はAC100Vですのでそこからなんらかを使ってDC5Vを作り出さなければなりません。一番手っ取り早いのがAC-DCスイッチング電源ですが、有名メーカー製のモジュールタイプやユニットタイプではこんな回路規模にはなにやら大げさ過ぎます。かといって単純に整流しただけの後段にツェナーダイオードでは表示素子のLEDの駆動にはちょっと電源容量が足りません。
そこでネットで見つけた超小型のAC-DCスイッチングコンバーターを使ってみました。オンボードで実装するのはちょっと無茶かも知れませんが、回路を見るとそこそこちゃんとしているので、燃えたりする心配は少ないかと思います。この小さなボードで700mA取り出せる様ですが、今回の回路ではそこまでの消費電流はないので余裕でしょう。
コンデンサの実装がぞんざいな感じなのは中華製ならではではないかと。
プログラム的にはオーソドックスです。タイマー・カウンターで時間管理をし、ダイナミック点灯で7セグメントLEDを点灯させ、スイッチをスキャンして入力を得るという何の奇抜な手法はとっていません。残り時間が迫ると時報のように音を鳴らすのも考え中。
回路的にはちょっと工夫した点としてはLED点灯制御をしているトランジスタは抵抗内蔵タイプで部品点数を減らしたのと、2桁表示に桁選択を2ポート使用するのではなく1ポートで制御し、0または1で必ずどちらか一方の桁が点灯するようにし制御線を1本減らしました。制御線の先でNPNタイプとPNPタイプへ並列にベースが接続してあります。全部の桁をオフにできませんがプログラム側で点灯セグメントを全部消灯する事で対応します。
だいたいの部品配置が決められましたのであとは配線〜筐体加工の行程へと進めます。
と宣言しておいて心苦しいのが、なかなか手を動かしている時間が少ないのが昨今の状況。管制装置は必要なので製作を進めたいのですが、筐体加工にかける時間をなかなか融通できません。