MFT2018準備

MakerFaire東京2018まで3週間を切りました。
昨年は色々あって出展も見学もできませんでしたが今回は2年振りに出展を予定しています。なので色々な事がやりかけですが、MFTの準備も進めねばなりません。

と言っても今回特に目新しい出展物は無いのです。本当はモーションフライトシミュレータを持っていきたいところですが、これを熊本から東京に運ぶにはかなりの費用がかかりそうです。そこで1/5スケールのミニチュア版を作成してみました。

このなの・・・

MotionSimMiniture1

モーションシミュレータの1/5模型

ちなみに実物はこれ・・・

RudderPedal2nd_4

モーションシミュレータ実物。
(場所を取るので殆ど稼働していません)

リニアアクチュエータは3個100円で買ったRE140サイズのモーターを、ギヤで減速して3mmの全ネジ棒を回転させてアルミパイプ内に仕込んだ長ナットを上下に動かす仕組みです。
モータードライバは使い慣れたTA7291Pを使います。TA7291PのデーターシートにはPWMで速度制御可能とは書かれておらず、本来はVref端子の電圧で速度制御をすべきですが、そうするとモーションシミュレータ用のスケッチがそのまま使えないのでVrefは固定にして無理やりロジック入力からPWM信号を入れて速度制御しています。

角度の検出は元のモーションシミュレータの方式そのままに6軸ジャイロモジュール(GY-521)の加速度データだけを使って傾きを検出します。

ところが動作させてみると、モーター動作中にArduinoがダンマリ状態になります。どこで固まるのかを調べていくと、どうやらI2Cでセンサーの角度を取りに行った時に固まる模様。
これ、心当たりがあります。モーションシミュレータ製作の時にも書きましたが5VのArduinoUNOと3.3Vの6軸ジャイロモジュールをそのまま接続したのが怪しいです。マージンが無いながらも規定の電圧レベルには入るのでモーションシミュレータでは問題なく使っていましたが、模型用モーターが近くで回ると誤動作する様です。

3.3Vセンサーを直結できないのが何か悔しいのでモーター配線の根本に付けるコンデンサを大きくしたり、I2C信号をシールド線に替えたり、色々と試しましたが改善しません。結局、秋月電子から出ているI2C用レベル変換モジュール(AE-FXMA2102)を間に挟むと一発で収まりました(ちょっと負けた気分)。

レベル変換ICを取付けた図・・・

MotionSimMiniture2

GY-521センサー+I2Cレベル変換モジュール

 

その他、今年のMFT出展予定物で今までと微妙に違うところ・・・

フライトヨークのレバーが1本→3本になったとか、

YOKEの3本レバー

3本レバー化

 

ラダーペダルがリニアガイドを使ったリッチな仕様(と言っても中華製激安リニアガイドですが)になったとか・・・
(ワイヤーリンケージ部分を踏まれると困るのでアクリルカバーを製作中)

ラダーペダル

ラダーペダルにアクリルカバーを取付ける予定。

また一昨年はOpenStick基板の販売とかやってみましたが、今年は販売予定はありません(販売する場合はコマーシャルMakerとして登録するので出展料が必要になったり色々と大変なのです)。

という事で以前来て頂いた方には変り映えしないかもしれませんが、MFT2018に来られる際はほいほい堂ブースに是非お立ち寄りくださいませ。
(今年は息子も近くのブースでの出展を予定しております。ちょっと心配ですが)

リニアガイドで2代目ラダーペダル制作~その3~

二代目ラダーペダルの続きを製作します。

まず合板に部品取り付け位置を書込みます。
鉛筆で描いてもいいのですが手っ取り早くレーザーで描画しました。
真ん中の部分はボリュームが埋まる所なのでドリルと糸鋸でくり抜いています。

RudderPedal2nd_1

合板にレーザーマーキング

 

そして部品を取付けました。

RudderPedal2nd_2

部品取付け完了。

ペダルはリニアガイドに載っていて前後に動かすとワイヤーを通じて真ん中のプーリーに接続した可変抵抗器を回します。またワイヤーにより左右のペダルは交互に動作します。
ワイヤーの部分、当初は水糸を使ってみたけど伸びるので被覆付きのワイヤーに変更しました。

RudderPedal2nd_3

反対側から見たところ。

戸車プーリーと適当なバネ。

RudderPedal2nd_3.5

戸車プーリーでワイヤーを支えます。
プーリーは適当にプリントしたパーツで固定。

 

機構的な部分は大体できたので後はUSBインターフェースを取付けます。
今回はアナログ3軸だけなのでPIC18F14K50を使ったOpenStick Liteを使用しました。
部品数が少ないので今回は基板切削はせずユニバーサル基板で配線します。

jw-cadで配線計画を立てて・・・

RudderPedal2nd_4

ユニバーサル基板での配線予定図

配線しました。

RudderPedal2nd_5

基板完成

そういえばOpenStick Liteはβ版としてブログには載せましたが正式ページを作っていません(ま、いいか)。

配線も済んだので動画を撮ってみました。

 

ではMotionSimulatorに載せてみます。我が家の工作室だと狭いので機材一式を和室に運びました。

RudderPedal2nd_4

和室に移動しました。結構重いです。
しかし変な絵面だな。

ではFlightSimulatorXを立ち上げてフライトしてみます。今までのラダーペダルはペダル位置が高くて足が宙に浮いた感じでしたが、今回は踵を床に付けたまま操作できるので微調整がしやすくなりました。しかしワイヤーを通じたリンクの抵抗が若干大きい気がします。

 

因みに一代目ラダーペダルはこれ。シーソー式でした。

一代目ラダーペダル

何度もMakerFaireに持って行った一代目ラダーペダル。
今回でお役御免です。

こちらはお役御免です。お疲れさまでした。

リニアガイドで2代目ラダーペダル制作~その2~

2代目ラダーペダルはこんな構造にしようと思います。

ラダーペダル構想

Fusion360で描いてレンダリング

リニアガイドにペダルを載せてワイヤー(糸?)で接続し、中央のプーリーで可変抵抗を回転させます。 左右のペダル内にもそれぞれ可変抵抗が仕込んであり、踏み込むとブレーキがかかります。

 

早速ペダル部分を作成してみました。本体はダイソーの6mmMDFをレーザーカットしています。歯車はABSで3Dプリントしました。バネは1.5mmのピアノ線です。
ペダルを踏みこむとギヤが可変抵抗を回す仕組みです。

ペダル1

ペダルの内側

 

そしてこんな感じでリニアガイドに乗せます(ガイドのコマが小さい感じがしてちょっと不安)。

ペダル2

リニアガイドに取付け。

 

これを二つ製作しました。こういう風に合板の上に並べる予定です。

ペダル3

こんな感じで並べます。

という感じでぼちぼちと進めます。

リニアガイドで2代目ラダーペダル制作

11.11のセールでAliExpressに色々と発注した内、一番楽しみにしていたものが届きました。 レール長150mmのリニアガイド。一本798円(送料別)です。

リニアガイド

リニアガイド×2本

リニアガイドってマジな装置で使う高価なものだと思っていましたがAliExpressだとお手頃価格のものが沢山出ています。これが問題なく使えるなら今後はCNC系の工作での悩みが減ります。

開けてみると・・・レール表面には細かい傷が入っていますが動かした感じでは問題なさそうです。日本製の新品を触った事がないので微妙なところは言えませんが、自作機器のレベルでは問題ないのではないでしょうか。

リニアガイド2

そのまま袋に入って届きましたがコマが落ちない様、出して直ぐに端を結束バンドで止めました。

これで2代目ラダーペダルを作ろうと思っています。バチが当たりそうですがリニアガイドを踏んづけるのです。
先日フライトシミュレータをモーション化した時にも書きましたが今のラダーペダルはペダル位置が高すぎて窮屈なので低くします。また本物はペダルにブレーキの機能があるそうなので、これも実装する予定です。

さて、どんな事になるのでしょう。

フライトシムのモーションシミュレータ化~8~

モーションシミュレータとして大体のところは動作したので使い勝手を良くしていきます。

省スペース化

まずは少しでも省スペース化するためヨーク、モニター取付け部分を折り畳み式にしました。

MotionSim9-1

折りたたんだところ。

支えの部分。折りたたむ時は真ん中のボルトを残して後は抜きます。

MotionSim9-3

使用中

 

リニアアクチュエータ接続ボルト切断。

リニアアクチュエータとキャスターの接続部分はいままで長ボルトを挿しただけでした。このままだといつか踏んづけて怪我しそうなのでボルトを短くします。

MotionSim1-5

リニアアクチュエータとキャスターのリンク。長ボルトを突っ込んでビニールテープで止めただけでした。

まずボルトを真っ二つに切ります。

MotionSim9-4

ボルトを切って・・・

そしてねじ切りをしますが、ダイスがなかなかボルトに食いつきません。こういう安価なセットだからいけないんでしょうか?

MotionSim9-5

これまた見たらわかる、安っすいやつやん。

一時間ぐらい格闘したけどねじは切れませんでした。結局ホームセンターでマトモなダイスを購入。安物セットの値段は忘れましたが、たぶん今回買ったダイスの方がセット全体よりもうんと高額です。

MotionSim9-6

ダイス購入。

さすが、このダイスだとガッチリ食いつきます。

またボルトとダイスの角度を維持するのが大変なので木材で冶具を作ってボルトを固定しました。

MotionSim9-7

冶具1号。2本目のねじ切りでボルトが回ってダメになりました。

MotionSim9-8

冶具2号。これも2本切るとボルトが回って終わりました。

ダイスの方は水準器を置いて水平を維持しました。これでボルトが垂直に固定できていればねじが斜めになることはないはずです。

MotionSim9-9

ダイスの上に水準器を置いてねじ切り。

結局木材冶具は二つとも壊れましたが何とか4本のねじ切りができました。
取付けるとこんな感じ。

MotionSim9-10

長すぎたボルトが丁度どよい長さになりました。

動力用電源のスイッチ取付け

モーターを回す為の12V電源ラインにスイッチを取付けました。このスイッチも先日ポンさんに頂いたものです。ありがたい限りです。

MotionSim9-11

動力用電源スイッチ取付け。

以上でモーション・フライトシミュレータは、ほぼ完成ですかね。いつも私の工作は完成したのかどうか決まらず終わっていくので今回は一旦完了宣言をしたいと思います(といいつつ、まだ何か続きそうですが)。

フライトシムのモーションシミュレータ化~7~

やっとフライトヨークとモニターを取付けました。

木組みでちょっと複雑な形に・・・

MotionSim8-1

合板多用です。パッチン止めは乗り降りする時に外します。

MotionSim7-1

モーション・フライトシミュレータ全景

早速テストフライトするため PCを棚から引っ張り出して座席の横に置きます。こうしないと諸々のケーブルが届かないのです。

MotionSim8-3

PCを引っ張り出してケーブル類を接続。

ではテストフライトの動画です。

ロール方向の動きが少ない様にも見えますが、ラダーを使って横滑りが無ければ横Gも加わらないので多分正しいのだと思います。

以上で一通りの動作はしたのですが・・・置き場所に困るのでこの後は簡単に分解/組み立てができる様にしていきたいと思います。

フライトシムのモーションシミュレータ化~6~

先週末も台風が来ましたが日曜の午後には晴れてきたので室外での作業ができます。
まずは溶接から・・・

Motionsim7-1

溶接機。
見たらわかる。いちばん安っいヤツやん。

 

建築用の金具をつなぎ合わせてこんな形にします。

Motionsim7-2

座席のフレーム

比較的綺麗に溶接できた部分。

Motionsim7-3

一番マシな部分ですが、ここは座版に当たるところなので出っ張りをなくすためグラインダーで削ってしまいます。

そして合板を切って組み立てていきます。

Motionsim7-4

ラダーペダルの置き場所完成。

座版と背板にゴムスポンジを貼りました。そしてラダーペダルを乗せてみます。
ペダルの位置が高くて膝が窮屈なので、いずれペダルを低く作り直すつもりです。

Motionsim7-5

ラダーペダル仮止め

Motionsim7-6

上から見たところ

これでペダルを操作しながらフライトできる様になりましたが、ジョイスティックを手で持っての操作です。
早くヨークと画面を固定する必要があります。

しかしだんだんと大きくなって置き場所に困る様になってきました。
最初から判ってた事ですが・・・どうしましょう。

フライトシムのモーションシミュレータ化~5~

モーションシミュレータの座席にラダーペダルを固定するため、金具を切り貼りしたいのですが、先週の雨に続き今週末も台風がやってきて降ったり止んだりしているので外での作業が出来ません。
そこで近所のホームセンターハンズマンにある工作室で金具のカットと穴あけをしてきました(工作室での写真は撮り忘れました)。
切り終えたのがこれ。

Mostionsim6

座席に取付ける金具(切ったあと)。
3mm厚で幅40mm、各辺270mmのL型金具(1本170円)。
元々は建築用みたいです。

現状の座席にも同様の金具をフレームとして使っており、これに溶接する予定ですがハンズマンの工作室でも溶接はできないので晴れたら庭でやろうと思います。が、雨が止んだかなーと思って準備を始めるとまたポツポツと降ってきます。

てるてる坊主

 

晴れるのを待ちながら制御基板の続きを作る事にします。先日故障した基板切削CNCも調子よくなっており切削完了。

MotionSim6-2

切削を終えた基板の両面テープをスクレーパーで剥がします。

部品を実装しました。(一か所回路図段階でミスっておりパターンを修正しましたがこちらの面からだと見えないのでナイショ)

MostionSim6-3

実装も完了。

これくらいの配線量だとユニバーサル基板の方が手っ取り早いかもしれません。でもそこは趣味の世界です。 またArduino標準のピンヘッダ配置はユニバーサル基板がピッタリ納まる様になっていないという問題もあります。

基板を作った後で気づいたのですが、手元の古いArduinoUNOには無い端子を使う配線になっていました。I2C通信で使うSDA,SCL端子は現在のUNOでは端子が追加されて2か所にありますが古いUNOには1か所しかありません。

MotionSim6-4

ArduinoUNOのピンヘッダ新旧比較
(左の新しい方はバッタ物ですが・・・)
左下のAD4,AD5端子がSDA,SCLと兼ねており昔からある端子です。これに対し今のUNOでは右上にも同じ信号がSDA、SCLとして追加されています

仕方ないので新しい方(バッタ物)を使う事にします。

とかやっている間にAliExpressに何となく注文していた基板が届きました。
1枚108円で送料無料です。こんなのを使うのが一番簡単でした(いまさら今回のには使いませんが)。

MotionSim6-5

Arduinoシールド用ユニバーサル基板

 

何はともあれ基板が出来たのでブレッドボードを取り外して交換します。
だいぶスッキリしました。
基板上のトグルスイッチはマニュアルとオートの切替です。オート側にするとPCから仮想COMポート経由で制御でき、マニュアルにしておくと基板上の4つのタクトスイッチで動作させる事が出来ます。

MotionSim6-6

ブレッドボードから基板に変更してスッキリした図

そうこうしている内に雨が止んだ様です。日没まであまり時間がありませんが少しでも溶接作業を進めます。
といっても2本を接合しただけで日が暮れました。座席のフレームとの接合は後日行います。

MostionSim6-7

2本を接合。

少しずつしか進みませんが続けていきます。

フライトシムのモーションシミュレータ化~4~

前回FlightSimulatorXからデータを取出して座席の傾きを計算しArduinoに送るところまで来ました。引き続きArduino側でのスケッチを書いていきます。

PCからArduinoに送るデータフォーマット

PCからArduinoへはシンプルに下のフォーマットでデータを送ります。

ピッチ,バンク\n

第一フィールドが座席のピッチ、第二フィールドがバンク角で、それぞれ’度’単位の角度を10倍した整数で表します。10倍しているのは小数以下一桁までを整数で表し、少しでもArduino側の計算負荷を減らす目的です。

Arduino内での処理

Arduinoのスケッチではシリアルポートを定期的にチェックし、1行分のデータが来たらピッチとバンク角を取出します。そしてこの値を元にリニアアクチュエータの目標とする長さを左右それぞれ算出します。

また加速度センサーの値も定期的にチェックします。加速度センサーは座席裏側に取付けてあるので座席の傾きを示しており、この値から現在のリニアアクチュエータの長さを推定します。

あとはモータードライバーに対し、目標長と現在長の差が無くなる方向に動かす信号を送ればアクチュエータが動作して座席が目標角度になるという算段です。

実際にはアクチュエータが停止状態から動き出す時はPWMで徐々に加速し、目標に近づくと徐々に減速する事でなるべくスムーズな動作を目指しています。

なお当初、加速度センサーは座席の背板付近に取付けていました。しかしこれでは重力加速度による傾き検出以外に本当の加減速も検出してしまいます(軸から遠いので特に上下には大きく動く)。今回は傾きの情報だけ欲しいのでなるべく軸の近い場所に移動しました。

動かしてみる。

まだモニターもペダルもコントローラーも取り付けていませんが、とりあえず動作させてみます。
PC側でFSXを起動し、DOS窓から先日作ったデータ抽出プログラムを起動し、リダイレクトで仮想COMポートに送ります。

動画で・・・

最低限のところが動いた感じですが、なかなか楽しいです。
ペダルやコントローラを取付けていきます。

フライトシムのモーションシミュレータ化~3~

引き続きソフトを作っています。

SimConnectから得られる値について

モーションシミュレータではシミュレータ世界で体が受けるであろうGの方向を実世界の重力の方向に合わせる様に制御しようと思います。例えば離陸のために加速する時は後ろ向きにGが掛かるので座席を上向きに傾ける事で体にそれっぽい力が加わります。しかし以前の投稿で体にかかるGの方向がSimConnectから上手く取れない話を書きました。

SimConnectから得られる変数に「ACCELERATION BODY X(同様にY,Z)」と「ACCELERATION WORLD X(同様にY,Z)」という変数があります。
ドキュメントに詳しい説明が見当たりませんが、名前からするとこれらが体にかかる加速度およびワールド座標での加速度かと思います。しかしこれらの変数を表示させても妙に小さな値ですし思った様な変化をしていません。

下の4つのグラフは出来るだけ水平を保って右旋回を続けた時の変化です。
一番上のグラフは機体のピッチ、ロール、ヘディングを表します。単位はラジアンでヘディングの0(又は2π)は北を示しており、ノコギリ状のグラフになっているのは右方向に2回転した事を示します。

2番目のグラフは各方向への速度(単位はFeet/s)を示します。東西がvX、南北がvZなのでこの二つが90度位相がずれたサインカーブをほぼ描いており回転している事が判ります。

そして3番目のグラフが加速度を示すと思われる変数「ACCELERATION WORLD X(及びY,Z)」の値ですが、何を示しているのかよく分かりません。

そこで4番目のグラフに速度から算出した加速度をプロットしてみました。横軸が1秒ステップなので2番目のグラフの値を元に、それぞれ一つ前からの差を計算すればFeet/S2(フィート/毎秒毎秒)になるはずです。これだと最大120feet/S2で速度を90度ずらしたそれっぽい波形になっています。

・・・という事で速度の変化から計算した加速度を用いる事にします。
なお、この加速度に重力は含まれていないのでY軸方向に32.174feet/S2(=1G)足した上で機体座標に変換して座席の姿勢を決める事にします。

SimConnectの座標

SimConnectが出す値を調べた結果、各座標は下の様に表しているみたいです(座標変換するとき何度もこんがらがるので覚書き)。

MotionSim4-2

SimConnectの座標

以上で求めた座席の傾きをUSBのCOMポートに書き出し、後はArduinoでの処理となります。