白金測温抵抗体(Pt100)の温度を表示・出力するモジュールです。2線式、3線式、4線式の結線方式に対応しています。
通信インターフェイスはUSB、RS-485(Modbus RTU、コマンド-レスポンス方式)、Grove(I2C)に対応しています。
電源はUSBバスパワー、Grove(3.3V、5V)、外部入力(DC9~27V)に対応しています。
現在温度だけでなく、平均温度、最大温度、最小温度も取得できます。
DINレール取付けとネジ取付けの両方に対応しています。
※K型熱電対用の温度測定モジュールもございます。
各部の名称
※ジャンパーピンの色は画像と異なる場合があります。
内容物
-
製品基板×1
※Pt100や各種ケーブル、取付用アダプタは含まれていません。別途ご用意いただく必要があります。
販売
販売ページ(スイッチサイエンス)
※販売ページに表示されている在庫数のほかにも、追加の在庫を保有している場合がございます。大量注文や在庫に関する問い合わせはこちらまでご連絡ください。
使い方
-
Pt100を接続する
Pt100を以下の画像のように接続してください。
また、「Pt100結線方式選択ジャンパ」をPt100の結線方式に合わせて以下のように設定してください。 -
電源に接続する
以下のいずれかの方法で給電して下さい。- USB給電(5V)
- Grove互換コネクタ(3.3V or 5V)
- 電源入力用端子台(DC9~27V)
※複数系統から電源を供給しても問題ありません。
-
設定する
基板上のボタンもしくはI2Cコマンドでセンシングと通信の設定を行ってください。
※接続しているPt100の結線方式と設定上の結線方式を一致させる必要があります。 -
データを取得する
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
:演算値リセット。平均温度、最大温度、最小温度をリセットする。
- 出力フォーマット:
仕様
- 対応センサ
- センサ種別:Pt100
- 結線方式:2線式、3線式、4線式
- 対応圧着端子サイズ:1.25-3、1.25-4S 1
- センシング
- 通信インターフェース: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
- 通信方式:半二重マルチドロップ方式
- ボーレート:9600 / 19200 / 38400 / 115200 bps
- データビット:8 bit
- パリティ:なし
- ストップビット:1 bit
- 終端抵抗値:120 Ω 5
- I2C
- 最大通信速度:400 kbps
- 信号電圧:3.3V
- 外形寸法:W80 x D45 x H16 mm (typ.)
- その他
- USBシリアル変換IC:WCH CH340 6
画面遷移図
設定項目の説明
Wiring
Pt100の結線方式- *
2-wire
2線式 3-wire
3線式4-wire
4線式
- *
Notch filter
AC電源ノイズ低減フィルタ周波数- *
50Hz
60Hz
- *
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
- *
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ファイル:pt100-thermometer_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: Filter=60Hz, Unit=Celsius, Wiring=3-wire
uint8_t sconf = 0x11;
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 pt100_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 Pt100 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;
}
}
FAQ
詳細を見る
STATレジスタの値と考えられる原因
ビット番号 | 2線式の場合 | 3線式の場合 | 4線式の場合 |
---|---|---|---|
Bit [7] | - Pt100が接続されていない |
- Pt100が接続されていない - RTD+ がHighに短絡し、Pt100が接続されていない- F+ がHighに短絡し、Pt100に接続されている
|
|
Bit [6] |
- Pt100が短絡している - RTD+ がLowに短絡している
|
- RTD+ とRTD- が短絡している- RTD+ がLowに短絡し、Pt100が接続されていない- F+ がLowに短絡している
|
- RTD+ とRTD- が短絡している- RTD+ がLowに短絡し、Pt100が接続されていない- RTD- がHighに短絡し、Pt100が接続されていない- F+ がLowに短絡している
|
Bit [5] |
- Pt100が接続されていない - RTD+ がHighに短絡している- RTD- がHighに短絡している
|
- Pt100が接続されていない - F+ がHighに短絡し、Pt100に接続されている- F+ が接続されていない- F+ がHighに短絡し、Pt100に接続されていない- RTD- がHighに短絡している
|
- Pt100が接続されていない - F+ がHighに短絡し、Pt100に接続されている- F- が接続されていない- F+ が接続されていない- F+ がHighに短絡し、Pt100に接続されていない- F- がHighに短絡し、Pt100に接続されていない- F- がHighに短絡し、Pt100に接続されてる- F- がLowに短絡し、Pt100に接続されていない |
Bit [4] |
- RTD- がLowに短絡している
|
- F- がLowに短絡し、Pt100に接続されている- RTD- がLowに短絡し、Pt100に接続されている
|
|
Bit [3] |
- RTD- がLowに短絡している- RTD+ がLowに短絡している
|
- F+ がLowに短絡している- RTD+ がLowに短絡し、Pt100に接続されている- RTD- がLowに短絡している
|
- F+ がLowに短絡している- RTD+ がLowに短絡し、Pt100に接続されている- RTD- がLowに短絡し、Pt100に接続されている- RTD- がLowに短絡し、Pt100に接続されていない- F- がLowに短絡している
|
Bit [2] | - 電源電圧の異常 |