Arduino資料一覧

Johnny-Fiveでサポートされていない温度センサーの値を温度に変換する方法(LM61BIZ編)

2017/01/21更新

対応バージョン: Node.js 4.2.6, Johnny-Five 0.9.58

Johnny-Fiveは様々な温度センサーをサポートしているので対象センサーであれば以下のようにThermometerクラスを使って簡単に温度を取得することができる。

var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var temp = new five.Thermometer({
    controller: "LM35",
    pin: "A0"
  });

  temp.on("change", function() {
    console.log(this.celsius + "°C", this.fahrenheit + "°F");
  });
});

しかしJohnny-Fiveでサポートされていない温度センサーの値を温度に変換するにはそのセンサーのデータシートを見てThermometerクラスのtoCelsiusオプションで計算式を定義する必要がある。

ここではLM61BIZを使用する場合の計算式を示す。

上記ページからデータシートを参照すると出力電圧のオフセット値が0.6Vであることが分かる。

これを以下の式に当てはめれば温度が計算できる。

((センサー値 * 電源電圧 / 1024) - 出力電圧のオフセット値) * 100
= ((センサー値 * 5 / 1024) - 0.6) * 100

この計算式をThermometerクラスのtoCelsiusオプションに定義してデフォルト定義をオーバーライドすればよい。

結線

ソース

lm61.js
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  var temp = new five.Thermometer({
    pin: "A0",
    toCelsius: function(raw) {
      var val = ((raw * 5 / 1024) - 0.6) * 100;  // 温度計算
      return Math.round(val * 10) / 10;          // 小数点第2位以下四捨五入
    }
  });

  temp.on("change", function() { 
    console.log(this.celsius + "°C");
  });
});
実行
% node lm61.js 
1485009719195 Device(s) /dev/ttyACM0  
1485009719202 Connected /dev/ttyACM0  
1485009722449 Repl Initialized  
>> 19.6
19.1
19.6
19.1
19.6
19.1
:

関連資料・記事

参考サイト