FLINT NTCサーミスタ ユニット(NTC Thermistors-Grove互換)

概要

SEMITEC社の超薄型サーミスタ 103JT-050を採用した温度計です。

仕様上、-50~125℃までの温度に対応します。

温度の数値データが、Grove互換端子(デフォルトで電源5V・信号線3.3VのM5Stack仕様)からI2C出力されます。はんだジャンパで信号線5Vに変更可能

I2Cアドレスは デフォルトで0x51。はんだジャンパで0x07,0x2A,0x34,0x4Dのいずれかに変更が可能

本体基板は透明収縮チューブで保護されています。

充電池パックやマイコン・MOSFETなどの発熱の計測に。M5Stackで計測器の作成に。

仕様

  • 温度センサ: SEMITEC社の超薄型サーミスタ 103JT-050
  • 測距範囲: -50℃ ~ 125℃
  • 電源電圧5V 信号レベル3.3V(デフォルト。5Vに変更可能)Grove互換端子コネクタ
  • I2C通信インターフェース(アドレス:0x51。変更可能)
  • 制御マイコン: ATmega328P
  • 表示: 動作確認用LED

基板の説明

  • サーミスタ ・・・ 先端部分で温度を測ります。150℃以上になるとフィルム部分が溶ける事がありますので、ご注意ください。
  • Working LED ・・・ 内蔵マイコンの準備が出来たら点灯します。I2C経由でアクセスがあり温度データを送っている時には一瞬消灯します。
  • ICSP ・・・ ピッチは1.27mmで信号線は、▶側から5V・GND・RESET・SCK・MOSI・MISOです。
  • FTDI Basic ・・・ ピッチは1.27mmで信号線は、▶側からRESET・TX・RX・5V・GND・GNDです。
  • Logic level 5V ・・・ オープンで信号線(SDA・SCL)は3.3Vです。はんだジャンパでショートすると5Vになります。
  • I2C Address ・・・ オープンでI2Cアドレスは0x51です。他のアドレスにしたい場合は、1か所のみにはんだジャンパーでショートします。
  • ※はんだジャンパーは透明収縮チューブを剥がす必要があります。基板や部品を傷付けないように注意が必要です。

ギャラリー

プログラム

温度データの取得には、本ユニットのI2Cアドレス宛てに2Byteの要求をします。本ユニットは16Bit(8Bit×2)のデータを送信します。下位Byte、上位Byteの順番です。上位Byteの最上位Bitは0であればプラス値、1であればマイナス値です。マイナス値を求めるには、(上位Byte×0x100)+下位Byteして2の補数を求め、プラス1をして1/100します。

M5Stack用のArduinoIDEプログラムのサンプルを下に示します。

/* M5Stack用 */
#define I2C_NTC 0x51
#include <M5Stack.h>
void setup() {
    M5.begin();
    M5.Power.begin();
    M5.Lcd.setTextColor(YELLOW);
    M5.Lcd.setTextSize(3);
    M5.Lcd.fillScreen(BLACK);  
}
void loop() {
    M5.Lcd.clear(BLACK);
    M5.Lcd.setCursor(0, 0);
    M5.Lcd.println("NTC Thermistors-Grove");
    
    Wire.requestFrom(I2C_NTC, 2);
    float temperature = 0;
    while(Wire.available()){
        byte data00 = Wire.read();
		byte data01 = Wire.read();
        if((data01 & 0b10000000)  == 0b10000000){
            //マイナス値
            int16_t ssss = (data00 + (data01 * 0x100));
            temperature = (float)((~ssss + 1) * (-1)) / 100;
        }else{
            //プラス値
            temperature = (float)(data00 + (data01 * 0x100)) / 100;
        }
	}
    M5.Lcd.print(temperature,2);
    M5.Lcd.println("");
	delay(1000);
}