Différences entre versions de « BMP085-Utiliser »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 52 : Ligne 52 :
 
<small>Source: [http://en.wikipedia.org/wiki/Barometric_pressure Wikipedia]</small>
 
<small>Source: [http://en.wikipedia.org/wiki/Barometric_pressure Wikipedia]</small>
  
With the Arduino library, we take care of that for you! Simply run this sketch which will return the current altitude based on the pressure.
+
La librairie Arduino d'AdaFruit prend soin de tous ces aspects pour vous! Exécutez simplement le sketch qui retournera l'altitude actuelle à partir de la pression atmosphérique.
  
 
  <nowiki>    #include "Wire.h"
 
  <nowiki>    #include "Wire.h"
Ligne 69 : Ligne 69 :
 
     Serial.println(" Pa");
 
     Serial.println(" Pa");
 
     // Calculer l'altitude en considérant le pression  
 
     // Calculer l'altitude en considérant le pression  
     // barométrique 'standard' barometric de 1013.25 millibar = 101325 Pascal
+
     // barométrique 'standard' de 1013.25 millibar = 101325 Pascal
 
     Serial.print("Altitude = ");
 
     Serial.print("Altitude = ");
 
     Serial.print(bmp.readAltitude());
 
     Serial.print(bmp.readAltitude());
Ligne 91 : Ligne 91 :
 
[[Fichier:BMP085-Utiliser-03.jpg]]
 
[[Fichier:BMP085-Utiliser-03.jpg]]
  
Il existe malheureusement une demi-douzaine d'unités de pression différentes. Sur l'exemple cet exemple elle est exprimée en pouce ('''inches'''), c'est techniquement la hauteur de mercure exprimé en pouce (''Mercury Inches'' or ''Hg Inches''), en Europe il existe encore "millimètre de Mercure". Nous avons besoin de cette pression en Pascals, donc [ http://www.engineeringtoolbox.com/pressure-units-converter-d_569.html nous allons la convertir]!
+
Il existe malheureusement une demi-douzaine d'unités de pression différentes. Sur l'exemple cet exemple elle est exprimée en pouce ('''inches'''), c'est techniquement la hauteur de mercure exprimé en pouce (''Mercury Inches'' or ''Hg Inches''), en Europe il existe encore "millimètre de Mercure" (''mmHg''). Nous avons besoin de cette pression en Pascals, donc [ http://www.engineeringtoolbox.com/pressure-units-converter-d_569.html nous allons la convertir]!
  
 
[[Fichier:BMP085-Utiliser-04.jpg]]
 
[[Fichier:BMP085-Utiliser-04.jpg]]
  
Cela fait donc 101,964 Pascals. ouvrez le programme '''Examples->BMP085test''' dans Arduino IDE (depuis la barre de menu) et modifiez la ligne pour y passer en argument edit the line where you pass in the 'corrected' altitude.  
+
Cela fait donc 101,964 Pascals. ouvrez le programme '''Examples->BMP085test''' dans Arduino IDE (depuis la barre de menu) et modifiez la ligne pour y passer en argument la pression actuelle au niveau de la mer. Nous aurons maintenant une évaluation correcte de l'altitude.  
  
 
[[Fichier:BMP085-Utiliser-05.jpg]]
 
[[Fichier:BMP085-Utiliser-05.jpg]]
  
Now it will print out the correct altitude! 30 meters which is a lot better.  
+
Voila, il affichera maintenant l'altitude correcte! soit 30 mètres, ce qui est nettement mieux.  
  
 
[[Fichier:BMP085-Utiliser-06.jpg]]
 
[[Fichier:BMP085-Utiliser-06.jpg]]
  
 
{{BMP085-TRAILER}}
 
{{BMP085-TRAILER}}

Version du 21 avril 2013 à 16:09

Il faut utiliser beaucoup d'épouvantables opérations mathématiques déplaisantes pour utiliser ce senseur et calculer l'altitude ainsi que la pression barométrique. Vous pouvez consulter la fiche technique mais à vrai dire, ce n'est pas très intuitif ni très pédagogique - c'est juste la façon dont le senseur fonctionne.

Pour prendre en charge toute cette complexité mathématique, AdaFruit dispose d'une librairie Arduino. Vous pouvez télécharger cette librairie sur le Github d'AdaFruit

Pour installer la librairie:

  • Cliquez sur le bouton DOWNLOADS en haut à droite.
  • Renommez le répertoire décompressé en Adafruit_BMP085.
  • Vérifiez que le répertoire Adafruit_BMP085 contienne bien les fichiers Adafruit_BMP085.cpp et Adafruit_BMP085.h
  • Placez la librairie BMP085 dans le répertoire répetoire_des_sketch_arduino/libraries/.
    Vous pourriez avoir besoin de créer un sous répertoire libraries si c'est votre première librairie.
  • Redémarrez votre environnement Arduino IDE.

Maintenant, vous pouvez compiler et télécharger ce premier sketch d'exemple.

#include "Wire.h"
#include "Adafruit_BMP085.h"

Adafruit_BMP085 bmp;

void setup() {
    Serial.begin(9600);
    bmp.begin();
}

void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    Serial.print("Pression = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    Serial.println();
    delay(500);
}

Ouvrez ensuite le moniteur série d'Arduino (sur le début de 9600 bauds).

Le sketch va continuellement afficher la température en °C et la pression en Pa (Pascals).

Vous pouvez tester les variations de mesure du senseur (en pression et température) en plaçant votre doigt au dessus du trou du senseur. La température et la pression augmenteront comme vous pouvez le constater ici:

BMP085-Utiliser-00.jpg

Mesure d'Altitude

Puisque nous savons que la pression chute lorsque l'altitude augmente (c'est pourquoi l'air est si ténu en haute altitude) nous pouvons calculer l'altitude actuelle a partir de la pression et de la température. Encore un fois, cela implique encore ces épouvantables opérations mathématiques, vous pouvez en apprendre plus sur ces calcul sur Wikipédia (anglais) (d'où provient le graphique).

BMP085-Utiliser-01.png
Source: Wikipedia

La librairie Arduino d'AdaFruit prend soin de tous ces aspects pour vous! Exécutez simplement le sketch qui retournera l'altitude actuelle à partir de la pression atmosphérique.

    #include "Wire.h"
    #include "Adafruit_BMP085.h"
    Adafruit_BMP085 bmp;
    void setup() {
    Serial.begin(9600);
    bmp.begin();
    }
    void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    Serial.print("Pression = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    // Calculer l'altitude en considérant le pression 
    // barométrique 'standard' de 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" metres");
    Serial.println();
    delay(500);
    }

Exécutez ce sketch et voyez l'altitude calculée.

BMP085-Utiliser-02.jpg

Par exemple: selon le senseur, nous somme actuellement à 21.5m sous le niveau de la mer.

Le seul problème c'est que nous savons pertinemment que nous ne sommes pas nous ne niveau de la mer!

Alors, quel est le problème avec le senseur? Aucun, le senseur fonctionne correctement. Le problème c'est que la pression au niveau de l'océan change en fonction des conditions climatiques.

Il faut donc 'normaliser' (normalize) le senseur, et lui faire savoir quel est la pression atmosphérique au niveau de la mer. Vous pouvez obtenir la pression barométrique au niveau de la mer sur beaucoup de site de prévision atmosphérique.

BMP085-Utiliser-03.jpg

Il existe malheureusement une demi-douzaine d'unités de pression différentes. Sur l'exemple cet exemple elle est exprimée en pouce (inches), c'est techniquement la hauteur de mercure exprimé en pouce (Mercury Inches or Hg Inches), en Europe il existe encore "millimètre de Mercure" (mmHg). Nous avons besoin de cette pression en Pascals, donc [ http://www.engineeringtoolbox.com/pressure-units-converter-d_569.html nous allons la convertir]!

BMP085-Utiliser-04.jpg

Cela fait donc 101,964 Pascals. ouvrez le programme Examples->BMP085test dans Arduino IDE (depuis la barre de menu) et modifiez la ligne pour y passer en argument la pression actuelle au niveau de la mer. Nous aurons maintenant une évaluation correcte de l'altitude.

BMP085-Utiliser-05.jpg

Voila, il affichera maintenant l'altitude correcte! soit 30 mètres, ce qui est nettement mieux.

BMP085-Utiliser-06.jpg


Source: Bosch BMP085 Breakout Board réalisé par LadyAda pour AdaFruit Industries

Créé par LadyAda pour AdaFruit Indrustries.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.