2016年8月6日土曜日

Johnny-Fiveでマイコン制御18 - 温度センサー

○Thermometerオブジェクトを作成する
 温度センサーの測定値を取得するには、Thermometerオブジェクトを使います。Thermometerオブジェクトは、物理的なボード上に接続されている温度センサーを表すオブジェクトです。Thermometerオブジェクトを作成するには、Thermometerクラスのコンストラクタを使います。
温度センサーIC(LM35TMP36)を使用するためのThermometerオブジェクトを作成するには、「controller」プロパティに使用する温度センサーICの名前を、「pin」プロパティに温度センサーの出力を接続するアナログ入力ピンの名前を指定します。
new five.Thermometer({
  controller:  温度センサーの名前,
  pin: ピン番号
}

たとえば、LM35を使用するためのThermometerオブジェクトを作成するには、次のように書きます。
new five.Thermometer({
  controller: "LM35",
  pin: "A0"
});;

・配線図
 

I2Cインターフェイスの温度センサー・モジュールの場合は、「controller」プロパティに使用する温度センサーの名前を指定します。たとえば、MPU6050を使用するためのThermometerオブジェクトを作成するには、次のように書きます。
new five.Thermometer({
  controller: "MPU6050"
});

・配線図
 

温度センサーのデータを取得する
 温度センサーのデータを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。
on("イベント", ハンドラ)

 Thermometerオブジェクトで発生するイベントは、次のとおりです。
イベント
説明
change
温度センサーの入力データが変化したときに発生する
data
25ミリ秒(freq」プロパティで変更可)間隔で発生する

取得した値は、次のプロパティで参照することができます。
プロパティ
説明
celsiusC
摂氏温度
fahrenheitF
華氏温度
kelvinK
ケルビン温度

たとえば、LM35の温度データを「change」イベントで取得し、摂氏、華氏、ケルビン温度で表示するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // Thermometerオブジェクトを作成
  // 使用温度センサーIC LM35
  // データ入力端子 A0
  var temperature = new five.Thermometer({
                      controller: "LM35",
                      pin: "A0"
                    });
  // データを取得
temperature.on("data", function() {
    console.log("celsius: %d", this.celsius);
    console.log("fahrenheit: %d", this.fahrenheit);
    console.log("kelvin: %d", this.kelvin);
    /* または
    console.log("celsius: %d", this.C);
    console.log("fahrenheit: %d", this.F);
    console.log("kelvin: %d", this.K);
    */
  });
});

温度センサー・データの読み取り間隔を設定する
 温度センサーのデータの読み取り間隔(data」イベントの間隔)を設定するには、オプションの「freq」プロパティを使います。値にはミリ秒単位の時間を指定します。たとえば、100ミリ秒間隔でデータを読み取るには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // Thermometerオブジェクトを作成
  // 使用温度センサーIC LM35、データ入力端子 A0
  // 読み取り間隔を100ミリ秒に設定
  var temperature = new five.Thermometer({
                      controller: "LM35",
                      pin: "A0",
                      freq: 100
                    });
  // データを取得
  temperature.on("data", function() {
    console.log(this.celsius + "°C", this.fahrenheit + "°F");
  });
});


温度の計算式を指定する
 温度(摂氏)の計算式(関数)を指定するには、オプションの「toCelsius」プロパティを使います。これは、LM35TMP36以外の温度センサーICを使用する場合に使います。
new five.Thermometer({
  pin: "A0",
  toCelsius: function(raw) { ((raw * sensivity)-offset)*100}
});

raw
ADコンバータ値
sensivity
温度センサーICの電源電圧 / ADC分解能
offset
温度センサーICのオフセット電圧
Arduinoの場合、ADC分解能は「1024

たとえば、LM35(5V使用時)の温度計算式は「(raw * 5 / 1024) *100」になります。
  var temperature = new five.Thermometer({
                      pin: "A0",
                     toCelsius: function(raw) {
                        return (raw * 5 / 1024) *100
                     }
                   })
TMP36(5V使用時)の温度計算式は「((raw * 5 / 1024)-0.5) *100」になります。
  var temperature = new five.Thermometer({
                      pin: "A0",
                     toCelsius: function(raw) {
                        return ((raw * 5 / 1024)-0.5) *100
                     }
                   })


0 件のコメント:

コメントを投稿