« mbedでDMAの実験 | トップページ | XBeeを使ってみる »

mbedでリニア温度センサーを使う

MTM06で@shintamainjpさんよりStarBord Orange購入記念のMPC9700(アナログ温度センサー)をいただきました。mbedのADCを使ってセンサーの読み取りと温度の表示を行うサンプルプログラムを作って、本家のmbed.orgのNotebookにポストしたのですが、自分のブログにも概要を記載します。

   
温度センサーの読み取り 

MCP9700等のアナログ温度センサーは、温度に比例して出力電圧が変化します(温度係数と呼びます)。そのため、出力電圧を測定することによって、温度を得ることができます。MPC9700の場合、1℃毎に10mV出力が変化します。また、0℃で500mVの出力があるため、出力電圧は以下の式で表せます: 

Vout(出力電圧) = Tc(温度係数) x Ta(温度)  + V0(0℃の出力) 

そのため、温度は以下の式で計算が可能です: 

Ta = (Vout - V0) / Tc = (Vout - 500) / 10 

上記の式を使用して数秒単位で温度を測定すると、測定値に結構なばらつきが出てしまいました(1℃の単位で表示がふらついて、うっとうしい状態になります)。そのため、10回サンプル(測定)を行った平均値を示すようにしてあります。この対策を行うと、温度表示のばたつきはかなり軽減されるのですが、小数点まで表示すると0.1℃の単位は若干ばたつきます。 

センサーの出力電圧をテスターで直接計ると、ばたつきは1mVの単位しかなくADCの読み取り値に比べて安定しています。そのため、測定値のばらつきはセンサー入力の処理にも問題がありそうです。センサーの出力が20℃で700mVと低めのため、OPアンプを入れて出力を2倍程度に増幅してやればADCの分解能を生かせるようになり、ばたつきが軽減できるかも。あとノイズ対策も必要か。 

   
サンプルプログラム 

センサーの読み取りは、あまり意味がないですが、mbedのオブジェクト風に書いてみました。コード全体は、mbed.orgを参照して下さい。センサーオブジェクトを使ったサンプルを以下に示します。

  
#include "mbed.h"
#include "TextLCD.h"
#include "LinearTempSensor.h"

TextLCD lcd(p24, p26, p27, p28, p29, p30, TextLCD::LCD16x2);  // RS, E, DB4, DB5, DB6, DB7
LinearTempSensor sensor(p20);                                 // With default parameters
//LinearTempSensor sensor(p20, 5, LinearTempSensor::MCP9700); // With option parameters

int main() 
{
    float Vout, Tav, To;

    lcd.cls();
    lcd.printf("TEMP:");
    
    while(true)
    {
        Vout = sensor.Sense();          // Sample data (read sensor)
        Tav  = sensor.GetAverageTemp(); // Calculate average temperature from N samples
        To   = sensor.GetLatestTemp();  // Calculate temperature from the latest sample

        lcd.locate(5, 0);
        lcd.printf("%4.1f", Tav);
        printf("Vout:%f  Tav:%f  To:%f\n\r", Vout, Tav, To);    // Debug print

        wait(2.0);
    }
}

6行目で、AnalogInとしてp20を使用する、LinearTempSensorオブジェクトのインスタンスを起こしています。  
18行目でセンサー出力をサンプリングし、19行目でN回サンプル(defaultは10回)から得られる平均温度を取得しています。

StarBoard Orangeを使ってセンサーを動作させた写真を以下に示します。

SensorWithMbed

« mbedでDMAの実験 | トップページ | XBeeを使ってみる »

mbed」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ