汎用温度計ユニット

PIC16C711を使った2チャンネルの温度計



【概要】

PIC16C711のA/D変換機能を使った2チャンネル温度計です。
汎用ですので何にでも使えます。温度計測範囲は、0℃から64℃まで
です。温度センサには、ナショセミのLM35Dを使っています。


【温度センサ】

ここで温度計としては重要な働きをする
温度センサの詳細を紹介しておきます。
使った温度センサは、左の写真のように
トランジスタと全く同じ形をしたICでナショナル
セミコンダクタ社製です。

このセンサの規格は下表のように、摂氏温度に比例し、しかも 0℃の
時に0Vという電圧出力が出るようになっており、非常に便利に使うこと
が出来ます。

パラメータ

LM35A

LM35D

単位

備  考

計測範囲

-55〜150

  0〜100

今回使用したのはLM35D

精度

±0.2
±0.4

±0.6
±0.8


at 25℃
at Tmax

非直線性

±0.18

±0.2

全温度範囲

出力

10±0.1

10±0.2

mV/℃

0℃で0mV出力

実際の使い方は下図のようにします。今回は左側の基本回路で使い
ました。
摂氏温度1度毎に10mVというわかりやすい特性となっていますので
この後の処理が楽です。


【温度計の設計】

まず、温度計として測定する温度範囲を決めます。PICのA/D変換
は8ビットですから、256の分解能となります。
これから丁度計算し易い範囲は、下記の2種類となります。つまり
プログラムで扱いやすいという意味です。
  
  (1) 0〜128℃  0.5℃ ステップ
  (2) 0〜64℃   0.25℃ステップ

ここでパソコン内の温度計測には64℃もあれば十分ですから、
分解能の高い(2)の方を採用することにしました。
こうするとセンサの出力は下記となります。

 温度測定範囲 0〜64℃  → センサ出力 0〜640mV

しかしこの値を直接PICに接続するには、電圧が低すぎます。
そこで、オペアンプで適当な値まで増幅します。このオペアンプ
の設計は下記のようにします。

0〜640mVをアンプ出力 0〜5V にするのですから
必要なアンプのゲインは 5÷0.64 = 約7.8倍 となります。
これはオペアンプとしては楽に実現できる値です。

さらに、PICの入力に高い電圧を与えることが無い様に、5Vの
単一電源で動作するオペアンプを選択します。

これに都合が良いオペアンプは、 LMC662 というナショセミ社
のオペアンプが最適です。
このICは8pinDIPタイプで、オペアンプが2個入っています。
5〜15Vの単一電源で動作し、しかも Rail-to-rail といって、出力
がほぼ0〜5Vのフルスイングが可能なCMOSオペアンプです。

【全体構成】

完成の形は、左の写真のように、DOS/Vパソコン
のタワー型筐体の前面パネルに取り付けて、
常時パソコン内部の2個所の温度が測れるように
なっています。

写真のCD-ROMの下に実装されているのが
温度計です。


このパネルの詳細は左の写真のように、
製作したプリント基板をパソコンの
前面パネルに取り付け、電源コネクタ
と温度センサをコネクタで取り付けて
います。
写真にはセンサは見えていません。

このプリント基板の回路は下図のようになっています。
中心になるのは、PIC16C711で、このA/D変換の入力に、温度
センサの出力をアンプで増幅して接続しています。
アンプは、フルスケールつまり64℃で5Vになる様にしています。
2個のセンサのどちらを表示するかはスイッチの切替によるものと
しました。
表示は3桁のセグメント数字表示発光ダイオードとし、ダイナミック
点灯制御をします。
発光ダイオードのドライブは、各セグメントは直接PICの入出力ピン
で行います。電流制限用に各々200Ωの抵抗を介しています。
コモンはセグメントの和の電流が流れますから、PICで直接ドライブ
は不可能ですので、トランジスタでドライブします。
注意が必要なのは、RA4ピンで、このピンだけオープンドレインに
なっていますので、抵抗で5Vにプルアップしてやる必要があります。
少数点は常時表示で良いので、単純に抵抗を通して5Vに接続
します。

 ★ 温度計回路図(クリックすれば表示します)

 ★ 温度計パターン図
   (ダウンロードして解凍し、WinBordでご覧下さい)
 

【組み立て】

温度計の組み立てには。自作プリント
基板を使いました。
部品点数も少ないので結構小型にする
ことが出来ます。

上の写真が基板の完成写真です。オペアンプには増幅率が調整でき
るようにボリュームがついています。これで、適当な温度で実際の温度
に校正すれば調整はOKです。
温度センサは左側の白いコネクタに接続します。

組み立てで注意することは、特別にありませんが、数字表示の発光
ダイオードをパネル面から見えるようにしますので、スイッチ以外の部品
の高さが、この発光ダイオードより高くならないようにします。

下の写真は、プリント基板をパソコンの前面パネルの1枚に取り付けた
所です。 電源はパソコンの12Vから取り出します。ハードディスクや
ファン用に出ているものを拝借します。

温度センサは左側のコネクタに接続
します。
2芯のシールド線を使います。


【プログラム】

さて上記温度センサを制御するプログラムですが、構成は単純です。
割り込みも使いません。

但し、発光ダイオードの表示をダイナミック点灯制御しますので、常時
この繰り返しのプログラムを実行していることが必要です。
そこで、この点灯制御の繰り返し回数をカウントすることで、大体0.5
秒周期の時に、A/D変換を動作させ、温度データを更新します。
表示の方は、メモリに書かれた温度データを単純に繰り返し表示する
だけです。

全体の流れをフローチャートで表現すると下図のようになります。


入出力のモード設定




ダイナミック点灯の繰り返し
回数で時間を判定する。








A/D変換の1バイトのバイナリ
データを3桁の10進数に変換
する。

1回に1桁の表示出力のみ
次回に次の桁に進む。


このプログラムの中では、温度の1バイトバイナリデータを10進数3桁に変換
する必要がありますが、ここがちょっと面倒な処理が必要です。
というのも、0〜64℃の表示にするのですが、0〜255のバイナリデータを
変換するには、4分の1にする必要があります。4分の1にすることそのもの
は、右に2ビットシフトするだけで簡単なのですが、問題は小数点以下の
1桁をどう表示するかです。
0.25℃単位になるわけなので、0、3、5、8 と表示することにします。そこで
A/D変換結果のデータの下位2ビットを見て上記4種類の表示に決めます。
あとは上位6ビットを10進数に変換するだけです。

下記に実際のプログラムのソースファイルをダウンロードできます。
LZHで圧縮してありますので、LHAなどで解凍してお使い下さい。


  ★ 温度計プログラム ソースファイル


  目次ページに戻る