Go Down

Topic: capteur de pression (MPX5700GP) (Read 3933 times) previous topic - next topic

maxpsi

Bonjour à tous,

je dispose d'un capteur de pression freescale MPX5700GP (celui représenté sur la page 7 de la datasheet).
Je cherche lire la pression, par conséquent j'ai utilisé la fonction de transfert fournie sur la datasheet : Vout = VS*(0.0012858*P+0.04) ± Error

après des calculs très complexes on obtient : P= ((Vout/Vs)-0,04)/0.0012858 (je vais d'abord négliger l'erreur devant les autres termes)

avec : Vout : Tension de sortie, Vs = 5V et P la pression

Lorsque je fais les branchements sur mon arduino UNO, je trouve des valeurs anormales. Avez-vous une explication ?

Vous trouverez ci-joint le code que j'utilise ainsi que la datasheet du capteur.

Code: [Select]

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

void loop() {
  int sensorValue = analogRead(A0);
  float pression = ((((sensorValue*5/1023) / 5) - 0.04) / 0.0012858) ;
  Serial.println(pression);
}


datasheet MPX5700GP

J'en profite pour vous demander si vous connaissez un capteur de pression hydrostatique (1-5 bars) compatible avec un arduino.


Je vous remercie par avance pour l'aide que vous m'apportez,


Maxpsi



Artouste

#1
Sep 24, 2016, 07:56 pm Last Edit: Sep 24, 2016, 08:01 pm by Artouste
...

Lorsque je fais les branchements sur mon arduino UNO, je trouve des valeurs anormales. Avez-vous une explication ?
bonsoir
Ordre de grandeur des anormalités ?
tu a bien noté que que le Vout evolue entre 0.2 et 4.7V (pour 0/700 kPa en Gauge)
tu utilise quoi comme refernece de tension pour ta conversion A/D ? le "5V" d'alim arduino (mode standard)  ?


maxpsi

Bonsoir Artouste,

la valeur qui m'est retournée est -31.11

Concernant la valeur de Vout qui varie entre 0.2 et 4.7V, cela signifie donc que j'ai une relation du type : Vout=(4.5/700)*P(kPa)+0.2

Effectivement, mon capteur est branché aux pins ground, +5V et A0 de l'arduino.

Merci beaucoup pour ton aide,

Bonne soirée

Maxpsi

aligote

#3
Sep 25, 2016, 01:03 pm Last Edit: Sep 25, 2016, 01:16 pm by aligote
..... j'ai utilisé la fonction de transfert fournie sur la datasheet : Vout = VS*(0.0012858*P+0.04) ± Error

après des calculs très complexes on obtient : P= ((Vout/Vs)-0,04)/0.0012858 (je vais d'abord négliger l'erreur devant les autres termes)

avec : Vout : Tension de sortie, Vs = 5V et P la pression

..................

Bonjour,

Cela ressemble à un problème de typage de variable. Dans le calcul il n'y aurait pas de cohérence des variables:

  float pression = ((((sensorValue*5/1023) / 5) - 0.04) / 0.0012858)

sensorValue est un entier signé, le résultat attendu un float, il peut y avoir des arrondis sur les affectations dans le calcul qui suppriment les décimales lors des calculs intermédiares.

Essayer :
- vérifier par un affichage intermédiaire que la valeur de sensorValue est correcte.
- déclarer sensorValue de type float.

Serge .D

Artouste

Bonsoir Artouste,

la valeur qui m'est retournée est -31.11
bonjour
quelle valeur brute acquise par l'ADC le MPX à l'air ?
sur un 5700DP (equivalent là à un 5700G ) je fluctue entre  37/38

maxpsi

Bonjour à tous,

merci pour votre réactivité,

la valeur qui m'est retournée lorsque je mets le capteur à l'air libre est 38 (0.185V équivalent, 0.197 V mesuré au voltmètre).
SensorValue augmente bien lorsque j'augmente la pression.

J'ai déclaré SensorValue de type float et le résultat "pression" retourné à l'air libre est de -2,22. Le résultat est toujours surprenant cependant je constate que cette valeur augmente et devient positive lorsque j'augmente la pression. Ceci est déjà une bonne avancée car avant ce n'était pas le cas...

Merci pour le temps que vous me consacré,

maxpsi

Artouste

Bonjour à tous,

merci pour votre réactivité,

la valeur qui m'est retournée lorsque je mets le capteur à l'air libre est 38 (0.185V équivalent, 0.197 V mesuré au voltmètre).
SensorValue augmente bien lorsque j'augmente la pression.
Donc ton probleme vient de TA fonction de transfert :smiley-mr-green:

maxpsi

J'ai évalué l'erreur, en considérant que la pression atmosphérique était de 100kPa, je trouve une erreur de -0.65. Par conséquent je ne peux la négliger (j'aurais du faire le calcul dès le début... erreur élémentaire de ma part...).

J'ai donc modifié mon code en prenant en compte l'erreur approximative et je trouve une valeur de pression cohérente (98,88 kPa). Il me faut donc estimer plus finement l'erreur réelle. Mais cela fonctionne maintenant.


Encore merci pour votre aide, vous m'avez tous les deux bien aidé

maxpsi

aligote

#8
Sep 25, 2016, 02:17 pm Last Edit: Sep 25, 2016, 02:19 pm by aligote

OK

Serge .D


maxpsi

Donc ton probleme vient de TA fonction de transfert :smiley-mr-green:
Effectivement, j'avais négligé un terme non négligeable...  :smiley-confuse:

Merci Artouste et Serge pour votre aide,

Bonne journée,  :)

maxpsi

Artouste

J'ai évalué l'erreur, en considérant que la pression atmosphérique était de 100kPa, je trouve une erreur de -0.65. Par conséquent je ne peux la négliger (j'aurais du faire le calcul dès le début... erreur élémentaire de ma part...).

J'ai donc modifié mon code en prenant en compte l'erreur approximative et je trouve une valeur de pression cohérente (98,88 kPa). Il me faut donc estimer plus finement l'erreur réelle. Mais cela fonctionne maintenant.


Encore merci pour votre aide, vous m'avez tous les deux bien aidé

maxpsi
bon,  ça c'est fait ! :smiley-mr-green:
maintenant si tu en disais plus sur ton "projet" , il serait surement plus simple de regarder/sourcer vers un "meilleur/plus adapté capteur  de P° "

maxpsi

En effet, je vais vous expliquer pourquoi j'utilise ce capteur... :)

Je souhaite réaliser un capteur de profondeur (utilisable en mer). Je n'ai pas trouvé de capteur de pression hydrostatique donc j'ai décidé de le fabriquer en utilisant un capteur de pression classique pour mesurer la pression dans une chambre d'air qui va se comprimer lorsque le capteur va descendre dans le fond (via la relation fondamentale de la statique des fluides je remonte à la profondeur)... c'est un système qui me semble faisable.




Artouste

En effet, je vais vous expliquer pourquoi j'utilise ce capteur... :)

Je souhaite réaliser un capteur de profondeur (utilisable en mer). Je n'ai pas trouvé de capteur de pression hydrostatique donc j'ai décidé de le fabriquer en utilisant un capteur de pression classique pour mesurer la pression dans une chambre d'air qui va se comprimer lorsque le capteur va descendre dans le fond (via la relation fondamentale de la statique des fluides je remonte à la profondeur)... c'est un système qui me semble faisable.




sur le principe c'est "faisable" , mais il y a une chose que je ne "comprend" pas :
tu veux enfermer ton capteur dans un volume d'air fermé (soumis à la pression) et remonter l'info analogique ou la pression est remontée par tubage ?

aligote

#13
Sep 25, 2016, 06:24 pm Last Edit: Sep 25, 2016, 06:25 pm by aligote
...............
Je souhaite réaliser un capteur de profondeur (utilisable en mer). Je n'ai pas trouvé de capteur de pression hydrostatique donc j'ai décidé de le fabriquer en utilisant un capteur de pression classique pour mesurer la pression dans une chambre d'air qui va se comprimer lorsque le capteur va descendre dans le fond ....
Intéressant pour naviguer dans les faibles profondeurs.... mais plus compliqué à utiliser qu'un sondeur à ultrasons.

10 m => environ 1 bar ... puis gare à la chambre à air et à la longueur des connexions !

(Peut-être un projet de plateforme pétrolière perso ?  :)  )

Avec une petite erreur due à l'élasticité du caoutchouc.

Serge .D

maxpsi

Je vais enfermer mon arduino et le capteur dans un caisson étanche. Le capteur sera relié au volume d'air via un tube (qui va donc passer à travers le caisson étanche).

Ce système ne sera pas utilisé pour de la navigation, il n'a d'ailleurs pas de vocation opérationnelle, jute un projet "fun". :)

J'espère que vous comprenez mieux mes explications.

maxpsi

Go Up