Légnyomás és hőmérséklet szenzor


A BMP183-as egy nagy pontosságú légnyomás és hőmérséklet érzékelő, a légnyomás
mérésből eredően magasság mérésre is használható. Az egység SPI (két írányú szinkron soros ) kommunikációt használ.

Lábkiosztás:

Készítsük el az áramkört:

A Vin-5V, GND-gnd, SCK-13, SDO-12, SDI-11, CS-10 Arduino láb.

https://github.com/adafruit/Adafruit_BMP183_Library

Töltsük le az Adafruit BMP183 könyvtárat a következő helyről:

A letöltés a jobb alsó sarokban a Download Zip gombbal indul, csomagoljuk ki, nevezzük
át a könyvtárat Adafruit_BMP183-ra, majd másoljuk be a Program fájl/Arduino/libraries könyvtárba.

Utána töltsük le a Sensor könyvtárat a következő helyről:

https://github.com/adafruit/Adafruit_Sensor

Ugyan az az eljárás mint az előzőbe. Az átnevezett név: Adafruit_Sensor.

Nyissuk meg az Arduino IDE-n belül a fájl/Minták/Adafruit_BMP183test programot.
Töltsük fel, nyissuk meg a soros monitort .

#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP183.h>

// szoftveres SPI használata

#define BMP183_CLK 13

#define BMP183_SDO 12 // AKA MISO

#define BMP183_SDI 11 // AKA MOSI

#define BMP183_CS 10

Adafruit_BMP183 bmp = Adafruit_BMP183(BMP183_CLK, BMP183_SDO, BMP183_SDI, BMP183_CS);

/**************************************************************************/
/*
Arduino setup function (automatically called at startup)
*/
/**************************************************************************/
void setup(void)
{
Serial.begin(9600);
Serial.println("BMP183 Pressure Sensor Test"); Serial.println("");

/* Initialise the sensor */
if(!bmp.begin())
{

/* There was a problem detecting the BMP183 ... check your connections */

Serial.print("Ooops, no BMP183 detected ... Check your wiring!");
while(1);
}
}

/**************************************************************************/
/*
Arduino loop function, called once 'setup' is complete (your own code
should go here)
*/

/**************************************************************************/

void loop(void)

{

/* Display atmospheric pressue in Pascals */
Serial.print("Pressure: ");
Serial.print(bmp.getPressure());
Serial.print(" Pascals / ");
Serial.print(bmp.getPressure() / 100);
Serial.println(" millibar (hPa)");

/* First we get the current temperature from the BMP085 */
float temperature;
temperature = bmp.getTemperature();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");

/* Update this next line with the current SLP for better results */
float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; // should be ~1000
Serial.print("Sea level pressure: ");
Serial.print(SENSORS_PRESSURE_SEALEVELHPA);
Serial.println(" millibar/hPa");

Serial.print("Altitude: ");
Serial.print(bmp.getAltitude(seaLevelPressure));
Serial.println(" m");
Serial.println("");

delay(1000);
}


A program kiírja a légnyomást, a hőmérsékletet, és a légnyomásból kiszámított tengerszint
feletti magasságot a soros monitorra.