Sensore BMP180 Pressione/temperatura/altitudine

Il sensore BMP180 è prodotto dalla Bosch Sensortec permette di effettuare diverse misurazioni come: pressione barometrica, temperatura, altitudine.

sensore bmp180

Descrizione

Il sensore BMP180 permette di misurare pressioni da 300 a 1100hPa (.da -500m a +9000m relativi al livello del mare), la tensione di alimentazione è compresa tra 1.8-3,6 (VDD) e 1.62-3.6V (VDDIO), il consumo è di soli 5uA con una lettura al secondo. Il sensore è contenuto in un package tipo LGA con una dimensione di 3,6×3,8 mm.

Oltre al valore di pressione, il sensore fornisce anche la misurazione della temperatura; i dati sono trasmessi tramite un’interfaccia I2C, con un indirizzo fisso 0x77.
La calibrazione è fatta durante la produzione e i valori sono salvati nella memoria del sensore.
Per facilitare l’uso del sensore, questo si trova di solito già montato su una piccola basetta come per esempio la Breakout Board GY-68 oppure HW-596, dove oltre al sensore, trovano posto i pochi altri componenti necessari al suo funzionamento.

sensore bmp180

Tipi di sensore

Oltre al modulo a 5 pin, sono  disponibili dei moduli a 4 pin, in cui è stato eliminato il pin marcato 3.3V.
Le caratteristiche sono le stesse, lo si può trovare con il codice BMP180 (GY 68, HW-596), le sue dimensioni sono più ridotte: 10×13 mm per un peso di 1,18 grammi.

sensore bmp180

Le due tipologie di modulo a confronto

sensore bmp180

sensore bmp180

Foto del modulo a 4 pin, è assente quello +3.3V

Schema elettrico del modulo

Il circuito è molto semplice in quanto formato principalmente dal sensore BMP180 (GY 68, HW-596)con le resistenze R1 e R2 sulle linee SCL e SDA.
L’altro componente presente è un regolatore CMOS a basso dropout tipo 662K con relativi condensatori che fornisce l’alimentazione a 3.3V, quando il modulo viene alimentato dal pin VCC magari con la tensione 5V fornita da Arduino.
Il regolatore può fornire una corrente di uscita di 250 mA e consentire una tensione di ingresso fino a 6,5 V.

sensore bmp180

Caratteristiche

ALIMENTAZIONE3.3V - 5V
ASSORBIMENTO0,5uA
LOGICA3.3V
PRESSIONE RILEVATA300 ÷1100 hPa (-500 ÷ 9000mt)
RISOLUZIONE0,02 hPa (17cm)
INTERFACCIAI2C 7bit con indirizzo 0x77
DIMENSIONI21x18mm
Ourpcb

Dove trovare schema elettrico e PCB del modulo

Lo schema e il relativo PCB può essere scaricato dal mio account presso OSHWLabutilizzando questo link.

Dove trovare il modulo BMP180

Il sensore  BMP180 potrà essere acquistato presso il sito Homotix, codice HMTBMP180
Ricordo che inserendo il codice di sconto dedicato agli utenti del sito adrirobot questi usufruiranno di uno sconto3%.

Il sensore BMP180 può essere acquistato anche presso il sito FUTURA ELETTRONICA, il codice prodotto è 2846-BMP180

Libreria di gestione del sensore

Per facilitare l’uso del sensore è disponibile un’apposita libreria, questa funzione in unione alla libreria Wire.h è già presente come libreria standard dell’IDE di Arduino che permette l’utilizzo del protocollo I2C.

sensore bmp180

Foto del modello sensore con 5 pin

In rete ve ne sono molte versioni, quella utilizzata per questo test ha questi comandi:

  • Initialize() – Inizializza il sensore
  • GetUncompensatedTemperature();
  • GetUncompensatedPressure();
  • Compensate Temperature();
  • CompensatePressure();
  • SoftReset() – garantisce che quando si è collegato il sensore vi sia un avvio pulito.
  • GetTemperature() – acquisisce dal sensore il dato della temperatura.
  • GetPressure() – acquisisce dal sensore il dato della pressione in Pascal.
  • GetAltitude() – acquisisce dal sensore il dato dell’altitudine in metri, il risultato ottenuto deve essere corretto per la pressione relativa al punto in cui avviene la misurazione, nel programma deve essere inserito il valore locale nella variabile seaLevelPressure, che di default è pari alla pressione a livello del mare pari a 101325 Pa;
  • SetResolution();
  • IsConnected() – verifica che il sensore sia effettivamente connesso.
  • EnsureConnected() – verifica che sia possibile connettersi con il sensore.
  • GetErrorText().

Nota: il dato della pressione è fornito in Pascal (Pa) nel Sistema internazionale pari a 1 newton su metro quadrato (1 N/m²). In ambito meteorologico, la pressione atmosferica si misura in centinaia di Pascal (o etto pascal, abbreviato con hPa). Si ha: 1 013,25 millibar = 101 325 Pa = 1 013,25 hPa

Scarica libreria

Per utilizzare la libreria sarà sufficiente scaricarla e salvarla all’interno della cartella Library dell’IDE di Arduino. Per utilizzarla all’interno del programma si dovranno aggiungere le seguenti righe:

#include <Wire.h>
#include <BMP180.h>

Taratura del sensore

Per ottenere i valori corretti dell’altitudine bisognerebbe inserire il valore relativo alla propria posizione nella variabile seaLevelPressure, questo di default contiene il valore 101325 (espresso in Pa), valore teorico a livello del mare.
Se non si modifica il valore, questo sarà solamente una stima, in quanto il valore diminuisce all’aumentare di quota.
Si consideri inoltre che il valore locale della pressione dell’aria dipende non solo dell’altitudine, ma anche da altri fattori quali temperatura, umidità relativa, e le condizioni atmosferiche.
Tuttavia, questa stima può essere utile per applicazioni non critiche.
Nota: Per i calcoli impostare il dato in uscita in Pa

Test base del modulo sensore

Materiale occorrente

Per testare il funzionamento del modulo sensore utilizzeremo lo sketch demo allegato alla libreria.
l materiale occorrente è:

  • La scheda Arduino UNO R3 smd:
  • Sensore di pressione BMP180;
  • Cavi di collegamento;
  • Breadboard.
sensore bmp180

Schema dei collegamenti

I collegamenti sono mostrati nella figura sottostante.

sensore bmp180

sensore bmp180

Programma di test

Una volta caricato lo sketch si dovrà attivare i monitor seriale dell’IDE, a questo punti si dovrebbero leggere i valori letti dal sensore al ritmo di 1 secondo

Nel caso fosse riportato la scritta “No sensor found”, controllare che il modulo sia correttamente alimentato, e che non siano invertiti i cavi SDA e SCL.

Lettura valori su display OLED

Per mostrare i dati rilevati dal sensore è quella di utilizzare un display OLED, per esempio un Display bicolore OLED 0.96″ 128×64 – SSD1306 .
Per interfacciare il modulo, il display utilizza un’interfaccia seriale I2C che richiede solo due pin di dati. Il circuito di reset è a bordo e significa che non è necessario un pin di reset aggiuntivo.
Sia il sensore che il display utilizzano la line I2C, ma avendo due indirizzi diversi non ci sono problemi.
Per altri tipi di display cedere l’articolo Panoramica display LCD, TFT, OLED.

sensore bmp180

Materiale necessario

Scheda Arduino UNO Breadboard
Sensore BMP180 Display OLED 0.96″ 128×64 – SSD1306
Cavi colorati F/F

Schema dei collegamenti

Sotto è riportato lo schema dei collegamenti

sensore bmp180

sensore bmp180

Librerie utilizzate

Per il funzionamento del programma, occorre utilizzare due librerie:

Libreria per gestione sensore BMP180
https://github.com/adafruit/Adafruit-BMP085-Library

Libreria per Display OLED 0.96″ 128×64 – SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Vedete anche l’articolo Arduino – Tutorial, come installare una libreria

Sketch utilizzato

Breve video

Altri esempi di utilizzo

Nei prossimi articoli vedremo alcuni esempi di utilizzo tra cui come realizzare una piccola stazione metereologica.

sensore bmp180

sensore bmp180