レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

ちゃんとした温度計を作ってみた

2020年12月15日 | 電子工作

前回のATtiny13Aと温度センサーMCP9700の組み合わせが温度計として実用になりそうだったので、作ってみることにしました。センサーまわりは前回の回路そのままですが、表示部分は見やすい7セグメントのLEDを使ってみます。温度表示で小数点以下の数値はあまり必要性を感じないので、2桁の7セグLEDを使うことにします。

ただ、ATtiny13A単体では端子が少なくて7セグLEDの表示は出来ません。そこでPIC16F819を7セグLEDのドライバに仕立てることにしました。7セグLEDは秋月電子八潮店のお楽しみ袋に入っていた物を使います。



LEDのソース電流はPICからではなく、きちんとトランジスタを使って電源から取ります。PIC16F819では1ピンの最大電流25mA、ポートAおよびBの最大電流100mAの制限があるのでLEDの明るさに限度があるんですよね。(実用に差し支えない程度に明るくはなるけど)

この温度計は乾電池での動作を考えています。普通は乾電池2本で3Vにして使うのでしょうが、乾電池3本の電池ボックスと使い古しの乾電池が沢山あるので、これを三端子レギュレータTA48M033Fで3.3Vにして使います。
PICの動作クロックは省エネのために低くしますが、一定時間経過後にスリープさせることはしません。普通に電源スイッチのオン・オフで利用します。

今回使用する温度センサー・PIC・LED・トランジスタ・三端子レギュレータ・コンデンサー・電池ボックス・スイッチはお楽しみ袋に入っていたものです。来年のお楽しみ袋の初売りはなさそうなので残念ですが、今年購入したものにはまだ沢山のパーツが残っているのでこういう機会にどんどん使っていきます。

配線についてですが、ATtiny13Aは前回と同じでLCDの線をPIC16F819につなぎ替えるだけです。PIC16F819は以下のような配線にしました。



7セグLEDはアノードコモンということ以外のスペックが不明なので順方向電圧2.0V、順方向電流20mAとみなして取り扱っています。

ATtiny13Aのスケッチは表示処理以外はほぼ前回のものと同じですが、小数点の表示を行わないので小数第一位で四捨五入した整数値をPICに送るようにしました。動作クロックは600kHzで、コンパイルの条件は前回と一緒です。

ATtiny13Thermometer7Seg.ino

PIC16F819の動作クロックは内蔵1MHzで、プログラムは受け取った数値をダイナミック点灯でひたすら表示するだけです。タイマを使って10ms間隔で表示を切り替えています。

newmain.c

アノードコモンの7セグLEDなので、PICの出力がLOWでLED点灯、HIGHで消灯となります。トランジスタもPNPなのでPICの出力がLOWで電流が流れ、HIGHで停止します。



まずはブレッドボードで回路を組んで動作確認してみました。7セグLEDは一般的なものと同等のスペックだったようで、ちゃんと見やすい明るさで点灯してくれました。3.3Vでの動作に問題はなく、測定温度も前回のテストと同じで電気を使わない温度計と比較して-1℃程度の誤差になっていました。これなら温度計として使えそうなので、これらのパーツを基盤に半田付けします。三端子レギュレータと電源スイッチも付けました。



温度センサーは取り外しできるようにしました。



気温を測るだけでなく、センサーをフラットケーブルなどで引き伸ばして温度を測りたいものに直接貼り付けて使うためです。前にもちょっと紹介しましたが、使い古しの乾電池をたくさん直列につないで使うとき、液漏れや破裂しそうな乾電池を見つけるのに温度センサーでモニター出来ないかなと考えたからです。

電池ボックスは基盤の下に入れることにしました。基盤と電池ボックスの間にダイソーの耐震マットを入れて、動かないように両面テープで固定しました。




これで完成です。使い古しの乾電池3本(合計で4Vくらい)でもちゃんと動作してくれました。



温度センサーMCP9700を一番最初にテストしたときはノイズ対策もせずただアナログ値を読み取っただけだったので、誤差が5〜6℃になりこれを使うことはないと思っていたのですが、最終的にちゃんと使えて良かったです。
これもAVRの性能のおかげです。これからAVRやPICを使うときは、機能をデータシートでしっかり調べて利用していくことにします。



最新の画像もっと見る

コメントを投稿