SparkFun Qwiic MicroPressure Hookup Guide
Introduction
Pressure sensors are used in a wide range of applications. You can find them in the medical field (blood pressure monitoring, negative pressure wound therapy), they have industrial uses (air braking systems, gas and water meters), and have a wide range of consumer uses (coffee machines, humidifiers, air beds, washing machines, dishwashers). Measuring in at 1 square inch, the SparkFun Qwiic MicroPressure Sensor takes advantage of HoneyWell's MPR Series piezoresistive silicone pressure sensor and our plug-and-play Qwiic System to make pressure measurement easy and portable.
The MPRLS0025PA00001A boasts a small form factor (5 mm x 5 mm), easy to read 24 bit digital I2C output, and is calibrated and compensated over a specific temperature range for sensor offset, sensitivity, temperature effects, and non-linearity using an on-board Application Specific Integrated Circuit (ASIC). Add to that ultra-low power consumption (as low as 0.01 mW typ. average power, 1 Hz measurement frequency) and Qwiic ports, you've got yourself a power packed little sensor!
Required Materials
To follow along with this tutorial, you will need the following materials. You may not need everything, depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary.
Suggested Reading
If you aren't familiar with the Qwiic system, we recommend reading here for an overview.
Qwiic Connect System |
We would also recommend taking a look at the following tutorials if you aren't familiar with them.
Serial Terminal Basics
How to Work with Jumper Pads and PCB Traces
RedBoard Qwiic Hookup Guide
Hardware Overview
Micro pressure sensor MPR
Honeywell's MPR Series MPRLS0025PA00001A sensor is a very small piezoresistive silicone pressure sensor offering I2C ready digital output for reading pressure over the specified full scale pressure span and temperature range. The sensor itself measures 5 mm x 5 mm and has a calibrated pressure sensing range from 1-25 PSI. It is compatible with a variety of liquid media, has a compensated temperature range of 0ºC to 50ºC (32ºF to 122ºF), and has a total error band after customer autozero as low as ±1.25 %FSS. For more information on this little guy, head on over to the datasheet.
Power
Ideally, power will be supplied via the Qwiic connectors on either side of the board. Alternatively, power can be supplied through the header along the bottom side of the board labeled 3V3
and GND
. The input voltage range should be between 1.8-3.6V.
Qwiic Connectors
Our Qwiic Ecosystem makes sensors pretty much plug and play. There are two Qwiic connectors on either side of the Qwiic MicroPressure Sensor board to provide power and I2C connectivity simultaneously.
I2C Pins
The I2C pins break out the functionality of the Qwiic connectors. Depending on your application, you can connect to these pins via the plated through holes for SDA and SCL.
Reset and EOC Pins
The reset pin is active low, with an external 2.2 kΩ pull-up resistor on board. While not needed for the board to work, this pin can be pulled low externally to reset the sensor.
The EOC, or End Of Conversion, pin is set high when a measurement and calculation have been completed and the data is ready to be clocked out. Alternatively the status register of the sensor can also be used to check to see when a new measurement is ready.
Power LED
Located towards the top left of the board, the Power LED gives you visual confirmation that your board is powered and ready to go.
Jumpers
I2C Jumpers
Like our other Qwiic boards, the Qwiic MicroPressure Sensor comes equipped with pull-up resistors on the clock and data pins. If you are daisy-chaining multiple Qwiic devices, you will want to cut this jumper; if multiple sensors are connected to the bus with the pull-up resistors enabled, the parallel equivalent resistance will create too strong of a pull-up for the bus to operate correctly. As a general rule of thumb, disable all but one pair of pull-up resistors if multiple devices are connected to the bus. To disable the pull up resistors, use an X-acto knife to cut the joint between the two jumper pads highlighted below.
LED Jumper
If power consumption is an issue, cutting this jumper will disable the Power LED on the front of the board.
Board Dimensions
Hardware Hookup
With the Qwiic System, hardware hookup is a breeze. Plug one end of the Qwiic cable into the SparkFun Redboard Qwiic port, and the other into the MicroPressure Sensor board's Qwiic port as you see below:
Software Setup and Programming
If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE. If you have not previously installed an Arduino library, please check out our installation guide.
SparkFun has written a library to work with the Qwiic MicroPressure Sensor. You can obtain this library through the Arduino Library Manager by searching for "MicroPressure". Find the one written by SparkFun Electronics and install the latest version. If you prefer downloading libraries manually, you can grab them from the GitHub Repository.
Functions
Below is a list of the functions that can be used with the MicroPressure sensor, along with a description of what each function does and how to use it.
SparkFun_MicroPressure( int8_t eoc_pin, int8_t rst_pin, uint8_t minimumPSI, uint8_t maximumPSI ) - The constructor has four optional arguments, by default the eoc_pin, and rst_pin are not used, and the MicroPressure sensor used on the board has a pressure range of 0 - 25 PSI.
eoc_pin
- The End Of Conversion pin is set high when a measurement and calculation have been completed and the data is ready to be clocked out. When set to -1, the status register is used to check when a measurement is ready to be clocked out. Default: -1rst_pin
- The Reset pin is active low, and resets the sensor in the begin function. When set to -1, the board will reset after a power cycle. Default: -1minimumPSI
- The minimum PSI value is used in the pressure conversion calculation for the MPR series sensor. Default: 0 PSImaximumPSI
- The minimum PSI value is used in the pressure conversion calculation for the MPR series sensor. Default: 25 PSI
bool begin(uint8_t deviceAddress, TwoWire &wirePort) - Call at the beginning of the sketch to intialize the device. This function takes two optional parameters: deviceAddress and wirePort. This function will return
true
when the device is intialized, andfalse
if it is unable to communicate with the device.deviceAddress
- The MPR series sensor has multiple I2C addresses that are fixed as shown on page 7 of the datasheet, with the most common address being 0x18. Default: 0x18wirePort
- Sets the I2C bus the sensor is connected to, such as Wire or Wire1. Default: Wire
float readPressure (Pressure_Units units) - returns the pressure sensor reading. The sensor outputs pressure in pounds per square inch, or PSI. If you would prefer a different unit of measurement, this function can convert the reading to one of the following for you by passing the argument:
PSI
- Pounds per Square Inch (default)PA
- PascalsKPA
- kilopascalsBAR
- bar (1 bar is equal to 100,000 Pa)TORR
- torr (1 torr is roughly equal to 133.32 Pa)INMG
- Inches of Mercury (Mg)ATM
- Atmospheres
uint8_t readStatus( void ) - Reads and returns the status byte of the sensor. For more information about the status byte refer to page 15 of the datasheet.
Example Code
Once the library is installed, go ahead and open up File->Examples->SparkFun MicroPressure Library->Example1_BasicReadings. Make sure to select your board (SparkFun RedBoard) and COM port before hitting upload to begin experimenting with the pressure sensor.
Alternatively, you can copy and paste the code below to a shiny new Arduino file:
language:c
/*
Basic test of the Qwiic MicroPressure Sensor
By: Alex Wende
SparkFun Electronics
Date: July 2020
License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
Feel like supporting our work? Buy a board from SparkFun!
https://www.sparkfun.com/products/16476
This example demonstrates how to get started with the Qwiic MicroPressure Sensor board, and read pressures in various units.
*/
// Include the SparkFun MicroPressure library.
// Click here to get the library: http://librarymanager/All#SparkFun_MicroPressure
#include<Wire.h>
#include <SparkFun_MicroPressure.h>
/*
* Initialize Constructor
* Optional parameters:
* - EOC_PIN: End Of Conversion (defualt: -1)
* - RST_PIN: Reset (defualt: -1)
* - MIN_PSI: Minimum Pressure (default: 0 PSI)
* - MAX_PSI: Maximum Pressure (default: 25 PSI)
*/
//SparkFun_MicroPressure mpr(EOC_PIN, RST_PIN, MIN_PSI, MAX_PSI);
SparkFun_MicroPressure mpr; // Use default values with reset and EOC pins unused
void setup() {
// Initalize UART, I2C bus, and connect to the micropressure sensor
Serial.begin(115200);
Wire.begin();
/* The micropressure sensor uses default settings with the address 0x18 using Wire.
The mircropressure sensor has a fixed I2C address, if another address is used it
can be defined here. If you need to use two micropressure sensors, and your
microcontroller has multiple I2C buses, these parameters can be changed here.
E.g. mpr.begin(ADDRESS, Wire1)
Will return true on success or false on failure to communicate. */
if(!mpr.begin())
{
Serial.println("Cannot connect to MicroPressure sensor.");
while(1);
}
}
void loop() {
/* The micropressure sensor outputs pressure readings in pounds per square inch (PSI).
Optionally, if you prefer pressure in another unit, the library can convert the
pressure reading to: pascals, kilopascals, bar, torr, inches of murcury, and
atmospheres.
*/
Serial.print(mpr.readPressure(),4);
Serial.println(" PSI");
Serial.print(mpr.readPressure(PA),1);
Serial.println(" Pa");
Serial.print(mpr.readPressure(KPA),4);
Serial.println(" kPa");
Serial.print(mpr.readPressure(TORR),3);
Serial.println(" torr");
Serial.print(mpr.readPressure(INHG),4);
Serial.println(" inHg");
Serial.print(mpr.readPressure(ATM),6);
Serial.println(" atm");
Serial.print(mpr.readPressure(BAR),6);
Serial.println(" bar");
Serial.println();
delay(500);
}
Once you have the code, go ahead and click on the upload button, open your serial monitor, and watch the magic happen!
For this particular example, I purchased uxcell Pneumatic Hose 4mm OD 2.5mm from Amazon, but any tubing with an inner diameter of 2.5mm will work.
Attach the tubing over the protruding MPR sensor like so:
Open up your Serial Monitor and make sure your baud is at 115200. You should see the average pressure being output in multiple different measurements. If you apply negative pressure to the tubing, you'll see the measurements go down, positive pressure will show the measurements going up. Note the output below:
Troubleshooting
If your product is not working as you expected or you need technical assistance or information, head on over to the SparkFun Technical Assistance page for some initial troubleshooting.
If you don't find what you need there, the SparkFun Forums are a great place to find and ask for help. If this is your first visit, you'll need to create a Forum Account to search product forums and post questions.
Resources and Going Further
The possible applications of the Qwiic MicroPressure Sensor are boundless. If you need more information, check out the links below:
- Schematic (PDF)
- Eagle Files (ZIP)
- Board Dimensions (PNG)
- Recommended Tubing
- Honeywell Micropressure Sensor Datasheet (PDF)
- Arduino Library
- GitHub
You can also check out these other great Qwiic sensors from SparkFun: