OTS Opto-Isolator for UART Ground Loop

Hi @Alexander_Jones,

I’m still here and have the 9 boards that I will soon be using for my mill project, although now I will be running a Teensy 4.1 to control the ODrives via your boards.

I’ve been a little tied up with a heart op, moving and changing my main job, but back on track now.

Will let you know how I get on.

1 Like

Hi @Alexander_Jones @danbowen95 @Wetmelon , I’m looking to implement the ISO7763 UART Ground Loop solution and was hoping to get some clarification/second set of eyes for the schematic necessary to use it correctly. Please see the following, any feedback is much appreciated!


Yep looks fine to me.

I now have this chip in and working on the breakout board above, they are awesome and brings such piece of mind when running the ODrive at higher currents.

I will make sure I get a USB isolator too, just in case I forget and plug both Teensy and ODrive into the same PC.

Here is a link to my video with it all working well: -

Thank you @Alexander_Jones :+1:


I’m really struggling to get my isolator boards to work (Using ISO7731 chips) - although they might not be the issue. Reading voltages is not reliable (see here) and when I go to calibrate the motors via the arduino example script, the motor often does nothing, but sometimes makes a screeching sound before calibrating, but never entering closed loop control.

Couple of questions:

  1. Am I missing something really simple…?
  2. Is it worth grounding the two separate PSUs?
  3. Is it worth getting ferrite rings for the cables - the motor cables are quite long at around 2m from odrive → motor
  4. Do I even need these isolator boards? Each of my motors pulls at max only around 2amps and since the teensy is powered by a separate source, it’s only the battery loop causing the ground loop, and this loop is physically quite small, see below. I’m scared to try without in case I fry something!

This is my schematic:

And this is what it looks like in real life (in amongst other components that aren’t connected)

edit: many typo’s - it’s been a long day

Looking at your setup, I would highly recommend this. :stuck_out_tongue:
CAN is much less hassle than Arduino in my experience. You can drive it straight from Python on a raspberry pi OR a windows or linux PC, and the ODrive CAN protocol is dead-simple.
Just one isolated CAN transciever is all you need, you can throw out the ISO7762 boards and use one of these: https://www.inno-maker.com/product/usb-can/
CAN is designed for this sort of thing and is MUCH more robust to noise than any UART.

Also, please buy some ferrite rings. :grin: They will help a lot.

One more point: Those brake resistors are a potential fire hazard if you mount them directly to the MDF. I would mount them on standoffs like you have done with the PCBs.

Another minor point: since you are using 24V ODrives with a 24V PSU, there’s very little headroom for the brake resistors to limit the voltage to a safe level for the ODrives. If you have an adjustment pot on your PSU, please turn it down to 22V or so. The 24V ODrives cannot handle anything above 24V.

1 Like

It looks like it’s time to bite the bullet and start looking into CAN! The guide @Wetmelon has suggested previously in this thread should be a good start. I’m only looking to move 5 motors using the trapizoidal trajectory control method so hopefully it shouldn’t be too tricky.

Yes, thanks for pointing this out!

Yes, much like implementing CAN from the get go, hinesight is a wonderful thing and I absolutley should have gone with the 56v versions. I’ve turned the output voltage from the PSU to 23v.