Inhoudsopgave:

Leer hier over een uiterst belangrijke sensor! 11 stappen:
Leer hier over een uiterst belangrijke sensor! 11 stappen:

Video: Leer hier over een uiterst belangrijke sensor! 11 stappen:

Video: Leer hier over een uiterst belangrijke sensor! 11 stappen:
Video: ELBERT HELPT BIJ EEN BEVALLING - TOPDOKS EXTRA 2024, Juli-
Anonim
Leer hier over een uiterst belangrijke sensor!
Leer hier over een uiterst belangrijke sensor!

Hoe kom je te weten over het waterniveau in een watertank? Om dit soort dingen te bewaken, kunt u een druksensor gebruiken. Dit is in het algemeen zeer nuttige apparatuur voor industriële automatisering. Vandaag gaan we het hebben over deze exacte familie van MPX-druksensoren, specifiek voor drukmeting. Ik zal u kennis laten maken met de MPX5700-druksensor en een monstermontage uitvoeren met behulp van de ESP WiFi LoRa 32.

Ik zal vandaag geen LoRa-communicatie in het circuit gebruiken, noch WiFi noch Bluetooth. Ik heb echter voor deze ESP32 gekozen omdat ik al in andere video's heb geleerd hoe je alle functies kunt gebruiken die ik vandaag bespreek.

Stap 1: Demonstratie

Demonstratie
Demonstratie
Demonstratie
Demonstratie

Stap 2: Gebruikte bronnen

Gebruikte bronnen
Gebruikte bronnen

• MPX5700DP Drukverschilsensor

• 10k potentiometer (of trimpotmeter)

• Protobord

• Aansluitdraden

• USB-kabel

• ESP WiFi LoRa 32

• Luchtcompressor (optioneel)

Stap 3: Waarom druk meten?

Waarom druk meten?
Waarom druk meten?

• Er zijn tal van toepassingen waarbij druk een belangrijke regelvariabele is.

• We kunnen pneumatische of hydraulische besturingen inzetten.

• Medische instrumentatie.

• Robotica.

• Beheersing van industriële of milieuprocessen.

• Niveaumeting in vloeistof- of gasreservoirs.

Stap 4: De MPX-familie van druksensoren

De MPX-familie van druksensoren
De MPX-familie van druksensoren

• Het zijn drukopnemers in elektrische spanning.

• Ze zijn gebaseerd op een piëzo-resistieve sensor, waarbij compressie wordt omgezet in een variatie van de elektrische weerstand.

• Er zijn uitvoeringen die kleine drukverschillen (van 0 tot 0,04atm) of grote variaties (van 0 tot 10atm) kunnen meten.

• Ze verschijnen in meerdere pakketten.

• Ze kunnen absolute druk (ten opzichte van vacuüm), verschildruk (het verschil tussen twee drukken, p1 en p2), of manometer (ten opzichte van atmosferische druk) meten.

Stap 5: De MPX5700DP

De MPX5700DP
De MPX5700DP
De MPX5700DP
De MPX5700DP

• De 5700-serie is voorzien van absolute, differentiële en metersensoren.

• De MPX5700DP kan een verschildruk meten van 0 tot 700 kPa (ongeveer 7 atm).

• De uitgangsspanning varieert van 0,2V tot 4,7V.

• Zijn vermogen is van 4,75V tot 5,25V

Stap 6: Voor de demonstratie

Voor de demonstratie
Voor de demonstratie

• Deze keer doen we geen praktische toepassing met deze sensor; we zullen het alleen monteren en enkele metingen uitvoeren als demonstratie.

• Hiervoor zullen we een directe luchtcompressor gebruiken om druk uit te oefenen op de hogedrukinlaat (p1) en het verschil te krijgen ten opzichte van de lokale atmosferische druk (p2).

• De MPX5700DP is een unidirectionele sensor, wat betekent dat hij positieve verschillen meet waarbij p1 altijd groter dan of gelijk aan p2 moet zijn.

• p1> p2 en het verschil is p1 - p2

• Er zijn tweerichtingsverschilsensoren die negatieve en positieve verschillen kunnen evalueren.

• Hoewel het slechts een demonstratie is, zouden we de principes hier gemakkelijk kunnen gebruiken om bijvoorbeeld de druk in een luchtreservoir, aangedreven door deze compressor, te regelen.

Stap 7: De ESP ADC kalibreren

De ESP ADC kalibreren
De ESP ADC kalibreren
De ESP ADC kalibreren
De ESP ADC kalibreren
De ESP ADC kalibreren
De ESP ADC kalibreren

• Aangezien we weten dat de analoog-digitaalconversie van ESP niet volledig lineair is en van de ene SoC tot de andere kan verschillen, laten we beginnen met een eenvoudige bepaling van het gedrag ervan.

• Met een potentiometer en een multimeter meten we de spanning op de AD en relateren deze aan de aangegeven waarde.

• Met een eenvoudig programma om de AD uit te lezen en de informatie in een tabel te verzamelen, konden we de curve van zijn gedrag bepalen.

Stap 8: De druk berekenen

De druk berekenen
De druk berekenen
De druk berekenen
De druk berekenen

• Hoewel de fabrikant ons de functie geeft met het gedrag van het onderdeel, is het altijd raadzaam om een kalibratie uit te voeren als we het hebben over metingen.

• Omdat het echter slechts een demonstratie is, zullen we de functie in de datasheet direct gebruiken. Hiervoor zullen we het manipuleren op een manier die ons de druk geeft als functie van de ADC-waarde.

* Houd er rekening mee dat de fractie van de spanning die door de referentiespanning op de ADC wordt toegepast, dezelfde waarde moet hebben als de ADC die door de totale ADC wordt gelezen. (De correctie buiten beschouwing gelaten)

Stap 9: Montage

samenkomst
samenkomst
samenkomst
samenkomst

• Om de sensor aan te sluiten, zoekt u naar de inkeping in een van de aansluitingen, die pin 1 aangeeft.

• Vanaf daar tellen:

Pin 1 biedt signaaluitgang (van 0V tot 4,7V)

Pin 2 is de referentie. (GND)

Pin 3 voor stroom. (Vs)

• Aangezien het uitgangssignaal 4,7V is, gebruiken we een spanningsdeler zodat de maximale waarde gelijk is aan 3V3. Hiervoor hebben we de aanpassing gedaan met de potmeter.

Stap 10: Broncode

Broncode
Broncode
Broncode
Broncode

Broncode: #Includes en #defines

//Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 en posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //Os pinos do OLED estão conectados oa ESP32 scheidt 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

Bron: Globale variabelen en constanten

SSD1306-display (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; //Leitura const float fator_atm = 0.0098692327; //Fator de conversão para atmosferas const float fator_bar = 0.01; //fator de conversão para bar const float fator_kgf_cm2 = 0.0101971621; // fator de conversão kgf/cm2

Broncode: instellen ()

void setup(){ pinMode(pin, INPUT); //analoge gegevens Serial.begin(115200); //iniciando a serial // Inicia o display display.init(); display.flipScreenVertical(); //Vira a tela verticalmente}

Broncode: Loop ()

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 (5000)) //se está ligado a mais que 5 segundos { //Limpa o buffer do display display.clear(); // ajusta of alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); //ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16); //Escreve geen buffer om een pressao display.drawString(0, 0, String(int(pressao)) + "kPa" weer te geven; display.drawString(0, 16, String(pressao * fator_atm) + "atm"); display.drawString(0, 32, String(pressao * fator_kgf_cm2) + " kgf/cm2"); // escreve geen buffer o valor do ADC display.drawString (0, 48, "adc: " + String (int (medidas))); } else //se está ligado a menos de 5 segundos, exibe a tela inicial { //limpa o buffer do display display.clear(); //Ajusta of alinhamento para centralizado display.setTextAlignment (TEXT_ALIGN_CENTER); //ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); //escreve geen buffer display.drawString (64, 0, "Sensor Pressão"); //escreve geen buffer display.drawString (64, 18, "Diferencial"); //ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_10); //escreve geen buffer display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display();//transfer o buffer para o weergavevertraging (50); }

Broncode: Functie die de druk in kPa. berekent

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ÇISO DE OSVOS erro) retour ((corrigeMedida(medida) / 3.3) - 0.04) / 0.0012858; }

-- AFBEELDINGEN

Broncode: Functie die de AD-waarde corrigeert

float corrigeMedida(float x) { /* Esta função foi obtida através da relação tussen een 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; }

Stap 11: Bestanden

Download de bestanden:

PDF

INO

Aanbevolen: