TOP > カテゴリ > ロボット・電子工作・マイコン >

サーミスタ(NTC)の使い方 [Arduino]

NTCサーミスタは温度が上がると抵抗値が下がる電子部品です。

今回は抵抗分圧回路を使用して「サーミスタの抵抗値と周辺温度」を取得します。サーミスタは温度を計算で算出する事が可能なので「温度計」としてもご利用できます。

使用部品・材料

総額で約540円です。(Arduino本体の値段を除く)

部品/材料値段備考
ブレッドボード¥270秋月電子の通販コード(P-00315)
サーミスタ 10kΩ(ラジアルリードタイプ)¥50秋月電子の通販コード(P-07258)
コネクタ付コード(みの虫×ジャンパーワイヤ)¥220秋月電子の通販コード(C-08916)
カーボン抵抗器数円10kΩ(1個)を使用。

この実験では、サーミスタにドライヤーなどの温風をあてますので「コネクタコード付きコード」の「みの虫」(クリップ)をサーミスタの端子に使用してブレッドボードから離します。

配線図

スケッチ(プログラム)

電圧及びサーミスタの抵抗値と周辺温度をシリアルモニターに表示します。

※サーミスタは手で温度を上げるか、ドライヤーなどを使用して下さい。

// 抵抗値/温度リスト
float rtLsit[100]; 
// 抵抗分圧用の10kΩ抵抗
int R1 = 10000; 

// NTCサーミスタの現在温度から抵抗値を算出する
// B:B定数 R0:基準温度(T1)での抵抗値 T1:基準温度 T2:現在温度 
float NTCThermistor_res(int B, int R0 ,float T1, float T2){
  const float e = 2.7182818284; // ネイピア数
  float exponent = B * ((1.0 / (T2 + 273.15)) - (1.0 / (T1 + 273.15)));
  return (R0 * pow(e,exponent));
}

void setup() {
  Serial.begin(9600);

  // 0-100℃までの抵抗値/温度リストを生成
  for (int i =0; i < 100; i++){
    // 温度から抵抗値を算出する
    rtLsit[i] = NTCThermistor_res(3435,10000,25,i);
  }
}
 
void loop() {

  // アナログ入力の値を電圧(V)に変換
  float voltage = (analogRead(A0) / 1024.0) * 5.0;
 
  Serial.print("入力電圧:");
  Serial.print(voltage);
  Serial.print("V 抵抗値:");
 
  // サーミスタの抵抗値
  float resistance = voltage / (5.0 - voltage) * R1;
  if(resistance > 999){
    Serial.print(resistance / 1000);
    Serial.print("k");      
  }else{
    Serial.print(resistance);
  }    
  Serial.print("Ω ");        

  // サーミスタの周辺温度
  Serial.print("温度: ");    
  for (int i =0; i < 100; i++){
    if (resistance == rtLsit[i]){
      Serial.print(i);    
      Serial.print("℃ ");    
      break;
    }
    if (resistance > rtLsit[i]){
      Serial.print(i-1);    
      Serial.print("℃ ");    
      break;
    }    
  }
  Serial.println("");    
  
  delay(1000);
}

抵抗分圧回路による抵抗値の求め方は抵抗分圧の逆算をご覧下さい。





関連記事



公開日:2017年06月23日 最終更新日:2017年06月26日
記事NO:02439