[Arduinoのすすめ][ArduinoConf][ArduinoMonitor][iArduino]

セイコーエプソンのCMOS温度センサIC S-8100Bを使う

S-8100Bは、セイコーエプソンの CMOS 温度センサICです (入手先:秋月電子)。 -20℃〜80℃が測定範囲です。 電源電圧範囲は 3.0[V]〜5.0[V]ですので、3.3[V]動作、5[V]動作のArduinoに 直接つないで使うことが出来ます。30℃のときの出力電圧が1.508[V](代表値)で 温度が1度上がると80[mV]電圧が下がります(温度係数が-80[mV/℃])。

スケッチ

このスケッチではS-8100BをArduinoのA0ピンにつなぎます。 analogReadで読んだそのままの値と温度[℃]に変換した値をシリアルへ出力します。 Arduinoの電源が3.3[V]のときはAREFを3300にします。 出力インピーダンスが高いのでS-8100BのVOUT (ArduinoのA0)とGNDの間に0.1[uF]の コンデンサをつないで試しました。

正確な温度が必要なときは Arduino の電源を AC アダプタから供給し、 キャリブレーションします(基準となる温度を2点以上で測り、OFFSETの値と 8.0を変えて合わせる)。 電源を AC アダプタから供給するのは USB 端子の 5[V]はパソコンのポートや、USBケーブルの長さなどで変わってしまうからです。

const float AREF   = 5000.0;   /* 電源が3.3[V]のときは 3300.0 */
const int   OFFSET = 1508.0;   /* 30℃での出力電圧[mV] */

void setup() {
  Serial.begin(9600);
  while (!Serial) {}  
}

void loop() {
  int T;
  float t;

  t = T = analogRead(A0);
  
  t = 30.0 - (t / 1024.0 * AREF - OFFSET) / 8.0;
  
  Serial.print(T);
  Serial.print(" ");
  Serial.println(t);
  
  delay(500);
}

Arduinoのすすめ
Copyright (c) 2013, Noriaki Mitsunaga