[Nefry BTとGrove接続実験] 温度センサ

温度センサモジュール

私が購入したGROVEスターターキットV3に入っていた温度センサモジュールは、Temperature Sensor V1.2というモジュールです。スイッチサイエンスさんの単体販売ページに掲載されているものと同じです。

Grove温度センサ
Grove温度センサ(裏)

温度センサモジュールの動作

温度センサモジュールはアナログモジュールです。温度の高い低いに応じて出力される電圧が変化します。analogRead(PIN)関数を使うと電圧の高さが0〜4095の数値として得られます。この数値だと何度かわからないので、数値を温度に変換するプログラムが必要になります。変換方法は、Groveモジュールの販売サイトや、Groveモジュールで使用している温度センサ部品のサイトに掲載されていますが、かなり難解です。Groveモジュールを使うだけなら、販売店サイトで公開されているプログラムを利用するのが手軽です。

プログラム

ここではSeeed Studio社の商品紹介ページにあるArduino用のプログラムを使ってみます。

#include <math.h>
const int B = 4275;           // B value of the thermistor
const int R0 = 100000;        // R0 = 100k
const int pinTempSensor = A5; // Grove - Temperature Sensor connect to A5

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int a = analogRead(pinTempSensor);

  float R = 1023.0/a-1.0;
  R = R0*R;

  // convert to temperature via datasheet
  float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15;

  Serial.print("temperature = ");
  Serial.println(temperature);

  delay(100);
}

このプログラムをNefry BT用に変更します。

  1. pinTempSensorA5をNefry BT 無印の場合はA2に変更します。Nefry BT R2の場合はA1に変更してください。
  2. Serial.begin(9600); は不要なので削除します。
  3. pinMode( )関数がなくても動作しますが、念のためpinMode(pinTermpSensor, INPUT);を追加します。
  4. aanalogRead(pinTempSensor)で取得した値です。ArduinoのanalogRead( )関数は0〜1023の値を返しますが、Nefry BTのanalogRead( )関数は0〜4095の値を返すので、1023.0となっている部分を4095.0に変更します。

この変更を加えたプログラムは次のようになります。

#include <math.h>
const int B = 4275;           // B value of the thermistor
const int R0 = 100000;        // R0 = 100k
const int pinTempSensor = A1; // Grove - Temperature Sensor connect to A1

void setup()
{
  pinMode(pinTempSensor, INPUT);
}

void loop()
{
  int a = analogRead(pinTempSensor);

  float R = 4095.0/a-1.0;
  R = R0*R;

  // convert to temperature via datasheet
  float temperature = 1.0/(log(R/R0)/B+1/298.15)-273.15;

  Serial.print("temperature = ");
  Serial.println(temperature);

  delay(100);
}

 

このプログラムを動作させると、シリアルモニタに次のような結果が出力されます。

温度計測定値のシリアルモニタ出力例

なんとなくそれらしい温度が表示されていますが、Arduinoにこの温度センサーを接続した時より1〜2度低いようです。Arduinoのプログラムは5Vでの動作を前提としているので、3.3Vだと少し定数の変更が必要なのかもしれません。

諸元

名称Temperature Sensor
温度センサ
バージョンV1.2
Seeed社 Wikihttp://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/
スイッチサイエンス商品ページhttps://www.switch-science.com/catalog/806/
Nefry BT無印 動作ソケットA2
Nefry BT R2 動作ソケットA0(プログラム上はA1)

「Nefry BTとGroveモジュール接続実験」 トップページ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください