いろいろ作るよ!

ものづくりの記録

全方位赤外線センサを作ってみた

目的

対戦型の光線銃は、全方位から赤外線信号を受信(被弾)する必要があります。センサーを増やさず、光学的に実現してみました。

参考資料

  1. サイバーショットおよびX-TAGの写真から、センサ部分に円錐状の反射鏡が搭載されている様子が確認できます。(X-TAGは残念ながらクラウドファンディングに失敗し、販売中止となっています…) game.watch.impress.co.jp

  2. 3Dプリンタ出力型とヒートプレス手法により、塩化ビニルのミラーシートから反射鏡を作る方法を参考にしました。 yunit.techblog.jp

  3. 反射鏡を微小ミラーに離散化して光エネルギー密度を求める手法を参考にしました。 www.fintech.co.jp

  4. 座標データをFusion360にインポートする方法を参考にしました。 knowledge.autodesk.com

準備

  1. 3Dプリンタ(Adventurer3) flashforge.co.jp

  2. 塩化ビニルのミラーシート

  3. 塩化ビニルの透明シート

  4. 赤外線受光モジュール(OSRB38C9AA) akizukidenshi.com

反射鏡の計算手法

受光モジュールの指向性特性を確認します。
f:id:neet2121:20200115211921p:plain
センサの正面の感度が高く、真横ではほとんど検出されないことが分かります。 f:id:neet2121:20200115214141p:plain
円錐型の反射鏡をセンサの正面に設置することで、受信範囲を全方位(上下を除く)にすること目標とします。
以下は反射鏡がある場合の指向性特性の計算方法です。

  1. 受光モジュールを光源に、赤外線LEDを無限遠のスクリーンに置き換えて、参考資料の手法を適用します。 f:id:neet2121:20200115215038p:plain

  2. 反射鏡に微小ミラーを想定します。光源の立体角θn+1からθnを半径方向の分割数Nで割ったものが微小ミラーが占める立体角となります。 f:id:neet2121:20200115215251p:plain

  3. 光源径(実際はセンサ径)をdとし、微小ミラーに到達する光の立体角αnを求めます。無限遠スクリーンに照射される範囲は、ピンホールカメラと同じ原理で同様にαnとなります。

  4. 微小ミラーが受け取る光エネルギーは、全立体角に対する微小ミラーの立体角の割合で求めらます。

  5. 無限遠スクリーンを微小角度毎に分割し、仮想的な光センサーを配置します。

  6. 光源の立体角毎に、光センサーに照射している場合は、その光センサーにエネルギーを加算していきます。このとき、光源の立体角毎に、受光モジュールの指向性特性を掛け合わせておきます。

  7. 以上より、無限遠のスクリーンにおける光エネルギーの強度分布が求められます。光源を受光モジュールに、無限遠のスクリーンを赤外線LEDに戻して考えると、得られた光エネルギーの強度分布が、反射鏡を考慮した受光モジュールの指向性特性となります。

反射鏡形状をうまく設計すると(2次関数の組み合わせで曲線を作ったり、Excelのソルバーで最適化したり)、用途に応じた特性を得ることができます。 f:id:neet2121:20200115220941p:plain これはハンドガンに搭載するセンサ用で、ハンドガンが大きく傾いても感度が落ちないような特性を狙っています。 f:id:neet2121:20200115235102p:plain 一方、頭部に載せるセンサ用は、対戦中はそれほど傾かないことから、長距離の通信ができることを狙っています。

バキュームフォームによる反射鏡の作成

f:id:neet2121:20200115221257p:plain

  1. 計算で得られた反射鏡の座標をFusion360で読み込みます。スプラインのインポート機能を使用します。
  2. Fusion360上でバキュームフォーム用の型をモデリングし、3Dプリンタで出力します。材質はABSフィラメントを使用しました。PLAよりは耐熱性が高いです。
  3. バキュームフォームにより、型の形状を素材(ミラー塩ビ板)に写し取ります。バキュームフォームの作業はこんな感じです。(別部品です)

f:id:neet2121:20200115223801j:plain 4. 反射鏡を収める透明なケースもバキュームフォームで成形し、切り出した反射鏡をボンド(スーパーXクリア)で接着します。

結果

センサ真横からの通信に成功しました。正確な指向性特性の計測はできていません。 f:id:neet2121:20200115224020j:plain