ODrive application

Hi everyone!

I am working on a screw extruder , and I need to control the torque and speed of a BLDC, alongside a lot of temperature zones.
I am working on the schematic for the temperature controller, that will communicate with ODrive via I2C, and with the computer via USB.
I don’t know yet how torque and speed will be regulated, because the extruder is still under construction, but I will surely need both of them.

Maybe, in a future version of it I will integrate the functionalities of the temperature controller inside ODrive (or vice versa), using a single controller.
First question that comes to my mind is: Why does ODrive use a cortex-m4? Is it for the hardware accelerated FPU, or the CAN peripheral? Or maybe the higher clock frequency is necessary?

Then, if I go on this project I will likely use a Microchip controller instead of an ST, because I already buy other components from Microchip. (I would use SAM from the old Atmel)
Maybe, using a different motor driver, for higher current limit. And maybe supporting only one motor.

I understand that it would be a device made for my very specific application, but I am interested in your opinion about that project, do anyone have any suggestion or opinion about it? How do you see the porting of ODrive to a different micro? can it have any kind of good effect on the main ODrive project?


If that is one off device , and you want to build it quick, I would look into https://www.tinkerforge.com/ a great open source ecosystem of components for automation

If you need a precise temp input you could for example this https://www.tinkerforge.com/en/shop/bricklets/sensors/ptc-v2-bricklet.html

They have unified python library for all the bricks and you could control both odrive and temp from one python script.

I highly recommend CAN for this application, not I2C.

This particular chip has the appropriate number of motor control timer registers, specifically designed for this application.

Very difficult right now, because it’s too tightly integrated. Just use it as a dedicated servo driver and send it CAN messages. CAN Interface Available for Testing

Thanks Maciej and Wetmelon for yor answers,

Why? Is there anything wrong with I2C?
Another question: can I send step-dir commands and dialogue with Odrive via USB (or CAN) at the same time?

What are those? I never heard of them. how do they differs from normal timer registers? How many of them are used in ODrive?
I am sorry for the lot of question, but I am too new to Odrive to understand this from the code alone.

One more question: do you plan to do an ODrive single-motor in the future?

It should work, but it’s not really designed for off-board communication. You have a need to attach multiple devices to one robust bus that goes off-PCB. That’s what CAN is designed for.


I’m not sure about the specifics but they have some features that work well for motor control. Center-aligned PWM, and some sort of direct shut-off capability.

ODrive v4 is being designed, and will be a single-motor version.

Thank you very much for your answers, they have been really helpful