Home CodeArduino Microbit and LPS22HB absolute pressure sensor example

Microbit and LPS22HB absolute pressure sensor example

by shedboy71

In this article we look at another pressure sensor – this time its the LPS22HB piezoresistive absolute pressure sensor and we will connect it to our Microbit

This is the sensor I used

Here is some technical information about this sensor

The LPS22HB is an ultra-compact piezoresistive absolute pressure sensor which functions as a digital output barometer. The device comprises a sensing element and an IC interface which communicates through I2C or SPI from the sensing element to the application.

The sensing element, which detects absolute pressure, consists of a suspended membrane manufactured using a dedicated process developed by ST.

The LPS22HB is available in a full-mold, holed LGA package (HLGA). It is guaranteed to operate over a temperature range extending from -40 °C to +85 °C. The package is holed to allow external pressure to reach the sensing element.

Features

  • 260 to 1260 hPa absolute pressure range
  • Current consumption down to 3 μA
  • High overpressure capability: 20x full-scale
  • Embedded temperature compensation
  • 24-bit pressure data output
  • 16-bit temperature data output
  • ODR from 1 Hz to 75 Hz
  • SPI and I²C interfaces
  • Embedded FIFO
  • Interrupt functions: Data Ready, FIFO flags, pressure thresholds
  • Supply voltage: 1.7 to 3.6 V
  • High shock survivability: 22,000 g

 

Parts Required

I used an expansion board connected to the Micro:bit, this makes it easier to connect sensors using connecting wire

Schematic/Connection

I used the I2C connection for the sensor

Microbit Sensor
3v3 3v3
Gnd Gnd
SDA – 20 SDA
SCL – 19 SCL

Code Example

This uses the library from hhttps://github.com/adrien3d/IO_LPS22HB

[codesyntax lang=”cpp”]

#include <Wire.h>

#include "IO_LPS22HB.h"

IO_LPS22HB lps22hb;

void setup()
{
  Serial.begin(9600);
  Serial.println("IoThings LPS22HB Arduino Test");
  
  lps22hb.begin(0x5D);
  
  byte who_am_i = lps22hb.whoAmI();
  Serial.print("Who Am I? 0x");
  Serial.print(who_am_i, HEX);
  Serial.println(" (expected: 0xB1)");
  if (who_am_i != LPS22HB_WHO_AM_I_VALUE) 
  {
  Serial.println("Error while retrieving WHO_AM_I byte...");
    while (true) {
    // loop forever
    }
  }
}

void loop()
{
  Serial.print("P=");
  Serial.print(lps22hb.readPressure());
  Serial.print(" mbar, T=");
  Serial.print(lps22hb.readTemperature());
  Serial.println("C");
  delay(300);
}

[/codesyntax]

 

 

Output

Open the serial monitor and you should see something like this

P=1014.41 mbar, T=23.33C
P=1014.42 mbar, T=23.41C
P=1014.41 mbar, T=23.45C
P=1014.41 mbar, T=23.47C
P=1014.40 mbar, T=23.45C
P=1014.39 mbar, T=23.40C

 

Links

https://www.st.com/resource/en/datasheet/lps22hb.pdf

 

 

You may also like

Leave a Comment