目次
Section 1
バッテリー設定
今回は、ArduPilot Roverでのバッテリー設定について紹介していきます。
ArduPilotを構成する際には、以下のようなパワーモジュールを使用するのが一般的です。
Holybro PM02 V3 Power Module (12S)
https://dayscape.jp/collections/sensor/products/holybro-power-module-pm02-v3
Holybro PM02のようなパワーモジュールは、Pixhawkシリーズのフライトコントローラー(FC)と組み合わせて使うことを前提に設計されており、主に以下の2つの機能を持っています。
-
BEC(バッテリーエリミネーター回路)機能
バッテリーの高電圧を降圧し、Pixhawk 6CなどのFCに電力を供給します。
-
センサー機能(電圧計・電流計)
バッテリーの電圧と電流を計測し、FCに送信します。
製品によっては、これらに加えて以下のような機能を備えている場合もあります。
- 各ESC(スピードコントローラー)への電源分配(PDB機能)
- PWM信号のハブ機能
また、電圧や電流のデータをアナログ、デジタル、またはCAN通信で送信する方式の違いもありますので、使用するFCの仕様に合わせて、適切なパワーモジュールを選ぶ必要があります。
Holybro製パワーモジュールとPixhawk等FCの対応表は以下のリンクをご覧ください。
https://docs.holybro.com/power-module-and-pdb/power-module-comparison
パワーモジュールの設定方法については、以下のArduPilot公式ドキュメントに概要が記載されています。
Battery Monitors (aka Power Monitors/Modules)
https://ardupilot.org/rover/docs/common-powermodule-landingpage.html
ArduPilot公式ドキュメントに概要は記載されているものの、更新が遅れたり、現行商品の仕様が変わっていることもありますので、より正確で分かりやすい情報を得るためには、製品の販売ページやメーカーが提供するドキュメントの確認をおすすめします。
電圧は出力によって変動しやすいため、電圧だけの情報では詳細なバッテリー管理を行うことは難しいです。
パワーモジュールを活用することで、電圧だけでなく電流も含めたバッテリー管理が可能となり、より正確な運用ができます。
特に飛行する機体では、バッテリーに関するトラブルは墜落や事故に直結しますので、バッテリー管理は安全運用の要といえるでしょう。
ここまでパワーモジュールについて説明してきましたが、今回作成しているローバーについては、そこまで細かくバッテリー管理を行うつもりはありません。
ラジコンカーベースの車両なので、バッテリーが切れたところですぐに事故になるというものでもない、というのが最大の理由です。
そもそも今回は電流計にあたるものも搭載していませんので、FCが把握できるバッテリーの情報も少ないです。
しかし、そうは言っても全くバッテリー残量が把握できないというのも不便なもの。
ローバーは飛行機体と違い、バッテリーを交換せずに長時間動作することが可能で、動作パターン(走行・停止)によって消費電力が異なるため、バッテリーの減り方も毎回異なります。
飛行機体のように「ARMしてから何分」という時間基準での運用ができないため、気づかないうちにバッテリーが消耗してしまうリスクがあります。
バッテリー残量が分からないままLipoバッテリーを過放電させてしまうと、バッテリーの劣化や破損にも繋がりかねません。
そこで今回は、MATEKSYS F405-STDに搭載された電圧計の情報を、Mission Plannerでモニターできるように設定していきます。
また、バッテリー関連の設定は、ただ操縦者が運用中にバッテリー残量を確認・把握できるようにするだけのものではなく、バッテリーフェイルセーフが正しいタイミングで実行される為に「前提」として必要な設定となりますので、その辺りがどう連動していくのかも多少紹介できたらと思います。
今回はバッテリー電圧を遠隔でモニターするのが主な目的なので、フェイルセーフとして「何かが実行される形」にはしないのですが、どのような設定になっているのか確認を行い、何も実行されないよう設定を行います。
Section 2
配線の確認
下記のMATEKSYS F405-STDのArdupilotドキュメントに配線図が示されています。
https://ardupilot.org/copter/docs/common-matekf405.html
Ardupilotのドキュメントではあまり詳細に書かれていませんが、Vccのパッドにバッテリーを接続しました。
今回は隣のGND半田パッドにバッテリーのGNDを接続。
Vccに何ボルトまでの電圧を入れて良いのか、説明されている情報を見つけられなかったのですが、下記のMateksys F405-STDの商品ページ、BF WiringタブにFCHUBという追加基盤を使用した場合の配線図と、4in1ESCを利用した場合の配線図が記載されています。
https://www.mateksys.com/?portfolio=f405-std#tab-id-3
4in1ESCを利用した場合の配線図にも入力電圧が明記されていません。
全体の印象から6Sもしくは4S電圧までは問題ないのではないかと推測しました。
今回は2SのLipoバッテリーを使用していますので、おそらく壊れることはないだろうと思い、バッテリーに接続するコネクタから細い配線を分岐させ、VccとGNDへ接続しています。
Section 3
バッテリーモニターの設定
バッテリーモニターの設定については、Section 1でもお伝えした通り、製品のメーカーから公表されている手順に沿うのがわかりやすいものと思います。
今回は下記のMateksysの商品ページ、Ardupilotタブにパラメーターが記載されていますので、そちらを利用します。
https://www.mateksys.com/?portfolio=f405-std#tab-id-7
Ardupilotタブの中にはArdupilotのドキュメントページへのリンクやファームウェアのダウンロード先のリンク、さらにはいくつかの項目についてパラメーターの設定が記載されています。
その中で、今回確認したいのはADCの項目です。
紹介されているパラメーターは下記になります。
ADC
- BATT_VOLT_PIN 15
- BATT_VOLT_MULT 11.0
- BATT_CURR_PIN 14
- BATT_AMP_PERVLT 56 (F405-CTR/FCHUB-6S)
- BATT_MONITOR 4
- RSSI_ANA_PIN 9
上記項目に対して、今実際に設定されているパラメーターを確認しました。
パラメーターの探し方は既に何度かやっていますが、MissionPlannerでフルパラメーターリストを参照し、①で示した検索ボックスに「BATT_」と入力する事で、上RSSI_ANA_PIN以外のBATT_で始まるパラメーターを全て確認する事ができます。
Ardupilotのパラメーターは、パラメーター名だけでもなんとなく何に関する項目なのか、想像できるものが多いです。
BATT_VOLT_PINなどはボルトと記載されていますので、電圧に関連するパラメーターだとすぐにわかると思います。
今回電圧は監視したいのですが、電流計は搭載しておらず、変に設定してしまってエラーになるのも困りますので、電流関連のパラメーターはなるべく無効にしておきたいところです。
下記のパラメーターリストから、変更するパラメーターの内容を1つずつ確認していきましょう。
Complete Parameter List
https://ardupilot.org/rover/docs/parameters.html
BATT_VOLT_PIN
- 電圧監視に使用するアナログ入力ピンの設定
この値は指定されている15に変更しました。
BATT_VOLT_MULT
- 電圧検出ピン(BATT_VOLT_PIN)の電圧を実際のバッテリー電圧(pin_volt * VOLT_MULT)に変換するために使用する値とのこと。
- 恐らく検出された電圧を直接表示しているわけでなく、スケール等を変換して表示しているのかなと思うのですが、その変換に関するパラメーターのようですね。
- こちらも指定通り11.0に設定します。
BATT_CURR_PIN
- 電流監視に使用するアナログ入力ピンの設定のようです。
- 今回電流の信号は入れていないので、このパラメーターについては-1の無効に設定しました。
BATT_AMP_PERVLT
- 電流センサーの1Vの読み取り値に対応するアンペア数。
- 今回電流を監視するピンを無効にしたので、あまり関係ないと思うのでデフォルトのままにしました。
BATT_MONITOR
- バッテリー監視の設定。今回は電圧のみで設定する形にしたいので3のアナログ電圧に設定しました。
RSSI_ANA_PIN
- 受信機RSSI検知ピン。
- このパラメーターは今回使用しているファームウェアのバージョンでは見つからなかったので、特に設定していません。
赤線で示したパラメーターについて変更・確認を行いました。
メーカーから提供されている情報の範囲では、設定が完了したと思われるので、次に現在計測されているバッテリー電圧が正しい値になっているか確認しておきましょう。
FCが認識するバッテリー電圧を確認したいので、まずは接続するバッテリーの電圧を調べておきます。
チェッカーで計測した結果、8.37Vでした。
バッテリーを機体に接続し、MissionPlannerのフライト・データを確認します。
クイックというページ内に表示する数値は変更できる為、電圧表示を設定していない場合、画面左下の区画には表示されない可能性もありますが、左上の区画にも8.33Vと電圧が表示されています。
機体にバッテリーを接続すると、FCなどの起動で若干電圧が下がりますので、チェッカーでバッテリーを直接計測した数値と比較して-0.04Vなら使用上問題のない範囲かと思います。
Power Monitor/Module Configuration in Mission Planner
https://ardupilot.org/rover/docs/common-power-module-configuration-in-mission-planner.html
上記ドキュメントには測定値が0.2V以上ずれている場合の調整方法が紹介されていますが、今回はそこまで数値がずれていないので調整はせずに完了とします。
Section 4
フェイルセーフの設定
今回はバッテリーに関するフェイルセーフを設定するついでに、全体的なフェイルセーフも設定してしまいます。
マルチコプターなど飛行するモデルの場合は、様々なトラブルに対してどのようにフェイルセーフをかけておくか、しっかり検討する必要がある為、この部分だけでもかなりの作業量になるものと思いますが、今回は簡単に済ませてしまいます。
Roverのフェイルセーフに関しては下記のArdupilotドキュメントで紹介されています。
Failsafes
https://ardupilot.org/rover/docs/rover-failsafes.html#rover-failsafes
上記ドキュメントでは何種類ものフェイルセーフが紹介されています。
今回小型のローバーなのですぐに事故につながる可能性は低く、細かな設定や調整は走らせながら、問題が出た際に検討することにします。
そうは言っても、突然全速力で変な方向に走り出すと追いかけるのが大変なので、最低限の確認は必要です。
今回確認する項目はラジオフェイルセーフとバッテリーフェイルセーフ、フェイルセーフとしては最も代表的な2種類です。
ラジオフェイルセーフはざっくり言うとRC信号が失われた際に、どのような動作をさせるか、というフェイルセーフになります。
プロポと受信機のシステムでラジオフェイルセーフの設定が行えるものも多いですが、ラジオフェイルセーフの動作で、「電波が切れた場合に切れる直前に入力されていたPWM値を保持する」という設定が行えるものもあります。
ArduPilot側でラジオフェイルセーフ(RC信号喪失時の自動動作)を有効にするには、スロットルチャンネル(通常はチャンネル3)の入力PWM値が FS_THR_VALUE を下回ることが条件となります。
つまり、プロポと受信機のところで変にフェイルセーフ時の設定が入ってしまっていると、Ardupilot側でRC信号喪失を検知できなくなる可能性があります。
Mission Plannerに機体を接続し、「Radio Calibration」画面でプロポの電源をオン・オフする事で、信号が途切れた際にPWM値がどのように変化するか、もしくはしないのか、確認する事ができます。
プロポの設定をしっかり確認し、念のためMission Planner側でも一度チェックしておくと安心です。
今回は、信号喪失時にその場で停止する「Hold」動作を設定します。
- FS_THR_VALUE = 1
- FS_ACTION = 2 ※「Hold」を意味します
続いて、バッテリーに関するフェイルセーフの設定です。
今回は、警告表示のみで何の動作も行わず、操縦を継続できる設定にしたいと思います。Mission Planner上に電圧警告が表示されるだけのシンプルな設定です。
バッテリーフェイルセーフには2段階ありますが、今回は1段階目のみを使用し、2段階目は無効にします。以下のパラメータをすべて0に設定します。
【2段階目のフェイルセーフを無効化】
- BATT_CRT_VOLT = 0
- BATT_CRT_MAH = 0
- BATT_FS_CRT_ACT = 0
【1段階目の設定】
今回は電圧のみを監視し、電流(消費量)に関する設定は無効にします。
-
BATT_LOW_MAH = 0(電流による監視を無効)
次に、電圧しきい値を設定します。
1セルあたり3.8Vを目安に、今回は2セルバッテリーを使っているため、以下のようにしました。
-
BATT_LOW_VOLT = 7.4
動作としては何も起こらないようにするため、以下のように設定します。
-
BATT_FS_LOW_ACT = 0
この設定でも、Mission Planner上ではバッテリー電圧がしきい値を下回ると赤く表示されるようになります。
視覚的な警告だけで十分という、今回の目的には最適な設定です。
これでラジオ・バッテリーともにフェイルセーフ設定が完了し、安全性を保ちつつもシンプルな運用ができるようになりました。
次回は、OSD(オンスクリーンディスプレイ)の設定について紹介します。