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製ガード)に接触して大きな力が働いた際、モーター自身が少し回転してずれたのが蓄積したものと思われます。
暗くてわかりにくいのですが、奥の方で線が撚れています。



2020年12月31日木曜日

電源配線の分析と見直し

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

以前、モーターを回すとマイコンに電源供給ができなくなっていたのは、電池からの中継配線が細かったのも一因でした。
また、JS PHコネクタの電流容量は2Aで、今回のアプリケーションはその範囲を数倍超えるため使わないことにしました。更に、試したバッテリのうちいくつかに使われていたMolex 51005/51006 (海外の通販サイトなどではLOSIコネクタと表記されている)も同様に2A程度でした。
代わりに、手持ちのコネクタの中でこのぐらいのオーダーの電流に耐えられるものとして、日圧の基板対電線コネクタVHを使ってみました。(これは実験用の仮配線ということで、最終的には緊急停止回路等を間に入れたいと思います。)

なお、基板上で「5V」と表示されている端子を使っていますが、実際にはVDD(バッテリーの正極およびUSBバス電源からD6を介して供給される)でした。回路図ではそうなっています。

配線と電池の交換で、フル出力でも動作できるようになったので、消費電力を見積もるためのホバリングの実験を行いました。
  • 重量87g(Telloとほぼ同じ)
  • 物理的補助あり(姿勢制御は未だ完成していないので)
  • 床から80cmぐらい(地面効果の影響を避けるため)
  • 手動操縦でスロットル(PWM duty比)調整
  • 7~8割程度で重力と釣り合ってホバリングした
  • 2分半で電池切れ
ぎりぎり及第点といったところですが、モーターにもバッテリにもかなり無理な負荷になっているように思います。
同じ重量なのに余力が少ないことから、Telloより少し効率が悪くなっているようです。
また、バッテリも手ではっきりとわかるぐらい温度が上がっていたので、もう少し大きい容量のバッテリに変更した上で軽量化を図る必要があります。

2020年12月20日日曜日

消費電力とバッテリーの検討

試作機のハードウェアを試運転しました。ある程度以上のパワーで回すと通信が途絶、更にはプログラムが停止するという現象が起きました。これは想定範囲内で、テストに使用した電池(350mAh)の放電能力不足であろうと推測しました。大電流の放電を行うと、電池の電圧が低下してマイコンの正常動作に必要な電圧を確保できなくなるという理屈です。特にこの基板は、電池から直接(低ドロップタイプの)シリーズレギュレータを通してマイコン用の3.3V電源を供給しているため、公称3.7Vのリチウムイオンバッテリーでは余裕が少ないと考えられます。

電池を選定するにあたり、モーターの消費電流のおよその見当をつけます。今回使用するモーターは製造元や正式な型番がわからず、データシートから知ることができないので、実際に測ってみます。

1.ストール時電流の最悪値を考える場合:モーターの巻線抵抗が実測でおよそ0.7Ωだったので、4.2V / 0.7 Ω = 6A。4個で24A。この値まで保証できればより安心ですが、必要以上に大型のバッテリーを載せるのは重量増加につながるので、もう少し実際に近い値を探ります。

2.地上に機体を固定してファンを回した際の電流の実測(モーター1個で、電池直結):2.6A @4.2V。

3.空中で重力と釣り合うときの消費電流: およそ8A。このときPWMのduty比は50~60%ぐらい。竿の片方の先に着けて手で支え、補助しつつ感覚で釣り合いを見ながら電流を測定。

以上より、ホバリングには最低8A、制御を考えると13A前後が必要と見積もりました。

今までテストに使用していた電池は350mAh 25Cなので8.7Aが定格の放電率(おそらく定常値)。4個のモーターを回すには足りないことになります。 実際、モーター2個までは最大出力で回しても正常動作を続けられたので、これとも大雑把には符合します。

また、放電率の他に容量と航続時間も考慮しなければなりません。

現在の構想では競技中は開始時と終了前以外はずっと飛行することを考えています。そこで航続時間を4分(知能ロボコン予選の競技時間の80%)とすると8A * (4/60)[hours] = 533mAhが最低限必要。

以上のことから、600mAhから1000mAhぐらいの間の電池(放電率25C以上)を試すことにします。

また、使用した直流電源(秋月のSI-8010Yキット)が8Aが最大値のため、騙し騙しの計測となっていました。こちらも開発用に用意する必要があります。

十分な大きさのバッテリーでも、電池残量低下時にはマイコンが正常動作できなくなって暴走する恐れがあります。飛行中制御ができなくなる(制御ループは停止してもモーター駆動のPWM信号だけ出ている状態)と危険ですので、電池電圧を監視して電源を遮断する回路を付けることも検討します。

おまけ


この基板は、この小さな電源スイッチがバッテリーからの電流を直接通すようになっています。大電力には使えません(テスト中、これで電源を遮断しようとした時に焼き切れました)。おそらくそのためにこのスイッチをバイパス(導線で繋いで常時ON)するパターンがあるので、これを用いた上で外部に前述の電源制御回路やスイッチを付けることにします。

昇圧回路搭載

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