My I2C Project does not work with my DIY power supply


I have built out a DIY arduino board on a breadboard. It makes use of several sensors, buttons, and a TLC5940 LED driver. It communicates with another arduino via I2C. When I power it from my FTDI USB cable everything works great. The sensors work and the I2C communication works great. When I disconnect the FTDI and then plug in my 12V power supply, that is regulated down to 5V, everything works EXCEPT for the I2C communication.

It is really baffling. The only difference I can find is that when it is powered by the FTDI cable my multimeter reads a base power supply of around 5.2V. When I test my custom regulated supply it reads an even 5V.

The reason I have setup a custom power supply is that I want to power the whole thing in the end from a 12V supply for the high power LEDS and then use a voltage regulator to supply a 5V power source to the arduino and sensors.

I know this seems like a long shot but does anyone have an idea of what may cause I2C communication to fail due to a different power supply?


Do the I2C signals have pullup resisters on them? I don't know if 5 vs 5.2 would make a difference if they were missing.

Both boards are connected to a common ground with the PS?

Thanks for your reply Crossroads. I think the ground is common but I do not have any pullup resistors on the I2C wires. I will try that and let you know.

No luck with the pullup resistors. I tried 1k and 2.2k.

I am trying to transfer simple data from one arduino to another via an Ethernet cable. Any ideas besides I2C? This communication challenge is my last hurdle on this project and I might have to find an alternate communication method.

I suppose XBee would be nice but they are a bit spendy.


If the power supply is the thing that makes the difference I would be looking more closely at that. Quite possibly some ripple or noise from it is confusing the receiving end. At both ends try some 0.1 uF capacitors on the +5V line. Plus maybe at the "distant" end a larger electrolytic to iron out drops caused by commanded actions consuming more power.

What length cable are you using? I think I2C has some limitations there, based on the capacitance of the cable, and I think Ethernet cable is twisted pair which probably will introduce a bit.

An alternative would be to use asynchronous serial which I think can tolerate longer cable runs. Another thing that might work is to drop down the I2C speed. Yet another solution might be an I2C repeater installed half-way.

Thanks Nick

I just figured it out. Crossroads was right. It was an issue with the common ground.

I had thought the only the 12V and 5V sections of the board needed to share a ground. I did not realize that it was the two Arduino boards that need to share a ground. So when my FTDI cable was connected it worked because a ground was shared through USB. As soon as I disconnected the FTDI cable it stopped working because the ground was no longer common.

Thanks again

Glad to hear it worked out.

"It would probably be safer to play with matches." I just noticed that! Funny 8)