Barometric sensor BMP085 - I2C voltage incompatibility

Hello, I have Arduino Duemilanove Atmega328 at 5V and I want to communicate with the Barometric sensor BMP085/BMP180 that is powered by 1.8 … 3.6V.
I look at and ebay. All BMP085 (and new BMP180) modules have voltage regulator (662K) from 5V to 3.3V on board.
I read old question at this forum about BMP085 voltage. I find there “Therefore, you could connect them to a 3.3v device, and use external pullup resistors to 3.3v.”.
Two 4k7 resistors are on the board too.

Do I need to use two bidirectional voltage level convertor on I2C?

At this eBay page i found: “At very least, four connections are required (VCC, GND, SDA and SCL) - there is also a voltage regulator on the board, so this device is 5V tolerant (input voltage must be at least 1.8V). In addition, there are pull-up resistors on the SDA and SCL lines.”

Is it possible to connect module (in attachment) directly to 5V supply and 5V I2C to Arduino?
If there is power supply regulator is logical that I2C is 5V compatible too…




Yes, you can connect the module directly to atmega @5V provided you configure atmega's pins as I2C (open drain) and the module has got 5v->3.3V voltage regulator. So in your case wire the VIN to 5V, GND to ground, SDA to atmega's SDA and SCL to atmega's SCL..

I connect BMP085 to Arduino and it works.

pito: you configure atmega's pins as I2C (open drain)

How can I configure it? I have only "bmp.begin" in "setup" function.

How can I configure it? I have only “bmp.begin” in “setup” function.

bmp.begin does the configuration for you, hopefully :slight_smile:

The key message here is a more general advice: you cannot connect the module that way if atmega’s pins are configured as the standard digital inputs/outputs (push/pull). That may damage your module. You must use the level converter then.

It works with atmega’s pins configured as “open drain” only and when the pullup resistors are powered from 3,3V…
I2C uses the open drain configuration thus it should work.