tips-mcp9700
MCP9700 メモ
温度センサー ( -20~~+50 )
http://akizukidenshi.com/catalog/g/gI-03286/
Pinアサイン
1 | 2 | 3 |
---|---|---|
Vcc | out | GND |
メモ
温度が合わないので
out に 0.1uF でGND へ
https://os.mbed.com/users/strysd/notebook/analog_input_from_mcp9700_via_njm2732d/
を参考にテーブルで計算
1度C 10mV (3.3v/4095(12bit)で計算すると 12.409.. (273/22) になるなので変換式は 5*(sv-620)/62.0 :: sv はAD変換値
// 実測では 5*(sv-630)/62.0 あたり?? // 10*(sv-630)/123.0 がなるけれど上の式がらくかな
Celsius degree | Vout from MCP9700 | 12bit_3v3_4095max | 実測 |
---|---|---|---|
50 | 1000mV | 1240 | 1244 |
40 | 900mV | 1116 | 1120 |
30 | 800mV | 992 | 998 |
20 | 700mV | 868 | 873 |
10 | 600mV | 744 | 750 |
0 | 500mV | 620 | 630 |
-10 | 400mV | ||
-20 | 300mV | ||
-30 | 200mV | ||
-40 | 100mV |
サンプル(STM32F103C arduino ide)
#include <stdio.h> int sensorPin = 2; // Select the input pin for the potentiometer int sensorValue = 0; // Variable to store the value coming from the sensor void setup() { // Declare the sensorPin as INPUT_ANALOG: pinMode(sensorPin, INPUT_ANALOG); // Declare the LED's pin as an OUTPUT. (32 is a built-in // constant which is the pin number of the built-in LED. On the // Maple, it is 13.) pinMode(32, OUTPUT); // Serial.begin(9600); } int sv; float lsb = 3.3 / 4095 ; void loop() { sv=0; // Read the value from the sensor: int i; for ( i = 0 ; i < 10 ; i++) { sensorValue = analogRead(sensorPin); sv = sv + sensorValue ; delay(200); } sv = sv / i ; // // Turn the LED pin on: digitalWrite(32, HIGH); // Stop the program for <sensorValue> milliseconds: // Serial.println(sv); // ( ((sv/i)-620)/(273/22)); // 計算の簡易化;; // Serial.print(","); Serial.println( (22*(sv-620)/273.0),3); // Serial.println( (((sv*lsb/i)-0.50)*100) ,3); // サンプル温度 小数点以下3桁 // Turn the LED pin off: digitalWrite(32, LOW); // Stop the program for for <sensorValue> milliseconds: // delay(500); }