![]()
今回は温度センサー「S-8100B」とPSoCを利用して温度を計測する。プログラミングに利用するのはPSoC Express 2.2。このソフトは温度計測モジュールなどがそろっている。しかし残念ながら「S-8100B」は用意されていない。そのためソースコードを修正して「S-8100B」が利用できるようにする。
![]()
まずプロジェクトに温度計を追加する。「Edit」メニューから「Add Input」を選択する。
![]()
そして「Temperature」の「Integrated Circuit」にある「LM35 +2 to 150C」を選択する。今回利用する温度センサーは「S-8100B」であり「LM35」ではない。LM35用のソースコードをS-8100B用に修正して使う。
![]()
次に計測した温度を表示するための液晶モジュールを追加する。「Edit」メニューから「Add Output」を選択する。
![]()
そして「Display」の「LCD」にある「LCD Value」を選択する。このモジュールは文字通り数値(Value)を表示するためのものだ。
![]()
次に温度計の計測値が液晶モジュールに表示されるようにする。
液晶モジュールを示す「Output1」を右クリックして現れるメニューから「Transfer Function」を選択する。
![]()
今回はif命令で条件を指定できる「Priority Encoder」を利用する。
![]()
条件を指定できるものの特に条件は必要ないので「if」の次の欄に「1」を指定する。「then」の後ろの欄は温度センサーを示す「Input1」を指定する。
![]()
これで「Input1」と「Output1」がオレンジ色の線で結ばれた。
![]()
ここからの作業が今回の"肝"となる。PSoC Expressに備わっているLM35用のソースコードを修正する。ソースコードは
C:\Program Files\ Cypress MicroSystems\ PSoC Express\ CMXData\ CMXDRV\ CMX\ LM35\ LM35.c
に記述されている。このファイルを右クリックして「アプリケーションから開く」を選択する。
![]()
そして開くアプリケーションとして「Notepad」(メモ帳)を選択する。
![]()
これでLM35用のソースコードが開いた。このファイルの末尾に計測値出力用の関数「..._LM35_Value」が用意されている。
![]()
この部分を以下のように変更する。
計算式の詳細は前回の「PSoCとS-8100Bで温度を計測する」を参照してほしい。
int CMX_LM35_GetValue(const CMX_LM35_ParameterBlock * thisBLK)
{
int n;
n = iGetChanMVolts(thisBLK->InPort);
n = (1508 - n) * 1.25 + 3000;
return n;
}
![]()
PSoCデバイスは「CY8C29466」、「Sample Rate」を「8Hz」を指定した。
![]()
今回は配線の都合上、出力ポートを変えた。「Input1」をポート01に、LCDをポート2にする。
MiniProgでPSoCへ書き込みLCDとS-8100Bを接続して動作確認をする。今回はPSoCEval上で配線した。
温度センサーの「S-8100B」は写真を見て左側の端子からOUT、GND、VCCとなる。それぞれポート01、GND、VCCに接続する。温度がきちんと計測できない(実際より高く表示される)ようであればOUTとVCCの間に1MΩ程度の抵抗を配置するといい。
