Working Principle
The MPX5010 and MPX5700 from NXP (formerly Freescale) are piezoresistive MEMS pressure sensors with integrated signal conditioning. A silicon diaphragm with implanted strain-gauge resistors forms a Wheatstone bridge. When pressure deflects the diaphragm, the bridge becomes unbalanced, producing a voltage proportional to the applied pressure. On-chip amplification and temperature compensation deliver a linear, high-level analog output directly readable by an ADC.
- MPX5010: 0–10 kPa (0–1.45 psi) — ideal for low-pressure: water level, ventilator airflow, HVAC differential pressure
- MPX5700: 15–700 kPa (2.18–101.5 psi) — suited for high-pressure: tyre pressure, hydraulics, compressed gas
Electrical Characteristics
| Parameter | MPX5010 | MPX5700 |
|---|---|---|
| Supply Voltage | 5.0 V (±0.25 V) | 5.0 V (±0.25 V) |
| Pressure Range | 0–10 kPa | 15–700 kPa |
| Output (Full Scale) | 0.2–4.7 V | 0.2–4.7 V |
| Accuracy | ±5% (0–85 °C) | ±2.5% |
| Sensitivity | 450 mV/kPa | 6.4 mV/kPa |
| Response Time | 1 ms | 1 ms |
| Temperature Compensation | 0–85 °C | 0–85 °C |
| Type | Gauge (ported) | Absolute (sealed) |
Interfacing with an MCU
Both sensors output a ratiometric analog voltage (proportional to VS). Connect VOUT to an ADC input. The output spans 0.2–4.7 V on a 5 V supply.
Calibration
- Zero-pressure offset: Read ADC at atmospheric pressure (vent open) and store as baseline offset
- Known-pressure verification: Apply a known pressure (e.g., 5 kPa from manometer) and verify linearity
- Transfer function: MPX5010: VOUT = VS × (0.09 × P + 0.04), MPX5700: VOUT = VS × (0.0012858 × P + 0.04)
Code Example
/*
* MPX5010 Gauge Pressure Sensor — Arduino
* Wiring: VOUT → A0, VS → 5V, GND → GND
* Measures 0-10 kPa (water level, airflow)
*/
#define SENSOR_PIN A0
#define VS 5.0
void setup() {
Serial.begin(9600);
}
void loop() {
int raw = analogRead(SENSOR_PIN);
float voltage = raw * (VS / 1023.0);
/* MPX5010 transfer function:
Vout = Vs x (0.09 x P + 0.04)
P = (Vout/Vs - 0.04) / 0.09 [kPa] */
float pressure_kPa = ((voltage / VS) - 0.04) / 0.09;
/* Convert to cmH2O for water level (1 kPa = 10.2 cmH2O) */
float waterLevel_cm = pressure_kPa * 10.197;
Serial.print("Pressure: ");
Serial.print(pressure_kPa, 2);
Serial.print(" kPa | Water Level: ");
Serial.print(waterLevel_cm, 1);
Serial.println(" cm");
delay(500);
}
Real-World Applications
Water Level & Medical Ventilation Monitoring
The MPX5010 is widely used in water-level measurement (connected to a submerged tube, pressure equals water column height), CPAP/ventilator airway pressure monitoring, and HVAC filter differential-pressure sensing. The MPX5700 handles industrial hydraulic pressure and tyre-pressure monitoring systems (TPMS).
Limitations
- Media compatibility: The sensor port is not designed for corrosive liquids or gases — use dry, non-corrosive media only.
- 5 V only: Requires a stable 5 V supply; not directly compatible with 3.3 V boards without scaling.
- Temperature sensitivity: Accuracy degrades outside 0–85 °C without external compensation.
- No digital output: Analog output is susceptible to EMI on long cable runs.