トップ 一覧 検索 ヘルプ RSS ログイン

tips-mpc9700の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! 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);
 }