An I2C logic level converter/translator with integrated voltage regulator
When using I2C to interface devices operating at different voltages, for example an Arduino running at 5 Volts and a sensor running at 3.3 Volts, it's usually a best practice to use a logic level converter/translator to translate one logic signal from one voltage to the other and vice versa.
There are devices which will work without problems even without a logic level converter (for example I used the ADXL345, the ITG3200 and the HMC5843 without it) but once you want to get very good precision it may be worth using a logic level converter. Moreover there are many devices which could get damaged if used without one.
There are some ready to use solutions, for example Sparkfun Logic Level Converter but in my opinion they over complicate the problem.
So, I decided it was worth designing a very simple I2C specific logic level converter. For convenience I also included a voltage regulator and optional I2C pullups resistors. The idea is that with this device you will be able to simply connect a 3.3V device to a 5V with the I2C translator in the middle and forget about anything else.
The board contains a voltage regulator, the MIC5205, and a dual bidirectional I2C bus voltage level translator, the PCA9306.
So, here it is, fresh from KiCAD:
Attached at the bottom of the page you find the schematics and its KiCAD sources.
You should be able to etch this at home without problems, I'll get three copies of it in the next pcb order.
UPDATE 2011-01-20:
You can get the most updated designs of the I2C logic level converter from my personal Bazaar repository with the command:
bzr co http://repository.varesano.net/I2C_level_translator/
| Attachment | Size |
|---|---|
| I2C_level_translator_schematics.pdf | 29.32 KB |
| I2C_level_translator.tar_.gz | 78.71 KB |
| i2c_level_translator.png | 33.95 KB |
| I2C_level_converter_gerbers_20110404_1753.tar_.gz | 9.64 KB |




About the R resistances on the I2C bus
Hi Fabio,
the four resistors marked as "R" on the i2c bus are supposed to be the same on "high" and "low" circuit? Just put resistors from 1.5 to 4.7k ?
Ciao Fabio,
le quattro resistenze che indichi come R sul bus i2c dovrebbero essere tutte identiche? Sono quelle di pullup sul bus? Dovrebbero essere uguali in entrata e in uscita? Vanno bene i soliti valori tra 1.5 e 4.7k ?
Grazie!
I did sized them using the
I did sized them using the oscilloscope and looking for a fast rise signal. I seem to recall I used small ones, something around 1K Ohm.
Question
I don't understand one thing, if we want to connect the 3,3V sensors, why is there an 5V regulator onboard? Wouldn't it be 3,3V regulator instead?
Best regards
The regulator on board is
The regulator on board is actually a 3.3V one. Why do you think it's 5V?
Fabio, I have the PCA9306 but
Fabio, I have the PCA9306 but in a different IC package. Which IC package are you using?
SO8
SO8
Gerbers
Fabio, can you please post the gerber files for this breakout board?
Just uploaded. You find them
Just uploaded. You find them on the attachments to the post.
Thanks Fabio. I really
Thanks Fabio. I really appreciate it.
Price Tag?
Hi Fabio,
Do you have a price estimate and / or a price tag for the logic level converter with voltage regulator?
Thank you and best regards,
Nope, I only had 3 of this
Nope, I only had 3 of this and I'm out of them.
Great!
Paolo,
Excellent idea!
The Sparkfun level converter works fine but the voltage regulator is missing.
Congratulations for your nice and elegant solution!
Best regards,
Thanks, I thought exactly the
Thanks, I thought exactly the same when I developed this device! ;-)
Thanks for your supportive comment.
p.s.: I'm Fabio, not Paolo..
Post new comment