【概要】
8ピンのPICを使って、0〜40℃までの温度を計測しては、シリアル通信で
外部に送信することができるディジタル温度計です。
【構成と回路図】
構成は至って簡単で、下図のような全体構成となっています。
まず、PIC12F683を使って、温度のアナログ入力をA/D変換し、シリアル通信で
パソコン等に送信します。
電源にリチウムイオンバッテリを使うことしましたので、基準電圧が電源電圧が変化
しても変わらないように、電圧標準ICを使って一定の2.5Vを生成してVrefとしています。
これで電源電圧が変動しても正確にアナログ入力をA/D変換することができます。
USARTを内蔵していないので、ソフトウェアでシリアル通信を行うことになりますが
CCS社のC言語を使えば自動的にこのソフトウェアを生成してくれますので
簡単に実現できます。
これをベースにして作成した回路図が下図となります。動作目印用のLED
を2個追加しています。
温度センサの入力は温度に比例したDC電圧ですので、オペアンプで温度スケールに
合わせて増幅してフルスケールのとき2.5Vになるようにします。
これに合わせて、プログラムでスケール変換すれば自由に温度スパンを変えられます。
RS232Cのコネクタは本来はDSUBコネクタにするべきですが、大型になるので
小型のコネクタにして外部で変換ケーブルを自作して使うことにしました。
【ハードウェア製作】
製作には基板が必要ですが、プリント基板を作るほどでも無いので、EジスPenで
作成しました。簡単にお絵かきで作成できるのでこういうときには便利です。
できあがった基板は写真のようになります。
左上にあるのが温度センサICです。
左から入力アンプ、PIC、RS232C用ICとなります。
可変抵抗は温度スパン調整用です。別の温度計に
合うように調整します。
中央上側にあるのが電圧標準ICです。
パターンは下図となっています。
これをアクリルケースに実装して完成です。
【プログラム製作】
このプログラムはCCS社のC言語で作成しました。RS232Cが数行で記述できて
しまいますので、こういうときには非常に便利です。
下記のリストで全部ですので簡単です。
まず最初にA/D変換を10ビットで行う宣言をします。次に#use rs232でシリアル
通信を使う宣言をしていますが、USARTを内蔵していませんから、これだけで
あとは自動的にソフトウェアによるシリアル通信のプログラムを生成してくれます。
次にメイン関数に入って、A/D変換の設定をしています。Vrefを使うように指定します。
あとはメインループに入って、チャネル0をA/D変換しては、浮動小数点数として
スケール変換の計算をしたあと、printf文でフォーマットを指定して送信することを
繰り返します。 スケール変換値をかえるだけで温度スケールは自由に変えられます。
シリアル出力を別項で製作した液晶表示器ユニットも使えるように、全消去の
制御文字も出力しています。
液晶表示器の全消去のときは、動作に2msec程度を必要としますので、ここで
5msecの待ち時間を挿入しています。
最後に1秒周期で計測を行うように1秒の待ち時間を挿入しています。
このような待ち時間もdelay関数だけでできてしまいます。
★★ プログラムダウンロード