● 製作時の失敗談
開発中、どうしても LED の g セグメント(RA1ポート)が点灯せずに悩みました。冬場だったこともあり、静電気で PIC を壊したかと疑ったりもしましたが、チップを交換してもうまく動かず、MPLAB IDE の標準デバッガ MPLAB SIM でスペシャル・ファンクション・レジスタを参照しながらプログラムをトレースすることにしました。
写真1 レジスタの様子を見ながらデバッグ中
RA1 を H出力した直後にブレークポイントを設定し、TRISA レジスタの値を確認してみても L (=0) のまま。よくよく見るとANSEL レジスタがアナログ設定 (各ビットが1) のままであることがよくわかる
RA1 を H出力した直後にブレークポイントを設定し、TRISA レジスタの値を確認してみても L (=0) のまま。よくよく見るとANSEL レジスタがアナログ設定 (各ビットが1) のままであることがよくわかる
まず RA1 にデータを出力した直後のコードにブレークポイントを設定してプログラムを実行してみたところ、やはり RA1 ポートに出力が反映されないことが確認できました(写真1)。これによってソフトウェア側に問題があることが確定しましたので、さらに詳細にレジスタの様子を追っていくことにしました。
プログラム先頭から1ステップずつトレースしていくと、ANSEL レジスタの RA1 ポートの値が 1(=アナログ・ポート設定) であることに気づきました(写真1)。本来なら ANSEL レジスタの RA1 はディジタル設定(値が0)になっていなければいけません。結局、ANSEL レジスタが初期状態で全ポートともディジタル設定になっているものと勘違いしていたのが不具合の原因でした。そこで ANSEL レジスタで RA1 ポートをディジタル設定にして問題を解決するとともに、デバッガの威力を再確認することとなりました。
なお先にも書きましたが、PIC16F88 では TMR1 使用時は RA6, RA7 ポートが TRISA レジスタの設定に関わらず強制的に入力ポートに設定されてしまう(しかもデータシートの記載もわかりにくい)という落とし穴もあるので要注意です。
● 製作と注意点
基板の大きさとの兼ね合いもありますが、スペースが十分にないと、LED を基板に接着したはいいがはんだゴテが当てられずに配線できない、という可能性が出てきます。LED 接着の際には事前に配線スペースを十分に検討してください。
なお、C1、C3 はバイパス・コンデンサです。PIC やOPアンプの電源・GND ピンのなるべく近くに実装しましょう。また C4、C5 も3端子レギュレータのすぐ近くに実装しましょう。
写真2 まずはブレッドボードで動作確認
2色7セグLED はピッチが合わないので、別の7セグLEDで代用。
2色7セグLED はピッチが合わないので、別の7セグLEDで代用。
写真3 試作品基板表
輝度調整しやすいように集合抵抗を使用。PNP トランジスタ も Ic = -0.5A の2SA854 を使用している。
輝度調整しやすいように集合抵抗を使用。PNP トランジスタ も Ic = -0.5A の2SA854 を使用している。
写真4 基板裏
チップ・セラミック・コンデンサ四つあり。
チップ・セラミック・コンデンサ四つあり。
写真5 LED を実装した様子
写真6 後方から見たようす
LED はエポキシ系接着剤で固定。
LED はエポキシ系接着剤で固定。
写真7 タカチのプラケース(SW-100B) に収めた
写真8 角穴を空けて、スモーク・アクリル板を接着剤で貼り付ける
写真9 ケース裏側
温度センサはケースに接着した。
温度センサはケースに接着した。
写真10 3色表示の様子
● 調整
配線間違いやはんだ付けミスがないか十分に確認したら、いよいよ通電してみましょう。うまく製作できていれば LED に「L」、「H」、温度、のいずれかが表示されるはずです。何も表示されなかったり、「Er」表示が出たりした場合は再度配線を確認しましょう。
動作に問題がないようであれば、以下の手順で調整を行います。
(1) テスタで温度センサの2番ピンと GND との間の電圧を測定(電圧1)
(2) テスタで LMV358 の3番ピンと GND との間の電圧を測定(電圧2)
(3) 上記の 電圧2/電圧1 の比が 9.8 になるよう VR1 を調整
うまく室温が表示されるようになりましたか? OPアンプのゲインはそれほど神経質になる必要はなく、10倍程度に合わせておけば実用上の問題はありません。
● ケースに収める
筆者はタカチのプラスチック・ケース SW-100B に入れました。LED 用の角穴はドリルとヤスリで整形し、写真8 のように内側からスモークのアクリル板を接着しました。基板はケース底面にネジで固定しますが、LED を基板に接着した場合は別途 LED 固定の必要がなくなりますので、実装が楽になります。
なお、温度センサはなるべくケース外に出しましょう。ただし基板と温度センサ間の配線は長すぎるとノイズの影響を受けやすくなりますので、最大でも 30cm 程度に留めてください。温度センサをケースに接着する場合は、ケースに通気孔を設けたり、3端子レギュレータから離すなどして、回路から発生する熱の影響を受けないように配慮しましょう。
● 最後に
筆者宅ではこの温度計を寝室に置いて愛用しています。暗くても温度が読めますし、メガネを外していても色で大体の温度がわかりますから、大変重宝しています。皆さんも使いやすいようにいろいろと手を加えてみてはいかがでしょうか。
たとえば、ソースをほんの少し変更するだけで色の変わる閾値を変えられます。またアナログ入力可能な RA3 ポートとOPアンプが1回路空いていますので、2チャネルの温度計にしたり、あるいは湿度センサをつなげてみるのも実用的ではないでしょうか。
| プログラム Ver 2.2 (改変自由) | |
| 3color_thermometer(.asm) | 3color_thermometer(.HEX) |
内藤 正規
