Table des matières:
- Étape 1: Démonstration
- Étape 2: Ressources utilisées
- Étape 3: Pourquoi mesurer la pression ?
- Étape 4: La famille de capteurs de pression MPX
- Étape 5: Le MPX5700DP
- Étape 6: Pour la démonstration
- Étape 7: Calibrage de l'ESP ADC
- Étape 8: Calcul de la pression
- Étape 9: Assemblage
- Étape 10: Code source
- Étape 11: Fichiers
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Comment connaître le niveau d'eau dans un réservoir d'eau ? Pour surveiller ce genre de chose, vous pouvez utiliser un capteur de pression. C'est un équipement très utile pour l'automatisation industrielle, en général. Aujourd'hui, nous allons parler de cette famille exacte de capteurs de pression MPX, spécifiquement pour la mesure de pression. Je vais vous présenter le capteur de pression MPX5700 et réaliser un échantillon d'assemblage à l'aide de l'ESP WiFi LoRa 32.
Je n'utiliserai pas la communication LoRa dans le circuit aujourd'hui, ni WiFi ni Bluetooth. Cependant, j'ai opté pour cet ESP32 car j'ai déjà appris dans d'autres vidéos comment utiliser toutes les fonctionnalités dont je parle aujourd'hui.
Étape 1: Démonstration
Étape 2: Ressources utilisées
• Capteur de pression différentielle MPX5700DP
• Potentiomètre 10k (ou trimpot)
• Protoboard
• Fils de connexion
• Cable USB
• ESP Wi-Fi LoRa 32
• Compresseur d'air (facultatif)
Étape 3: Pourquoi mesurer la pression ?
• Il existe de nombreuses applications où la pression est une variable de contrôle importante.
• Nous pouvons impliquer des systèmes de contrôle pneumatiques ou hydrauliques.
• Instrumentation médicale.
• Robotique.
• Maîtrise des procédés industriels ou environnementaux.
• Mesure de niveau dans des réservoirs de liquide ou de gaz.
Étape 4: La famille de capteurs de pression MPX
• Ce sont des transducteurs de pression en tension électrique.
• Ils sont basés sur un capteur piézo-résistif, où la compression est convertie en une variation de la résistance électrique.
• Il existe des versions capables de mesurer de petites différences de pression (de 0 à 0,04 atm), ou de grandes variations (de 0 à 10 atm).
• Ils apparaissent dans plusieurs packages.
• Ils peuvent mesurer la pression absolue (par rapport au vide), la pression différentielle (la différence entre deux pressions, p1 et p2), ou manométrique (par rapport à la pression atmosphérique).
Étape 5: Le MPX5700DP
• La série 5700 comprend des capteurs absolus, différentiels et de jauge.
• Le MPX5700DP peut mesurer une pression différentielle de 0 à 700 kPa (environ 7 atm).
• La tension de sortie varie de 0,2V à 4,7V.
• Sa puissance est de 4,75V à 5,25V
Étape 6: Pour la démonstration
• Cette fois, nous ne ferons pas d'application pratique à l'aide de ce capteur; nous ne ferons que le monter et effectuer quelques mesures à titre de démonstration.
• Pour cela, nous utiliserons un compresseur d'air direct pour appliquer la pression à l'entrée haute pression (p1) et obtenir la différence par rapport à la pression atmosphérique locale (p2).
• Le MPX5700DP est un capteur unidirectionnel, c'est-à-dire qu'il mesure des écarts positifs où p1 doit toujours être supérieur ou égal à p2.
• p1> p2 et la différence sera p1 - p2
• Il existe des capteurs différentiels bidirectionnels qui peuvent évaluer les différences négatives et positives.
• Bien qu'il ne s'agisse que d'une démonstration, nous pourrions facilement utiliser les principes ici pour contrôler, par exemple, la pression dans un réservoir d'air, alimenté par ce compresseur.
Étape 7: Calibrage de l'ESP ADC
• Puisque l'on sait que la conversion analogique-numérique d'ESP n'est pas totalement linéaire et peut varier d'un SoC à l'autre, commençons par faire une simple détermination de son comportement.
• A l'aide d'un potentiomètre et d'un multimètre, nous allons mesurer la tension appliquée à l'AD et la rapporter à la valeur indiquée.
• Avec un programme simple de lecture de l'AD et de collecte des informations dans un tableau, nous avons pu déterminer la courbe de son comportement.
Étape 8: Calcul de la pression
• Bien que le fabricant nous fournisse la fonction avec le comportement du composant, il est toujours conseillé d'effectuer un étalonnage lorsqu'il s'agit de prendre des mesures.
• Cependant, comme il ne s'agit que d'une démonstration, nous utiliserons directement la fonction trouvée dans la fiche technique. Pour cela, nous allons le manipuler d'une manière qui nous donne la pression en fonction de la valeur ADC.
* Rappelez-vous que la fraction de la tension appliquée à l'ADC par la tension de référence doit avoir la même valeur que l'ADC lue par l'ADC total. (sans tenir compte de la correction)
Étape 9: Assemblage
• Pour connecter le capteur, recherchez l'encoche dans l'une de ses bornes, qui indique la broche 1.
• En comptant à partir de là:
La broche 1 fournit une sortie de signal (de 0V à 4,7V)
La broche 2 est la référence. (GND)
Broche 3 pour l'alimentation. (Vs)
• Comme la sortie du signal est de 4,7V, nous utiliserons un diviseur de tension pour que la valeur maximale soit équivalente à 3V3. Pour cela, nous avons fait le réglage avec le potentiomètre.
Étape 10: Code source
Code source: #Inclut et #définit
//Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //Os pinos do OLED estão conectados ao ESP32 seguintes GPIO's: //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado por software
Source: Variables globales et constantes
Affichage SSD1306 (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display" const int amostras = 10000; //número de amostras coletadas para a média const int pin = 13; //pino de leitura const float fator_atm = 0.0098692327; //fator de conversation para atmosferas const float fator_bar = 0.01; //fator de conversation para bar const float fator_kgf_cm2 = 0.0101971621; // taux de conversion kgf/cm2
Code source: configuration ()
void setup(){ pinMode(pin, INPUT); //pino de leitura analógica Serial.begin(115200); //Iniciando a serial //Inicia o display display.init(); display.flipScreenVertically(); //Vira a tela verticalmente }
Code source: Boucle ()
void loop(){ float medidas = 0.0;//variável para manipular as medidas float pressao = 0.0; //variável para armazenar o valor da pressão //inicia a coleta de amostras do ADC for (int i = 0; i
Code source: Fonction qui calcule la pression en kPa
float calculaPressao (float medida){ //Calcula a pressão com o //valor do AD corrigido pela função corrigeMedida() //Esta função foi escrita de acordo com dados do fabricante //e NÃO LEVA EM CONSIDERAÇÃO OS POSSÍVEIS DESVIOS DO COMPONENTE (erro) retour ((corrigeMedida(medida) / 3,3) - 0,04) / 0,0012858; }
-- IMAGES
Code source: Fonction qui corrige la valeur AD
float corrigeMedida(float x) { /* Esta função fo obtida através da relação entre a tensão aplicada no AD e valor lido */ return 4.821224180510e-02 + 1.180826610901e-03 * x + -6.640183463236e-07 * x * x + 5.235532597676e-10 * x * x * x + -2.020362975028e-13 * x * x * x * x + 3.809807883001e-17 * x * x * x * x * x + -2.896158699016e-21 * x * x * x * x * x * x; }
Étape 11: Fichiers
Téléchargez les fichiers:
INO