ODriveは、オープンソースのモーションコントロールソリューションODriveをベースにM5Stackが立ち上げた高性能サーボモーター駆動モジュールです。三相サーボモータ1台の制御をサポートし、ピーク駆動電流は5Aに達します。エンコーダ信号インタフェースを備え、高速モータ制御が可能で、高精度なモーションコントロールの位置決めを実現します。UART通信インターフェースを使用し、公式ODrive設定ツールとプロトコルに対応しています(ホストコンピューターツールを通して異なるモーターモーションモードを設定し、モーターをよりスムーズに、安定的に動作させることも可能です)。
単一モジュール版
適合するモーター版
リソース | パラメータ |
---|---|
オプションのサーボモーター仕様 | フェーズ:3相、電圧: DC24V、定格電流: 4A、定格電力: 62W、定格回転数: 3000rpm |
モータドライバチップ | DRV83018 |
最大駆動電流 | 5A |
Interface Type | 3.96-2P (power supply), 3.96-3P (motor), 2.54-5P (encoder) |
入力電源 | DC12~24V |
製品重量 | 22.5g |
梱包重量 | 42.3g |
製品サイズ | 54.2*54.2***13.2mm |
梱包サイズ | 95 *65 *25mm |
M5Core1 | GPIO13 | GPIO5 | 5V | GND |
---|---|---|---|---|
ODrive | RX | TX | 5V | GND |
備考 この場合、ODriveモジュールはサーボモーターの高速かつ正確な回転を制御するために使用されます。ボタンCを押してキャリブレーションを行い(この間、モーター軸に触れないでください)、ボタンAを長押し、短押ししてモーター回転を制御します。注)本実施例のモータパラメータ設定は、M5 Odriveキットに適合したモータ機種にのみ適用されます。それ以外のモータを駆動する場合は、使用するモータに合わせてパラメータを設定してください。
//Create an instance, specify the serial port used
ODrive odrive(Serial1);
// Commands
void setPosition(float position);
void setPosition(float position, float velocity_feedforward);
void setPosition(float position, float velocity_feedforward, float current_feedforward);
void setVelocity(float velocity);
void setVelocity(float velocity, float current_feedforward);
void setCurrent(float current);
void setGain(float pos, float vel, float vel_integrator);
void setControlMode(int32_t mode);
void setControlInputPos(float pos);
void trapezoidalMove(float position);
// Getters
float getVelocity();
float getVbusVoltage();
int32_t getEncoderShadowCount();
float getEncoderPosEstimate();
float getMotorTemp();
float getPhaseCurrent();
float getBusCurrent();
bool checkError(int32_t* axis=NULL, int32_t* motor_thermistor=NULL, int32_t* encoder=NULL, int32_t* controller=NULL);
// General params
// State helper
bool runState(int32_t requested_state, uint32_t timeout);
// device will reboot
void eraseConfig();
void reboot();
void saveConfig();
void setDefaultConfig();
float readFloat();
int32_t readInt();
void writeToDeive(const char* data);
void writeConfig(const char* config, float_t value);
void writeConfig(const char* config, int32_t value);
int32_t readConfigInt(const char*config);
float readConfigFloat(const char*config);
ODriveTool は、ODrive の設定およびデバッグ用ソフトウェアで、これを通してモーターのパラメーターを設定することができます。このチュートリアルでは、Linux
プラットフォームでのodrivetoolのインストールと基本的な使い方を説明します。
python3
.pip3 install odrive==0.5.1.post0
~/.local/bin
to the system environment variable, execute the following command, and insert export PATH=$PATH:~/.local/bin
to the end of the text.vim ~/.bashrc
odrivetool
from the command line to run the tool. Connect the ODrive module to the computer and wait for odrivetool to recognize it. After successful connection, enter odrv0.vbus_voltage
to test and obtain the power supply voltage of the drive board.$odrivertool
ODrive control utility v0.5.1.post0
Website: https://odriverobotics.com/
Docs: https://docs.odriverobotics.com/
Forums: https://discourse.odriverobotics.com/
Discord: https://discord.gg/k3ZZ3mS
Github: https://github.com/madcowswe/ODrive/
Please connect your ODrive.
You can also type help() or quit().
Connected to ODrive 306A396A3235 as odrv0
In [1]: odrv0.vbus_voltage
//配置电机电流限制
odrv0.axis0.motor.config.current_lim [A].
//配置电机转速限制值
odrv0.axis0.controller.config.vel_limit
//配置功率耗散电阻的电阻值
odrv0.config.brake_resistance
//保存配置
odrv0.save_configuration()
詳しくは、 Odrive公式ドキュメントはこちら をご覧ください。