BMP180. 3.3V or 5V?!

I am kinda confused here. Some say I need to connect it to 5V and some say I should use 3.3V.

This site does it even worse, they mention both. So, what is the right way?

Pin wiring
Wiring the sensor to the Arduino is pretty straightforward:

Pin Wiring to Arduino Uno
Vin 5V
GND GND
SCL A5
SDA A4

But later on:

Hardware connections:

  • (GND) to GND
  • (VDD) to 3.3V

(WARNING: do not connect + to 5V or the sensor will be damaged!)

Source:

Which BMP180 module do you have? Which Arduino do you have?

The sensor itself is 3.3V.

The breakout board you have may or may not have a regulator and level shifters on board. So without knowing which exact board you have, can't say for sure whether you can power it at 5V.

This is the one I am planning on buying: (I have Nano's and Uno's and ATmega328 chips directly on pcb

Een zeer compacte barometer die werkt via I2C. De BMP180 is de betere opvolger van de BMP085.

Voor meer informatie zie de datasheet.

De module kan gevoed worden op de VCC van 3.3V-5V. De I2C werkt alleen met 3.3V en heeft een level shifter nodig bij gebruik van bijv. een Arduino Uno, de Arduino Due is wel direct compatible.

I know it is dutch but still confusing. Google translate:

A very compact barometer that works via I2C. The BMP180 is the better successor to the BMP085.

For more information see the datasheet.

The module can be powered on the VCC of 3.3V-5V. The I2C only works with 3.3V and requires a level shifter when using an Arduino Uno, for example, the Arduino Due is directly compatible.

This part particularly confuses me:

The module can be powered on the VCC of 3.3V-5V. The I2C only works with 3.3V and requires a level shifter when using an Arduino Uno,

I see s a regulator on that board but no level shifters. That's unusual. Normally they have both or none. You'll have to use level shifters (standard I2C bidirectional level shifter) if you want to connect this sensor to 5V signals.

For your 3.3V controllers connect the 3.3V pin and signals directly. Don't connect the 5V pin.

Will a 74HC595 do?

Or, could you be so kind to give me a link to a sensor that doesnt need a shifter? Only 5v?

You can get by with interfacing a 3.3 V I2C device to the Uno by connecting the I2C pull-ups to 3.3 V, which surely is how it is already done on that BMP180 module. The reason this works is because I2C is an open-collector bus, so the max logic level the device will be subjected to is the voltage the pull-up resistors. The Uno runs at 5 V and the minimum HIGH logic level of the ATmega328P is 0.6 x 5 V = 3 V.

Considering this, it's strange that the description on the product page specifically says it won't work on the Uno

It's true that some microcontrollers (e.g. the ATmega4809 of the Uno WiFi Rev2 and Nano Every) have a minimum HIGH logic level of 0.7 x 5 V = 3.5 V, and so wouldn't work with that trick, but I'm not sure why it would say that about the Uno.

This is not an issue of the Uno subjecting the BMP180 to 5 V. As long as you don't have a bug in your code that sets the I2C pin HIGH, that can't happen. If there are other I2C devices on the bus with pull-ups to 5 V, that would be a problem, but that really has nothing to do with the Uno, so the prohibition in the product description still makes no sense.

Ok, I understand.

But I want to make it standard to power sensors from an external source. DHT11/MQ3/MQ9/BMP180 together on the arduino will fry it.

So I need to make a down-stepper for the 180 only? Seems odd for 1 sensor.

Doesn't the Wire library enable the built-in pull-ups by default?

Now if you ditch the DHT11 (save yourself some serious frustration over inaccurate readings) and replace the BMP280 by a BME280 you save yourself a sensor and get better readings overall.

There are plenty of BMx280 boards out there with level shifters in place as well, working fine with 5V systems.

DHT11 inaccurate? Dont you mean the DHT22? That is the one I read issues about.

And replace the BMP180 with BME280?

wvmarle:
Doesn't the Wire library enable the built-in pull-ups by default?

Apparently, yes:

I didn't know that. It's a bit strange, since the internal pull-ups are nowhere near the specified values for I2C.

Thanks for pointing that out wvmarle. I learned something new today.

Thinking about it, my experience with this was to interface a 5 V I2C device to a 3.3 V microcontroller, so that was not an issue. I just had to desolder the pull-up resistors to 5 V from the I2C device and replace them with some to 3.3 V.

So disregard what I said about not needing a level shifter Sareno.

Sareno:
DHT11 inaccurate? Dont you mean the DHT22? That is the one I read issues about.

The DHT22 is the improved version of the DHT11.

The specs of the DHT11 are crap, it's a toy, barely suitable for demos. It's humidity range goes to only 90%, so in my climate it's kinda pointless as typical humidity is 80-100%.
The DHT22 is an OK sensor, but the humidity sensor tends to get stuck at 100% in wet climates.

And replace the BMP180 with BME280?

Indeed. It's doing temperature, humidity and pressure - making the DHT11 redundant - at much better accuracy than the DHT22.

Ok, I know that DHT22 is the new version of DHT11 but not without negative sides, but ok.

BMP180--> BME280 was a question about a typo, Does the BMP280 even exist? (read back ;-))

But clearly I need to source a (few) BME280.

Just to be sure, with the BME280, can I skip buying a barometric sensor?

Sareno:
BMP180--> BME280 was a question about a typo, Does the BMP280 even exist? (read back ;-))

Euhm... it's to me more like... the BMP180 still being sold? The BMP280 is its direct successor, released several years ago. I totally misread that.

Just to be sure, with the BME280, can I skip buying a barometric sensor?

Yes - it's basically a BMP280 with humidity sensor included.

Bummer, I did not see your reply sooner!

Thanks!