GM6020のユーザーガイド(ドキュメント)
DJI RoboMaster GM6020 ブラシレスDCモーターをESP32から出すPWMで速度制御する。
GM6020では、CANまたは、PWMで制御できる。
CANとPWMの比較
外部のセンサはなしで、それぞれのできること
CAN | PWM | |
---|---|---|
設定 | 位置、速度、電流、電圧 | 速度、位置 |
取得 | 位置、速度、電流、温度 | なし |
速度制御のみする場合、CANでもできるが、PWMの方が楽なのでPWMで行った。
PWM制御するときの注意点
PWM制御のデフォルトでは、位置制御モードで、速度制御モードではない
RoboMaster Assistantで設定することで、速度制御モードと位置制御モード(デフォルト)を切り替えることができる。
PWMで位置制御したい場合は、RoboMaster Asssitantで設定を変える必要はない。
RoboMaster Assistantの使い方
ユーザーガイドには、USBシリアルコンバーターを繋ぐと書いてあり、DJI公式が別売りで販売しているものかと思ったが、そいういうわけではなく、市販品を使えばよい。マイコンで自作することも多分できる。今回、どのUSBシリアルコンバーターを使ったのかわからないので、入ってた箱の画像も載せておく。
配線は3本繋ぐだけ。
GM6020 | シリアルコンバーター |
---|---|
GND(黒) | GND |
TX(灰) | TX |
RX(白) | RX |
USBシリアルコンバーターの箱 | USBシリアルコンバーター |
---|---|
USBをパソコンに挿す。
RoboMaster Assistantをインストールして、起動する。
RoboMaster Assistantのダウンロードリンク
赤い文字が点滅するがそれはクリックしない。
24V電源入れる、USBシリアルコンバーターをパソコンに指す。ESCとモーターは繋がれた状態で、CANケーブルはつなぐ必要ない。
1回認識したら、別のESCに変えても認識を待たずにパラメーターを書き込める。
USBシリアルコンバーターをパソコンのUSBに挿す。数秒後に自動的に認識されて、デバイスを選択画面になる。
ESC GM6020 をクリックする。
PWMモードの設定
速度制御・位置制御を変える時はこの項目を変える
最後に右下の「設定」を押して保存する。
パソコンとモタドラがどのようにシリアル通信しているか、ロジックアナライザで見たかった
実験
GM6020 PWMで動かせた🥳めっちゃ遅いけどトルクは強い #ロボコン pic.twitter.com/AAyFvTJxAZ
— Raptor//ラプター@ロボコン (@Raptor_zip) February 19, 2024
用意したもの
- GM6020
- PWMケーブル(GM6020付属)
- XT30電源ケーブル(GM6020付属)
- パソコン
- マイコン(ESP32)
- ジャンパー
-
安定化電源
24Vの電源がすぐ近くなかったので、18Vの安定化電源に繋いで実験した。
コード
#include <ESP32Servo.h>
#define ESC_PIN 15 //ESCへの出力ピン
Servo esc; //Servoオブジェクトを作成する.今回はESCにPWM信号を送るので,`esc`と命名している.
void setup() {
Serial.begin(115200);
Serial.println("Program begin...");
esc.attach(ESC_PIN); //ESCへの出力ピンをアタッチする
Serial.println("最大値2000にする");
esc.writeMicroseconds(2000); //最小のパルス幅を指示する
delay(2000);
Serial.println("最小値2000にする");
esc.writeMicroseconds(1000); //最小のパルス幅を指示する
delay(2000);
}
void loop() {
esc.writeMicroseconds(2000); //正転 MAX
delay(2000);
esc.writeMicroseconds(1000); //逆転 MAX
delay(2000);
esc.writeMicroseconds(1500); //止まる
delay(2000);
}
解説
Arduinoで動かすときはインクルードするライブラリをServo.hにすれば多分動く
ESP32Servo.hはライブラリマネージャーからesp32 servoで検索して、見つけた
キャリブレーションは、一般的なESCでブラシレスモーターと同じプログラムで、最大(2000)→最小(1000)の順に設定する。
正転逆転の指定は特殊で、1000~1500までは逆転で、1500で停止、1500~2000までは正転である。
起動すると、ステータスLEDが動画のように、緑色にゆっくり点滅する。これは、PWM通信は正常であることを意味する。
位置制御した結果
ボールを射出する競技で筒の仰角調整にGM6020を使いました。PIDゲインを細かく調整しましたが、振動してしまって、まともに動きませんでした。
GM6020を位置制御するために購入するのはおすすめしません。
そもそもロボコンだと使い道がほぼ0です。