PIC16F88・3色表示ハンダごてタイマーの製作 (2009/07/01〜2009/08/16)

(Last update: 2011/12/18)


まずはケーシングレイアウトを考えてみる。
この時点ではまだ構想を練っている段階で、
製作はしばらく先と思っていたのだが・・・
PCB カッターを使って
ガラスエポキシ基板をカット
基板表。
7セグ LED は基板に接着
基板裏。
3端子レギュレーター、チップ抵抗 x 2、
チップセラコン x 1 は裏面に実装
PIC部拡大 半導体リレー (SSR) 部拡大。
LED は動作モニタ用。
緑色の部品はスパークキラー
ケーシング最終レイアウト。
RX-802AS との連携を考えて
コンセントの1つを背面へ移動
角穴 x 4、丸穴 x 2、ネジ穴 x 3。
このケースは角穴空けが案外面倒。
最終配線の様子。
ヒューズの代わりに高耐圧
ポリスイッチを使用。
写真ではわかりにくいが、
基板とシャーシとの間には
絶縁用の紙が敷いてある
完成品前面 完成品背面
運用の様子 キーが押された状態で電源が
入ったらハンダごてには通電しない。
(安全対策。本文参照)
停止時は「--」表示 回路図
動作の様子

初めに:

 ホラそこ! 3色温度計の焼き直しだろ、とか言わない(爆)。そりゃ確かに数字を3色で表示するルーチンは使い回してますが何か?(汗)


製作の経緯:

 先日、温度調節ハンダごて goot RX-802AS を購入。こいつには自動電源 OFF 機能があるのだが、リセットするには機械式の電源スイッチを再操作しなければならず、案外不便だったりする。(安全対策上仕方ないけど)

 そこで以前から構想を練っていたこのタイマーの製作を一気に進めた次第。

 あと、鉛フリーハンダと温度調節ハンダごての扱い方を実戦習得し、鉛フリーハンダ移行の記念すべき第1号作品にする、という目的もあったり。


仕様:

・スイッチを押すことでリセットされるカウントダウンタイマー。スイッチを押さないまま所定時間が経過するとハンダゴテの電源が切れる。
・表示は2桁で分表示。
・カウントダウン時間はジャンパで設定できるようにする。ジャンパ OPEN で90分、CLOSE で30分。
・1秒毎にコロンを点滅
・安全対策を万全に(詳細後述)
・スイッチ操作時、圧電ブザーを鳴らす
・時間は TMR1 + コンペアで 500ms の割り込みを発生させて管理する (v3.0〜)
・AC ラインは 4A MAX とする

 なお、表示が緑(残り時間がたっぷりある)の時にはタイマーリセットではなく「電源断」とした。ちょっとした離席の際に、簡単にハンダゴテの電源を切れるようにしたかったので。


表示色とスイッチの効果:

残り時間 表示色 表示 スイッチの効果 ブザー
20分以上 残り時間(分) ハンダごて電源断
5〜20分 タイマーリセット
0-5分 タイマーリセット 1分毎にブザー鳴
0分 -- タイマーリセット、ハンダごて電源入


回路設計:

 数字の表示は 3色温度計の回路をそのまま使い、AC 制御は秋月のソリッドステートリレーキットを使用する。フォトトライアックへの出力には直列に動作モニター用の赤 LED を追加し、そのぶんキットに含まれている 330Ωを 150Ωに変更しておく(実機では 330Ω x 2 のパラ接続とした)。また念のため、トライアックには並列にスパークキラーを入れておく。

 7セグ LED のダイナミック点灯は、桁単位で順次表示する一般的なダイナミック点灯ではなく、3色温度計の時と同様、全セグメントを順次点灯していく「完全ダイナミック点灯」としている。したがって本来なら電流制限抵抗アノードコモン側に 1個で十分なのだが、新たに定数を決めるのが面倒だったのでそのままにしてある(殴)。

 PIC の電源はトランスレス回路にするか迷ったのだが、上記の「完全ダイナミック点灯」にしても 2色点灯時には最大 40mA 強必要なことから余裕をみて 5V 0.1A のトランス + 3端子レギュレーターとした。トランスの出力表記 AC 5V は実効値のため、ピーク電圧は 5 x √2 = 約 7V。ダイオードブリッジによる電圧降下も考慮しつつ、今回は低ドロップレギュレーターを使用した。

 またサービスコンセントは2つ装備。背面コンセントは温度調節ハンダゴテ RX-802AS 用、前面のコンセントは別の温度調節ハンダごて(ハンダ除去用 D型コテ先装備)やホットボンド・ガンを繋ぐために使用する。これに伴い AC ラインは MAX 4A とし、今回はヒューズの代わりに 4A でカットする 250V 耐圧のポリスイッチを投入。


ソフトウエア:

 メインルーチン側では LED のダイナミック点灯処理とキー入力処理を、割り込み処理内では時間のカウントダウン、コロンの点滅フラグ操作、圧電ブザーを鳴らす時間の管理を行う。よって今回のポイントは 1秒のカウント方法。

 1秒のカウントは、(1) TMR1 でコンペア機能を使う、(2) クロックを 32.768KHz にする( 32768 / 4 / 256 = 32 なのでプリスケール 32 の TMR0 オーバーフローで正確に 1秒をカウントできる)、といった方法が一般的。本作品ではそれほど精度は必要ないためあえて Ver.2 までは TMR0(クロック 8MHz、プリスケーラー 1:64 で 250カウント = 8ms)でカウントしていたが、TMR0 をいじるとプリスケール値がクリアされて誤差が出ることが判明したため、Ver.3 からは時間計測を TMR1 + コンペアに変更した。

 さて実際にコンペアを使うとなると、クロック 4MHz の PIC ならプリスケール 1:8 で TMR1 の 1カウントが 8μs となる。これをコンペア機能で 62500 回カウントして割り込みを発生させると丁度 500ms で都合が良くなる。


製作:

 ケースはタカチのアルミケース YM130(W=130, H =30, D=90)を使用した。このような「パネル面が取り外せないケース」ではハンドニブラー操作が制限される(ケガキ面の逆側に刃がくる)ため、角穴を開けるのは意外と面倒。ある程度までハンドニブラーで角穴を空けたら、後はチマチマとヤスリで削っていくしか(疲)

 また今回はケーシングの都合上、基板をやや複雑な形にカットする必要が生じたのだが、PCB カッター(HOZAN K-110)を購入したため、ガラスエポキシ基板ながら楽にカットできた。

 なお、半導体リレー(SSR)キットには専用基板が付属しているのだが、(1) SSR 基板用のネジ穴を空けるのが面倒、(2) トライアックをネジ止めすれば放熱と基板固定の一石二鳥になる、という理由からキット付属の基板は使わず、メイン基板上に実装した。


安全対策:

 管理人は、通常のハンダゴテの電源の入/切はこのタイマーで操作する運用を想定している(=滅多にメインスイッチを切らない)。そこでメイン電源投入後、さらにマニュアルでスイッチを押さないとハンダごてには通電しないようにしてある。

 その理由は、万が一、地震→コテの上に可燃物が落ちる→停電→停電復帰→火災発生、という最悪のケースを想定したため。またたまたま落下物がスイッチを押した状態で停電〜停電復帰した場合でも、起動直後にキースキャンを行い、キーが押された状態で電源が入ったらエラー(Er)表示して無限ループに入れてしまい、ハンダごてには通電しないようにしてある(写真参照、v2.1〜)。

 念には念を。ここらへんの自由度の高さが自作の特権といえよう ^^;

2011/12/18 追記: 2011/3/11 の東日本大震災の時、この安全対策を施しておいて心底良かったと思った。地震発生時、管理人は勤務先にいたが、この安全対策のおかげで少なくともハンダゴテによる火災の心配をしなくて済んだのだ。

 この逆のお粗末な例が、あらかじめ考え付くことに対処していなかった(もしくは考えることすらしなかった)福島第一原発。その結果は言うまでも無かろう。


今回の失敗:

 リセットスイッチを押しても期待した動作をせず、小一時間ほど悩む。結局ポート番号を間違えていただけだった(爆)

 また安全対策として盛り込んだ起動直後のキースキャンがうまく動作せず、試行錯誤するハメに。解決策は、あるタイミングで OPTION レジスタをクリアしてやること(ソース参照)なのだが、その理由は現在調査中。(どうも Weak pull-up ビットがポイントのようだが、そもそも Weak pull-up は PORTB に対してのみ影響があるはずで、リセットスイッチが繋がっている PORTA は無関係のはずなのだが・・・ しかもコンパレーター無効設定の後でないとダメっぽいし。謎は深まる・・・)

2010/12/06 追記:

 前述の通り、Ver.2 までは TMR0 で時間を管理していたのだが、TMR0 レジスタに書き込みを行うとプリスケール値がクリアされてしまうことが発覚(もっとも 数十分程度では深刻な誤差が出ないことは確認していたのだが)。いずれにしろ TMR0 で正確に時間を計測するには TMR0 レジスタをいじらない「フリーラン」が原則のようだ。

 ちなみに PIC の内蔵クロックの精度はそこそこ。TMR1 + コンペアで正確に割り込みを発生させたつもりでも 22秒 / 90分と案外大きな誤差が出た(誤差約4%)。そもそもデータシート上の誤差最大は ±10% 程度(ただし温度に依存、常温付近なら ±5%程度)なので一応「仕様の範囲内」ではあるが、16F690 のような「今時の PIC」(実測誤差 1% 程度)に比べれば昔の 16F88 の内蔵クロックは誤差が大きいようだ。

 なお、精度向上対策としては (1) 外付けクリスタルでシステム全体のクロックを正確にする、(2) TMR0 に TMR0 オーバーフローにキリのいい正確な外部クロックを注入する、のが定石。だが今回はポートを使い切っているためこれらの対応が取れないので、CCPR1L/R レジスタの値で微調整する、 OSCTUNE レジスタで調整する、PIC 内部のキャリブレーションデータを書き換える、といった策で対応するしか ^^;


改良案など:

 ・アースを配線していないので、せっかくの RX-802AS の高絶縁性が活かせていない(爆)。製作時にたまたま手持ちに3極の電源コネクタが無かっただけなので、いずれ 3線式に改良せねば。

 ・7セグ LED を使わず、2色 LED で簡易表示するだけにすれば 8pin の PIC でも同機能品の製作が可能。スイッチ、2色 LED、自励式圧電ブザー、SSR 制御、時間設定ジャンパでちょうどポートを使い切る感じで。面倒な 7セグ LED 配線が無いし、電源がトランスレス回路で済むからかなりコンパクトに仕上がるのでは。


プログラム:

 改変自由。ただし商用利用は厳禁。

プログラム Ver 3.1 (2011/03/02) asm & HEX ファイル
Soldering_Timer_v3.1.zip


今回学んだこと:

 ・鉛フリーハンダの扱い方
 ・温度調節ハンダごてと BC 型コテ先の扱い
 ・1秒毎の割り込み処理

 濡れ性の悪い鉛フリーハンダも、温度調節ハンダごてを投入することで実用的に扱えることを体感。今後は鉛フリーハンダに全面移行することにした。


おまけ

 そもそも作品の鉛フリー化を考えるキッカケになったのはこちらこちらの記事。動画を見ると、鉛入りハンダをちょっとこすり付けだだけでもしっかりと鉛が付着するようで、今まで鉛がべっとり付いた手で無頓着に飲食していたのかと思うと結構ゾっとしたわけです。これらの記事を読んで以来、ハンダ付け作業の後は念入りに手を洗うことに(爆)。

 温度調節ハンダゴテの導入で鉛フリー化のメドが立ったので、あとはハンダ付けで出る煙の吸煙設備も揃えねば。市販品は高いんで自作するかな・・・・ AC ファンに熱帯魚ショップで売っている活性炭パックを組み合わせれば安価に作れるし。おそらく最大の問題は吸引力だな・・・



 [電子工作のページへ]