高速伝送可能な455KHzの赤外線受光素子は果たしてマルチチャンネル化できるでしょうか。
まず455KHz赤外線受光素子が実際にどこまで高速伝送可能なのかテストしてみることにしました。

データシートでは455KHzで10サイクルのバースト信号(22μs)を送信したあとに26.6μs以上のスペースが必要だとあります。

テストを行うため、455KHz2チャンネルPCM赤外線送信機をブレッドボード上に組んでみました。
とりあえずスタート(1bit)+ch1データ(8bit)+ch2データ(8bit)+ストップ(1bit)としてパリティビットや識別IDなどは省略。
20MHzクロックではPICのプログラムステップが0.2μsとなるため、1.0μs(H)+1.2μs(L)を1サイクルとして455KHzをつくり、10サイクルのバースト信号を1ビットに割り当てました。ところが連続ビットを送り出すときのプログラムステップ数を1.2μs内に収めることが難しく、連続ビットの間にわずかなスペースが発生してしてしまいます。
その状態で実際に受信してみたところ、ビット間のわずかなスペースの影響で受信が乱れることが判りました。そこで10サイクル(22μs)のバースト信号に22μsのスペース加えて1ビットとしました。
2チャンネル分の信号を作り出すのに、スタート(1bit)+ch1データ(8bit)+ch2データ(8bit)+ストップ(1bit)の18ビットx44μsで792μsが必要です。繰り返し周期は成り行きで決めました。
送信機のPIC出力ポートに赤外発光ダイオードをつなぎ、455KHz赤外線受光素子を対向させ、PIC出力と受光素子出力の関係をオシロスコープで確認してみました。
オシロスコープの横軸は5μsです。受光素子の出力波形のジッタがとても多いので、受信機側で確実にデータを読み込むのはそう簡単ではなさそうです。
| Trackback ( )
|
|
下の受信信号が不論理で出ていると言う事でしょうか?
そうだとすればほとんど20μsほど遅れて受信して、そして5μsから10μsくらい前後にふらふらしていると言う事でしょうか??
上の波形がPICの出力(正論理)で1μsON1.2μsOFFを10回繰り返しています。
下の波形は受光素子の負論理出力信号で20μsほど遅れて出力されています。
TIMING 合わせる方法を紹介します.
送信機側にも受光素子を装着して受信された TIMINGを
読み出して信号の空席を捜し出して入って行くんです.
38KHzでも 3台同時飛行する玩具もあるように
充分に可能だがその充分の程度をテスト
なさろうとするのでしょう?
と言っても 0.2u SEC 程度得るが, AVRの場合
少なくは 1個の CYCLE当たり 1 CLOCKを消費することで
0.1u Sec またはその以下で 0.05u Secで処理すること
あるんじゃないですか?
そして数日前 tokoさんから光栄の返事を
もらいました. 消さないで光栄で保管の中です.
確認されました. 1 CYCLEに 0.125 usecです.
8ピンクラスの素子でハードPWMが複数使えたり、シリアル通信機能を持っているのは結構魅力的ですね。特にPWM出力に差動出力があるあたり、ラダー等のアクチュエータを駆動するには便利な機能と思います。
とは言ったものの、ツール類を新たに揃えるのが負担に思えるのも事実です。(昔は開発ツール一式でン百万円もかかっていたので、それと比べればただみたいな価格ですが。)
同じ周波数の赤外線を使って同時飛行を行う方法ですが、トイラジの場合はチャンネルごとに送信周期を変えることで連続して衝突が発生しないようにしているそうです。たまに衝突しても連続していなければすぐにコントロールが回復するので。ただ、この方式は簡単ですが、空き時間が大きくなってしまい効率的ではないでしょうね。実際、トイラジでは3チャンネル以上の製品はないようですし。
他の装置が出した赤外線を同期に使う方式は別の方のブログで私も提案しましたが、受光素子の向きによって受信できたりできなかったりするので確実な動作が期待できないという指摘を受けて断念しました。
※ 8ビット時代のインテルVSモトローラ論争を思い出しました。なんとなく。
同時飛行を行う方法はトイラジ方式が最も簡単でよいと思っています。
その前に455KHz受光素子が体育館で問題なく使えるかを確認しなければならないので、従来と同じ方式の455KHz赤外線受信機をもう一つ作りました。
よい結果が出たら同時飛行の可能性についてテストを進めたいと思います。
kobaraさんのブログにも書き込んできたのですがプロポの信号のエッジで"1"とか、"2"とかのチャンネルを表す信号を出すだけというのはどうでしょうか。従来はプロポの信号がONの間はずっと赤外線を垂れ流していたと思いますが、信号のエッジでのみ赤外線を出すようにして、さらにどの機体への信号なのかは出された赤外線に載せたコードで区別させるようにします。
プロポが1~2ms周期の信号を出すごとに200~300μsのコードを送るだけなので、意外と信号が重なってしまうことも少ないのではないかと予想しています。
プロポごとの信号を出す周期に個体差がないと重なったままになってしまう点が気にかかりますが。)
(2重投稿となりますが、お許し下さい。)
その結果素数と同じ周期にすればよいのではないかという結果にたどりつきました。
たとえば3機の同時飛行を可能にするには3:5:7の周期にすればよいのではないかと・・・。
そうすると、5と6だと30回に1回、5と7だと35回に一回、6と7だと42回に一回しかぶつからなくなります。(3:5:7だと最短は3と5の15回に1回ですね。)
えぇ~~~と、これは、どの2個をとっても公約数のない組み合わせになるのでしょうか。
とは言ったものの、3台の送信機がまったく一緒に動作を開始するわけではないので、素数どうしにするのがベストかも知れません。
レスポンスの違いはそれほど問題にならないと思っています。一般的なラジコン機器のおよそ20ms周期(1秒間に50回の更新)を考えれば、455KHzを使った場合はお互いに重ならない条件が発生する周期は20ms以下に収まると考えています。
試作の455KHz送信機はおよそ15ms周期に設定してますが、これは市販ラジコン機器のFMシステムと同じ方式を採用しているためで、PCMシステムの場合は信号送出時間が格段に短くできると思われます。
このことで3機までの同時飛行が可能なのか、あるいはそれ以上の同時飛行が可能なのかはこれからの実験で確かめていくことになるでしょう。
kojimaさんをはじめ、皆さんの意見やテストレポートなどを参考にさせていただきながら実験を進めたいと思います。
それであっても、1回の送信に数msもかかっているようであれば、送信している途中で頭とお尻が重なったりしていしまいそうなので、PCM化などによって1回の送信時間を極力短くするのはとても有効と思います。
実機で確認する環境を整えているのはtokoさんだけなので、実験結果がとても楽しみです。
17:19:23もよさそうですね。参考にさせていただいて、なるべく早い時期に実験できるまでに持っていけたらと考えています。