Arduinoで遊ぼう -温度センサIC、MCP9700を使って温度を測る
Posted by arms22 on 2011年04月19日

MCP9700はMicrochip社の温度センサICで、温度をアナログ電圧に変換し出力します。-40℃から+125℃までの測定範囲を持っていて、0℃~+70℃の範囲では±4度(最大)の精度もちます。外付け回路は不要で電源とGND、VOUTをマイコンのADCにつなげばすぐに使えます。
Arduinoとの接続

1 VDD <-- 5V (Arduino)VDDに5V、VOUTにA0を接続します。ADCの分解能をあげる為にArduinoの3.3VをARefに接続します。Arduino UNOの場合、高精度の3.3Vレギュレータを搭載しているので、さらにADCの精度を上げることができます。MCP9700のVDD、GND間に0.1uFのバイパスコンデンサを入れておく。
2 VOUT --> A0 (Arduino)
3 GND <-- GND (Arduino)
3.3V (Arduino) --> ARef (Arduino)
温度の求め方
次のような1次式で簡単に求められます。
温度 = (センサ出力電圧 - 0℃の時のセンサ出力電圧) / 温度係数MCP9700の温度係数は10mV/℃、また0℃の時のセンサ出力電圧は500mVとなっています。例えばセンサ出力電圧が750mVの時、
温度 = (750mV - 500mV) / 10mVとなります。しかし実際の値は計算した値と異なります。素子ごとのバラつきや温度に対して非直線性の出力特性により変化します。このような素子はある温度でシステムを校正することで精度を向上させることができます。例えば室温25℃で校正した場合、0℃~70℃の範囲で±0.5℃の精度を得ることができます。
温度 = (250mV) / 10mV
温度 = 25℃
サンプルスケッチ
const int voutPin = 0;
void setup()
{
Serial.begin(57600);
// ARefに3.3Vを接続し、それを基準電圧にする
// 外部リファレンスを使わない場合、mV計算時の3300を5000に変更すること
analogReference(EXTERNAL);
}
void loop()
{
// MCP9700の出力電圧を取得
int reading = analogRead(voutPin);
// AD値をmVに変換(外部リファレンスを使わない場合、3300 --> 5000に)
float voltage = ((long)reading * 3300) / 1024;
Serial.print(voltage);
Serial.print(" mV, ");
// mVを摂氏温度[C]に変換
// 0度で500mVのオフセットがのっているので500mVを引く
// 10mV / 温度
float tempC = (voltage - 500) / 10;
Serial.print(tempC);
Serial.print(" degress C, ");
// 摂氏温度[C]を華氏温度[F]に変換
float tempF = (tempC * 9 / 5) + 32;
Serial.print(tempF);
Serial.println(" degress F");
delay(1000);
}
MCP9700/01 低消費電力リニアアクティブサーミスタIC
http://ww1.microchip.com/downloads/jp/DeviceDoc/21942B_JP.pdf
温度センサーIC MCP9700-E/TO 低消費電力リニアアクティブ (8個入)
http://akizukidenshi.com/catalog/g/gI-03286/
How to measure temperature with Arduino and MCP9700
http://starter-kit.nettigo.eu/2010/how-to-measure-temperature-with-arduino-and-mcp9700/
Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS)
posted with amazlet at 11.04.11
小林 茂
オライリージャパン
売り上げランキング: 40918
オライリージャパン
売り上げランキング: 40918
Ads by Google
0 Comments
Leave a reply
該当の記事は見つかりませんでした。