熱電対データロガー製作構想編

構想編

温度計測用のデータロガーの製作検討を行います。

きっかけ

スイッチング電源を採用したステレオパワーアンプ製作の中で温度測定用に2ch熱電対温度計を購入しました。

使い勝手は悪くなく、精度も私の用途には十分でした。唯一、データログ保存機能がない事が不満です。購入時にデータログ機能つきの物を探しましたが、機能の有無で、価格が数倍高くなる事からあきらめた経緯があります。

電源のフレーム温度測定では、温度計の数値を1分毎に1時間以上メモを続ける必要があり、罰ゲームのような作業でした。楽をしたいと考えて製作を決意しました。本当はアンプ製作中に準備したかったですが、アンプ製作の進行に影響がでるので我慢していました。

構成検討

コントローラには、使い慣れたarduino UNOを使います。そのシールド基板に熱電対アンプモジュールを搭載する予定です。データのログ保存は、arduino UNOからシリアル出力し、それをPC上のテラタームで受信します。カンマ付きテキストで温度データを送信すれば、exelでグラフ化も容易です。

アンプモジュール

アマゾン、スイッチサイエンスの販売サイトを検索しました。大別すると2種類のアンプモジュールが見つかりました。1つはAD8495を採用したもので、出力がアナログとなります。

価格は手頃ですが、アナログ出力の仕様が気になりました。これを使う場合は、arduino UNOのアナログ入力ポートを使用する事になりますが、データ転送時にも誤差発生要因となってしまいます。もう1種類はMAX31855を採用したものです。

インターフェースはSPIです。arduinoにはSPIインターフェースライブラリがあり、容易に通信できるとおもいますが、過去に使った事がなく年のせいか二の足を踏んでしまいます。使い慣れたI2Cインターフェース採用のモジュールがないか探してみましたがありませんでした。後で理由と思われる仕様差に思い当たる事になりますが・・・。それで結論としては、アンプ製作が終わった事なのでSPIインターフェースを使用してみる事にしました。

SPIインターフェース

arduino UNOとの基本接続は以下のとおりです。

図はarduinoのSPI.hライブラリを使って2つのスレーブを接続した状態です。基本動作は、マイコンが生成するSCLKに併せてMISOとMOSIデータ転送します。MISOがスレーブ出力でMOSIスレーブ入力端子となります。SSはスレーブセレクト端子ですが、図はライブラリのSS信号を使用せずに別ポートでスレーブセレクトしています。回路図中のarduinoのD10~D13はSPI.hライブラリを使ったときの指定ポートです。次はSPI.hライブラリの関数を調べます。

SPI.setBitOrder(order)関数ですが、シリアルデータの転送順を指定する関数です。指定しないとデフォルトでMSBFIRSTの動作となるようです。SPI.setClockDivider(diveder)は、SCLKのクロック周波数を指定します。arduino UNOの場合システムクロックが16MHzを指定の分周値とした周波数となり、デフォルトの分周値は4なので、4MHzとなります。SPI.setDataMode(mode)の転送モードは以下のとおりです。

柔軟性のある仕様ですが、「このくらい決めておけよ」とも思ってしまいます。SPI.transfer(value)は、スレーブ出力がある場合、1byteのデータが戻り値となります。valueはスレーブへ出力するデータをセットします。仕様はこれでだいたい理解できました。先ほどのI2Cインターフェースが採用されない理由ですが、温度測定モジュールは複数チャンネルで利用される事が多く、I2Cインターフェースを採用するとスレーブにアドレス設定の機能が必要になります。アドレスを何種類用意する必要があるとか、アドレス設定用に追加部品が必要になるとか、いいことはありません。その点、アナログ出力およびSPIインターフェースは柔軟性があります。次回は回路設計を行います。

 

つづく(設計編1)