Skip to content

[T ELEC 0] ODrive

yudada31 edited this page Apr 3, 2019 · 36 revisions

ODrive

Objective:

We chose to use brushless motors that are cheap and powerful but it is difficult to control them. That's why we need an ODrive which is a high performance motor control. It can also control the encoders.

Requirements:

  • We used the ODrive Version 3.5 48V. You can visit the official website for more information about the board ans its features.
  • You will also need a Stm32 to communicate with the ODrive.
  • And a CAN transceiver: the MCP2551.

ODrive

Steps:

Install ODrive Tool

The ODrive Tool is the accompanying PC program for the ODrive. It’s main purpose is to provide an interactive shell to control the device manually, as well as some supporting functions like firmware update.

We followed the instructions on the official ODrive documentation that you can find [here].(https://docs.odriverobotics.com/#downloading-and-installing-tools). Make sure that you follow the instructions correctly. The problem we encountered is that we had several python version installed. You need to only have the version specified.

CAN module

We chose to use CAN to communicate with the ODrive. The stm32 will send orders to the ODrive to controll the motors.

As ODrive is in opensource, most of the features are developed by the community. We used a firmware that implemented a simple CAN protocol. You can find the project here.

Flash the firmware that implemented the CAN module

Once you downloaded the project, you have to generate the .elf file to flash it on the ODrive. To do that, simply type make in the folder that contains the Makefile. We encountered several problems for this task, the main one is that we had to install tup and libfuse-dev. To install tup, you can check this tutorial.

And to make things easier we bought a ST-link to flash the firmware. Just connect it to the ODrive and the computer and follow the instructions of the official documentation.

Communication between ODrive and stm32 with CAN

Explain code once it works

Conclusion:

Tips:

References:

Clone this wiki locally