概要
Arduino で高精度の温度センサを使ってみました
Adafruit の Arduino 用の専用のライブラリがあるのでそれを使って I2C 接続で温度を取得することができます
環境
- Mac OS X 10.12.1
- Arduino IDE 1.6.12
- Arduino Pro mini (5v, 16MHz)
- MCP9808 高精度温度センサ(I2C通信)
ライブラリのインストール
Arduino IDE からライブラリをインストールします
「MCP9808」と検索すれば出てくると思います
配線
今回 Arduino Pro mini を使っているので事前に A4, A5 ピンにピンヘッダをつけておいてください
Arduino UNO であればそのまま A4, A5 ピンを使えば I2C 用のピンとして使えるので特に何もする必要はありません
電源電圧は 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);
}
動作確認
スケッチを書き込んで動作確認してみましょう
以下のように表示されると思います
最後に
Arduino で MCP9808 を使ってみました
I2C のインタフェースがセンサ側にあるので非常に簡単に使えました
Arduino の I2C を使ったことがある方は非常に簡単に使えると思います
ポイントとしては 5V 駆動な点と Arduino Pro mini の場合には A4, A5 のはんだが必要というくらいだと思います
0 件のコメント:
コメントを投稿