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

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

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

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

ピッチ,バンク\n

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

Arduino内での処理

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

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

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

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

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

動かしてみる。

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

動画で・・・

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

フライトシムのモーションシミュレータ化~4~” への4件のコメント

  1. こんにちは!はじめまして。自分ワイパーモーターで2DOFモーションシートを制作からこちらにたどり着きました。https://www.x-sim.de/
    ある程度の動作を確認したんですが、この度格安のアクチュエーターを手にいれ子供向きに2号機を作っていますが、やはりアクチュエーターで可変抵抗を扱うのは結構面倒でリニア可変も考えましたが実際制動距離が短すぎいきずまり。そこでジャイロセンサーにたどりつき此方を拝見しました。
    もし可能であればで大丈夫ですが出来ましたらarduinoのコード拝見できませんでしょうか?
    勿論、自分にあった書き換え等必須なのは承知していますがはやり先人の方のサンプルコードは非常に勉強になりますので。
    あつかましい突然の申し出すいません。
    よろしくご検討おねがいします。

  2. ピンバック: フライトシムのモーションシミュレータ化~9~ | ほいほい堂blog

  3. お世話になります。お忙しい中公開頂きましてありがとうございます。
    聞かぬは一時の恥とダメもとでお尋ねしたのですが本当に感激です。
    中身の解説まで頂き非常に参考になります。
    特に公開というか記録も取ってなかったのですが一応ワイパーモーターの方はなんとなく動作できています。ただ可変抵抗の機嫌が悪いと一気に暴走するのとモーターの力不足を痛感しています。
    アリエクスプレスでギア付きモーターの購入を悩み中です。
    特に公開等していませんでしたが、今度ご助言頂けるようにどこかにUPしてみますね。今後もぜひよろしくお願いします。そして本当にありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


*