Skip to main content
2 of 2
added 402 characters in body
Cal-linux
  • 2.2k
  • 3
  • 25
  • 43

Electronically connecting/disconnecting device from a CAN bus

What I'm trying to do can be best described by the following circuit based on an electromechanical relay:

schematic

simulate this circuit – Schematic created using CircuitLab

However, is there a simpler solution not involving any mechanical/moving parts? [[ edit: as pointed out by Lundin's answer, switch bouncing and EMI from the coil could mean that this approach is entirely unsuitable ]]

The "complication" is that CAN is a broadcast bus with open-collector-like connections (not sure whether they are implemented as true open-collector) to emulate a "wired-AND" (any device can assert a logical 0). However, I'm not sure how exactly the physical "driver" (on the device's connection to the bus) is implemented, since it is differential, with states being: both lines at 2.5V for a differential voltage of 0V, and (CAN_H,CAN_L) = (5V,0V) for a differential voltage of 0V (not sure whether it is always like that, but this seems to be one common scheme).

Would a MOSFET transistor acting as a switch do the trick? What about a solid-state relay? Would the SSR be able to transmit the 1Mbps (Megabit per second) signal when in its "closed" state?

Reaction time (time it takes to connect or to disconnect the device) is not important. [[ edit: the intended notion was "disconnect latency"; as long as the actual disconnection happens fast, it does not matter that it takes 100ms from the time we decide that we want to disconnect to the time when we actually disconnect it ]]

Cal-linux
  • 2.2k
  • 3
  • 25
  • 43