今後数回にわたって、Arduinoでセンサーを扱う方法について扱ってみたいと思います。センサーは主にデジタル出力のものとアナログ出力のものがありますが、共に簡単に扱うことができます。

今回は、温度センサー(MCP9700E)を使って室温を測定する方法をサンプルスケッチと共にご紹介したいと思います。

スポンサーリンク




目次

  1. 必要なもの
  2. 回路を組み立てよう!
  3. スケッチのサンプル
  4. まとめ

1.必要なもの

まずは必要なものについてです。下記にまとめてみました。ArduinoはポピュラーなUNOを使用します。温度センサーは秋月電子通商でとても安く入手できますよ。

Arduinoをまだ持っていない人は、スイッチサイエンスの「Arduinoをはじめようキット」もオススメです。UNOだけでなくブレッドボードやジャンパーワイヤー、LED、光センサー等が入ったスターターキットになっています。自分も最初はこれを買いました。

※上記のリンクはamazon、秋月電子通商へのリンクとなっています。

2.回路を組み立てよう!

それでは早速回路を組み立ててみましょう。下記の写真と接続図を参考に組み立てしてみてください。

3.スケッチのサンプル

では次に、室内の温度を測定するためのスケッチを完成させましょう。下記のようにコーディングします。計測した温度はシリアルモニタで出力します。

int res;
int mv;
int temp;

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

void loop() {

  // センサ値読込み(アナログ0番)
  res = analogRead(0);

  // センサ値を電圧に変換
  mv = map(res, 0, 1023, 0, 5000);

  // 電圧から温度に変換
  // MCP9700Eの温度係数は10mV -40〜+125度の範囲を測定 0度の時500mVを出力
  temp = map(mv, 100, 1750, -40, 125);
  
  Serial.print("temp:");
  Serial.print(temp);
  Serial.print("c");

  delay(1000);
  Serial.println("");
}

スケッチの解説

6行目:

計測した温度はシリアルモニタで出力するので、setup関数内で「Serial.begin(9600)」を宣言します。

12行目:

温度センサーの真ん中のピンでセンサ値が出力されますので「A0」ピンに繋いでanalogReadします。

15行目:

変数「mv」に電圧(mV)に変換した値を格納しますが、analogReadで変換される値は0〜1023。MCP9700Eは「5V」ピンに接続しますので、0〜5000mVで範囲を指定します。これらをmap関数で変換します。

19行目:

この行ではいよいよ電圧(mV)から温度(℃)に変換しますが、MCP9700Eは温度係数(1℃辺りの電圧変化)が10mVで、-40〜+125℃を計測できる仕様です。また0℃の時の電圧のオフセットが500mVなので、このような式になります。

あとは温度をシリアルモニタで出力すればOKです。ちなみに、秋月電子通商が公開しているMCP9700Eのデータシートによれば、計測誤差は最大で±4℃(0〜+70℃)だそうです。またArduinoからの電圧も多少増減するでしょうから、多少の誤差は出るようですね。

4.まとめ

今回はArduinoで温度センサー(MCP9700E)を使って室温を測定する方法について扱ってみました。温度センサーは安価で手軽なアナログセンサーの一つ。短いコードで簡単に温度を計測できるので、あれこれ応用してみましょう。