Isolating motor's power from controller/sensors power demands

Has anyone used an Optoisolator SparkFun Opto-isolator Breakout - BOB-09118 - SparkFun Electronics to separate the power demand of motors from the rest of their project’s components? Or does the oDrive board already do this?

I’ve seen a few robotic projects get into difficulties when the current draw from the motors caused fluctuation in the battery output. This isolator is intended to isolate the high current demands from the more sensitive components.

This should be used, yes. See the Ground Loops page. Ground Loops — ODrive Pro Documentation 0.6.1 documentation

ODrive Pro has isolated GPIO for this reason :slight_smile:

My concern is that an optoisolator is a linear one-way communication, but Rx/Tx is two-way, would an optocoupler block the bi-directional signal?

If it is oka to use, this is how I’d wire it: The diagram below is from the oDrive documentation on Ground-loops. It just shows the block-schematic arrangement, not the actual wiring connections.

I’ll be using the optoisolator between the Rx Tx wires which go between Arduino and the oDrive.

This is the optoisolator breakout-board I have. Can anyone confirm if this is how it should be wired into the setup please?

Would it be appropriate to connect the Rx and TX wires to in1, in2 and Out1, Out2, the connect the Odrive’s 5v out and ground to the HV side, and the Arduino’s 5v out to NC (and Gnd to the Arduino’s Gnd)?

Just get a digital isolator that does TX/RX

@SG-O made a nice one for ODrive: GitHub - SG-O/Isolator: Tripple Isolator for two Step/Dir/En and one UART signal

Other people have used the ISO7762 breakout OSH Park ~

UART (Rx/Tx) is not bidirectional. Tx only outputs data. Rx only receives.
Device 1 Device 2
Tx =====> Rx
Rx <===== Tx

No data ever flows from Rx to Tx. This allows you to use a simple isolator. Connect the Tx output to the one input of the isolator. Connect the corresponding output of said isolator to the Rx input of the second device. Do the same in reverse for the second datapath.

You also have to take care where the isolators isolated sides get powered from. Do not connect the power connectors.

I would advise you not to use this optocoupler as its rated speed is very low. (Only 9.6 KBit/s). The The isolator in my design is rated for up to 25MBit/s.
I don’t sell any assembled boards but it is very easy to build it yourself. Any reputable PCB manufacturer can produce the circuit board. And then its only the isolator ICs and some capacitors to solder on.

The digital version definitely looks better option

Just to clarify what I mean by bi-directional. The Arduino sends TX signal to the oDrive’s RX, but the oDrive also sends response back from its TX to the Arduino’s RX. A one-channel opto-isolator would only carry one of these TX to RX signals because it only has one Led and receiver.

Your suggestion of using digital, would allow both TX/RX routes to transmit receive.