パソコンのCOMポートに接続して無電源で動作する温度計測アダプタです。とても単純な回路ですし、リニアライズもソフトウェアで処理しているので調整箇所が一切無く、誰でも簡単に製作することができると思います。
| コントローラ | ATtiny15L (ATMEL), 10bit ADC内蔵 |
| チャネル数 | 4チャネル |
| 測定範囲 | -40℃〜+105℃ (分解能0.1℃) または、生A-D値 |
| 確度 | ±0.5℃程度(※常温付近での期待値) |
| センサー | 103AT (石塚電子) |
| 電 源 | シリアルポートの信号で供給(約5mA) |
| 製作費 | 部品代 \1,200程度 |
今回は、ATtiny15Lを使用してみました。このチップは、8ピンAVR中では唯一10bitADCを内蔵しています(2002年)。ADCのフロントエンドには内蔵リファレンスや差動アンプも付いています。動作クロック源は、高精度内蔵OSC(1.6MHz)に固定されていて、それ以外のクロック源は選択できません。まぁ、8ピンなので外部発振子で貴重なポートを潰すのは間抜けだということなのでしょう。また、タイマのクロックソースとしてPLLで16逓倍されたクロック(25.6MHz)があるので、高速なPWM出力が得られます。このようにtiny15のアナログ信号処理機能はなかなかのものです。本機では、ADCをシングルエンド、ゲイン×1で4チャネルフルに使っています。ただ、RESETピンもポートとして使うため、RSTDISBLヒューズをプログラムする必要があるので、HVSモードで書き込めるAVRプログラマが必要になります。
シリアルマウスを初めとするCOMポートで無電源動作するデバイスは、電源をポートの信号線から取っています。アプリケーションがCOMポートを開くとER信号とRS信号がHレベル(6V〜12V程度)になるので、これを回路電源とするのです。ほとんどのポートで数mA以上取れるので、消費電流の少ない回路ならこれで十分に動作することができます。
温度センサには石塚電子の温度計測用サーミスタ(103AT)を使用しました。このサーミスタはとてもバラツキが少なく、単体で±0.3℃の確度(常温付近)を持っています。これを生かして無調整化するため、シリーズ抵抗の精度には気を使わなければなりません。
ホストからの要求に対して各チャネルの温度を返すだけです。サーミスタの抵抗温度特性はリニアではないので、A-D変換値をプログラムでリニアライズ処理して、温度に換算してホストに送ります。ほかのサーミスタを使う場合は、ソースファイル中の変換テーブルを再構築しなければなりません。また、生のA-D変換値も送れるようにしたので、電圧計としてもそのまま使えるでしょう。
取り込みのトリガは、ホストからの1文字のコマンドです。各チャネルの値は「カンマ区切り値+CRLF」の形式でホストに送信されます。送られるデータは、"T"コマンドで温度、"R"コマンドで生A-Dデータとなっています。
適当なソフトを組んで一定時間毎にコマンドを送り、帰ってくるデータをそのままファイルに落とせばCSVファイルになります。適当なスプレッドシートに直接取り込めるでしょう。でも、Microsoft Excelを使える環境ならもっと簡単な方法もあります。
Microsoft Excelには、VBAというVBのサブセットがビルトインされています。これでホストプログラムを組んで、測定値をシートに直接取り込むことができるのです。いやぁ、凄いですね。Excelにこんな機能があったなんて最近まで知りませんでした(^^;。自動計測の制御には手軽な方法の一つといえるでしょう。
サンプルのワークシートは、冷蔵庫の庫内温度を一日測ったものです。サーモスタットや霜取りの動作の様子がよく分かりますね。最近流行のインバータ冷蔵庫なら温度変動は無いのでしょうか?
Alt-F11でVBエディタが開くのでプログラムを確認してください。少々追いにくいかも知れませんが、汎用性のためCOMポートやタイマはあえてAPIで制御しています。追加コンポーネントは使っていないので、Excelさえあれば動作すると思います。
