PICマイコンを使って測定ツールを作ってみよう(6) ―― PIC12F1822を搭載したRS-485ネットワーク対応のセンサ基板を作成
各センサの仕様を表1にまとめます.
表1 各センサ基板の仕様
センサ基板の基本ブロック図を図6に示します.
図6 センサ基板のブロック図
ブロックは,センサとOPアンプ,8ピンのPICマイコン(PIC12F1822),RS-485インターフェース・トランシーバIC(LTC485)だけのシンプルな構成です.センサ以外の部品は,秋葉原のパーツ・ショップで購入しても,500円でお釣りがきます.ユニバーサル基板で作る場合でも配線数は60本未満なので,やる気があれば自作できます.センサからの出力信号をOPアンプで増幅し,PICマイコン内蔵のA-Dコンバータ(ADC)でディジタル値に変換して,PICマイコンのUARTでLTC485に送り,RS-485ネットワークに乗せます.
●RS-485でセンサのデータをパソコンに転送
RS-485は標準で12V程度の電圧を利用しますが,今回は5Vを使います.到達最長距離は短くなりますが,宅内のせいぜい20m程度の伝送であれば,まったく問題ありません.LTC485のデータシートを見ると,RS-485の規格では110kbpsの伝送速度で4000フィート(約1200m)と規定されています.1km伝送の実験は残念ながら実施する機会を得ていませんが,いつかはそういったアプリケーションにも挑戦してみたいと思っています.
筆者がまだ駆け出しのエンジニアで,Ethernetが一般に登場したてのころ,勤務していた工場で光ファイバを使ったネットワークを設計しました.このときのファイバ・ケーブルの全長は1kmを超えていたと思います.まだパソコンが登場したばかりのころで,はなはだ不安でしたが,当時はRS-232-Cでネットワークを構築しました.いまは,宅内でも簡単にネットワークを構築できます.隔世の感があります.
通信プロトコルは,本連載の中でマルチインターフェースPICマイコン基板向けに作成したものを流用します(図7).ソース・コードについてはUSB_COMMからUSB部分を除き,COMM_RS-485として作り直しました.LCD表示の分がないので,すっきりしていると思います.UART処理が中心になるので,今回はタイマ処理も割愛しました.ネットワークの基本思想である「時間フレームでの均等化」ということには反しますが,今回は,実現しやすさ優先で,動作モデルを考えました.
図7 RS-485の通信プロトコル
マルチインターフェースPICマイコン基板は,センサ基板へデータの送出コマンドを送ります.このトリガは,マルチインターフェースPICマイコン基板に接続したパソコンのVB(Visual Basic)を利用して実現します.VBの画面から各センサ基板に向けてデータ読み出しコマンド(READ)が送られます.このコマンドを受けたセンサ基板は,A-Dコンバータで変換したデータをマルチインターフェースPICマイコン基板に返します.マルチインターフェースPICマイコン基板では,それをUSBを介してパソコンのVBに渡します.
今回は,1個のデータだけを個別に収集しますが,ネットワークの状況やパソコンの使用状況により,すぐにデータを受け取れなかったり,送出できなかったりする場合があります.このようなときは,センサ基板内部にある程度,データをためておき,ネットワークに送出できるようになった時点でまとめて送る,という方法もあります.また,センサ基板が電池動作の場合,できるだけSLEEPモードで寝かしておき,必要なときだけ起こして送信させる,という方法もあります.このような場合も,データをまとめて送る機能は重要です.