What interface is best?

Hello Community!

I’m looking at how to best use two oDrives to run a Hangprinter (cable driven 3d printer with four motors that wind cables).

I’ve previously used four Mechaduinos controlled by step/dir plus a few commands on the i2c bus. I’ve never had problems with step/dir, but I want to know if I’m missing out on something.

I’ve always heard that step/dir is primitive and fragile. What exactly are the drawbacks of step/dir? What would be a better alternative?

I need fast and accurate movement, following weird non-linear trajectories very closely. I’m curious to hear about your favourite interfaces since I have no experience with anything other than step/dir (and that one seems to be no expert’s favourite). I have a vauge feeling that CAN bus is many experts’ favourite, but I don’t know what advantages it could give me.

I’m free to change the master microcontroller’s firmware, or control the oDrives directly from a laptop, or even buffer trajectories on the oDrive and broadcast a timing tick from a master microcontroller. Don’t hesitate to suggest things that requires changing the Hangprinter’s control architecture or doing some programming on the oDrive firmware if it might give significant advantages.

Presently, I think the best way to interface with a central motion controller (Duet, etc) is with step/dir for the primary motion control, and UART for secondary commands or feedback. The only piece of the puzzle needed for that is to add the UART commands on the side of the motion controller. I know there is some plans in the community to get this working with the Duet, so feel free to join that bandwagon.

We plan to do buffered motion over CAN in the future with a synchronizing scheme (GPIO or timestamped CAN message): in the future. This is not implemented yet.

1 Like

I would like to use my existing motion controller to command Odrive via PWM and Direction with the Odrive in Torque (current) mode. Is this doable? I want my PID’s torque limit to limit the Odrive output current.

BTW, the most common interface, by far is the analog +/-10v. All the big guys still support this, along with CAN, EtherCAT, etc.

The Odrive has potential to be a retrofit option but it would need this analog command capability to be compatible with older controllers.