2016年11月5日土曜日

Arduino で MCP9808 (高精度温度センサ) を使ってみた

概要

Arduino で高精度の温度センサを使ってみました
Adafruit の Arduino 用の専用のライブラリがあるのでそれを使って I2C 接続で温度を取得することができます

環境

ライブラリのインストール

Arduino IDE からライブラリをインストールします
「MCP9808」と検索すれば出てくると思います
mcp9808_lib_install.png

配線

今回 Arduino Pro mini を使っているので事前に A4, A5 ピンにピンヘッダをつけておいてください
Arduino UNO であればそのまま A4, A5 ピンを使えば I2C 用のピンとして使えるので特に何もする必要はありません
mcp9808_circuit.jpg

電源電圧は 5V を使うので FTDI の変換アダプタのショートピンは 5V のほうにしておいてください
配線は以下の通りです

  • MCP9809 Vdd -> Arduino VCC
  • MCP9809 Gnd -> Arduino GND
  • MCP9809 SCL -> Arduino A5
  • MCP9809 SLA -> Arduino A4

スケッチ

ライブラリを読み込んで使います
I2C に接続されているデバイスを探して見つかれば readTempC で温度を読み込みます
値は摂氏で取得できるので華氏として表示するのであれば計算して変換してあげる必要があります

#include <Wire.h>
#include "Adafruit_MCP9808.h"

Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();

void setup() {
  Serial.begin(9600);
  Serial.println("MCP9808 demo");
  if (!tempsensor.begin()) {
    Serial.println("Couldn't find MCP9808!");
    while (1);
  }
}

void loop() {
  Serial.println("wake up MCP9808.... ");
  tempsensor.shutdown_wake(0);
  float c = tempsensor.readTempC();
  float f = c * 9.0 / 5.0 + 32;
  Serial.print("Temp: "); Serial.print(c); Serial.print("*C\t");
  Serial.print(f); Serial.println("*F");
  delay(250);
  Serial.println("Shutdown MCP9808.... ");
  tempsensor.shutdown_wake(1);
  delay(2000);
}

動作確認

スケッチを書き込んで動作確認してみましょう
以下のように表示されると思います
mcp9808_ret.png

最後に

Arduino で MCP9808 を使ってみました
I2C のインタフェースがセンサ側にあるので非常に簡単に使えました
Arduino の I2C を使ったことがある方は非常に簡単に使えると思います
ポイントとしては 5V 駆動な点と Arduino Pro mini の場合には A4, A5 のはんだが必要というくらいだと思います

参考サイト

0 件のコメント:

コメントを投稿