0
\$\begingroup\$

I have a module that uses an ADC powered with 3.3 V (MCP3422). I would like to communicate with it over I2C using an Arduino Mega.

The problem is that the Arduino's I2C is operating at 5 V and the I2C bus of the ADC (can handle up to 5 V supply but is only supplied with 3.3 V) is at 3.3 V.

I guess in order to ensure a stable communication I should use an I2C bus voltage-level translator like e.g. the PCA9306.

I would like to power this module I have usung the V_dd pin of the Arduino. As far as I know it is not recommended to draw more than 20 mA over an Arduino pin. My board so far uses about 9 mA of current, so about 10 mA are left to power the level-translator.

I checked the datasheet of the level-translator and I'm confused about how much current it draws. On page 4 of the datasheet it says 64 mA for Pass switch current. Is that the value im looking for? I guess the current would also depend on the pull-up resistors I use.

Anyway, about 64 mA would be way too much current draw for my application. However, it also says:

Standard-mode I2C devices only specify 3 mA in a generic I2C system where standard-mode devices and multiple masters are possible.

  1. What is the supply current/current draw of the level translator?
  2. Do you have any other recommendations for connecting the 3.3 V and 5 V I2C bus domain in my case? Maybe there are more convenient methods that do not require that much current.
\$\endgroup\$
0

1 Answer 1

4
\$\begingroup\$

1: current draw is very small, basically just what's needed to run the I2C bus. look at the pull-up resistors, that's pretty much it. In any case the 20mA limit does not apply to the VCC pins on arduino, they can provide more current.

2: there's the Adafruit level converter, it's basically the same thing done using discrete low-power MOSFETS, unlike the TI chip I don't think it can operate below 3.3V, but you don't need that feature.

https://www.adafruit.com/product/757

This is the NXP application note behind the Adafruit logic level converter. https://cdn-shop.adafruit.com/datasheets/AN10441.pdf

\$\endgroup\$
3
  • \$\begingroup\$ ok thank you for pointing that out. So you can confirm that the current draw of the PCA9306 that I posted in my question will not be higher than 10mA? (I would like to know more precise values so could you tell me the page of the sheet i can check that?). Also If I can draw more current thru the Arduino I would like to know :) \$\endgroup\$
    – H123321
    Commented Jan 26, 2019 at 23:17
  • 1
    \$\begingroup\$ The information you seek cannot be determined from the PCA9306 data sheet, because the primary driver is the loads and external components, in this case the pull-up resistor(s) to the 3v3 rail your a concerned about. \$\endgroup\$ Commented Jan 26, 2019 at 23:35
  • 1
    \$\begingroup\$ @ChrisStratton: I plan to use 5.1kOhm PullUps on the 3.3V side and the 5V side. That should bring the currrent consumption well down under 10mA if I'm not mistaken. Can you agree with me on this? (If my calculations are correct it should be about 3.5mA). Would be happy if someone could confirm this. :) \$\endgroup\$
    – H123321
    Commented Jan 27, 2019 at 18:57

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.