ゴム動力インドア R/C 機を赤外線でコントロールする場合、前にも書いたが進路を変更したいときにのみ送信機からコントロール信号を飛行機に送る。従って常時赤外線を発射する必要はない。こうすることで同一変調周波数の赤外線センサであってもそれぞれの受信機を識別するためのデバイスコードを組み込めば複数の同時飛行が可能になる。
送信機から送り出すコントロール信号の中に特定の受信機のみをコントロールできるように識別信号(デバイスコード)を組み込み、受信機側では特定のデバイスコードを受信したときのみコントロール信号を受け取るようにする。たまたま複数の送信機からの信号が重なった場合は受信機側が信号を受け付けない。また、送信機のコントロールボタンを連続押下しても、実際の出力は間欠出力となるため、他の送信機の出力と重なることも少なくなる。
家電で使われている多くのリモコンがこのような方式を採用している。テレビのリモコンでエアコンが動かないのはそれぞれに識別するためのコードが組み込まれているからだ。
今回はこの家電リモコンの方式準じた方式を取り入れて、「PIC 電子工作」に載っている赤外線送受信機を参考に PIC12C509A を使った送受信機プログラムを作ってみた。これにより最大 7 機の同時飛行が可能となる。
コントロールコードは 24 ビットからなり、最初のリーダー部が 8 ビットで '00000000'、次にスタートビットの '1'、その次にデバイスコードが 3 ビット( 7 機の識別に使う)、続いてセパレータの '01'、続いて 5 ビットのキーコード、ストップビット '1' に続いてトレーラービット '0000' となり、続いてデバイスコードからトレーラビットまでを再送する。データ部分を二度送るのは、受信機側で二度チェックして動作を確実にするため。
左の画像は送信機から送られてきたパルスの受信機側の赤外線センサー出力である。 1 ビットが 600us でデバイスコード以降が二度にわたって送られてきている。 1 フレームが 40 ビット構成で一回の受信に 24msec かかる。送信機のボタンが押されたままの場合は次のフレームが 80msec 後に送られてくる。送信機側ではプログラムの実行にフレーム送信を含めて 30msec ほどかかるので、送信ボタンを連続押下した場合は 110msec ごとに受信機にコントロール信号が送られることになる。
画像の上側が送信機側でラダーの左ボタンを押したときの受信機側の信号で、下側が送信機側でラダーの右ボタンを押したときのもの。負論理の出力になっている。キーコードの部分が異なっている。ラダー左→ '00011' 、ラダー右→ '00100' 。
今回受信機のプログラムで初めてウォッチドッグタイマーを使ってみた。プログラムループを常に監視していて信号が途絶えたら一定時間後にリセット動作をする。今回は送信機のコントロールボタンを押している間は右あるいは左の動作を続けるが、送信機のボタンを放したときにラダーをニュートラルに戻すために使ってみた。ウォッチドッグタイマーは約 18msec ごとに働くが、送信機のボタンを押し続けた場合、コントロール信号の再送サイクルが 110msec なのでプリスケーラーを 8 にセットして 8x18=144msec に設定した。
再送サイクルが長くなると、それに合わせてウォッチドッグタイマの動作時間も合わせなければならないため、送信機のボタンを離した時にラダーがすぐにニュートラルに戻らなくなる。そこで操作に違和感を感じない程度の速さに設定した。
3.3V 仕様の高感度タイプ赤外線受光素子 NJL74H380A が入手でき、 3V のピン型リチウム電池での動作にも期待が持てる状況になってきた。現在赤外線受信機に使用している Panasonic PNA4612M との違いを使う上で重要と思われる部分だけ抜粋してみた。
NJL74H380A @3.3V |
|||
パラメータ | 最小 | 標準 | 最大 |
動作電圧(V) | 2.4 | 3.3 | 5.5 |
消費電流(mA) | - | 0.43 | 0.6 |
到達距離(m) | 13 | 18 | - |
PNA4612M @5V |
|||
パラメータ | 最小 | 標準 | 最大 |
動作電圧(V) | 4.7 | 5.0 | 5.3 |
消費電流(mA) | 1.8 | 2.4 | 3.0 |
到達距離(m) | 11 | 16 | - |
データシートからは到達距離といい、消費電流の少なさといい申し分ない性能である。ベンチテストでは出力波形の切れが若干悪い、 AGC 回路が弱いのか送信機をセンサに 10cm ほど近づけると動作しなくなってしまうなどの現象が確認できた。しかし 3.3V 動作では 56.9KHz 変調波との干渉もなく実用面では問題なく使えそうである。
Microchip 本社にサンプル注文しておいた低電圧動作の PIC12LC509A/SN も手元に届き、動作下限電圧を確かめてみた。 2.5V からの動作が保証されているが、手元の個体では 2.15V から動作することが確認できた。
受信機に DC-DC コンバータを使えばより安定した電源供給ができるが、コンバータ自体の消費電流も馬鹿にならない。DC-DC コンバータを使わなくて済めばかなり省エネなドライブが実現できる。そこで DC-DC コンバータを省略した受信機をテストしてみた。電池はテストで使い込んだ BR435 でスタンバイ電流が 1mA 以下、コイル駆動時でも 4.5mA ほどである。アクチュエータのトルクが少なくなるが、これならピン形リチウム電池でも何とか実用になそうである。あとは通達距離の確認が必要。
今回の送受信機は識別のためのデバイスコードを '100' に設定してある。このデバイスコードを '001','010','011','101','110','111' のいずれかに変更するだけで同時飛行が可能となる。もし送受信機を自作してみようという人がいたら(いるわけないか)この部分を変更してプログラミングしてみてほしい。