Altimeter
長針と短針
高度計はステッピングモーターで動かしています。静かにスムースに回転してくれます。
デジタルではなくアナログ表示で指針が動くメーターです。やはり ここは指針が動くのが楽しい。
この高度計の数値目盛は100feet単位です、長針が360°回転して1000feet(約300m)です。これではまったく足りません。
時計の短針と長針のようにして、10倍の上位桁を表示させます。これでも最大値は10000feet(約3000m)です。もう一桁ほしいところですが、構造を三重にするのは難しいので製作計画はここまで。これ以上は実際の機器のようにデジタル表示を付け加えるのが実用的です。
ここに組み込める 小さな7セグLEDが入手できれば デジタル表示を加えようと考えています。
1/10の歯車
時計の短針は長針の1/12の回転比ですが、この高度計では 1/10の回転比にする必要があります。
このため時計の歯車の仕組みは利用できないので、手持ちの歯車を並べて1/10になる組み合わせを考えました。
ストックしてあったギア(平歯車)はタミヤのギヤボックスや日本橋のデジットで買ったもの、プリンタを分解して残してあった歯車などいろいろです。モジュール0.5 の歯車を使いました。(歯車のモジュールとは 基準円の直径dを歯数zで割った値 m=d/zのことです)
歯車をたくさん机上に並べて考える中で 偶然に見つけた組み合わせが ( 12 : 42 ) x ( 14 : 40 ) = 168:1680 = 1:10 でした。これが使えます。(この歯車の組み合わせが見つからなければ、短針と長針を別のステッピングモーターで回す方法をとれば解決できます。)
さらに良かったことは、この2組の歯車の組み合わせだと 2つの歯車の軸間距離が同じになることでした。
時計のように 回転の中心軸を二重にして短針と長針を重ねられます。
ギアのモジュールm 0.5 X 歯数z= 基準円直径d で計算すると、
・歯数12のギア直径は 0.5 X 12= 6 (半径は 3mm)
・歯数42のギア直径は 0.5 X 42=21 (半径は10.5mm)
つまり 歯数12 と 歯数42のギアの軸間距離は 3 + 10.5 =13.5mm になります。
・同様に 歯数14 と 歯数40のギアの軸間距離は 3.5 + 10 =13.5mm と 同じです。
外側の軸に使ったパイプはロッドアンテナです。これは分解するといろいろなサイズの真鍮パイプが手に入ります。
ステッピングモーターの軸は直径5mmです。これと ギアの軸に使った直径3mm棒とは余裕を持たせ 簡単なユニバーサル ジョイントにして つないでいます。
短針と長針と軸をつなぐところは固定せずバネ状にしてはめ込んでいます。これは分解して調整したり作り直せるよう、他の部分もネジ止めなどで分解できるようにしています。
config設定
Mobiflightの設定は Transform でマイナスの値にしています。これは回転方向が逆になったのを戻すためです。
使用したStepMotor 28BYJ-48 では、360°回転するのに 2048step必要です。FSUIPCからの値1000(feet) で 2048step,
つまり1回転するように設定しています。
気圧補正
実際の高度測定は気圧の測定によって行われています。高気圧や低気圧などで 地表の気圧は変動しますので、
気圧補正ができるように、ロータリーエンコーダーを取り付ける位置を左下に確保しました。
Digital-Altimeter
デジタル表示
ちいさい7セグLEDが手に入ったので、高度計にデジタル表示を加える工作を始めました。LEDは3桁で15mmの幅に収まっていますので、高度計に内蔵できます。0.25inch カソードコモンのLED OSL30251-LYGです。
手に入れたドライバーIC MAX7219 はオリジナル製品ではなさそうなので、きちんと動作するのかブレッドボード上で試しました。43feetは関西空港の滑走路での高度を表示してます。うまくいきそうです。
MAX7219を載せた小さな基板は 高度計のアルミフレーム底のせまいスペースに取り付けました。
このICは 8桁のLEDを表示できますが、そのうち3桁だけを使うので、Rset抵抗でセグメント電流を30mA以下に制限してます。
Mobiflightの設定は、いちばん小さい桁を100feet単位の表示にするため Transformで $/100にしました。これで最大99900feet(約3万m)まで表示できます。SR-71の高度記録85069feet(約2万6000m)でも大丈夫です。でも、MSFS2020で どこまで上昇できるのでしょう。
Mobiflight9.6 になって右詰表示がうまくできなくなりました。浮動小数の表示が関係しているようです。
このため、はじめはRound関数 を使って小数をなくしましたが、現在はTruncate($/100)を使っています。Round関数は四捨五入ですが、Truncate関数を使うと小数点で切り捨てられるので アナログ表示と組み合わせるにはこの方が合っています。