E-Stops and ODrive

Hello fellow ODrivers,

Long time reader, first time poster.

I am using a 4 ODrive S1 controllers along with two encoders - an incremental encoder and an RS485 absolute encoder - per motor. I also have a regen clamp to power all of my controllers.

My comms connection scheme looks something like this:

[RPi4] -->[USB ISO] → [USB-to-CAN adapter] → [ODrive 1] -->[ODrive 2] -->[ODrive 3] -->[ODrive 4]

I’d like to incorporate an E-Stop along with a safety relay for shutting off my motors in the case an emergency occurs.

I was thinking I could just remove power from the ODrive’s DC_IN terminal but I fear that this will also power down the 5V output pin that goes to the absolute encoder resulting in a loss of position. Is this a correct assumption?

Alternatively, I could use a contactor to remove power from the 3-phases of my motor. I would also then need to have some way reroute the energy in the motor’s windings some how. Any good ideas on how to do this?

Thank you in advance,

Emi

Hi! A few options here:

  1. Usually a contactor on the DC bus is how I’ve seen safety rated e-stop approached. The S1’s logic domain (including encoder) can be powered over the I/O header or CAN connector on the 12V IN line – note this is referenced to DC-, and has a pretty tight voltage tolerance range of 10-13V or so. Note to also be careful to have a precharge/antispark circuit with the contactor.
  2. Alternatively, if you configure a GPIO pin as an endstop, the ODrive will exit into idle once pressed, and refuse to re-enter closed loop until it’s no longer pressed. This isn’t a true STO method, and I wouldn’t rely on it for a safety critical application, but it’s a pretty straightforward method.

Generally I’d recommend against three-phase contactors for the reason you enumerated – it gets iffy with the inductive kick.

Hey solomondg,

Thanks for quick the response. Are there any COTS precharge/antispark circuits you recommend?