Arduino UNO R3 I2C connection to 5.5V  - Page 1
Forum section: electronics / general

author: Sariel
author_rank: Regular Contributor
timestamp: December 07, 2023, 10:43:46 am
content: Hey everyone,I'm planning to employ an Arduino R3 (powered via USB) to manage multiple DACs (powered at 5.5V) through I2C lines.I'm considering connecting the pull-up resistors to 5.5V.Can the Arduino effectively handle I2C communication under these conditions with 5.5V instead of the standard 5V?Appreciate your insights!

author: woofy
author_rank: Frequent Contributor
timestamp: December 07, 2023, 10:54:42 am
content: You will probably be ok but its getting very close to foward biasing the input protection diodes in the processor.I personally would pull up to the UNO's 5v supply, your 5.5v DAC's will be perfectly happy with that.

author: Ian.M
author_rank: Super Contributor
timestamp: December 07, 2023, 11:01:40 am
content: That's rather risky. If USB Vbus is on the low side, the ATmega328P's Vcc could be over a volt lower than the DAC power, forward biasing the I/O pins upper protection diodes. The abs. max permitted overvoltage on any I/O pin is only 0.5V above Vcc, and once protection diode current starts to flow on any analog capable pin (which includes the UNO R3 I2C pins) the MCU may misbehave.I'm not aware of any I2C device rated for 5.5V operation that wouldn't work properly with 5V pullups so do it that way. If you *NEED* the pullups to be on the DAC board and don't have a local 5V rail, calculate a potential divider to give the desired pullup resistance as its Thevenin resistance, and a Thevenin voltage of 5V.

author: SuzyC
author_rank: Frequent Contributor
timestamp: December 07, 2023, 11:15:33 am
content: A simple solution is to use two pairs of back to back Si small sig diodes(1N4148), one B2B pair each on the UNO's Clk and Data. The .6-.7V drop will make a near perfect match.

author: Ian.M
author_rank: Super Contributor
timestamp: December 07, 2023, 11:24:29 am
content: Antiparallel diode pairs in series with SCL and SDA would compromise the I2C bus logic low threshold, making it more sensitive to noise. If you must use diodes, put them in series with the pullups, however resistor dividers for the pullup are cheaper!

author: Sariel
author_rank: Regular Contributor
timestamp: December 07, 2023, 01:21:42 pm
content: Quote from: woofy on December 07, 2023, 10:54:42 amThank you. The most straightforward approach for me would be to activate the R3 by utilizing the external power supply set to 5.5V.I am exclusively employing the R3 device to configure certain DACs with EEPROM, aiming to establish various offset voltages on my test board.

author: Ian.M
author_rank: Super Contributor
timestamp: December 07, 2023, 02:03:39 pm
content: Supplying the Arduino with 5.5V Vcc via its 5V pin is *NOT* recommended. The LMV358 OPAMP used for Vin/Vbus power switching control is only rated for abs. max. 5.5V operation, so even fractional overvoltage on your +5.5V rail could cause it to malfunction, possibly turning on the power gating MOSFET, backfeeding 5.5V to your PC's USB port. Worst case, that could kill your PC if you switch off, sleep or hibernate with the Arduino connected.Also 5.5V Vcc is right at the top end of the ATmega328P's operating voltage range with no margin whatsoever, so again, overvoltage could cause a malfunction.Will it work? Probably, but the risk of serious damage or malfunction is too high for my liking.Instead, as I said earlier, if you haven't got 5V on the DAC board, use potential dividers in place of the pullups. 4K7 upper resistor and 47K lower resistor, from 5.5V give an equivalent pullup voltage of 5.0V, and equivalent pullup resistance of 4.27K. The same approach can be used for any other desired pullup resistance, by using an upper resistor of 10% greater than the desired resistance, and a lower resistor of ten times the upper resistor.

author: HwAoRrDk
author_rank: Super Contributor
timestamp: December 07, 2023, 05:57:36 pm
content: Assuming the SDA & SCL pins on your DACs are true open-drain (as they should be for I2C) then you should connect your pull-ups to the lower of the two supplies, 5.0V. Because the slave devices are only ever driving the bus by pulling the lines down to ground, it doesn't really matter that the voltage they're dealing with doesn't equal their VCC, so long as it: a) doesn't exceed their own VCC, and; b) is not too low and unable to cross their logic high input threshold (VIH).