MAX31856(熱電対)ライブラリを作ってみた。

測温抵抗体に続き今度は熱電対をMAX31856を使って試して見た。

MAX31856は様々なタイプの熱電対に対応し計測と同時にフォールト検出も行ってくれたりしてとても便利なチップだ。

実際に計測してみると測温抵抗体に比べ計測値の小数点以下第二位以下に不安定性さを感じてしまうが熱応答性が良いため目的に応じて使い分けするのが良さそうだ。

ちなみにチップ内部の冷接点補償温度センサーの測定値自体にパラツキがあるので外付けの冷接点補償温度センサーとの組み合わせでより安定した高精度な測定が出来きるのかもしれない。

Adafruit Universal Thermocouple Amplifier MAX31856 Breakout

【概要】

内蔵冷接点補償温度センサーのオフセット温度(x16)を設定する。設定範囲は、-8.00℃ から +7.96℃まで。

冷接点補償温度(x256)を設定する。設定範囲は、-64.000℃ から +128.008℃ まで。MAX31856_CJ_DISABLE時にのみ有効。

冷接点補償温度(x256)を取得する。取得範囲は、-64.000℃ から +128.008℃ まで。

冷接点補償温度の制限値(x1)を設定する。設定範囲は、-64℃ から +127℃まで。範囲外になるとフォールトが発生する。

熱電対センサーの温度制限値(x16)を設定する。設定範囲は、-2048℃ から +2047.96℃まで。範囲外になるとフォールトが発生する。

フォールト・ピン出力のマスクを設定する。※フォールト・ステータスには影響しない。

フォールト・ピン出力のマスクを取得する。

ワンショット変換を実行する。戻り値がtrueならtemperatute()で温度或いは電圧が取得でき、falseならstatus()でフォールトの原因を調べることが出来る。関数内部で変換完了待ちを行う。

連続変換モードを開始する。

連続変換モードを停止する。

対応する熱電対タイプでは計測した温度(x256)を返し、電圧測定モード(MAX31856_TCTYPE_x8 or MAX31856_TCTYPE_x32)では計測した電圧(x8 or x32)uVを返す。

フォールト・ステータスを取得する。

連続変換モードを処理する。戻り値は次の通り。
MAX31856_STATUS_IDLE … 停止中。
MAX31856_STATUS_BUSY … 計測中
MAX31856_STATUS_READY … 計測完了。temperature()で温度を取得できる。
MAX31856_STATUS_FAULT … フォールト発生。status()でフォールト・ステータスを取得できる。

【サンプル・スケッチ】

【更新情報】
2020-11-21
FAULT-MASKの仕様を勘違いしていた。FAULT-MASKを設定/取得する関数を追加。

2020-11-12
DRDYピンを利用できるよう改良してみた。フォールト検出を行う連続変換は16回毎にフォールト検出が行われるが、そのタイミングを知ることができないため毎回フォールト検出時間を含めた時間を待つしかないが、DRDYピンを使うことで無駄な待ち時間を削除できる。と言ってもそこまで変換時間に拘る必要性があるかどうかは微妙な気もするが...

【ライブラリ】

【参照ライブラリ】
Arduino用のSPI/TWI共通インターフェース・クラスを作ってみた。