Stap 17: 改善の余地
これまで、Arduinoを使った3軸ブラシレス・ジンバルの開発経緯を紹介しました。 webで見ても、ブラシレス・モータをArduinoで直接回す話は少なく、唯一見つけたスケッチはジンバルに不向きでした (ステップ11参照) 。 このため新たなスケッチを独自に用意して、1軸、2軸、3軸の順に開発を進めました。
結果的に、「特殊な部品を使わず、自力で作る」という方針は維持できたと思います。 ただ、他のジンバルを見たことがないので、このジンバルの特徴や長短は良くわかりません。 ここでは最後に、改善を要する点をまとめます。
:
(1) 高周波のノイズ
ステップ11で用意したスケッチでブラシレス・モータを制御すると、静止状態でも強いトルクが得られます (作り方はステップ13参照) 。 ただしモータからは、常に500Hz程度のノイズ(騒音)が生じます。 このノイズは映像には影響ないですが、ジンバルにカメラを載せて撮影すると、かなりの騒音が録音されます。
<追記>
この高周波のノイズは、PWMパルスによるモータのコイルの唸りが原因でした。 PWMパルスの周波数を上げると、この唸りを不可聴域(31kHz) に移せます。 ステップ13に戻って試す場合、Arduinoのピン割当てを変更し、サンプル・スケッチのsetup内に下記の4行を追加してください。
・ピンの変更(配線とスケッチの両方)
pin8→5
pin9→6
pin5→9
pin6→10
・コードの追加
TCCR1B & = B11111000;
TCCR1B | = B00000001;
TCCR2B & = B11111000;
TCCR2B | = B00000001;
下記の動画 (7) は、この修正を加えて撮影したものです。 耳障りな高周波ノイズは聞こえず、周囲の自然な音が録音されています。 なお、この修正によってジンバルの挙動が変化するため、プログラムの係数の再調整が必要になります。 その下の動画 (8) は、係数を再調整して撮影したものです。 強い風にもかかわらず映像の安定性が改善しています。
:
■確認動画 (7): スケッチの修正による高周波ノイズの除去
■確認動画 (8): 修正スケッチの係数再調整
:
長回しの確認動画(各15分):テスト(1) 、テスト(2) 、テスト(3)
:
(2) フレームの震動
実用的な2軸ジンバル開発段階で、フレームに震え (震動) が生じるようになりました。 上の騒音と異なり、この震動は動画の映像に影響を与えます (輪郭がうねるように見えます:開発動画(18)参照)。 正確な振動数は分かりませんが、感覚的には50Hz程度でしょうか。 フレームの適当な場所を指で触れると直ぐ収まりますが、動作中に可動部分に触れる訳にもいきません。
:
■開発動画 (18): フレームのビビリによる映像の乱れ
:
この震動の根本原因は必ずしも明らかではありませんが、チルト制御のダンパ機能が直接の原因になっています。 今のところ、下記の対症的な方法の組み合わせで概ね抑制していますが、フレームの剛性アップ等のより根本的な解決法が望まれます。
- プログラムの係数調整・・・補正をややルーズにする
- モータの駆動電圧の抑制・・・モータの推奨電圧の下限 (11V) の2/3(7.5V) に抑える
- ハンドルの大型化・・・大型のハンドルに金具を幾つか付けてこれらを鷲掴みすることで、掌で震動を吸収(もしくは固有振動数を調整)
:
(3) ロール補正の改善
ジンバルの動きを外から見る限り、カメラの姿勢は安定しているように見えます。 しかし撮影した動画を見ると、ロールの補正に未だ改善余地があります。 その原因として考えられるのは下記の諸点です。
- プログラムの係数の不適・・・フレームの震動を抑えるために、補正をややルーズにしている
- モータ駆動電圧の不足・・・フレームの震動を抑えるために、モータ推奨電圧の2/3にとどめている
- ジャイロとフレームの軸の不一致
:
最初の2点は上記の震動対策によるものなので、ここでも抜本的な震動対策が望まれます。 これに対し、最後の点はジャイロのキャリブレーションに関するもので、専らプログラムの問題です。
現在のプログラムは、ジンバルに取り付けた4つのジャイロと、ジンバルのフレームの軸が、全て一致していると仮定しています。 しかし、これらの軸の間には、無視できないズレがあると考えられます (*) 。 このズレは、フレームの軸毎にジャイロの出力を見れば分かると思います。 ただ、作業が面倒なのと効果が分からないこともあり今のところ実行していません。
(*) ジャイロをフレームに取り付ける時も、特別な測定や調整は行っていません。
:
(4) SPIの不具合
ジャイロとArduinoの情報のやり取りは、SPIインターフェースを用いています。 SPIは短距離の通信手段ですが、webの解説記事によると、1m程度ならば問題ないようです。 実際、ブレッド・ボードとジャンパ・ワイヤでテストしていた時には、特に問題は生じませんでした。 しかし、仕上げのために、ジャンパ・ワイヤをリボン・ケーブルに置き換えたところ、ジンバルの動作が急に不安定になりました。
最初、全く原因が分からなかったのですが、試行錯誤の末、いくつかの線を近づけた時に、ジャイロの情報がArduinoに正しく伝わらないことが分かりました。 中でも、クロック(SCK)と出力(MISO)の線が近いと、高い確度で異常が生じます。 このような報告はwebでも見当たらないので、これはおそらく、使用したジャイロとArduinoに固有の問題だと思われます。 原因の詳細は不明ですが、束ねる線の組み合わせを適当に選ぶことで、対症的な解決を図っています。