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:
Vin: 3-5Vdc fesz.
3Vo: 3.3V-os fesz.
GND: GND
SCK: Ezen a bemeneten érkezik az órajel amit általában a master álapotú eszköz küld
SDO: Soros adat kimenet, adat küldés a processzornak
SDI: Soros adat bemenet, adat fogadás a processzortól
CS: chip select láb, inditáskor alacsony szintre kell húzi(gnd)
Készítsük el az áramkört:
A Vin-5V, GND-gnd, SCK-13, SDO-12, SDI-11, CS-10 Arduino láb.
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:
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.