PSoC Expressで温度センサーと液晶パネルを使う

WS01.gif
Cypress PSoC Express 2.2(Express Pack 2.2適用済)を起動したところ。このソフトは無料でCypressからダウンロードできる。特徴は何と言っても「ソースコードを書かずにPSoCのプログラミングができる」点だ。慣れればかなり高度な動作も実装できる。しかしやはり限界もあり、これソフトだけでは不十分なのだが。

WS02.gif
今回は温度センサー(LM35)とキャラクタ液晶モジュールを組み合わせて、PSoCで温度を表示する。

スプラッシュ画面を閉じたら画面左下にある「INPUT」をクリックする。

WS03.gif
すると「Input Driver Catalog」が開く。ここでは"入力"関連のデバイスを選択できる。加速度センサー、電流センサー、デジタル入力、距離センサー、光センサーなどに対応している。

つまり使用する外部センサーを指定してA/D変換やデジタル入力が利用できる。

WS04.gif
今回は温度センサーを利用するので「Temperature」(温度)の中から「LM35 +2 to 150C」を選択して「OK」ボタンを押す。


WS05.gif
すると「Input1」という温度計の形をしたアイコンが表示される。

WS06.gif
次にキャラクタ液晶モジュールを利用するため「OUTPUT」をクリックする。

WS07.gif
「Input Driver Catalog」の際と同様に出力関連のデバイスを選択できる「Output Driver Catalog」が開く。ここではデジタル出力、ブザー、直流スイッチ、LED、LCD、ファンやWirelessUSBなどのデバイスを選択できる。

WS08.gif
今回はキャラクタ液晶モジュールに温度を表示したいので「LCD」から「LCD Value」を選択する。

WS09.gif
これで画面上に温度センサーを示す「Input1」と液晶モジュールを示す「Output1」のアイコンが追加された。

WS10.gif
これらのアイコンはドラッグ・アンド・ドロップにより自由に移動できる。適当に見やすい位置に移動する。

WS11.gif
次に温度センサーから取得した値を液晶モジュールに表示するための設定を行う。液晶モジュールのアイコン「Output1」を右クリックして現れたメニューから「Transfer Function」を選択する。

WS12.gif
液晶モジュールに表示する値をどのように決めるのかを条件選択方式の選択画面が開く。ここでは標準の「Priority Encoder」を選択したまま「OK」ボタンを押す。

WS13.gif
するとこのような画面が開く。

WS14.gif
狭いディスプレイを使っているとウインドウが重なって見ずらいのでウインドウを適宜動かす。こうすると分かるだろうが、先に選択した「Priority Encoder」は単純な条件分岐(if then else)を利用するものだ。

WS15.gif
「if」の直後にある欄をクリックする。すると入力ウインドウが開くので「1」と入力して「OK」ボタンを押す。

WS16.gif
これで条件が「1」に設定された。これにより条件なく常に「then」に設定した内容が液晶モジュールに表示される。

WS17.gif
次に同様に「then」直後の欄をクリックして入力欄を開く。

WS18.gif
液晶モジュールには温度センサーから取得した値を表示したい。そのため左上のウインドウから温度センサーを示す「Input1」をダブルクリックする。

WS19.gif
これで常に温度センサーからの値を液晶モジュールに表示する設定ができた。

WS20.gif
設定を完了するためウインドウを動かし「Next」ボタンを押す。

WS21.gif
「Input1」と「Output1」がオレンジ色の線で結ばれた。

WS22.gif
次に実装した内容が意図した状態になっているか確認するため「Simulation」をクリックする。

WS23.gif
シミュレーションを実行するにはプロジェクトの保存が必要なので指示に従って保存する。

WS24.gif
ここでは標準のまま保存した。

WS25.gif
プロジェクトを保存するとシミュレーション画面が開く。

WS26.gif
「Input1」のアイコンが見ずらいので移動した。

WS29.gif
ここで「Input1」の左側にある紫色のバーは温度センサーの入力値に相当する。ここバーをドラッグ・アンド・ドロップするとそれに従い、液晶モジュールに表示する値に相当する「Output1」の右側の値が変化する。表示値は温度を10倍した値となっている。

WS31.gif
シュミレーションでは意図したとおりに動作していたのでPSoCに書き込むためのHEXファイルを作成する。「Build」ボタンをクリックする。

WS32.gif
するとPSoCデバイスの選択画面が表示される。

WS33.gif
今回はCY8C29466を利用した。このデバイスは(2007年現在)PSoCの評価キットにも含まれている一般的なものだ。

ここではPSoCの動作速度の設定などもできる。PSoCに書き込み後、温度センサーの値がふらついて計測値が読みずらい場合はここで「Smple Rate」の欄を「8Hz」のように遅くするといいだろう。

WS34.gif
PSoCの合計28ピンのうちどこを利用するかを指定する画面が開く。

WS35.gif
ここでは手動設定はしないためそのまま「Auto Assign」とした。自分で決めるときはドラッグ・アンド・ドロップで移動する。

WS36.gif
ピン配置が決まったら「Next」ボタンを押す。

WS37.gif
これでビルドが開始される。Windows Vistaではきちんとビルドされないため今回はVirtual PC上のWindows 2000でビルドを行った。

WS40.gif
ビルドが終わると回路図を確認できる「BOM/Schematic」画面が開く。

WS41.gif
「BOM」欄では回路内で必要になる部品の値が表示される。これは必ずこの値にしなければいけない!というわけではなく、あくまでも目安値となる。

WS42.gif
回路図を見るには「Schematic」をクリックする。

WS43.gif
回路図を見るための画面が開いた。

WS44.gif
"回路図"とは言うもののPSoC Express 2.2ではまだ機能が統合しきれていないため、ブロックごとの回路図となっている。PSoC上のピン配置とこの画面の回路図を見ながら配線する必要がある。

_DSC8923.JPG
次に実際にPSoCへの書き込みをする。PSoCライター「PSoC Miniprog」を用意してUSBポートに接続する。

この時点ではPSoCと液晶モジュールなどを配線しないこと!配線したままでも利用するポートや回路によっては書き込みできることもあるが、無用なトラブルを避けるためにも未配線の方がいい。

WS45.gif
PSoC Express上で「Program」をクリックする。

WS46.gif
すると「PSoC Programmer」が起動する。事前にUSBポートへPSoCライター「Miniprog」を接続していない場合もしくはMiniprogのドライバーがインストールされていない場合は「Port」欄が空欄になる。

WS47.gif
これが正常時の画面。画面右下に緑背景で「Connected」と表示される。

WS48.gif
PSoCへ書き込むために「Program」をクリックする。

WS49.gif
すると「Programming Starting」と表示されるとともに書き込みが開始される。

WS50.gif
数分後に「Programming Succeeded」と表示され、書き込みが正常に成功した。

_DSC8924.JPG
書き込みが正常に終了したら、回路図通りに配線する。配線前にはUSBケーブルを抜いた方がいいだろう。

WS51.gif
回路図通りに配線が済んだら再びUSBケーブルを接続してから「Toggle Divice Power」をクリックする。するとPSoCに電源が入り書き込んだプログラムが実行される。

_DSC8927.JPG
これでPSoCに書き込んだプログラムが実行された。

_DSC8928.JPG
液晶モジュールには温度センサーの計測値が表示される。

WS52.gif
PSoCに電源が入っている間は画面下部に赤背景で「Powered」と表示される。これが表示されている間はUSBケーブルは抜かない方がいいだろう。電源を切るには再び「Toggle Device Power」をクリックする。


カテゴリー「電子工作」 のエントリー