MPL3115A2 – barometro, altimetro e termometro

Il sensore MPL3115A2 illustrato in questo articolo è prodotto da Freescale (ora NXP)può essere utilizzato come barometro, altimetro e termometro.
Il dispositivo ha una risoluzione tipica di 1,5 Pascal, e può misurare un’altitudine con una risoluzione di 0,3 metri (rispetto al BMP180 che può fare 0,17 m).
In questo caso il sensore è montato su un modulo realizzato dalla Adafruit codice 1893

MPL3115A2 barometro termometro altimetro

Il sensore MPL3115A2 ha alcuni vantaggi rispetto ai sensori BMP180/ BMP280 , come le uscite interupt per un consumo di energia ultra-basso, ed è anche molto più facile da leggere l’altitudine con un calcolo dell’altimetro incorporato, e non è richiesta nessuna lettura di calibrazione.

MPL3115A2 I2C Precision Altimeter


Come detto il chip MPL3115A2 oltre che come barometro e altimetro, può essere utilizzato come termometro con una precisione tipica di ± 1 ° C (± 3 ° C max).

MPL3115A2 barometro termometro altimetro MPL3115A2 barometro termometro altimetro

Circuito elettrico del modulo

Il chip richiede una tensione di 2-3,6 V sia per l’alimentazione e tensioni logiche, per questo motivo sulla  breakout è presente un regolatore a 3 V tipo MIC5225-3.3 e uno traslatore del livello logico realizzato tramite due MOSFET tipo BSS138.
Per qui risulta facile da interfacciare con qualsiasi Arduino o microcontrollore con funzionalità I2C.

MPL3115A2 barometro termometro altimetro

Uso del sensore

L’ uso del sensore è semplice. Ad esempio, se si utilizza un Arduino, è sufficiente collegare il pin VDD al pin di tensione 5V, GND a terra, SCL a I2C Clock (pin A5 su un UNO) e SDA a I2C Data (A4 su un UNO).
Sarà poi necessario scarica la libreria Arduino MPL3115A2 e il codice di esempio per il calcolo della temperatura, della pressione e dell’altitudine di base.
Una volta installata la libreria e caricato lo sketch di esempi, sarà immediatamente possibile leggere i  dati di temperatura, pressione e altitudine stampati nella console seriale.MPL3115A2 barometro termometro altimetro

Caratteristiche del modulo

Dimensioni: 18 x 19 x 2 mm
Peso: 1,2 g
Vin: da 3 a 5,5 V CC
Logica: da 3 a 5 V.
Range di rilevamento della pressione: 50-110 kPa (fino a 10Km di altitudine)
Risoluzione 1,5 Pa / 0,3 m di altitudine
Questa scheda / chip utilizza l’indirizzo I2C a 7 bit 0x60

Libreria di gestione

Per la gestione del modulo sono disponibili varie librerie, una è quella fornita da Adafruit, ma quella utilizzata è quella realizzata dalla SparkFun, che produce un modulo simile, ma che non dispone del regolatore di tensione e del traslatore di livelli.
La libreria fornisce le seguenti funzioni:

  • begin() Gets sensor on the I2C bus.
  • readAltitude() Returns float with meters above sealevel. Ex: 1638.94
  • readAltitudeFt() Returns float with feet above sealevel. Ex: 5376.68
  • readPressure() Returns float with barometric pressure in Pa. Ex: 83351.25
  • readTemp() Returns float with current temperature in Celsius. Ex: 23.37
  • readTempF() Returns float with current temperature in Fahrenheit. Ex: 73.96
  • setModeBarometer() Puts the sensor into Pascal measurement mode.
  • setModeAltimeter() Puts the sensor into altimetery mode.
  • setModeStandy() Puts the sensor into Standby mode. Required when changing CTRL1 register.
  • setModeActive() Start taking measurements!
  • setOversampleRate(byte) Sets the # of samples from 1 to 128. See datasheet.
  • enableEventFlags() Sets the fundamental event flags. Required during setup.

Per caricare la libreria si utilizzerà la specifica funzione dell’IDE di Arduino, Gestione libreria. Sarà sufficiente ricercare “sparkfun MPL3115A2” ,quella utilizzata è la versione 1.2.4 e poi cliccare sul tasto Installa.

Programma di test

Per il primo test sarà sufficiente collegare il modulo ad Arduino seguendo queste indicazioni:

  • 5V di Arduino al pin Vin del modulo
  • GND di Arduino con pin GND del modulo
  • Pin A5 di Arduino con pin SDA del modulo
  • A4 di Arduino con pin SCL del modulo

MPL3115A2 barometro termometro altimetro

Si caricherà lo sketch sotto riportato e di attiverà il monito seriale dove sarà possibile leggere i valori letti dal sensore.

Programma con utilizzo display OLE

Una versione più sofisticato del sensore è quello di mostrare i valori letti su un piccolo display OLED, per fare questo si è utilizzato il Multi test shield  le cui caratteristiche sono riportate nell’articolo Multi test shield per moduli e sensori compatibile Arduino.
Il display OLED utilizzato ha una diagonale di 0.95″, una risoluzione di 96×64 pixel, 65536 Colori ed è basato sul driver SSD1331 è dotato di interfaccia di comando SPI e può essere alimentato con una tensione compresa tra i 3.3V – 5V. Vedere Display OLED 0,95″ 96×64 SSD1331 SPI

Sullo shield sono già presenti tutti i collegamenti per la connessione del display ed è presente il connettore JP15 su cui sono presenti i pin per il collegamento di un modulo con interfaccia I2C.
Lo schema da realizzarsi è quello riportato nell’immagine seguente

MPL3115A2 barometro termometro altimetro

caricato il programma, i dati saranno visualizzati sul display e aggiornati ogni secondo.

MPL3115A2 barometro termometro altimetro

Filmato illustrativo