Yoke
Leonardoでのコントロール
元のSaitekヨークにあった回路基板を取り外し、Arduino Leonardo に入れ替えています。ここにはMobiflight を使わず、アナログ入力のSketchをArduino IDEで入れました。スロットルやフラップのコントロールもD-sub 9pinコネクタを使って、ここに接続しています。
Arduino Leonardo はアナログ入力6個とスイッチ入力14個にプログラムしました。
スイッチ入力は今のところスイッチに4個、パーキングブレーキに1個、視点の変化に2個など14個のうち 9個しか使っていません。
アナログ入力による電圧コントロールはノイズを拾って入力値がふらつくことがあります。そのため、GNDとの間にパスコンを入れ、可変抵抗器までは網線のシールドで保護してあります。
可変抵抗器は10kΩVRまたは 100kΩVR など汎用品です。電圧の検知のためのものなので抵抗値はこのあたりがいいでしょう。
もとのSaitek Yokeでは スイッチ入力は検知マトリクスになっていたのを、GNDとの単純なスイッチに代えることになるので 配線はわかりやすくなります。Arduino内部プルアップを利用しています。ダイオードも不要です。
でも、ヨークに これほどたくさんのスイッチはいりません。コックピットのパネルにスイッチを取り付けて操作したほうが便利です。
いろんな操作はラベルを付けたスイッチをパネルに設置したいと考えています。
弱いバネに交換
ヨークのセンタリングのためのスプリングが強すぎるので、内部に2つあるY軸バネのひとつを外しました。X軸のバネは取り外して、もっと柔らかい引きバネに交換しました。これで 操作はRoll ,Elevator共 ずっといい感じになりました。
Yoke2_Wood
ヨークハンドルを交換
Yokeハンドルを木製で製作しました。
SaitekYokeのハンドル部分を作り替えようとした理由のひとつは まず 握る部分が太すぎること。さらに、ハンドル軸との間が 薄いプラスチック製のためにしっかり固定できていなくて ぐらつきがあること。Yokeの形も気に入らない、ハンドル中央に時計はいらない、時計が必要ならパネルに組み込みます。全体をもっとすっきりした形にしたかったのです。
握る部分の太さを測ってみると
・ SaitekYokeは 奥行き43mmx幅35mm 親指のかかるところはスイッチがあるために これよりもっと太い(幅44mm)のです。
・ TOYOTA車Porteでは 奥行き34mmx幅28mm と ハンドルは細く、これは握り続けていても疲れにくい、手の大きさを考えて決められているのでしょう。
・ 製作したYokeは 奥行き36mmx幅28mm とTOYOTA車に近い太さに仕上がっています。
左側のハットスイッチは視点の移動のため必要ですが、他にスイッチは少しだけしか取り付けていません。必要なスイッチは操作パネルにラベルも付けて取り付けるつもりです。
材料は金属パイプや塩ビパイプで作ることも考えましたが、曲げ加工が難しい。それで加工しやすい木材を使って 寄せ木で作りました。力のかかる部分は接着だけでなく、かみ合わせにして木ネジでも固定しています。
スイッチの配線を通せるよう木材を貼り合わせる前に内部には溝を掘っています。配線は交換や点検補修ができることも考慮しました。
SaitekYokeのハンドル軸は直径25.0mmの金属パイプです。ここが25.4ではなく25.0なので、固定金具を一から作らなくても 市販の25.0mmパイプソケットが利用できます。合わせてみるとはめ込むのにやや固くて、予想以上にしっかりはめ込めました。これはメーカーによっても違うでしょう。このソケットはしっかり固定するため背中合わせの二重にしています。回転止めもタップを切って取り付けました。
Saitek製Yokeに比べて、軸の取り付け位置を55mmほど上にすることにより ハンドル全体を低く下げています。手でにぎる高さと軸の高さが同じぐらいです。このことで Yoke本体を机にのせたとき 操作しやすい高さになることと、軸に対してYokeハンドル全体の重心が下になるため バネの力を使わなくてもセンター位置に戻りやすくなります。
Roll回転角を広げる
Yoke X軸のRoll回転角が90°(左右45°ずつ)に制限されているのを、実機に近い角度まで回せるように改造をしました。
もとの構成ではリンク機構を使って 可変抵抗器へ動きを伝えています。この仕組みのまま180°の回転を伝えることは難しいので、リンク機構ではなく歯車を組み込むことにしました。
SaitekYoke本体を開けて歯車を組み込む位置を検討しました。X軸のRoll回転の動きだけを受け取り Y軸Pitchの動きに影響されない部分は少なく、そのままでは歯車を軸に取り付けるスペースがありません。そのため、X軸センタリング機構のバネの付いている部品を取り除いてスペースを空け、代わりに中央に31mmの大きな穴を空けた歯車を2mmネジで取り付けました。センタリングのバネがなくても、すでに木製ヨークの重心位置を回転軸より下げたことで X軸Roll は中央へ戻りやすくなっています。
使用した平歯車は あちこち探して、取りあえず見つけたのがRCカーの
部品です。基準円直径42mm 歯数71T モジュール0.6 です。これに組み合わせる可変抵抗器側の少し小さい歯車も探しました。同じTAMIYAのパーツでも 同じモジュールの歯車なのか、ラベルにもサイトの資料にも規格が書かれてないのがほとんどで、現物の歯を合わせて確認するしかありません。本来はこのギア単独で購入して利用するものではなく、それぞれのRCキットに対応する補修部品なのだそうです。0.4や 0.6などのモジュールの歯車が混在しています。可変抵抗器側に使った歯車は 61T 0.6Moduleです。
この歯車の組み合わせで ヨークハンドルの回転角180° x 71/61 = 209° (可変抵抗器VRの回転角) になり、汎用の可変抵抗器が使えます。 アナログ電圧によるコントロールとしても大きな変化角度なので、電圧の細かい変化により 滑らかに操作できるはずです。
この歯車を使う改造だけでは180°の回転になりませんでした。Y軸コントロールのカムが90°までの対応になっていて途中で引っかかり止まりました。そこでY軸カム中央の軸を支える金属棒をいちど抜いて短くし、側面の溝を延長して掘ることで対応できました。回りすぎないよう X軸回転を制限するストッパーをY軸カムにつくりましたが、それでもRoll回転は 250°まで回せるようになりました。ソフトウエアでは180°までに設定しています。
これでYoke X軸のRoll がとてもなめらかに操作できるようになりました。
Yoke3_Cessna
Cessna Yoke のハンドル部を木製の自作ハンドル部と置き換える作業を始めました
Cessna Yokeのセンタリングにバネが使われていますが、これが気に入らず、またセンター付近で動きに遊びがあるのが気になります。そのため 自分でギア構成した内部機構のほうがずっとよい動きなので それを生かすことにしました。問題はハンドル軸の直径が異なっていたことです。同じメーカーですが このCessnaYokeでは25.4mm径のインチサイズのパイプが使われていました。25.0mm径の以前の取付金具を探して出して使いました。
Yoke本体のコントロール基板はArduino Leonardoに交換しています。ここにはYoke以外のスロットルなどのコントロールが入っていますのでこれも生かします。
Mobiflightを使っても アナログ入力できますが、Leonardoを HIDデバイス(Human Interface Device) として設定すれば MSFS2020のJoystick AXISで 入力カーブのグラフを見ながら細かく調整ができることが優れています。
Cessnaハンドルは予想外にしっかり改良されていました。プラスチックの内側にはダイキャストのフレームが取り付けられて全体がしっかり重くがっしりしています。軸のところでコネクタが使われていて ケーブル接続が外せます。このコネクタが2mmピッチのままでは配線作業などに扱いにくく、2.54mmピッチのコネクタに変換するボードを作りました。入力スイッチ類はちょっと多すぎるくらいです。私のコックピットではスイッチ類はコントロールパネルなどに設置するのが基本なので、整理して少しは減らそうと考えています。
振動モーターの設置
OverSpeed Warningのための振動モーターを取り付けました。中央にあったコネクタボードを左位置にずらし、モーターはやや右よりの位置になりました。センタリングのバネは取り付けていませんので支点であるハンドル軸から左右の重さのバランスをとる必要があります。モーターとは反対側の左寄りにバランスウエイトを乗せました。
ほんとはWarningだけでなく、FSXで作動したように 滑走路から外れたときなどにForceFeedBackが働くと楽しいのですが。MSFSでは対応していません。
振動モーターの振動子には Yoke内の配線が当たらないよう周囲を囲うカバーをつけました。駆動する電流値は最大の170mA
ではなく、80mAくらいに制限するため 抵抗値を再検討しました。振動としてはこのくらいで十分です。
2SD2061を測定してみると hfe=134だったので、ベース電流は0.6mA流せばいい。実測ではコレクタに Ic=84mA流れていました。
Shift register 74HC165を使って 入力ポートを増やす
CessnaYoke に備わっているスイッチは半分くらいの数でいいと思います。しかも スイッチをすべて使うとしても Arduino LeonardoではI/Oの数が足りません。
Yokeにスイッチ類はそれほどの数は必要ないとはわかっていながら LeonardoのI/Oの数を増やす方法を考えています。対策を考えたりArduinoのSketchを考えるのがおもしろいからなんですが。
I/Oポートを増やすのに使うのは 74HC165 です。Mobiflightなら input-shifterを選ぶだけで すぐにできてしまうのですが、
HID の備わった Leonardoを使うには自分でSketchを考える必要があります。
Arduino LeonardoのHC165をスイッチ入力に使うプログラムは そのまま利用できるものは探しても見つけられなかったので、入力を取り込む部分をこのように作成しました。この部分以外は 公開されている
Joystick Library などを元に構成して使っています。
関数 ShiftIn() ではうまくいきません。ここでは 前半は入力Hを読み込み 後半は入力G~Aを読み込んでいます。
また、シフトレジスタからはH→Aの順で出力されるので、カウンタをひとつずつ減らす方向に 順にデータを取り出しています。
視点の変化にスイッチを割り当てる
たくさんのスイッチ入力が使えるようになりました。機能の割り当てを少しずつ始めましたが、やはり使い切れないかなあ。
Yokeのスイッチは パネルのスイッチのように機能の名札が付けられなくて 手探りで操作することになります。やはり最小の数でないと覚えきれません。
機体の操作ではなく、視点の変化を中心に 割り当てをいろいろ試しているところです。
ハットスイッチの設定sketchを導入すれば8方向入力ができます、でも その使い道を思いつかないので4方向入力のままです。
なお、ArduinoI/Oのポート番号は0~18ですが、MSFSでは入力 sw1~19になっています。私の設定ではMSFSのControl Settingに合わせています。
カメラモードの切り替えを画面上のツールバーでやるのがめんどうなので スイッチに割り当てました。sw4,3,2の切り替えでカメラモードが切り替わります。このスイッチはスライドスイッチですが 設定を割り当てて使えています。
このスライドスイッチのそばに スイッチ位置を表すLEDが3個あります。もとの回路基板を改造して、スイッチが入ると LEDが点灯するような回路を作りました。これでスイッチレバーの位置がわかりやすくなります。スライドスイッチはsw4,3,2のどれかがONになるので LEDはひとつしか点灯しません、電流制限抵抗はひとつだけです。
List of Camera settings
Clamp
私の机にYoke本体を取り付けているクランプです。
Saitekのプラ製クランプは机の構造から取り付けには使えなかったので、木製のクランプを2つ作りました。構造は単純ですが、Yokeハンドルを押し込んだときに当たらないような形にしています。右隣にあるスロットルやトリムなどのコントロール装置は底板が長くなっていて、Yokeの下に入るようにしてあり、これを動かないように押さえて固定する役割も持たせています。