Anthias
mail
3 connectés     # # #

ET

Page annexe sur les capteurs électroniques de pression


clock Retour à la page principale sur les baromètres

 

b

Les capteurs de pression atmosphérique
Les mesures
Banc d’étalonnage des capteurs de pressions
Programme d’étalonnage du BMP280
Exploitation et résultats
Conclusion

clock Retour à la page principale sur les baromètres

Maj : 05/10/20

Abstract :
Mercury or aneroid barometers were the only solution for pressure measurement during centuries, but with the explosion of electronic systems in last decenies, they have been replaced by electronic sensors for automatic recording of values. Management is very easy with an Arduino.

 

Résumé :
Les baromètres à mercure ou anéroïdes ont été la seule solution de mesure de pression pendant des siècles, mais avec l'explosion des systèmes électroniques dans les dernières décennies, ils ont été remplacés par des capteurs électroniques pour l'enregistrement automatique des valeurs. La gestion est très simple avec un Arduino.

 

clock Les capteurs de pression atmosphérique

Il existe une grande variété de capteurs électroniques pour les diverses gammes de pressions, et cette page n’est pas restrictive à un seul type, la suite est valable aussi pour tous les autres modèles de capteurs de différents fabricants. !
La famille de baromètres numériques développée par Bosch, de très bonne facture et à coût dérisoire, est très répandue.
J’ai utilisé successivement les BMP085, 180, 280.
Le BME280 est un BMP280 auquel est rajoutée la mesure du taux d’humidité.
Le BME680 est un BME280 auquel est rajoutée la mesure de gaz.
La série continue...

Les datasheets de Bosch sont très instructifs, il faut les étudier avec soin. Chaque nouvelle génération de capteurs est meilleure que la précédente. Il existe toutes les bibliothèques d’exploitation. La liaison se fait au choix en I2C ou SPI. Pour les non micro-informaticiens, ce sont les protocoles de liaison série basiques.

Ces capteurs Bosch sont complexes en comportent beaucoup de registres subtils, mais heureusement de nombreuses bibliothèques sur Github en rendent l’utilisation sur Arduino immédiate.

bmp

BMP280

Haut de page

 

clock Les mesures

Si l’on cherche une valeur précise et répétitive de la pression, plus précisément du QNH, les choses ne sont pas si simples !
Prenons par exemple l’ancienne génération BMP280 dont j’ai testé beaucoup d’exemplaires montés en parallèles. Le datasheet nous donne :
Relative accuracy    ±0.12 hPa, equiv. to ±1 m  (950 … 1050hPa @25°C) _____ Et absolute accuracy ±1.7 hPa

Il faut donc s’attendre pour une pression normale de 1013.25 hPa (ramenée à l’altitude) de lire entre 1011 et 1015 hPa, avec les mêmes tolérances entre anticyclone 1025 hPa et dépression 980 hPa.

Il faut donc s’attendre pour une pression normale de 1013.25 hPa (ramenée à l’altitude) de lire entre 1011 et 1015 hPa, avec les mêmes tolérances entre anticyclone 1025 hPa et dépression 980 hPa.

En traçant simultanément les courbes de divers capteurs placés au même endroit dans les mêmes conditions, il est surprenant de constater que les courbes ne sont absolument pas parallèles et « tricotent » avec des écarts bien supérieurs aux prévisions ! Cela semblerait provenir du fait que les composants montés sur les platines chinoises sont des seconds choix éliminés au contrôle.

Une correction élémentaire du premier degré (y = a x + b) minimisera le problème. Tous les calculs se feront évidemment en flottant :

Valeur retenue = (Valeur lue * coefficient multiplicateur) + offset

Suivant les cartes, mes coefficients multiplicateurs sont entre .99 et 1.1 et les offsets de +/- 3 hPa
C’est beaucoup, car les composants divergent au-delà de ce qui est attendu, Ce n’est pas parfait en s’éloignant de la pression moyenne mais il est difficile de faire mieux, sauf à disposer d’un banc d’étalonnage en pression comme décrit ci-après qui permet de sortir une courbe Excel pour chaque capteur et corriger au mieux. Il faut s’efforcer d’être au mieux autour du 1013.25 hPa (ramené à l’altitude !) et fermer un peu les yeux en s’éloignant de la moyenne…

Les valeurs retenues des capteurs se font après un filtrage comme décrit ici : Filtrage par pondération temporelle f

Pour rester simple, je ne parle que de la méthode rustique de compensation externe, mais en étudiant le document Bosch, vous verrez que l’on peut agir aussi subtilement sur les réglages internes !

clock Retour à la page principale sur les baromètres

ili

Ancienne génération
sur DUE

Haut de page

 

clock Banc d’étalonnage des capteurs de pressions

L’instrument de base indispensable est un baromètre de Torricelli comme décrit,


Il faudra s’assurer avoir vaincu les embuches citées précédemment lors de la restauration, et qu’il indique bien à la pression ambiante la valeur données par les tables.

Si les valeurs divergent trop, il est inutile de continuer, les résultats ne seront pas interprétables.

 

t
Mon Torricelli numéro 3,
neuf pas encore déballé

. Le bidon plastique

L’enceinte de mesure choisie est un bidon plastique à gros bouchon. Un tube en cuivre provenant d’un coaxial semi rigide adopté en hyperfréquences, servira pour raccorder le tuyau.
Une douille banane femelle sera le fourreau d’un petit câble multibrin.
Ces deux tubes sont soudés à l’étain sur une plaquette cuivre.
La plaquette est noyée dans le silicone coté interne, ainsi que les tubes du coté externe et le câble multibrin.

Il ne reste plus qu’à placer le capteur 4 fils (I2C) ou 6 fils (SPI). Un Arduino extérieur permettra de lire les valeurs.

L’air s’infiltre dans le multiconducteur, il faut noyer toutes les extrémités des fils après soudure.

Premier essai en immergeant le bidon dans un seau d’eau et en sur-gonflant :
Repérage de bulles. Séchage et re tartinage de silicone sur la zone repérée et mise en dépression pour que le silicone soit aspiré dans les micro-fuites et colmate.
Nouveau test en surpression : Plus de bulles, je passe aux tests.

b

b

. Dépression et compression

Un aspirateur permet de réaliser au mieux une dépression de 200 hPa : 1203 hPa -> 803 hPa.


En compression soyez prudents, un compresseur pour gonfler les pneus monte à près de dix fois la pression atmosphérique, l'enceinte aura explosé bien avant.
Il faut se limiter à quelques centaines de hPa, ou pour parler en pneus, 0.2 bar.
Les petits gonfleurs de jouets de plage ou une pompe à vélo suffisent largement pour les tests.

Comme le montre la courbe, fuite 45 hPa en 24 h, la première réalisation a échoué, je n'ai pas su parvenir à une étanchéité suffisante.

Ma première approche avait été d’utiliser un pot de miel en verre dont le couvercle était découpé pour passer une prise DB9 et le raccord d'un tuyau, le tout noyé dans un bloc de silicone.
J’ai abandonné, ne pouvant maîtriser la micro-fuite restante. Fort de mon passé de moniteur de plongée qui a réalisé de nombreux boîtiers étanches pour mes photos sous-marines, j'avais sous-estimé la difficulté, mais je ne dispose plus des moyens industriels de l’époque.

Premier échec du bocal

b2
Fuite de 45 hPa
en 24 heures

b1

. Résultat des tests

Observez la courbe <Pression> après mise en forte dépression sur 24 heures.
Le pompage est terminé vers 21:15, le tuyau est bouché. Je suis allé me coucher en estimant qu’il y avait encore une fuite car dans les premières heures la pression remontait. Au réveil surprise, la pression à baissé comme au départ, puis a commencé à remonter vers 10:00. Cette courbe à priori contre-intuitive, s’explique parfaitement en se souvenant de la loi de Boyle-Mariotte :

Loi des gaz parfaits :   

 P * V = n * R * T

P = pression
V = volume
n = quantité de matière (nombre de molécules du gaz)
R = constante universelle des gaz parfaits
T = température. (en °Kelvin)

d

Déformation
en forte dépression

 

Vous comprendrez mieux en corrélant la courbe des pressions avec celle des températures du BMP280.
Admettons qu’il n’y a aucune fuite, le volume est constant, donc le facteur :( n * R / V ) est constant, donc la pression est strictement proportionnelle à la température absolue (en °K).

Au début, pompage en dépression à 853.3 hPa, ce qui refroidit le gaz dans l’enceinte à 23.45 °C : la pression monte, l’équilibre thermique se produit vers minuit, à 860 hPa et 24.2 °C,
La température baisse de 0.6 degrés pendant la nuit, à 23.45 °C, entraînant une baisse de pression de 2 hPa à 857.8 hPa.
Vers 10:00 la température de la pièce remonte donc la pression remonte et se stabilise à 859.47 hPa, la petite baisse de température vers 19:00 ne se voit pas encore à cause de l’inertie thermique, mais s’est vue la nuit suivante.
En conclusion de cette courbe surprenante au premier abord : L’enceinte est parfaitement étanche en dépression.

J’ai fait le même test en surpression, résultats identiques (mais en sens inverse)  :
Après gonflage, l’air s’est échauffé puis se refroidit, la pression baisse dans les premières heures, puis remonte, etc. Le lendemain la pression est stable et oscille doucement en fonction des variations de température.

L’enceinte est donc validée comme parfaitement étanche

L’enceinte étant est étanche à des écarts dix fois supérieurs à ceux des mesures réelles (pour rappel anticyclone 1025 hPa et dépression 980 hPa), elle sera donc parfaitement étanche dans une plage d’étalonnage de 1013.25,  + 10 hPa et - 25 hPa.
Il faudra penser à ne faire varier la pression que par petits paliers pour laisser les températures bien s’équilibrer.

 

 

e

Test en forte dépression
Lire l’explication des courbes

. Astuce : Brancher le réservoir

Le bouchon vissé sur le verre fuit, il sera impossible de faire l’étanchéité avec un autre bouchon percé.
L’idée est de couper une seringue, la ramollir à l’air chaud ou à l’eau bouillante et de la manchonner sur le réservoir.
L’autre seringue permet de faire varier la colonne de Hg entre les limites et de vérifier que cela ne fuit pas, avant de raccorder le système de mesure (sinon, tour de ruban adhésif…).

J’ai adopté les raccords et Tés pour arrosage automatique, très communs, faciles à adapter sur des tuyaux souples divers.

La petite marque au feutre blanc correspond au zéro de l’échelle, niveau du mercure à 760 mm et 20°C. Il faut ajuster à la goutte près pour aligner ce niveau.

. Alternative

Il est aussi possible de ne pas monter de prise. Avec un bocal plus grand, un Arduino alimenté sur accumulateur permettra de gérer un afficheur visible au travers du verre, c’est une cause de fuites en moins.

Les bacs pour congélation avec couvercle plastique et valve d’aspiration conviennent très bien aussi en dépression, mais ne le couvercle sautera en compression.

 

Haut de page

 

clock Programme d’étalonnage du BMP280

Après avoir rentré votre altitude dans le #define (ici 238), votre bon type de baromètre, et chargé le bon driver, vous obtiendrez cet affichage série 115200 bauds :

Altitude = 238 m ... Coefficient d'altitude = 1.028692 ... Température = 25.74 °C ... Coefficient temp = 1.004685
Baromètre type <Métallique> : La température de référence est de 0°C pour un métallique, de 15°C pour un Torricelli.

989.45 hPa ... 742.15 mm Hg <-- Lecture brute du BMP280
1017.84 hPa ... 763.44 mm Hg <-- Votre QNH brut compensé en altitude
1013.09 hPa ... 759.88 mm Hg <-- Votre QNH réel final, avec compensation thermique

Les valeurs à retenir sont sur la dernière ligne, après les deux corrections multiplicatives, ici en pression ambiante :
1013.09 hPa ... 759.88 mm Hg : Cela doit correspondre au QNH donné par votre station météo de référence (mais il était donné pour 1016...).
La valeur Raw, ici 742.15 mm, doit être la hauteur lue sur votre colonne de mercure
Si vous trouvez des bonnes valeurs voisines de celles calculées pour diverses pressions, votre BMP280 et votre baromètre à mercure sont nominaux.
Tracez la courbe Excel (Pression corrigée du BMP280 / Hauteur mercure lue), pour vérifier que la pente est très proche de 1 et l’offset faible.
Si vos valeurs divergent, les problèmes commencent…

Le programme
Arduino pour étalonner
un capteur Bosch
et un baromètre Hg :

f

Remarque 1 : BMP280 ou BME280 ?

Même si vous avez un BMP280, il vaut mieux utiliser la bibliothèque BME280 plus évoluée que celle du BMP280. Evidement vous lirez un taux d’humidité à zéro.


Remarque 2 : BMP280 chinois

J’ai commandé plusieurs lots de BME280 chinois à pas cher… En réalité il s’agissait de BMP280 hors tolérances et ré étiquetés BME…

 

Remarque 3 : Attention aux subtilités du C !

Si vous écrivez :
float pressure = .01 * bme280.getPressure() ;
Serial.print (pressure , 2) ;

Vous imprimerez par exemple : 991.17, C’est normal, vous multipliez un flottant (0.01) par un uint32_t (getPressure() ), la conversion implicite vous donne bien un float avec toutes ses décimales.

mais si vous écrivez
float pressure = bme280.getPressure() / 100;
Vous imprimerez : 991.00 en perdant les deux chiffres significatifs ! C’est une faute, vous divisez un uint32_t par un entier, le résultat est un entier, converti ensuite en float et il n’y a donc rien après la virgule.

Par contre en écrivant /100.0 , vous divisez bien un uint32_t par un double,  la conversion implicite vous donne bien un float avec toutes ses décimales.

Les conversions de types sont complexes et sujettes à bien des erreurs…

 

Remarque 4 : Pourquoi garder la température initiale pendant les mesures.

En début de manipulations, la température du mercure est équilibrée avec celle du BMP280. Lors des tests, en augmentant / diminuant la pression dans l’enceinte, le BMP280 va s’échauffer/ se refroidir (loi des gaz parfaits), alors que la température du mercure ne bougera absolument pas. Le firmware Bosch corrige la température dans l’affichage de la pression, c’est pour cela qu’il ne fait pas faire intervenir la température instantanée.

float calcCoefAltitude (int Alt)
{
float P0 ;
P0 = (288.15 - 0.0065 * Alt) ;
P0 = 288.15 / P0 ;
P0 = pow (P0, 5.255) ; 
// 1.028692 pour 238 metres
return P0 ;
}

Haut de page

 

clock Exploitation et résultats

Pour lancer les mesures précises, il est préférable d’attendre que le vent soit très faible, en effet le QNH de la station de référence peut différer du local lors des mouvements des masses d’air. Sans vent, le champ des pressions ramené au QNH est équipotentiel.

Après de nombreuses courbes Excel, avec des pas de pression très petits, il s’est avéré que cela était inutile, la réponse du BMP280 étant assez linéaire. Il suffit alors de prendre seulement deux points, l’un en dépression -200 hPa, l’autre en compression +200 hPa. C’est très loin des valeurs réalistes de nos futures variations de pression, mais cet écart énorme permet de réduire les erreurs de lecture de hauteur de la hauteur de mercure.

Cela permet de calculer la pente et l’offset de la droite, courbe du premier degré, y = a x + b
<y> est la valeur lue sur le BMP280, en mm Hg, donnée par le petit programme joint qui intègre les compensations
<x> la hauteur de mercure lue.

Vous devriez trouver la pente a = 1 et l'offset b = 0.

La réalité sera moins glorieuse avec un composant chinois de second choix.

Haut de page

 

clock Conclusion

Fin de la page annexe sur les capteurs électroniques clock Retour à la page principale sur les baromètres

Haut de page

© Christian Couderc 1999-2024     Toute reproduction interdite sans mon autorisation


* Page vue   18909   fois       IP : 18.188.227.108

 Haut de page         Dernière retouche le 10 Mars 2021 à 17 h         Retour page précédente

   Collector