K型熱電対の温度を表示・出力するモジュールです。
通信インターフェイスはUSB、RS-485(Modbus RTU、コマンド-レスポンス方式)、Grove(I2C)に対応しています。
電源はUSBバスパワー、Grove(3.3V、5V)、外部入力(DC9~27V)に対応しています。
現在温度だけでなく、平均温度、最大温度、最小温度も取得できます。
DINレール取付けとネジ取付けの両方に対応しています。
M3・M4の丸形・Y形圧着端子およびミニオメガコネクタ1の熱電対に対応しています。
※白金測温抵抗体(Pt100)用の温度測定モジュールもございます。
各部の名称
※ジャンパーピンの色は画像と異なる場合があります。
内容物
-
製品基板×1
※熱電対や各種ケーブル、K型熱電対用ミニオメガコネクタ(PCC-SMP-K)、取付用アダプタは含まれていません。別途ご用意いただく必要があります。
販売
販売ページ(スイッチサイエンス)
※販売ページに表示されている在庫数のほかにも、追加の在庫を保有している場合がございます。大量注文や在庫に関する問い合わせはこちらまでご連絡ください。
使い方
-
(ミニオメガコネクタを使用する場合)以下の画像のようにはんだ付けしてください。
※ミニオメガコネクタは秋月電子等で購入できます。
-
熱電対を接続する
熱電対を以下の画像のように接続してください。端子台接続の場合 ミニオメガコネクタ接続の場合 -
電源に接続する
以下のいずれかの方法で給電して下さい。- USB給電(5V)
- Grove互換コネクタ(3.3V or 5V)
- 電源入力用端子台(DC9~27V)
※複数系統から電源を供給しても問題ありません。
-
設定する
基板上のボタンもしくはI2Cコマンドでセンシングと通信の設定を行ってください。 -
データを取得する
USB / RS-485 / I2Cで温度データを取得してください。
※USB接続の場合、こちらのページからブラウザ上で温度データのロギングを行うこともできます。
通信仕様
-
I2C
レジスタマップ(I2C) -
Modbus RTU
レジスタマップ(Modbus) -
シリアル通信:RS-485(コマンド-レスポンスモード時)、USB
- 出力フォーマット:
<現在温度>,<平均温度>,<最大温度>,<最小温度>\n
(例:23.55,23.45,29.87,20.23\n
) - コマンド
以下の1文字(改行コードなし)を製品に送ると実行されます。t
:温度取得。上記の出力フォーマットの文字列を送信する。USB Tx ModeがAutoの場合、USBはこのコマンドを無視する。r
:演算値リセット。平均温度、最大温度、最小温度をリセットする。
- 出力フォーマット:
仕様
- 対応センサ
- センシング
- 入力チャンネル数:1
- 取得単位:摂氏(℃)、華氏(℉)、絶対温度(K)
- 測定温度範囲:-200~1350℃ (typ.) 3 4
- 測定精度 5
- -200℃~700℃:±2℃
- 700℃~1350℃:±4℃
- 分解能:0.25℃ (typ.)
- 演算機能:平均値、最大値、最小値 6
- サンプリング周期:100ms
- 非線形性補正:NIST ITS-90逆多項式に基づく補正
- 通信インターフェース:USB(シリアル通信)、RS-485(Modbus RTU/コマンド-レスポンス)、Grove互換コネクタ(I2C)、スルーホール(I2C)
- 給電方式:USBバスパワー、Grove (3.3V/5V)、外部入力 (DC9~27V)
- USBシリアル通信
- ボーレート:921600 bps
- データビット:8 bit
- パリティ:なし
- ストップビット:1 bit
- 自動送信モード送信周期:1秒 / 10秒 / 1分 / 1時間
- RS-485
- I2C
- 最大通信速度:400 kbps
- 信号電圧:3.3V
- 外形寸法:W82 x D45 x H16 mm (typ.)
- その他
- USBシリアル変換IC:WCH CH340 9
画面遷移図
設定項目の説明
Unit
温度の単位- *
Celsius
摂氏[℃] Fahrenheit
華氏[℉]Kelvin
絶対温度[K]
- *
Ave AutoRst
平均温度の自動リセット機能の設定。平均温度値をI2C / RS-485 / USBで送信した後に自動的にリセットする。- *
Enable
有効 Disable
無効
- *
Max AutoRst
最大温度の自動リセット機能の設定。最大温度値をI2C / RS-485 / USBで送信した後に自動的にリセットする。- *
Enable
有効 Disable
無効
- *
Min AutoRst
最小温度の自動リセット機能の設定。最小温度値をI2C / RS-485 / USBで送信した後に自動的にリセットする。- *
Enable
有効 Disable
無効
- *
USB Tx mode
USBの出力モード設定- *
Auto
自動モード。温度値をUsbAutoPeriod
で指定した周期で自動的に送信する Manual
手動モード。温度値はコマンド(t
)が入力されると送信する。
- *
UsbAutoPeriod
USB自動出力モード時の出力周期1sec
1秒- *
10sec
10秒 1min
1分1hour
1時間
RS485 Mode
RS-485の通信モード設定- *
Modbus RTU
Modbus RTUモード Cmd/Res
コマンド-レスポンスモード
- *
RS485 bps
RS-485のボーレート(単位:bps)- *
9600
19200
38400
115200
- *
RS485 Stopbit
RS-485のストップビット- *
1bit
2bit
- *
Offset
校正用温度オフセット [℃]-9.99
~9.99
(デフォルト値:0
)
Modbus Address
Modbus RTUモード時のSlave ID0x01
~0xF7
(デフォルト値:0x11
)
I2C Address
I2Cデバイスアドレス0x08
~0x77
(デフォルト値:0x16
)
Save and reboot
変更したパラメータを保存し、製品を再起動するReset all settings
全ての項目を工場出荷時の設定に戻し、製品を再起動するAbout
製品情報とファームウェアのバージョンを表示する
* 工場出荷時の設定
取付方法
DINレール取付け
DINレールアダプタ(Phoenix Contact社 1201578)を画像のようにネジ止めしてください。
※DINレールアダプタ・ねじ等は付属しません。
ねじ取付け
スペーサ等を用いて所望の板等に固定してください。
※スペーサ・ねじ等は付属しません。
ファームウェアのアップデート
詳細を見る
必要なもの
- 製品本体
- USBケーブル
- PC
必要なソフトウェア
本製品に搭載しているSTMicroelectronics社のマイコンへの書込み用ソフト"STM32CubeProg"が必要です。 下記のサイトからソフトウェアをダウンロードしインストールしてください。
https://www.st.com/ja/development-tools/stm32cubeprog.html
※本ソフトウェアをダウンロードするためにはmySTへの登録(無料)が必要です。
ファームウェアの書き換え手順
資料
回路図
- v1.0: schematic-v1_0.pdf
外形寸法
DXFファイル:dimensional_dxf.zip3D CADデータ
STEPファイル:3d_step.zip
STEPファイル(ミニオメガコネクタ付):3d_omega_step.zip
プログラム例
M5stackのI2Cを用いたカウント値取得のプログラム例
配線図・サンプルコードを見る
#include <M5Core2.h>
#define I2C_DEV_ADDR 0x16
#define NOWTEMP_REG_ADDR 0x01 // 0x01 - 0x04
#define AVETEMP_REG_ADDR 0x05 // 0x05 - 0x08
#define MAXTEMP_REG_ADDR 0x09 // 0x09 - 0x0C
#define MINTEMP_REG_ADDR 0x0D // 0x0D - 0x10
#define STAT_REG_ADDR 0x11
#define VRST_REG_ADDR 0x12
#define AVRST_REG_ADDR 0x13
#define SCONF_REG_ADDR 0x14
#define CCONF_REG_ADDR 0x15
#define MODADDR_REG_ADDR 0x16
#define OFFSET_REG_ADDR 0x17 // 0x17 - 0x18
#define VMAJOR_REG_ADDR 0xFA
#define VMINOR_REG_ADDR 0xFB
#define VPATCH_REG_ADDR 0xFC
#define SYSRBT_REG_ADDR 0xFD
#define I2CADDR_REG_ADDR 0xFE
#define INIT_REG_ADDR 0xFF
void setup() {
M5.begin(true, true, true, true);
M5.Lcd.setTextSize(3);
byte error;
// Set sensing config
// SCONF: Unit=Celsius
uint8_t sconf = 0x00;
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(SCONF_REG_ADDR);
Wire.write(sconf);
error = Wire.endTransmission();
if (error){
Serial.print("error=");Serial.println(error);
}
delay(2000); // Wait until the config is written and the device reboots
// Set Communication config
// CCONF: RS485 baudrate=9600, RS485=Modbus, USB Auto Tx=10sec, USB Auto Tx=Disable
uint8_t cconf = 0x02;
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(CCONF_REG_ADDR);
Wire.write(cconf);
error = Wire.endTransmission();
if (error){
Serial.print("error=");Serial.println(error);
}
delay(2000);
}
void loop() {
union _32bit_u
{
uint8_t uint8_data[4];
int32_t int32_data;
} temp_values[4];
float temperatures[4];
const char *str_prefix[4] = {"Now: ", "Ave: ", "Max: ", "Min: "};
M5.Lcd.setCursor(0, 0);
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(NOWTEMP_REG_ADDR);
Wire.endTransmission(false);
Wire.requestFrom(I2C_DEV_ADDR, 4 * 4);
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
temp_values[i].uint8_data[j] = Wire.read();
}
temperatures[i] = (float)(temp_values[i].int32_data) * 0.01f;
char strBuf[12];
sprintf(strBuf, "%s%6.2f", str_prefix[i], temperatures[i]);
M5.Lcd.println(strBuf);
}
delay(2000);
}
USB接続で温度をロギングするプログラム例
配線図・サンプルコードを見る
※こちらのページからブラウザ上で温度データのロギングを行うこともできます。
ダウンロード
- ソースコード
- 実行ファイル:Release.zip
サンプルコード(.NET 6.0)
using System;
using System.IO.Ports; // https://www.nuget.org/packages/System.IO.Ports
public class k_thermocouple_usb_logger
{
static SerialPort? _serialPort;
static bool _continue;
static string _portName = "";
public static int Main(string[] args)
{
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
Console.WriteLine("Obtain temperatures from Type-K Thermocouple Thermometer via USB and save them to CSV.\n(The USB auto tx mode must be enabled.)\n");
Console.WriteLine("Available ports:");
foreach (string s in SerialPort.GetPortNames())
Console.WriteLine("\t{0}", s);
_portName = InputPortName();
_serialPort = new SerialPort(_portName, 921600, Parity.None, 8, StopBits.One);
if(_serialPort.IsOpen) {
Console.WriteLine("Error: {0} is already open.", _portName);
return 1;
}
_serialPort.ReadTimeout = _serialPort.WriteTimeout = 300;
_serialPort.Open();
Thread loggingThread = new Thread(LoggingThread);
_continue = true;
loggingThread.Start();
Console.WriteLine("\nStart logging. Type QUIT to exit.");
while (_continue)
{
string message = Console.ReadLine()!;
if (stringComparer.Equals("quit", message)) {
_continue = false;
}
}
loggingThread.Join();
_serialPort.Close();
return 0;
}
public static void LoggingThread()
{
while (_continue)
{
try
{
string message = _serialPort!.ReadLine();
string text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "," + message;
Console.WriteLine(text);
File.AppendAllText("./temperature_log_" + _portName + ".csv", text + '\n');
}
catch (TimeoutException) { }
}
}
public static string InputPortName()
{
string portName;
string[] ports = SerialPort.GetPortNames();
string defaultPortName = ports.Length >= 1 ? ports[0] : "COM1";
Console.Write("Enter COM port value (Default: {0}): ", defaultPortName);
portName = Console.ReadLine()!;
if (portName == "" || !(portName.ToLower()).StartsWith("com")) {
portName = defaultPortName;
}
return portName;
}
}
-
ミニオメガコネクタは付属しません。別途ご用意いただき、はんだ付けしていただく必要があります。 ↩︎
-
市販の端子台式のK型熱電対で主に使用されるM3、M4の圧着端子に対応しています。 ↩︎
-
使用している熱電対の使用可能温度範囲に制限されます。 ↩︎
-
測定可能範囲は冷接点温度(≒室温)が0℃の場合であり、室温によってオフセットされます。例えば室温が20℃のとき、測定可能範囲は-180℃~1370℃となります。 ↩︎
-
熱電対自体の精度は含みません。 ↩︎
-
値がリセットされるとディスプレイ上の該当数値部分が点滅します。 ↩︎
-
ストップビット設定はファームウェアv1.1以降で対応しています。ファームウェアv1.0では1bit固定です。 ↩︎
-
基板上の「RS-485終端抵抗有効化ジャンパ」によって終端抵抗を使用するかどうか選択できます。 ↩︎
-
基本的にPCとUSBで接続すると自動的にUSBドライバがインストールされますが、自動的にUSBドライバがインストールされない場合はこちらのページ下部のCH341SER.EXEをインストールして下さい。 ↩︎