![]() |
| Wygląd modułu |
Specyfikacja
- interfejs I2C
- domyślny adres I2C 0x77
- zakres pomiarowy 300 - 1100hPa
- napięcie zasilania 1,8 - 3,6V
- roboczy zakres temperatury od -40°C do +85°C
- pobór prądu do 1mA
- dokładność pomiaru ciśnienia (Vdd 3,3V):
- względna - typ. ±0.12hPa
- absolutna - typ. +2.0hPa
- dokładność pomiaru temperatury maks. ±2.0°C
- rozdzielczość pomiaru:
- ciśnienia 0,01hPa
- temperatury 0,1°C
- czas konwersji:
- ciśnienia - zależny od rozdzielczości, maks. 76,5ms
- temperatury maks. 4,5ms
- długoterminowa stabilność pomiaru ciśnienia (1 rok) ±1.0hPa
Co do napięcia na interfejsie, wg. dokumentacji, ma to być maks. 3,6V. Na wielu stronach (np. sklepów) też jest o tym ostrzeżenie. Mnie natomiast moduł działał z 5-cioma woltami na magistrali I2C. Kierowałem się uwagami w artykule BMP180 Barometric Pressure Sensor Hookup. Mowa tam m.in. o użyciu przez magistralę I2C układu otwarty dren, co sprawia, że można bezpiecznie podłączyć piny I2C pod porty 5V mikrokontrolera, Więcej w artykule I2C at the Hardware Level. Wracając jeszcze do dokumentacji - jest tam też wzmianka o "open drain" w kontekście magistrali I2C.
Moduł posiada także rezystory podciągające na I2C.
Uruchomienie
Do uruchomienia posłużyłem się przykładowym kodem z biblioteki Adafruit-BMP085-Library (2).
W komentarzu można wyczytać o konieczności zasilania czujnika napięciem 3,3V. W przypadku opisywanego modułu może to być jednak 5V.
#include <Wire.h>
#include <Adafruit_BMP085.h>
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
while (1) {}
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
Serial.print("Pressure at sea level (calculated) = ");
Serial.print(bmp.readSealevelPressure());
Serial.println(" Pa");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print("Real altitude = ");
Serial.print(bmp.readAltitude(101500));
Serial.println(" meters");
Serial.println();
delay(500);
}
![]() |
| Test czujnika |
Trudno jednoznacznie określić dokładność opisywanego czujnika nie mając innego, profesjonalnego czujnika, jako punktu odniesienia. Biorąc pod uwagę aktualne wskazania na http://www.if.pw.edu.pl/~meteo/ dla mojego miasta, w momencie pomiaru czujnik zmierzył o 5hPa więcej. Z drugiej strony patrząc na ciśnienie podawane przez różne strony w sieci - każda prawie pokazuje co innego :)
![]() |
| Wyniki pomiaru na terminalu |
Źródła
1) BMP180 Barometric Pressure Sensor Hookup
2) Biblioteka Adafruit-BMP085-Library
3) Dokumentacja



Brak komentarzy:
Prześlij komentarz