0
\$\begingroup\$

I have a module that uses this ADC powered with 3.3V (MCP3422): Datasheet

Now I would like to communicate with it over I2C using an Arduino Mega. The problem is that the Arduino's I2C is operating on 5V level and the I2C bus of the ADC (can handle up to 5V supply but is only supplied with 3.3V) is on 3.3V level only.

Now I guess in order to ensure a stable communication I should use an I2C Bus Voltage-Level Translator like e.g. the PCA9306: Datasheet

Now I would like to power this module I have over the V_dd pin of the Arduino. As far as I know it is not recommended to draw more than 20mA over an Arduino pin. My board so far uses about 9mA of current. Thus, about 10mA are left to power the level-translator. I checked the datasheet of the level-translator and im confused how much current it draws. On page 4 of the datasheet it says 64mA 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.

Question:

  1. What is the supply current / current draw of the level-translator?
  2. Do you have any other recommendations for connecting the 3.3V and 5V I2C bus domain in my case? Maybe there are more convenient methods that do not require that much current.
\$\endgroup\$
3
\$\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, than 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\$
  • \$\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\$ – Henry Jan 26 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\$ – Chris Stratton Jan 26 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\$ – Henry Jan 27 at 18:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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