2021年1月11日月曜日

昇圧回路搭載

電源回路の見直しを行いました。

今まで500mAhのバッテリーで4つのモーターはduty比100%まで駆動可能、飛行も可能でした。但し、モーターを急に始動した時(例:静止状態から短時間でフル・スロットルにする)マイコンが正常動作できなくなり、暴走するという問題が起こっていました。これは2つの問題が関係しています。

1.正常動作を続けられない状況でマイコンを停止させていない

ESP32 IMU基板には低電圧検出(リセットIC)が付いていません。これはおそらく、USBケーブルでPCに接続しての使用を前提としているからではないかと思います。

ESP32のICおよびWROVERモジュールの方にもその機能はありません。バッテリによる電源を使う場合は、(他の多くのマイコンと同じように)電源電圧監視をして2.3Vを下回ったらENピンにlowレベルを入力して動作停止させることがデータシート(Figure 9 Reset Circuitの下)で推奨されています。

動作停止ではなくモーター出力ONのままマイコンが機能を停止(ロボットが暴走)することがあるのはおそらくこのためです。これは明らかな問題ですので、後日改造します。秋月で購入できるものとしてはTCM809R(2.63V)あるいはR3111N211A(2.1V)が使えそうです。

2.電池を一時的に限界近くの領域で使用している

現在使用している500mAhのバッテリは、顕著な瞬間的な負荷以外は電圧を大きく低下させずに電流を供給可能です。一般的なロボットの設計上、バッテリー電圧が顕著に低下しないような負荷の範囲で使用するべきと考えています。しかし、今回は重量との兼ね合いもあり、妥協点を探しているところです。

あまり良い方法ではないかもしれませんが、マイコン用電源に昇圧回路を追加しました。基板上のシリーズレギュレータ(3.3V)に入力する前に一旦、より高い電圧(5V)まで昇圧します。これにより、モーターへの電流供給で電池電圧が(一時的に)3V以下まで低下しても、昇圧回路に必要な電流が供給できている限りマイコン側は正常動作を続けられます。

一時的な高負荷以外でも電池電圧が低い場合は早急に着陸して停止すべきですので、マイコンによる電池電圧監視も同時に行います。また、バッテリの過放電を防ぐ必要があるのでICによる電圧監視も併用します。(後で追加予定)


ESP32 IMU基板は動力系とマイコン電源が分かれていないので、まず基板上のパターンをカットしました。次いで、秋月の昇圧モジュール(AE-XCL101とAE-XCL102)を基板上に接着して配線しました。また、以前述べたように、基板上の電源スイッチは当ロボットの使い方では定格を超えるので、使わないようにバイパスしてあります。

2021年1月9日土曜日

推力測定

モーターの推力を再度測定しました。また、効率低下の原因を探りました。

1.モーター性能の簡易評価

現在このロボットにはTelloの交換部品としてオンラインで複数の業者から販売されている8520コアレスモーター(但し型番不明かつ交換作業はDJIがサポートするものではない)とTello用のプロペラ(DJI純製)を使っています。

なお、8520という呼称は直径8.5mm、長さ20mmのことと思われます。具体的なメーカーや型番の情報はまだ見つけられていません。あるいは、規格品ではないため型番がないのかもしれませんが。

開発検討段階では、ESP32 6-axis IMU boardに空いている穴に入るサイズということで、Aitendoで販売されていたM716PA-10 およびPPR-01-55を試そうとしていました。しかし、推力測定してみると全然足りないことがわかったので、もう少し強力かつ入手しやすいものにした、という経緯です。

モーターを買い足す際に異なる業者から購入したので、性能のばらつきがあるのではないか、そもそも違う製品ではないか、という懸念がありました。

そこで推力を測定してみました。ついでに、M716PA-10も再度測定しました。但し、機材の関係で厳密な測定ではありません。

測定用の装置はこのような形で作成しました。電子秤の上に木材を固定し、そこに更にモーター固定用の薄板を固定してあります。台座としてROBO-剣用ロボットのフレームを借用しているため内部に配線基板が見えますが、これは使用していません。

  1. 3.7Vの疑似定電圧電源(スイッチングレギュレータの開放時電圧を3.7Vに設定、駆動中は3.65V前後まで低下する)
  2. プロペラはTelloのものを使用
  3. 地面効果を避けるために下の空間は30cm以上あける
  4. 電子秤で推力を測定
  5. 発熱によりトルクが徐々に低下するため、10秒間連続運転した後の値を読む。
  6. 計測は3回ずつ行った。
  7. 但し、運転の間隔は場合により30秒~2分程度と、一定ではなかったため、すべて等しい条件とはいえない。あくまで目安程度である。


結果、M716PA-10がおよそ10g、8520がそれぞれおよそ55gと50gぐらいということになりました。8520モーターのAとBは購入先の違いです。Aは今までロボットに搭載して使用し続けていたもののため、摩耗による変化かもしれません。購入先は違えど、だいたい似たような特性と見なして使えそうに思います。フィードバック制御以前に個体差や経年変化を吸収するキャリブレーションやフィードフォワードの仕組みは必要かもしれません。
また、やはりM716PA-10では推力が不足することがわかります。なお、以前使用した別プロジェクトで、このモーターにこれ以上の電圧を掛けて使用しても出力は大して増えず、モーターが焼けるだけであるということが経験的にわかっていますので、この時点で諦めました。

2.ロボット搭載時の効率低下要因検討

モーターとファンをロボットに載せる場合、上の実験と違ってファンの周囲にガードや基板があります。これらが気流に影響を与え、効率を低下させるのではないかと考えました。
なお、先の測定ではおよそ3.7Vの電源で駆動していましたが、モーターが触って熱いぐらいに発熱しており、破損が心配になりました。そこで以降は電圧をおよそ2.15Vに下げて実験を行いました。この場合はぬるい程度の温度上昇にとどまりました。

次の各条件で推力を測定しました。

  • モーター単独(立てた薄板の先に固定、前節の実験と同じ)
  • ESP32-IMU基板のみ
  • 基板+下面ガード
  • 基板+下面ガード+上面ガード (本来のロボットと同じ状態)
また、計測は3回、10秒運転して10秒休む繰り返しにより行いました。

結果、上面ガードが最も影響していることがわかりました。基板と下面ガードもそれなりに寄与しているようです。
上面、下面のガードはそれぞれこのような形状でした。直感的にも納得の行く結果ではないかと思います。

逆に、上面ガードを改善するだけで全体重量の10~20g変化に匹敵する可能性があるわけですので、その点では吉報です。
以上より、上面ガードを再設計します。また、下面ガードおよび基板の覆いも検討します。

2021年1月7日木曜日

ラジコン機能の実装

ラジコンとして飛行させることができました。これで予定していた第一目標を達成したことになります。

PCとロボットの間は無線LANで通信、PCにつないだゲームコントローラーの情報をロボットに送っています。

姿勢制御は仮の単純なものが入っています。詳細は後日改めて書きますが、要点としては、比例微分制御によってピッチ角・ロール角・ヨー角(以下RPY角と表記)を指令値に追従させるようなフィードバック制御で、RPY角はMPU6050のDMPが推定した姿勢情報をもとにし、角速度はジャイロの計測値をそのまま使っています。それぞれの軸に対応した操舵量に独立してフィードバックさせています。ゲインは試行錯誤で設定しました。撮影時の設定では、IC内のジャイロと加速度センサへのローパスフィルタの時定数は0.2s(これは長すぎたかもしれません)、制御周期は100Hz程度になっていました。

今後の課題:

  • モーターへの負荷が大きく、航続時間が短い。ホバリングに7割ぐらいの出力が必要になっている。
    • もう少し重量を軽くしたい。現状86g(Telloとほぼ同じ)。各部品の設計修正。
    • 基板が気流を邪魔して効率が悪くなっている可能性を検討。覆いをつけるなどして推力測定をしてみる。
  • その場でのホバリングをもう少し安定させる。現状で操縦してみると、体感的にはかなり忙しい。その理由を明らかにする。
    • 姿勢制御試験装置の作成。
    • フライトレコーダー機能の実装。
    • 細かいトリム調整。
    • 制御の残留偏差の可能性。積分項を入れてみる。

2021年1月4日月曜日

試作機各部重量測定

750mAhのバッテリーを試したところ、重量の増加(+11g)により、8~9割の出力でやっとホバリングができるぐらいになってしまいました。
そのため、やはりバッテリーは500mAh(あるいは重量16gまで)のものとし、他の部分の重量をもう少し減らして負荷を減らす方針で改良していくことにしました。並行して制御の実験を行っています。
基板は専用設計すればそれなりに減らせる余地があると思います。(テスト用のスルーホール端子等が多数あるため)

componentweight[g]
500mAh battery15.1
500mAh batt. case4.8
upper bumpers10
lower bumpers7
spacers and screws3.8
4 motors + connectors19.6
4 motor mounts4.8
4 propellers2
IMU board17.5
battery harness + SW3.1
TOTAL87.7


2021年1月1日金曜日

モーターマウントver.2

モーターマウントを改良しました。

CADの絵にはありませんが、円筒手前側の隙間部分に薄いゴムシートを挟み込んで、ゴムの復元力と摩擦力でモーターをしっかり固定します。

今までのモーターマウントは軸回転方向の固定が不十分でした。(モーター表面の穴に引っかかるように突起を付けてはいたのですが、あまりに小さい寸法に依存していたため、試作当初から設計通りになっていませんでした。)
それでも通常の飛行では問題なかったのですが、実験後にいくつかのモーターの線が撚れてしまっていたことで気づきました。おそらく、プロペラが他のもの(主にEPS製ガード)に接触して大きな力が働いた際、モーター自身が少し回転してずれたのが蓄積したものと思われます。
暗くてわかりにくいのですが、奥の方で線が撚れています。



電源分配基板

電源分配用基板を作り直しました。 電源をON/OFFするためのパワーMOSFETと、基板にネジが落ちるなど不慮の事故に備えての安全のための電流ヒューズを載せました。ロボットの操作パネルに付く電源スイッチ(定格5A)は駆動用電流を直接流すためではなく、このMOSFETのゲート電圧を...