フライトヨークの製作 フライトシミュレータ用

はじめに

ラダーペダルに引き続きフライトヨークを作成してみました。
YokeWhole
フライトシミュレータを動かす時、これまでMicrosoftのジョイスティック「SidewinderForcefeedback」 を愛用してきたのですが、昨今ゲームポート搭載パソコンはすっかり絶滅してしまいました。 これまで我が家ではWindows2000搭載のPCにゲームポート付きサウンドカードPCIに挿して使用してきましたが、 Windows2000は今年(2010年)7月でセキュリティアップデートが行われなくなるそうです。 更にFSXでもWindows2000はサポートされていませんのでいずれOSのバージョンを上げたくなります。 その際WindowsXPが入手できれば良いのですが既に普通には売っていませんしVista以降はOSレベルでゲーム ポートをサポートしないそうです。
・・・という事で残念ですがSidewinderは使えなくなってしまう様です。そこでUSB対応のジョイスティック など買ってしまってはPC業界の思うツボ、ひねくれた私は意地でも買うまいと心に誓い、 前々からヨークでの操縦をやってみたかった事もあり、今回製作する事にしました。

計画

マイコンについてはラダーペダルの時と同じPIC18F2550を 使う事にします。このマイコンは秋月電子だと 400円程度であり、手軽にUSBするには最適です。
プログラム的にはラダーペダルをベースにして軸、ボタン、ハットスイッチ等を追加していきます。 ただし、今回はデバッグをやり易くする為UBWなるものを利用する事にします。
UBWはPIC18F2550上にブートローダと呼ばれる小さなプログラムを普通のライタを使って予め書き 込んでおきます。一旦ブートローダを書き込んだあとは立ち上がる際「書き込みモード」または 「実行モード」のどちらかを選択できます。 書き込みモードで立ち上るとUSB経由でPCと通信を行い、PCから渡されたプログラムをユーザ領域に 書き込みます。その後再起動して実行モードにする事で先ほど書き込んだプログラムを実行できます。 一旦この方式に慣れると以前の様に毎回JDMライタで書きこむ方法には戻れなくなってしまいました。 UBWについてはこちらのサイト で大変詳しく説明されており、必要なファイルもダウンロードできる様になっています。

機能

次の仕様を目標とします。 これらを実現する為にマイコンはアナログ入力×3、デジタル入力×12bit を処理する事になります。 実際にはまだ3本の端子が残っており、いずれこれらを用いてミクスチャや回転数の操作レバーを つけたいと思います。

USBの処理

CPU 基本的なところはラダーペダルの時と同じでUSB上 で動作するHIDデバイスです。今回ラダーと違うのは上記の様にアナログ×3、デジタル×12ビット を扱う事になり、リポートディスクリプタも規模が大きくなりました。 リポートディスクリプタの作成についてはラダーの時は苦労しましたが今回は少し慣れてきました。 詳細を見てやろうという方はプログラムの中の「usb_descriptors.c」ファイルを参照下さい (試行錯誤の痕跡がコメントとして残ったままですがご容赦を)。
ヨークの軸やボタンの数はSidewinder相当のジョイスティックと同じです。なのでこのプログラムのままで   ジョイスティックを製作する事もできると思います(フォースフィードバック機能は除く)。

機構部分

Yoke1 全体像です。 ヨークのエレベータコントロール部分は当初は引出し用のレールを使おうと思っていましたが、 実物を触ってみると案外抵抗が大きく、これだとスムーズには動かない気がしました。そこで 代わりに良いものが無いかとホームセンターを物色した結果、電気工事用の金具に車輪を取り 付けて引き戸用のレールの上を滑らせる事としました。
Guide この方向から見ると車輪とレールが良く見えます。移動量はプーリーを介 してボリュームに伝えています。大きい方のプーリーは6mm厚の合板を丸く切ってプラ板で挟 んだもので、この軸をエレベータ用ボリュームに接続しています。
手前に見えているのはハットスイッチです。

AileronVR エルロンコントロールはハンドルの回転角を直接ボリュームに伝えています。
スプリングはピアノ線を曲げて作りましたが、まだ感触が今ひとつです。

Handle ハンドルそのものは合板です。軸は6mmφで長さ180mmのボルトをネジ部分を切り落として、 頭を鉄板に溶接しています。

Control ヨークの横にハットスイッチ、ボタン類、スロットルレバーを配置し、 使わないときは折りたたんで仕舞える様になっています。
ハットスイッチはマイクロスイッチを4個並べて太めのビスで押す構造になっています。
スロットルレバーは以前ホームセンターのガラクタ市で買ったステンレス版を切って作 りました。握る部分は「自由樹脂」なるもので作っています。これはお湯で暖めると成型 できて便利です。

Throttle スロットルレバーを右側から見たところです。適度な摩擦感を出す為、 合板に張ったフェルトにレバーが擦れる様にしています。両側から挟み込めばもっと良くなりそうです。
レバーの軸には6mmのストッパーを溶接しています。このストッパーは近所のホームセンター 「HANDSMAN」で見つけた「ドリルストッパー」というもので、本来はドリルの刃に ネジ止めして穴の深さを一定にする為のものだと思いますが、価格が比較的安くオススメです (上記プーリーの軸にも用いています)。

回路図

回路はこんな感じです。正式なUBWの回路からLEDを一つ削除し、代わりにボタン(SW2)を つけています。そのままでは「書き込みモード」の際にボタンを押すと出力がショート してしまうので、保護としてスイッチと直列に510Ωを挿入しています(実際にはなくて も大丈夫だとは思いますが)。
YokeSchematic

プログラム

参考までに今回製作したプログラムをアップしておきます。 再コンパイルする為にはマイクロチップ社の開発環境であるMTLABとMCC18 コンパイラ、およびUSB関係のライブラリ(USBフレームワーク)を使用します。

※このプログラムはメイントしていません(恐らく最新のMPLAB-IDEでビルドするには手直しが必要です)。
ヨークやジョイスティックの製作を考えられている方は、軸やボタンの構成を自由に変更できるツールキット OpenStickをオススメします。


※このプログラムはUSBフレームワーク一式に付属していたサンプルプログラム を元に作成しています。また、あくまでも実験を目的としていますので本プログラム を使用または参考にされた結果なんらかの損害が発生したとしても当方では責任は負い かねます。
なおUSB機器を正式に使用する為にはUSBインプリメンターズフォーラムからベンダー IDを取得し、デバイスディスクリプタに書き込む必要がありますが、本プログラムでは マイクロチップ社のIDのままになっています。。

設定と調整

Setting 調整画面です。既にWindows7になってたりして・・・

使ってみる

エレベータトリムの上下ボタンが思ったのと逆になっていたのでフライトシミュレータの 設定で入れ替えました。その他回路的な部分は問題なく使えています。
実際に使ってみるとバネの感触が今ひとつでした。できればダンパーの様なものを使えば いい感じになるのかもしれません。これについてはバイク用のステアリングダンパー が使えるかもしれないと思ったのですが、バイク用品屋に行ってみるとウン万円もする ので諦めました。このあたりは今後の課題です。。。
関連ページ→ラダーペダルの製作をこちらに掲載しています。
関連ページ→USBのフライトヨークやジョイスティックを手軽に作成するツールキットOpenStickをこちらに掲載しています。
Created by ez-HTML
トップページへ
ほいほい堂本舗