NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

K熱電対型温度計の使い方(MAX31855)

イメージ 1
K熱電対アンプモジュール
※adafruit Thermocouple Amplifier MAX31855 breakout board
 
 Maxim Integrated Products, Inc.製の「MAX31855K」ICを使用したadafruit製K熱電対アンプモジュールを使ってみました!
 別売のK型熱電対を取付ければArduinoで温度が測れます!

1. K熱電対アンプモジュールとは

1.1 K型熱電対とは
 異種金属を接続して一つの回路(熱電対)を作り、接点に温度差を加えるとゼーベック効果※1により回路に電圧が生じます。
 異種金属の組み合わせによりK,J,T,E,N,R,S,B型熱電対等がJIS規格で規定されており、特にK型熱電対は 温度と熱起電力との関係が直線的である事から工業用として最も多く使用されています。
 K型熱電対に使用されている金属は、+極に「Ni・Cr合金」、-極に「Ni合金」で、-200~1000℃の範囲で温度測定が可能です。
※1:ゼーベック効果(Seebeck effect)は物体の温度差が電圧に直接変換される現象で、
熱電効果の一種。逆に電圧を温度差に変換するペルティエ効果もある。

1.2 MAX31855Kの仕様
 「MAX31855」は、冷接点補償を実行し、K、J、N、T、またはE型熱電対からの信号をデジタル化します
 データは、符号付き14ビット、SPI?対応の読取り専用形式で出力されます。
 このコンバータは、温度を0.25℃まで分解するため、最高+1800℃と最低-270℃の読取りが可能となり、K型熱電対の場合-200℃~+700℃の温度範囲で±2℃の熱電対精度を示します。
 またK熱電対アンプモジュール(MAX31855K)の外観及び端子図を図1に、各端子の接続先を表1に示します。
イメージ 12
図1:K熱電対アンプモジュール(MAX31855K)の外観及び端子図
MAX31855」のSDSより引用させて頂きました

 

表1:各端子接続先一覧
 MAX31855K端子  アンプモジュール端子  ArduinoUNO端子
 SO  DO  MISO(12ピン)
 CS  CS  SS(ANY)
 SCK  CLK  SCK(13ピン)

 ※ArduinoUNOのピン配置図

2. 温度測定用ライブラリの導入

 adafruitからMAX31855用のライブラリが公開されていましたので、これをArduinoIDEにインストールします。

2.1 ライブラリの入手
 GitHubのサイトに「adafruit/Adafruit-MAX31855-library」が公開されています。
 図2のサイトにアクセスし、画面右側に有る緑ボタン「Clone or download」→「Download ZIP」の順にクリックし、ライブラリをダウンロードします。
イメージ 6
図2:GitHubからAdafruit-MAX31855-library-master」をダウンロード
 
2.2 フォルダ名変更
 ダウンロードしたZIPファイル「Adafruit-MAX31855-library-master」を開くと中に「Adafruit-MAX31855-library-master」フォルダがありますのでこれをデスクトップ等に取り出して解凍します。
 取り出したファイルの名前から「-master」の部分を削除しておきます。
イメージ 7
図3:インストール用のライブラリフォルダを準備
 
2.3 ライブラリのインストール
 インストールは簡単で、ArduinoIDEがインストールされているフォルダ中の「libraries」フォルダの中に図3で名前を変更したライブラリフォルダを入れるだけです。
イメージ 8
図4:ArduinoIDEの「libraries」フォルダ
 
2.4 インストールの確認
 図4の操作で正常にライブラリがインストールされていれば「MAX31855」を使用したスケッチの例(サンプルプログラム)もインストールされます。
 確認の為に図5の様にArduinoIDEを起動し、「ファイル」→「スケッチの例」→「Adafruit-MAX31855-library」とクリックし、「serialthermocouple」を開ければインストールはOKです
イメージ 9
図5:スケッチの例「serialthermocouple」

3. 準備

3.1 はんだ付け
 K熱電対アンプモジュール(MAX31855K)に付属のピンヘッダ6本とターミナルを図6の様にはんだ付けしておきます。
イメージ 2
図6:はんだ付け!
 
3.2 K熱電対
 K熱電対は秋月電子さんの「K熱電対プローブ」を購入しました。
 そのままではK熱電対アンプモジュール(MAX31855K)のターミナルに取付け出来ませんので、図7の様に分解し、極性が分からなくならない様に「-」側に黒マジックで印を付けておきました。
イメージ 3
図7:「K熱電対プローブ」分解
 
3.3 接続
 K熱電対アンプモジュール(MAX31855K)とArduinoUNOを接続する回路をFritzingを使って図8の通り書いてみました。 
 また実際に繋げた状態を図9に示します。
イメージ 4
図8:ブレッドボード回路図

イメージ 5
図9:実際に作ったもの

3. プログラム

 ArduinoUNOに書き込むプログラムは図10の通りです。
 基本的には図5で読み込んだスケッチの例を元にしています。
 図9のArduinoUNOをPCに接続し、図10のプログラムを書き込みます。
 するとPCのArduinoIDEシリアルモニタ上にICの温度「Internal Temp =**.**」及びK熱電対部の温度「C = **.**」が図11の通り表示されました!
#include <SPI.h>
#include "Adafruit_MAX31855.h"

//ソフトウェアSPIもしくはハードウェアSPIを使用する2つ接続方法があります。
//①任意の3つのソフトウェアSPIを使用して熱電対のインスタンスを作成する例
#define MAXDO     3
#define MAXCS     4
#define MAXCLK     5
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);
//②ハードウェアSPIを使用して熱電対のインスタンスを作成する例
// 指定されたCSピンに接続します。
#define MAXCS     10
Adafruit_MAX31855 thermocouple(MAXCS);

void setup() {
   Serial.begin(9600);
   while (!Serial) delay(1); //シリアル通信が開始されるのを待つ
   Serial.println("MAX31855 test");
   delay(500);
}//MAXチップが安定するのを待つ

void loop() {
   // 基本的な読み取りテスト、ちょうど現在の温度を印刷する
   Serial.print("Internal Temp = ");
   Serial.println(thermocouple.readInternal());
   double c = thermocouple.readCelsius();
   if (isnan(c)) {
       Serial.println("Something wrong with thermocouple!");
   } else {
       Serial.print("C = ");
       Serial.println(c);
   }
   delay(1000);
}
イメージ 1
図1:プログラム例

 

イメージ 10
図11:Arduino IDE シリアルモニター
 
イメージ 11
図12:MAX31855Kで温度測定中!
 ※熱電対の温度測定部もしくはMAX31855K ICを指で触ると温度が上がります!

4. まとめ

 Adafruit-MAX31855-library」ではソフトウェアSPI通信もサポートしているので、今回はソフトウェアSPI通信でMAX31855Kと接続しました。
 単純に表1の通りArduinoUNOハードウェアSPI通信接続する事も可能で、この場合CPUの計算負荷を減らす事が出来ます。
 目的に応じてArduinoUNOへの接続先を変更出来るのでAdafruit-MAX31855-library」は融通が利いて便利です!
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【NOBのArduino日記!】目次に戻る