pimoroni-pico/micropython/modules/breakout_icp10125/README.md

90 lines
2.4 KiB
Markdown

# ICP1025 High-accuracy Barometric Pressure & Temperature Sensor <!-- omit in toc -->
The ICP1025 library is intended to drive the TDK InvenSense ICP10125 temperature and pressure sensor.
- [Getting Started](#getting-started)
- [Taking A Measurement](#taking-a-measurement)
- [Measurement Types](#measurement-types)
- [Normal](#normal)
- [Low Power](#low-power)
- [Low Noise](#low-noise)
- [Ultra Low Noise](#ultra-low-noise)
## Getting Started
Construct a new PimoroniI2C instance for your specific board. Breakout Garden uses pins 4 & 5 and Pico Explorer uses pins 20 & 21.
```python
import breakout_icp10125
import pimoroni_i2c
i2c = pimoroni_i2c.PimoroniI2C(4, 5)
icp10125 = breakout_icp10125.BreakoutICP10125(i2c)
```
## Taking A Measurement
The `measure` method triggers a measurement, blocks for enough time for the measurement to complete, and returns the result as a tuple with three values:
1. Temperature (degrees C)
2. Pressure (Pa)
3. Status
If the `status` is `icp10125.STATUS_OK` then the reading is valid. Otherwise you should probably discard it or attempt another reading.
For example, the following code will continuously poll the ICP10125 for `NORMAL` readings and print them out if they are valid:
```python
import breakout_icp10125
import pimoroni_i2c
i2c = pimoroni_i2c.PimoroniI2C(4, 5)
icp10125 = breakout_icp10125.BreakoutICP10125(i2c)
while True:
t, p, status = icp10125.measure()
if status == icp10125.STATUS_OK:
print(t, p)
time.sleep(1.0)
```
## Measurement Types
The ICP1025 has eight measurement commands. Four are supported by this library since the remaining four are identical save for the order of Temperature/Pressure data readout being reversed.
Each measurement type has a fixed duration.
### Normal
Normal measurements are the default type, and take 7ms to complete offering a good balance of stability and speed.
```python
result = icp10125.measure(icp10125.NORMAL)
```
### Low Power
Low-power measurements take just 2ms and trade stability for speed/power efficiency.
```python
result = icp10125.measure(icp10125.LOW_POWER)
```
### Low Noise
Low-noise measurements take 24ms (roughly 3.5x as long as normal) and trade speed for stability.
```python
result = icp10125.measure(icp10125.LOW_NOISE)
```
### Ultra Low Noise
Ultra Low-noise measurements take 95ms
```python
result = icp10125.measure(icp10125.ULTRA_LOW_NOISE)
```