Modifications

Sauter à la navigation Sauter à la recherche
2 198 octets ajoutés ,  22 octobre 2021 à 01:00
Ligne 1 : Ligne 1 :  
{{ENG-CANSAT-NAV}}
 
{{ENG-CANSAT-NAV}}
 +
 +
== About the BMP280 breakout ==
 +
The BMP280 sensor can measure the atmospheric pressure and temperature (because the temperature also impact the sensor physics).
 +
 +
The BMP280 is a Bosch sensor upgraded from the BMP085/BMP180/BMP183 serie. This sensor is really great to make environmental or weather measurements. Best of all, it can be used over an I2C or a SPI bus!
 +
 +
[[fichier:BMP280.jpg|250px]]
 +
 +
It is one of the best sensor, it offer good accuracy for an affordable price. The accuracy is ±1 hPa for the pressure and ±1.0°C for the temperature. This sensor is not really made to measure the temperature but you can estimate its range with the BMP280.
 +
 +
As the pressure also change with the altitude, the sensor accuracy allows you to use the BMP280 to make an altimeter (with accuracy of ±1m at worste, about 0.25m in best conditions).
 +
 +
To ease the usage of this sensor, the SMD component is solder on a breakout board with some additional passive electronics. The board also bring a level shifter and 3V voltage regulator so it is save for 3V and 5V logic microcontrolers.
 +
 +
=== technical details ===
 +
* [https://df.mchobby.be/datasheet/bmp280.pdf Fiche technique du BMP280] (Bosch, pdf)
 +
* Size: 19.2mm x 17.9mm x 2.9mm
 +
* weight: 1.3 gr
    
== Install the Library ==
 
== Install the Library ==
Ligne 97 : Ligne 115 :     
== Pressure and altitude ==
 
== Pressure and altitude ==
 +
This section could also be named "the Weather Station OR the Altimeter".
 +
 +
Depending on the use case (weather station or altimeter", the way of using the BMP280 is slightly different.
 +
 
 
=== About pressure reading ===
 
=== About pressure reading ===
 
The pressure is returned in Pascals (an unit from [https://en.wikipedia.org/wiki/International_System_of_Units International System of Units]). 100 Pascals = 1 hPa = 1 millibar. The barometric pressure is often using the millibar or mm of mercury as unit. Just note that 1 pascal = 0.00750062 mm of mercury mercure.
 
The pressure is returned in Pascals (an unit from [https://en.wikipedia.org/wiki/International_System_of_Units International System of Units]). 100 Pascals = 1 hPa = 1 millibar. The barometric pressure is often using the millibar or mm of mercury as unit. Just note that 1 pascal = 0.00750062 mm of mercury mercure.
Ligne 104 : Ligne 126 :     
=== Pressure, SLP and altitude ===
 
=== Pressure, SLP and altitude ===
SLP means Sea Level Pressure (also knwon as PNM pressure). Most of the advanced the meteo station does transform the current pressure to SLP pressure before displaying it. If all pressure in the country are expressed as SLP pressure then it is more easy to determine the wind (and cloud) movements across the country, from higher pressure to lower pressure.  
+
SLP means Sea Level Pressure (also knwon as PNM pressure). Most of the advanced the weather station does transform the current pressure to normalized SLP pressure before displaying it. If all pressure in the country are expressed as SLP pressure then it is more easy to determine the wind (and cloud) movements across the country, from higher pressure to lower pressure.  
   −
Here is a small picture that shows the relation between SLP pressure, altitude and pressure given by a sensor (like the BMP280).  
+
Here is a small picture that shows the relation between normalized SLP pressure, altitude and pressure given by a sensor (like the BMP280).  
    
[[Fichier:ENG-CANSAT-BMP280-50.jpg|800px]]
 
[[Fichier:ENG-CANSAT-BMP280-50.jpg|800px]]
   −
Nous venons donc de dire qu'il faut "creuser un trou sous la maison pour revenir jusqu'au niveau de la mer". Pas besoin de faire un vrai trou, il suffit de connaître la hauteur de ce trou (donc notre altitude) puis d'ajouter la pression correspondant à cette colonne d'air.  
+
Let's say that we readed the pressure of 950 hPa at our house with the BMP280. The house sit at 523m of altitude.
 +
 
 +
If we want to know the SLP pressure, it is like sink a well under the house (down to the sea level). At the bottom of the well, we have more air over our head so the pressure will be greater than 950 hPa. In real world, we do not have to sink a well, we do know the altitude of our house (at 523m) so we can estimate the correction to apply (corresponding to a column of 523m of air). So, from the 950hPa read at house, we can calculate the corresponding pressure at sea level (SLP pressure). Together with the other SLP values, we can estimate the movement of clouds :-) .
 +
 
 +
In real world, we cannot sink a well under the house, neither know exact altitude of the house. 
 +
 
 +
Here the steps to follow with the BMP280 to estimate the altitude of the house:
 +
# Find the hPa (or mmbar) pressure at Sea Level on a WebSite
 +
# Use that value as baseline (don't hesitate to multiply it by 100)
 +
# Use the sensor and the BMP280 library to read the altitude.
 +
# Calculate the correction value (for the air's colonne) in hPa = height-in-meter / 8.3
   −
Voici la marche à suivre:
+
When you have to "correction" value you don't have to care anymore about the baseline.
# Relevez la pression hPa (ou mmbar) au niveau de la mer (sur une station météo de référence)
  −
# saisissez cette valeur comme baseline (n'oubliez pas de multiplier par 100)
  −
# Utilisez le senseur pour déterminer votre l'altitude.
  −
# Calculer la valeur de compensation (colonne d'air) en hPa = hauteur-en-m / 8.3
     −
Ensuite, vous pourrez relever la pression du senseur (sans vous préoccuper de la baseline) PUIS ajouter la valeur de compensation calculée -> Voilà! Vous avez la Pression PNM (celles affichées sur les stations météo de référence).
+
Indeed, we can read the current pressure (without caring about the baseline) THEN we add the "correction" value --> Tadaaa! We have the SLP pressure (the same than displayed on Reference Weather Station).
   −
  <nowiki>
+
  <nowiki># mean pressure at the sea level (not critical for SLP pressure)
# pression moyenne au niveau de la mer (non essentielle pour Pression PNM)
   
p.baseline = 101325
 
p.baseline = 101325
# pression PNM
+
# SLP pressure
p = bmp180.pressure + compensation
+
p = bmp280.pressure + compensation</nowiki>
</nowiki>
     −
p contiendra alors la valeur de pression normalisée au niveau de la mer (PNM).
+
where {{fname|p}} would contains pressure normalized at sea level (so the SLP value).
   −
Par contre, l'altitude absolue ne sera plus mesurée fiablement (à moins de pouvoir faire une mise-à-jour de p.baseline régulièrement). Il sera toujours possible d'utiliser la valeur de l'altitude pour détecter une différence de niveau si votre senseur est embarqué sur un "ballon sonde". Dans le cas d'une station météo fixe, l'altitude ne sera plus d'une très grande utilité :-) ... c'est la pression PNM qui nous intéresse
+
The downside of the "mean pressure value" approach (101325 Pa) is that you cannot estimate the altitude with accuracy.  
 +
However, by updating the baseline value every day with the "day's pressure" at sea level (see on Internet broadcast website) then the altitude calculation would be fairly precise.
   −
{{ambox|text=Prenez le temps de lire les points suivants, ils contiennent toutes les informations nécessaires pour comprendre et réaliser les opérations décrites ci-dessus.}}
+
Just remind:
 +
* '''If you plan to do a Weather station''' then you have to care about the correction in order calculate the normalized value at sea level. Altitude is not useful since the weather station doesn't move.
 +
* '''if you need a flying sensor''' in a rocket then you have to care about the baseline value (sea level pressure {{underline|of the day}}) for have a accurate measure the the altitude.
   −
=== La pression au niveau de la mer varie! ===
+
=== The sea level pressure change every day! ===
Une valeur standard de la pression au niveau de la mer est de 1013.25 mbar (ou 1013.25 hPa).
+
The usual pressure at sea level is about 1013.25 mbar (or 1013.25 hPa or 101325 Pa).
   −
Cependant, cette valeur varie en fonction des conditions atmosphérique et de la quantité de vapeur d'eau dans l'air.
+
However, this value depends on the weather conditions and quantity of steam in the air.
   −
Par exemple, ce jour, la pression est de 1002.00 hPa à la Panne (En bordure de mer, Belgique). La Belgique étant un petit territoire relativement plat, la variation de pression à la mer est forcement un élément plus important qu'ailleurs.
+
By example, today the pressure is 1002.00 hPa at the Belgian's sea level.  
   −
<font color="red">Cette valeur est importante si vous avez besoin de relever votre altitude avec une certaine précision en vue de calculer la colonne d'air de compensation (pour calculer les pressions PNM)'''</font>
+
<font color="red">this value is critical if you want to evaluate the altitude of the sensor.</font>. It is also important to know the current altitude if you plan to calculate the "correction" for the normalized SLP pressure.
   −
J'ai donc corrigé ma baseline comme suit (valeur en hPa * 100):
+
So I have fixed the baseline as follow before reading the altitude:
   −
  bmp180.baseline = 100200
+
  Serial.print(bme.readAltitude(1002.00));
 +
Serial.println(" m");
   −
Vous pouvez facilement prendre connaissance de cette pression en consultant un site météo local.
+
It is quite easy to know the current sea level pressure by using an Internet Weather Broadcast like [http://www.meteobelgique.be/observations/temps-reel/stations-meteo.html this link to meteobelgique.be]
   −
Je vous propose [http://www.meteobelgique.be/observations/temps-reel/stations-meteo.html ce lien vers meteobelgique.be]
+
=== The sensor doesn't give the right altitude! ===
   −
=== Le senseur ne me donne pas la bonne altitude! ===
+
My sensor does indicates an altitude of 189m whereas the reference weather station (next to house) is known to be at 120m height (at the top of the tower)! What's wrong with the sensor?
Mon senseur m'indique une altitude à 189m alors que le site météorologique, à deux pas de chez moi, est à 120m de haut (en haut de la tour du service d'incendie)!  
     −
L'altitude peut être déduite de la différence entre la pression atmosphérique locale et la pression atmospherique au niveau de la mer.
+
The altitude is deduced from the difference of local pressure and pressure at the sea level.
   −
Pour relever votre altitude avec précision avec un BMP180, vous devez connaître la pression au niveau de la mer (''baseline'') avec la même précision.  
+
If you want to obtain an accurate altitude value with the BMP280 then you need to know the pressure at the sea level (''the baseline'') with precision.  
   −
Une fois la pression de la baseline corrigée avec:
+
Once the baseline value corrected, you will have the correct altitude:
   −
  bmp180.baseline = 100200 # Pression du jour au niveau de la mer (multiplier par 100)
+
  bme.readAltitude(1002.00)
   −
mon senseur retourne une altitude de 104m, nettement plus convenable.
+
The sensor would return the right altitude (104m) for the sensor which is quite good since we are not in the tower (like the reference weather station).
   −
=== La pression atmosphérique semble incorrecte! ===
+
=== The pressure is not correct atmosphérique semble incorrecte! ===
Mon senseur retourne la valeur de 98909 (soit 989.09 hPa) alors que la station météo de référence indique 1002 hPa!
+
My sensor returned a pressure of 98909 pascal (so 989.09 hPa) whereas the reference weather station does mentino 1002 hPa!
   −
Dans l'absolu, la valeur est bonne mais pas ne tient pas compte de la normalisation/compensation PNM appliqué par la station de référence.
+
The sensor value is right, it just not apply the correction to indicates the Normalized SLP pressure (equivalent pressure at the sea level). The reference {{underline|reference}} weather station does applies this correction for yo (so they displays normalized SLP).
   −
Nous allons faire ce petit calcul ensemble...
+
Let's do the correction on the value...
   −
{{underline|Pour commencer:}} vous aurez lu les points précédents et vous savez donc :
+
{{underline|First:}} read the preceding point, from it we know :
* Faites en sorte que la pression au niveau de la mer corresponde à la valeur du jour (baseline=100200)
+
* that we have to set the baseline to the current pressure at day's sea level pressure (baseline=100200)
* Ceci fait, relevez votre altitude à l'aide du senseur (le mienne est de 104 m)
+
* once done, we can use the sensor to calculate the current altitude of the sensor (in our case, it is 104 m)
* La pression diminue de 1hPa chaque fois que l'on monte en altitude de 8.3m .
+
* the pressure decrease of 1hPa every time we increase the altitude of 8.3m .
   −
{{underline|Ensuite, la station météo:}}
+
{{underline|Next, on the reference Weather station:}}
   −
Les stations météos normalisent la valeur de la pression atmosphérique pour la ramener "au niveau de la mer" (PNM: Pression Niveau Mer ou SLP: Sea Level Pressure).
+
The weather station does normalize the atmospheric pressure calculate local pressure at the Sea Level altitude (called SLP for "Sea Level Pressure" also named "PNM" for ''Pression Niveau Mer'').
   −
Cela signifie que la station météo appliquent une correction (compensation) comme indiqué en début de cette section.  
+
This means that reference weather station applies the correction (compensating) to the read value.  
   −
Pour ma station de référence, il s'agit de 120m. En gros, la correction consiste à ajouter une colonne d'air de 120m au dessus du senseur donc une correction de (120 / 8.3) hPa = 14.45 hPa.
+
For the reference station next to house, its height is 120m. so the correction adds the air column of 120m height over the sensor value to get the normalized SLP pressure. So the correction is evaluated to (120 / 8.3) hPa = 14.45 hPa.
   −
{{underline|Appliquons la correction à la mesure notre BMP180:}}
+
{{underline|Let's apply the same principle to our BMP280 readings:}}
   −
Dans notre cas précis, notre altitude est de 104m. Rapellez-vous, la pression diminue de 1hPa tous les 8.3m.
+
In our case, we know that the altitude of the BMP280 sensor is 104m. Remind, the pressure is reduced of 1hPa every time our altitude increase of 8.3m.
   −
Pour 104m la colonne d'air correspondante représente une pression de 104 / 8.3 = 12.53 hPa
+
For 104m, the air column until the sea level correspond to 104 / 8.3 = 12.53 hPa additional pressure.
   −
Le senseur BMP180 retourne la valeur 989.09 hPa, la valeur corrigée au niveau de la mer est 989.09 + 12.53 = 1001.62 hPa. Soit la valeur de la station de météo de référence (1002 hPa) à deux pas de la maison.
+
As the sensor give the 989.09 hPavalue, the correction to have the Normalized SLP is 989.09 + 12.53 = 1001.62 hPa. Great! it is almost the same value than reference weather station next to home (to remind, it communicates 1002 hPa).
   −
{{ambox|text=Vous aurez sans doute noté que la pression de la station de référence est de 1002 hPa, tout comme la pression au niveau de la mer (aussi 1002 hPa). C'est un pure hasard du jour, ces deux valeurs sont habituellement différentes.}}
+
{{ambox|text=Please note that the today's pressure is 1002 hPa and our normalized pressure is also 1002 hPa. This is rare situation and means that the air will not flow in any way between our location and the sea.}}
    
{{ENG-CANSAT-TRAILER}}
 
{{ENG-CANSAT-TRAILER}}
29 910

modifications

Menu de navigation