ロボットが再起動する不具合発生したので、原因究明の為に簡易電圧ロガーを作りました。
まず簡単に紹介し、反応が良ければ少し手を入れてレシピ公開したいと思います。
動画は字幕付きです。詳細は以下の通りです。
経緯
先週の大会で、ロボットに負荷がかかると再起動する不具合が発生してしまいました。
電圧降下が疑わしい為、原因究明すべく簡易ロガーを手持ちの品でサクッと製作しました。
構成
M5StickC+と分圧回路だけの単純構成でレシピ掲載時に図解するつもりです。
制御回路の3.3Vが黄色、受信機の5.0V(分圧比1:1)が白色、バッテリーの14.4V(同1:6)が赤色の配線で、熱収縮チューブ内などに分圧用の抵抗が仕込まれています。
選定理由
以下の理由でM5StickC+を採用しました。
- 採用実績があり、手持ち品があった為
- ロボットのバッテリー電圧降下時の過渡応答が見たかったので、独立してバッテリーを内蔵していること
- LCD/ボタンを標準搭載し、モード変更やログ取得状況が分かりやすいこと
- IMUを標準搭載し、将来的にジャイロ・加速度の取得も出来る見込みがあること
購入先
自分はスイッチサイエンスさんから購入しましたが、価格変更の為か10/2現在ではAmazonマケプレのスイッチサイエンスの方が安いので貼っておきます。
M5StickC++発売の噂もありますが、時期も不明確ですしガンガン新発売されるので気にしない方が良いと思います(EOFになったM5StickCを遠い目で見ながら)
操作方法
メインボタンで測定開始/終了。事前設定時間でも強制終了。
測定開始前にサイドボタンを押すとLCD表示ON/OFF(ただし処理時間に大差無かった)。
起動時にサイドボタンを押していると、サーバモードとして起動しWiFiに接続する。
サーバモード時には同じWiFiに接続している別デバイスから、ブラウザ経由でアクセスすると設定画面が開ける。その画面からcsvファイルのダウンロードやグラフの表示が可能。
この辺の詳細はソースコードとHTMLファイル整理しレシピ公開した時にでも。
採用技術
VSCode/PlatformIOと、ライブラリはESP Async WebServerとArduinoJsonを使用しています。Jsonは設定データに使ってます。
グラフ表示はD3を使用したkishidaさんの記事を参考にさせて頂きましたが、Chart.jsやbillboard.jsが便利らしいので比較・検討中。(フロントエンド難しいね)
データ取得例
通常は14.4V 4200mAhのバッテリーを使用していますが、あえて7.2V 2800mAhを使って、重量物持ち上げてストールさせた時のグラフがこちら。
ロボットの動作内容としては、脚と腕少し動かす→投げる→もう一度投げる。
黄色い3.3Vのグラフが(メモリ無いけど)ずっと安定しているので、ELDCが機能している様子で基板電源は安定。(なので再起動は電圧降下が原因でないと判断)
試合結果
上記試験で電源系は再起動の原因では無さそうなのは推定できたものの、自宅環境では再起動を再現できず色々と他の原因を推測し小細工して次の大会に参加しました。
朝の試運転では再起動発生せず旧型の制御基板使用しない判断をしましたが、試合を重ねるごとに再起動頻度が上がってしまいトーナメント代表決定戦で負けてしまいました。
賞品はジュラルミン板と丸棒を頂きました!コロナ禍で準備大変な中、開催頂きありがとうございました。ちなみに、ネット中継してたので以下から動画見れます。
今後について
前述の通り、反応(とやる気)次第でレシピ公開しようと思っています。
妄想としては少し一般化して、電圧以外も前提としたアナログ値ロガーとして再構成しつつ(設定項目を多数追加)、内蔵IMUのデータや受信機のSBUS信号も取得してロギングしようかなと思っています。
上記の内容を10/3までアンケート取ってますので良ければご回答下さいませ。期限過ぎてもイイねしとけば喜ぶのでお願いします。
かわロボ用ロガーがあったら何を測定したい?
— sin1 (@sin1west) 2022年10月2日
その他やロガー詳細はリプ欄で。