1
\$\begingroup\$

I have built a prototype to measure two distances using two time of fligth (TOF) sensors based on VL53L0X IC (from this manufacturer) which are connected to an Arduino board. Due to the environment and other devices I need to control (with analog signals), I want to have galvanic isolation for the I2C bus, which is performed by an ADUM1250 IC. On the other hand, in order to initialize both TOF sensors, XSHUT pins need to be alternatively started so that one of the IDs is changed (done like this page). These XSHUT pins are isolated by two separated ADUM1201 ICs, which only use one of its channels.

Regarding the pull-up resitors for the I2C bus:

  1. If I have interpreted the schematic correctly, each TOF sensor has a 4.7k pull-up resistor in both SDA/SCL wires. As they are in parallel, this will make a total pull-up resistance of 2.35k. Screenshot of the breakout board schematic:

    enter image description here

  2. ADUM1250 has no pull-ups (default evaluation board, user guide here). I have just later welded the IC and some connectors, but no resistors welded. Screenshot of the original board:

enter image description here

  1. From the PLC side (based in Arduino), the manufacturer says: the pull-up configuration is established by default in I2C bus

This is the block diagram of the full setup, which works fine as I am getting coherent distance measurements in Arduino for both sensors:

enter image description here

My questions are:

  1. Is this galvanic isolation setup correct?
  2. As the DC/DC converter has isolation, could I use the same power supply for both sides of the isolation? Right now I am using two independent power supplies.
  3. Sometimes, if I touch with my hands one of the sensors to move it, the sensor gets in error. This error goes away if I re-upload the Arduino progam (which re-initializes the sensor). How is this situation possible and how can it be prevented?.

Note that I am using two protoboards to connect all the devices. This for example causes (I thing) the sensors to receive 4.8 V instead of the full 5 V from the DC/DC converter. The ADUM1250 is operating in an evaluation board. This photo shows the setup:

enter image description here

\$\endgroup\$
6
  • 1
    \$\begingroup\$ (b) Please edit the question to expand on "the sensor gets in error". What exactly does that mean? (c) No I2C pull-ups are shown. Are they present (if so, where?) Are you using pre-built TOF modules which have I2C pull-ups onboard? If so, please link to those specific modules and ideally add their schematic. TY \$\endgroup\$ Commented 11 hours ago
  • 1
    \$\begingroup\$ (d) I really don't like the sound of "I am using a protoboard to connect all the devices. This for example causes the sensors to receive 4.8 V instead of the full 5 V from the DC/DC converter." I would be investigating that further, without blaming the protoboard yet (is that the same meaning as "solderless breadboard" for you? For me it means something different, but I know other people use those terms interchangeably.) || It would take a significant resistance to drop 0.2V with the minimal current that those sensors are likely to require :( \$\endgroup\$ Commented 11 hours ago
  • 1
    \$\begingroup\$ @SamGibson Let me gather the information about the pull-ups. Sorry about the protoboard, I meant am using a several breadboards in order to organize all the cabling. Yes, I am going to upload a photo. \$\endgroup\$ Commented 11 hours ago
  • 1
    \$\begingroup\$ Hi @bardulia - OK, I'll pause here, as I would want to see that added info before I can understand enough to think about it some more. Just one more point for now: Can you consider making a minimum configuration and starting from there - e.g. no isolation, just one TOF sensor - does that sensor still "get in error" (meaning still yet to be defined)? If so, then troubleshooting is much simpler. Same for the troubleshooting of the voltage drop on the 5V supply to the sensors. || Having 3 questions posted together is risky - IMHO point 3 might be better treated as a separate issue. \$\endgroup\$ Commented 11 hours ago
  • 2
    \$\begingroup\$ with wiring like that, potential i2c crosstalk problems (not saying you have them) would present in an intermittent / poorly reproducible way - can frustrate troubleshooting IMHO \$\endgroup\$ Commented 11 hours ago

2 Answers 2

3
\$\begingroup\$
  1. No, because based on block diagram, your DO pins are referenced to GND2 and don't pass galvanic isolation and go to ADUM1201 which are GND1 referenced.

  2. Yes you could use one supply if DCDC converter isolates

  3. It could be anything but it might be due to #1. Not enough details but I2C buses need proper pull-ups that are not too weak or too strong, and they are needed on all bus segments, so your system might have no pull ups at all or multiple sets of pull-ups if each board provides them.

\$\endgroup\$
3
  • \$\begingroup\$ Regarding point 1, let me check the block diagram as I may have drawn wrong the GND and VCC connections of the XSHUT pins. Regarding the point 2, ok. Regarding point 3, I am checking the pull-ups, but I can say right now that yes, each board has ones. \$\endgroup\$ Commented 11 hours ago
  • \$\begingroup\$ I have just updated the block diagram, now it is exactly as the real setup. Regarding the DC/DC converter, I am using this one tracopower.com/tmdc20-datasheet. It says it has an isolation of 2400V, pretty above my needs (240V AC), It is ok for this application, right?. Finally, I have just updated the post with the pull-up resistors, if you could check, it would be great. \$\endgroup\$ Commented 7 hours ago
  • 1
    \$\begingroup\$ @bardulia The isolation looks good. But you are calculating only pull-ups to one supply. There are pull-ups to other supply as well on the other side of the FET. R5 and R6 count too. \$\endgroup\$ Commented 6 hours ago
2
\$\begingroup\$

The isolation scheme is basically fine, just make sure the two grounds stay isolated (no sneaky extra connections) and that you have I²C pull-ups on both sides as required by the ADuM1250 datasheet.

About the supplies: if the DC/DC is isolated, you can safely use a single 24 V supply for both the PLC/Arduino side and the DC/DC. The isolation is provided by the DC/DC transformer, not by using two separate 24 V bricks.

Touching the sensor and getting errors is almost surely ESD / common-mode noise on a floating isolated domain: the spike upsets the VL53L0X or the ADuM, and the sensor loses its state until you re-run the initialisation. To mitigate: move away from the breadboard to a PCB, add good decoupling caps close to each sensor, possibly small series resistors on SDA/SCL, and add firmware recovery (if the sensor stops responding, toggle XSHUT and re-init it). The 4.8 V instead of 5 V is perfectly fine.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ Hi @Alinik - Just one point: I respectfully disagree that 4.8V is OK, if it's 4.8V at the end of what should be a wire, and it's 5V at the other end. Dropping 0.2V at say (guess) 20mA is 10 Ohms. That suggests connections that we can't rely on e.g. are they intermittent? Is another wire an even higher resistance? Years of troubleshooting experience has taught me not to ignore measurements which don't make sense, even if they don't seem related to the reported problem yet. Too often, I later discovered that the clues for a reported problem were in the measurements that other people ignored :) \$\endgroup\$ Commented 10 hours ago
  • 3
    \$\begingroup\$ This is a bit like Chesterton's Fence - 4.8 V would be OK if that's what you intended to supply, or understood why it was that voltage. \$\endgroup\$ Commented 10 hours ago
  • \$\begingroup\$ Alinik, I really like your idea about re-running the initialization function, thanks. I have just also updated the post with the pull-up resistors present in the setup, if you could check it would be great. \$\endgroup\$ Commented 6 hours ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.