XBeeモジュールの使い方(アナログ温度センサ)


 アナログ温度センサMCP9701(Microchip社製)をリモートXBeeに接続して2秒間隔でローカルXBeeに結果を送信する方法を解説します。

(センサとリモートXBeeの配線)

・MCP9701の1番ピン(Vdd)をXBeeの1番ピンと接続

・MCP9701の2番ピン(Vout)をXBeeの19番ピンと接続

・MCP9701の3番ピン(GND)をXBeeの10番ピンと接続

(XBee設定条件)

デフォルト状態から以下の設定を実施します。

・リモートXBeeとローカルXBeeのIDを一致させる。

・リモートXBeeとローカルXBeeのAPをAPI Mode Without Escape [1]に設定する。

・リモートXBeeのD1をADC[2]に設定する。

・リモートXBeeのIRを2000msに設定する。

 IR:I/O Sampling Rateにより周期的なサンプリングを有効にすることができます。I/Oサンプリングレートはデフォルトで0ですが、この値を0より大きい値に設定すると有効なすべてのデジタルI/Oおよびアナログ入力がIRミリ秒ごとにサンプリングされ送信されます。この値を0以上に設定してもデジタルI/Oおよびアナログ入力がアクティブになっていないとデータは送信されません。今回は2秒周期でデータ送信を実施します。また、I/OサンプルはDH+DLで指定されたアドレスに送信されます。この場合は、ローカルXBeeのシリアルナンバー(64ビットアドレス)であるSHとSLをDHとDLにそれぞれ入力しても送信できますが、ローカルXBeeのDHとDLの値を入力しても送信可能です。今回はデフォルトの0のままにしておきます。

・リモートXBeeのAV:Analog Voltage Referenceがデフォルトで1.25Vに設定されていることを確認してください。最初はデォルトのまま実行します。

設定が終了するとローカルXBeeのConsoleタブを開き、左上のConnectionボタンをクリックして緑色にします。

すると以下のようにリモートXBeeからフレームが2秒ごとに送信されていること確認できます。

このフレームを確認すると、アナログデータが10進数で724であることが分かります。

XBee内蔵のA/D変換器の分解能10ビットなので最大値は1023となり、参照電圧Vrefが1.25Vなので、電圧に変換すると(724×1.25)/1023=0.8846[V]であることが分かります。

この値と以下の式を用いて温度換算すると以下の結果を得ることができます。

T=(Vout-V0C)/Tc1=(884,6-400)/19.5=24.85[℃]

次に、同じ設定でリモートXBeeのAV:Analog Voltage Referenceの値を2.5Vに変更した場合も確認してみます。

 このフレームを確認すると、アナログデータが10進数で361であることが分かります。

参照電圧Vrefが1.2Vの場合と同様にXBee内蔵のA/D変換器の分解能10ビットなので最大値は1023となり、参照電圧Vrefが2.5Vなので、電圧に変換すると(361×2.5)/1023=0.8822[V]であることが分かります。

この値と以下の式を用いて温度換算すると以下の結果を得ることができます。

T=(Vout-V0C)/Tc1=(882.2-400)/19.5=24.72[℃] Vrefが1.25Vの場合は最大計測温度は43.5℃ですが、Vrefが2.5Vの場合の最大計測温度は107.7℃です。温度計測範囲の拡大と計測温度の分解能がトレードオフの関係になっており、それぞれの計測対象で適するVrefの設定が必要であることが分かります。