こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
部品リスト
Qty | Product | 品番 | |
---|---|---|---|
1 | OKdo Raspberry Pi 4 Basic Kit (UK) 4 GB | 200-7274 | |
Node-RED関数ノード(Javascript)を記述して、値をセンサー値から電圧値に変更します。さらに、別の関数ノードを記述して、その時点でのセンサーの抵抗値を計算できます。最後に、3番目の関数ノードを使用して、その抵抗値(サーミスタの場合)を、摂氏の温度に変更できます。
Javascriptコードに協力してくれたジェームス・マクファーレンとアンディ・スタンフォード・クラークに感謝します。
上の3つのステップは、3つの異なる機能を持つノード(「電圧(Volts)」、「抵抗(Resistance)」、「温度(Temp)」)に分けられているため、自分のプロジェクトに合ったパーツを再利用可能です。ただし、すべてのノードを、1つの関数ノードにまとめることもできます。
これらの関数ノードを使用するために、計算方法やJavascriptを理解する必要はありません。コピーしてフローに貼り付けるだけで使用可能です。
最初の2つのノードは、さまざまなタイプのセンサーで使用できます。「電圧(Volts)」にはステップ数とVrefの正しい値を、「抵抗(Resistance)」には分圧器として使用される抵抗器の抵抗値を入力してください。
最後のノード「温度」は、使用されるサーミスタ固有のものであり、データシートにすべての情報が記載されています。
次に、コードをコピーして、下の方法でインポートします。
Node-REDフローページで、メニューをクリックします(右上の3本線)
↓
[インポート]をクリック
↓
[クリップボード]をクリック
↓
フローを灰色のボックスに貼り付け
↓
[インポート]をクリック
Node-REDにインポートするコード:
次のように3つのノードを貼り付けます。
または、コードを各関数ノードに自分で追加することもできます。電圧ノードの出力を抵抗ノードの入力にリンクし、抵抗ノードの出力を温度ノードの入力にリンクします。
電圧ノードの内容:
var n=msg.payload;
const steps = 1023;
const Vref = 3.3;
var Vadc = Vref * n / steps;
msg.payload = Vadc;
return msg;
抵抗ノードの内容:
var Vadc=msg.payload;
// Vin is the voltage from the ADC.
// R1 and R2 must be in same units (e.g. K or ohms)
const R2 = 10e3;
var R1 = R2 * (3.3/Vadc - 1);
msg.payload = R1;
return msg;
温度ノードの内容:
var R1=msg.payload;
const A1 = 3.354016e-03;
const B1 = 2.569850e-04;
const C1 = 2.620131e-06;
const D1 = 6.383091e-08;
const Rref = 10e3;
var k = R1/Rref; // We make a substitution here to simplify things.
var T;
if (k > 0) {
T = 1.0 / ( A1 + B1*Math.log(k) + C1*Math.pow(Math.log(k),2) + D1*Math.pow(Math.log(k),3) );
} else {
T = 0.0;
}
var Tc = T - 273.15 // Turn from Kelvin into degrees C
msg.payload = Tc;
return msg;
電圧ノードの前に「入力(input)」を、最後のノードの後ろにデバッグノード(または制御したいもの)を追加する必要があります。ここではスイッチノードをよく使用しますが、これは、特定の値を下回っている場合aを実行し、そうでない場合はbを実行します。
これで、センサー値が、人間が読めるものになりました!
コメント