空撮ドローンを製作しよう – ジンバルカメラの製作(2) –
前回gimbalコントローラとしてStorM32v1.3(I2C版)をベースとして製作することとしました。I2C版ではIMUとの通信でI2Cエラーが発生しやすいということでその原因を前回推測しましたが、まずはこのエラー発生の原因を検証してみたいと思います。
I2Cエラーの検証
おさらいですが、前回I2Cエラーの原因は以下にあると推測しました。
- StorM32-BCG v1.32 I2C版ではコントローラ基板とIMUモジュールの3.3V電源を共用(コントローラから供給)している。
- コントローラ基板のI2C端子(SDA,SCL)およびIMUモジュールのI2C端子には2.2kΩのプルアップ抵抗計4個が3.3V電源ラインに接続されている。
- このためI2CのSDA,SCL信号がローレベルになったとき3.3V電源からそれぞれのプルアップ抵抗を通してパルス状の電流が最大6mA流れる。
- 3の電流パルスによりIMUモジュールの3.3V電源ラインにノイズが誘発され、I2Cエラーを起こす。
I2Cエラーの原因が3.3V電源の共用であるとすると、IMUモジュールに別途5Vを供給し、IMUモジュール上で安定化した3.3Vを生成すればI2Cエラーは発生しなくなると考えられます。この仮説を踏まえ購入したStorM32-BCB v1.32基板を以下の写真のように5V電源を追加し、I2Cインターフェースの3.3V電源を5Vに変更してみました。

5V電源には手持ちの5V-BEC(Battery Eliminator circuit)モジュールを用いました。まず、I2Cコネクタ(JST SHコネクタ)の3.3Vラインをパターンカットします。次にStorM32-BCB v1.32基板のVbat(バッテリー電源)パターン上のレジストを一部剥がしてBECモジュール入力につなぎ、BECモジュールのGND端子を未実装のBluetoothモジュール用のGNDパッドに繋ぎます。最後に、I2Cコネクタの電源ピンにBECモジュールの5V出力を接続します。これで、IMUモジュールに5V電源が供給できます。5V電源IMUモジュールとしては、MPU6050が搭載された以下のモジュールをAmazonから購入しました。このモジュールのI2CコネクタもJSTのSHコネクタなのでそのままTStorm32-BCGボードに接続できます。Storm32-BCGv1.3ボードのFirmwareはMPU6050をサポートしているのでこのIMUを認識することができます。

改良ボードでのI2Cエラーの確認
I2Cエラーの確認には、以下のように木製のジンバルカメラ保持枠、ジンバルキットのフレーム、ブラシレスモータ、3Dプリンターで自作したアームおよびカメラフォルダーを用いたテスト用の治具にStorM32-BCG v1.32改良ボードを取り付けたもの使用しました。

I2Cエラーの確認用ツールとしてStorM32-BCG firmware-v0.96のダウンロードファイルに同梱されているパラメータ設定・初期化・調整ツール(o323BGCTool_v096.exe)を用いました。
最初に3sバッテリーをStorM32-BCGv1.32改良ボードに接続し、USBコネクタを改良ボードに接続してWindows11でo323BGCTool_v096を起動します。Dashboard画面でCOMポートを選択し「connect」ボタンをクリックすると以下の画面が表示されます。

画面で分かる通り、IMUが正常に認識できており、I2Cエラーも発生していません。改良前のボードにIMUを接続した時にはI2Cエラーが頻発していましたが、5V供給の改良ボードではI2Cエラーは発生していません。ボードの起動・停止を繰り返えしたり、Toolの「Calibrate Acc」や「Gimbal Configuration]を実行してもI2Cエラーは発生せず、改良ボードが安定して動作することが確認できました。
I2Cエラーが発生しないのでツールを用いてジンバル機能の制御パラメータをラフに調整し、動作させてみました。以下の動画のようにジンバル機能が動作していることも確認できました。
以上、IMUモジュールへの5V電源の供給はI2Cエラー抑制に有効であることが確認できました。次回は、前回決めた方針通りStorM32-BCGv1.3をベースにしたI2Cインターフェースのマイジンバル制御ボートの設計および製造について記載します。





