赤外線でのコントロール実験 [PIC]
赤外線コントロールの実験を行いました。(このプログの最初の方の「赤外線での制御もやってみたい」で書いた方式ですが随分長い間(4年間も)温めていたものだ^^;)
方針としては、応答性を向上するためにデータ送信ビットレートをなるべく高速にすることです。
因みに、家電等で使用される一般的なフォーマット(NECフォーマット)では
リーダ部 : 16T(ON) + 8T(OFF) = 24T
カスタムコード(8bit) : 3T/bit x 8bit x 2 = 48T (0:2T,1:4T -> average:3T/bit)
データコード(8bit):3T/bit x 8bit x 2 = 48T
ストップ信号:1T(ON) + 41T(OFF) = 42T
で合計 162T で1T=約0.57ms なので全体で平均 92ms の時間をかけて16bitのデータを送信していることになり、実質的なビットレートとしては約 174bps となります(実際にはデータの反転データ送信等もあり一般的にいうbpsとは違います)。
今回考案したフォーマット(以前、「赤外線での制御もやってみたい」に書いたフォーマット)では約 8.3ms で 4bit(ID) + 6bit/ch x 4ch = 28bit
を送信しているので 実質的な通信速度は約 3400bps で、家電方式の20倍程度の速度ということになります。
今回と同様な用途と思われるエアロソアラの赤外線コントロールでは 6bit の制御信号を約18msで送信するので通信速度は約 333bps です。
低速な家電コントロール用の赤外線受光素子(PL-IRM0208-A538)を使って今回の速度を達成するには送信側はまぁいいとして受信側は調歩同期方式や家電のPPM方式もどきのようにサンプリングポイント時点の信号の状態をチェックするだけでは受信できず、エッジ割り込みとタイマー割込みを使って、エッジ毎に同期を取るようにしています(調歩同期のバイト毎同期ではなくビット同期)。
さらに受信側では100us周期の割込みで32段階のPWM制御を2ch(左右分)と正転/反転制御を行いました(chあたりの制御信号が6bitなので)。
完成した送信機と受信機の基板が下の写真です(共にPIC16F88でOneBitLoaderを使用)。受信機は秋月さんで購入したフラットパッケージのFET(uPA2753GR)を使うため、ハーフピッチのスルホール汎用基板を使いました。
また赤外線受光素子が5V動作のため、乾電池2本の電圧を昇圧してPICと受光素子用の5Vを作っています。 このためFETは正転/反転制御のため、ブリッジ状に組んでいますが、すべてNチャンネルにできます。
コントロール対象はタミヤ製の「壁づたいねずみ工作基本セット」を使用しました(基板ができるとすぐ試したかったので基板取付はとりあえずテープで仮付です)^^;
少し試すつもりが、結構面白い(特に水平/垂直のA/D変換値をソフトウェアでミキシングし左右のモータ制御としている部分)のでついつい夢中になってしまう・・・。
詳細は後日ホームページに公開予定です。
★2019/10/08 追記
赤外線コントロールの実験に公開しました。
方針としては、応答性を向上するためにデータ送信ビットレートをなるべく高速にすることです。
因みに、家電等で使用される一般的なフォーマット(NECフォーマット)では
リーダ部 : 16T(ON) + 8T(OFF) = 24T
カスタムコード(8bit) : 3T/bit x 8bit x 2 = 48T (0:2T,1:4T -> average:3T/bit)
データコード(8bit):3T/bit x 8bit x 2 = 48T
ストップ信号:1T(ON) + 41T(OFF) = 42T
で合計 162T で1T=約0.57ms なので全体で平均 92ms の時間をかけて16bitのデータを送信していることになり、実質的なビットレートとしては約 174bps となります(実際にはデータの反転データ送信等もあり一般的にいうbpsとは違います)。
今回考案したフォーマット(以前、「赤外線での制御もやってみたい」に書いたフォーマット)では約 8.3ms で 4bit(ID) + 6bit/ch x 4ch = 28bit
を送信しているので 実質的な通信速度は約 3400bps で、家電方式の20倍程度の速度ということになります。
今回と同様な用途と思われるエアロソアラの赤外線コントロールでは 6bit の制御信号を約18msで送信するので通信速度は約 333bps です。
低速な家電コントロール用の赤外線受光素子(PL-IRM0208-A538)を使って今回の速度を達成するには送信側はまぁいいとして受信側は調歩同期方式や家電のPPM方式もどきのようにサンプリングポイント時点の信号の状態をチェックするだけでは受信できず、エッジ割り込みとタイマー割込みを使って、エッジ毎に同期を取るようにしています(調歩同期のバイト毎同期ではなくビット同期)。
さらに受信側では100us周期の割込みで32段階のPWM制御を2ch(左右分)と正転/反転制御を行いました(chあたりの制御信号が6bitなので)。
完成した送信機と受信機の基板が下の写真です(共にPIC16F88でOneBitLoaderを使用)。受信機は秋月さんで購入したフラットパッケージのFET(uPA2753GR)を使うため、ハーフピッチのスルホール汎用基板を使いました。
また赤外線受光素子が5V動作のため、乾電池2本の電圧を昇圧してPICと受光素子用の5Vを作っています。 このためFETは正転/反転制御のため、ブリッジ状に組んでいますが、すべてNチャンネルにできます。
送信機 | 受信機 |
|
|
コントロール対象はタミヤ製の「壁づたいねずみ工作基本セット」を使用しました(基板ができるとすぐ試したかったので基板取付はとりあえずテープで仮付です)^^;
少し試すつもりが、結構面白い(特に水平/垂直のA/D変換値をソフトウェアでミキシングし左右のモータ制御としている部分)のでついつい夢中になってしまう・・・。
詳細は後日ホームページに公開予定です。
★2019/10/08 追記
赤外線コントロールの実験に公開しました。
赤外線制御マウス? |
|
タグ:赤外線での制御
2009-03-04 21:12
nice!(0)
コメント(6)
トラックバック(1)
ホームページに赤外線コントロール実験の詳細をアップしました。
↓ の「さと」をクリックで公開ページに飛べます。
by さと (2009-03-16 00:40)
送信機側のソフトをバージョンアップし、積算タイマー表示機能を付けました。^^
by さと (2009-03-29 17:40)
はじめまして、tokudaと申します。
私はインドアプレーンを趣味(初心者)としていまして大変興味深く拝見させて頂きました。内容を理解するには少し時間はかかりそうですが、私の頭で可能であるようならやってみたいとおもいます。
by tokuda (2009-05-11 18:33)
はじめましてtokudaさん。
今回は安価な家電用ユニットを使ってギリギリまで高速化を試みましたが、ユニットの規格(パスル幅最小値500us)を無視した使用であり、ユニット毎の特性のバラツキもあまり評価できていません。(まぁ趣味で使う分には快適な状態まで持ってこれましたが・・・)
インドアプレーンの大御所のtokoさんのところではキャリア周波数が455KHzの赤外線受光ユニットを使ってマルチユーザコントロールを試みているようですね。
by さと (2009-05-11 23:53)
自分でも試してみたい
そうですね近い内にショップにも出されるかもしれないですね。
私が時折参加させて頂いている飛行会OSFCでも何れ複数台の同時飛行が当然の様になる日が来ることと思っていますが、出来る事ならプログラムもやはり自作のものを使いたいものです。
その為にも少しお勉強をとおもっている中でこちらを拝見させて頂きました。
また何かぶしつけな質問等させて頂くかもしれませんが、その折にはよろしくご教授の程お願いします。
by tokuda (2009-05-12 20:30)
エンコード処理をPIC24FJ64に実装しました。
エンコード処理概要とサンプルソースも書いています。
http://piclabo.blog.so-net.ne.jp/2016-08-21
by skyriver (2017-03-04 03:38)