SENSORE DI PRESSIONE BMP280

Tutorial sul chip BMP280 per Illustrare Caratteristiche, Funzionamento e modo di Comunicare del Sensore di Pressione e Temperatura Digitale…

 

 

 



 
INTRO

Il sensore BMP280 è un sensore barometrico di pressione a bassa potenza che permette inoltre di misurare la temperatura. Può essere usato a bordo di droni oppure per stazioni di rilevazione meteo visto il suo basso errore nel rilevare la pressione.

Al suo interno vi è un MEMS (ovvero micro electro-mechanical system) ovvero un sistema elettro-meccanico che trasduce uno spostamento meccanico in un segnale elettrico. In particolare utilizza un elemento piezo-resistivo che deformandosi per via della pressione genera un segnale elettrico che dipende dalla pressione.

All’interno del chip vi è inoltre un ADC e un modulo di comunicazione I2C o SPI e inoltre dispone di un filtro digitale in modo tale da fare un certo numero di misurazioni e poi filtrarle in modo tale da ridurre al minimo l’errore di misurazione.

In realtà non si andrà ad utilizzare l’integrato ma un modulo con esso sopra saldato visto che il chip e smd senza pin. Il modulo e la piedinatura del chip sono i seguenti:

I pin dell’integrato sono portati tutti in uscita dal modulo tranne VDD e VDDIO che sono connessi insieme all’interno del modulo mentre rappresentano la tensione di alimentazione del chip e la tensione di alimentazione dell’interfaccia di Input-output.



 
CARATTERISTICHE ELETTRICHE E DI MISURA

Le caratteristiche elettriche del modulo sono le seguenti:

  • Tensione di funzionamento (VCC-GND): da 1.8v a 3.6V
  • Corrente media per misura ogni secondo: 4.2uA
  • Picco di corrente durante la misura della pressione: 1120uA
  • Corrente in modalità sleep: 0.3uA
  • Tempo di accensione: 2mS
  • Frequenza di misura: 157Hz
  • VDD massima: 4.25V
  • Tensione massima sui pin di comunicazione: VDD+0.3V

Quindi è conveniente usare una tensione di 3.3V e mettere in conto una corrente di 5uA circa, inoltre non è possibile avere più di 157 misurazioni in un secondo anche se bisogna considerare che dallo stato di stand-by all’accensione dell’integrato servono 2ms.

Per evitare di bruciare l’integrato bisogna far sì che la tensione VDD non raggiunga mai un valore superiore a 4.25V mentre per evitare di bruciare i pin di comunicazione la tensione deve essere minore della tensione di alimentazione + 0.3V, ad esempio se l’alimentazione è 3.3V sui pin di comunicazione si deve avere una tensione al massimo di 3.6V.

Come detto prima l’integrato può effettuare una singola misura oppure 16 e poi filtrarle per ottenere il massimo della risoluzione. È ovvio che avere 16 misurazioni richiede anche più corrente e più tempo per la misura, in particolare si avrà:

Quindi l’errore minimo ottenibile è pari a 0.16Pa (Pascal) ma questo richiede un tempo di misura molto alto e anche una corrente alta, l’ultra high resolution va usata solo se veramente necessaria. Anche per la misura della temperatura si può settare la risoluzione ottenendo i seguenti valori:

Oltre alle caratteristiche di misura riportante nelle tabelle bisogna tenere in considerazione questi altri parametri:

  • Temperatura di misura: da -40°C fino a +85°C
  • Range di misura della pressione: da 300 a 1100 hPa
  • Precisione assoluta di misura pressione: ±7hPa (-20°C 0°C), ±1hPa (0°C 65°C)
  • Precisione assoluta di misura temperatura: ±1°C

L’integrato non funziona quindi per temperature fuori dal primo range e non è in grado di misurare pressioni maggiori di 1100hPa o minori di 300hPa. La precisione assoluta è ±1.7hPa per la pressione e ±1°C per la temperatura, questo vuol dire che nel caso peggiore se in una stanza in cui c’è il sensore c’è una temperatura di 50°C e una pressione di 1000hPa in realtà il sensore può restituire un valore di temperatura compreso tra 49°C e 51°C e un valore di pressione compreso tra 998.3hPa e 1001.7hPa

 

COMUNICAZIONE CON IL SENSORE BMP280

Per comunicare con il sensore si usa il protocollo I2C e vi sono appositi registri da scrivere per configurare il sensore e appositi registri da leggere per ottenere i valori di temperatura e pressione misurati.

I registri sono i seguenti:

I registri 0xFC, 0xFB e 0xFA sono i registri che contengono i valori di temperatura invece 0xF9, 0xF8 e 0xF7 sono i registri dove è localizzato il valore di pressione convertito.

Il registro “config” con indirizzo 0xF5 invece serve a configurare il periodo tra le misure con i bit “t_sb”, i coefficienti del filtro con i bit “filter” e se abilitare la comunicazione SPI con il bit “spi3w_en”.

Il registro “ctrl_meas” con indirizzo 0xF4 invece serve a configurare la modalità di misura e di funzionamento del sensore. Con i bit “osrs_t” si seleziona l’oversampling di temperatura mentre con “osrs_p” l’oversampling della pressione. Con i bit “mode” invece si seleziona la modalità di funzionamento ovvero se ad alta precisione ma alto consumo oppure bassa precisione e basso consumo.

Il registro “status” con indirizzo 0xF3 invece controlla la misura, indicando se conclusa o in corso.

Gli altri registri, in ordine 0xE0, 0xD0, servono a resettare il sensore e l’altro contiene il suo indirizzo.

I byte di calibrazione che sono 26 vanno dal registro 0xA1 fino a 0x88.

Per leggere o scrivere con il protocollo I2C bisogna eseguire i seguenti passaggi:

Bisogna quindi andare a scrivere o leggere i valori nei registri al giusto indirizzo, avviando prima il protocollo e poi scrivendo l’indirizzo del sensore (111011X) dove X dipende dallo stato del pin SDO.

 

DOWNLOAD

Potete scaricare la il datasheet del componente al seguente LINK!!!



 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *