Electronic – Connecting USB-powered Beaglebone to car’s CAN bus through OBD connector using common signal ground

beaglebone blackcangroundlevel-shiftingusb

I want to connect my Beaglebone Black, powered from USB port on my laptop, to OBD connector present in my Ford in order to see CAN traffic with can-utils.

Beaglebone operates on 3.3V, that's why I am using a logic level converter to interface to MCP2551 CAN transceiver operating on 5V.

I am using pins P9_26 and P9_24 from Beaglebone's header P9.

enter image description here


My DB9 to OBDII cable has the following pinout:
DB9_to_OBD

Questions:

  1. Is the connection presented on the schematic correct?

  2. Can I connect the Signal Ground from my Ford's OBDII connector with GND from Beaglebone (which I think equals GND from USB) safely?

  3. Is connecting grounds of these two separate circuits (car <-> Beaglebone/laptop) necessary?

  4. If the grounds are not connected – can it pose any danger to the car's transceiver/CAN computer or USB port in laptop?

Best Answer

You would think because of the differential nature of CAN and the fact that you are not drawing power from the OBD port, it would all work fine without the common ground reference.

But, you are then at the mercy of your 2 floating grounds. The CAN transcivier will have an upper limit of the common mode voltage it can tolerate. If at some point the disparity between your floating grounds is large enough to exceed that, you can damage your transcievers. This is not something you can control: so yes use a common ground.

Edit 1:

If however you MUST use floating grounds then consider other (more expensive) transeviers with isolated inputs.