Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Kako lahko ugotovite nivo vode v rezervoarju za vodo? Za spremljanje te vrste stvari lahko uporabite senzor tlaka. To je na splošno zelo uporabna oprema za industrijsko avtomatizacijo. Danes se bomo pogovarjali o tej natančni družini senzorjev tlaka MPX, posebej za merjenje tlaka. Predstavila vam bom senzor tlaka MPX5700 in izvedla vzorčni sklop z uporabo ESP WiFi LoRa 32.
Danes v vezju ne bom uporabljal komunikacije LoRa, niti WiFi niti Bluetooth. Vendar sem se odločil za ta ESP32, ker sem že v drugih videoposnetkih učil, kako uporabljati vse funkcije, o katerih govorim danes.
1. korak: demonstracija
2. korak: Uporabljeni viri
• Senzor diferenčnega tlaka MPX5700DP
• 10k potenciometer (ali trimpot)
• Protoboard
• Priključne žice
• USB kabel
• ESP WiFi LoRa 32
• Zračni kompresor (neobvezno)
3. korak: Zakaj meriti tlak?
• Obstajajo številne aplikacije, kjer je tlak pomembna krmilna spremenljivka.
• Vključujemo lahko pnevmatske ali hidravlične krmilne sisteme.
• medicinski instrumenti.
• Robotika.
• Nadzor industrijskih ali okoljskih procesov.
• Merjenje nivoja v rezervoarjih za tekočino ali plin.
4. korak: Družina tlačnih senzorjev družine MPX
• So pretvorniki tlaka v električni napetosti.
• Temeljijo na piezo upornem senzorju, kjer se stiskanje pretvori v variacijo električnega upora.
• Obstajajo različice, ki lahko merijo majhne razlike v tlaku (od 0 do 0,04 atm) ali velike variacije (od 0 do 10 atm).
• Pojavljajo se v več paketih.
• Lahko merijo absolutni tlak (glede na vakuum), diferenčni tlak (razlika med dvema tlakoma, p1 in p2) ali merilnik (glede na atmosferski tlak).
5. korak: MPX5700DP
• Serija 5700 ima absolutne, diferencialne in merilne senzorje.
• MPX5700DP lahko meri diferenčni tlak od 0 do 700kPa (približno 7atm).
• Izhodna napetost se giblje od 0,2 V do 4,7 V.
• Njegova moč je od 4,75 V do 5,25 V
6. korak: Za predstavitev
• Tokrat s tem senzorjem ne bomo izvajali praktične uporabe; le montirali ga bomo in kot demonstracijo izvedli nekaj meritev.
• V ta namen bomo uporabili direktni zračni kompresor za izvajanje tlaka na vhodu visokega tlaka (p1) in dobili razliko glede na lokalni atmosferski tlak (p2).
• MPX5700DP je enosmerni senzor, kar pomeni, da meri pozitivne razlike, kjer mora biti p1 vedno večji ali enak p2.
• p1> p2 in razlika bo p1 - p2
• Obstajajo dvosmerni diferencialni senzorji, ki lahko ocenijo negativne in pozitivne razlike.
• Čeprav gre le za predstavitev, bi lahko tukaj z lahkoto uporabili načela za nadzor, na primer, tlaka v rezervoarju za zrak, ki ga poganja ta kompresor.
7. korak: Umerjanje ESP ADC
• Ker vemo, da analogno-digitalna pretvorba ESP ni povsem linearna in se lahko razlikuje od enega do drugega SoC, začnimo s preprosto določitvijo njegovega obnašanja.
• S potenciometrom in multimetrom bomo izmerili napetost, ki je nanesena na AD, in jo povezali z navedeno vrednostjo.
• S preprostim programom za branje AD in zbiranje podatkov v tabelo smo lahko določili krivuljo njegovega obnašanja.
8. korak: Izračun tlaka
• Čeprav nam proizvajalec zagotavlja funkcijo obnašanja komponente, je vedno priporočljivo izvesti kalibracijo, ko govorimo o meritvah.
• Ker pa gre le za predstavitev, bomo neposredno uporabili funkcijo v podatkovnem listu. Za to bomo z njim manipulirali na način, ki nam daje pritisk kot funkcijo vrednosti ADC.
* Ne pozabite, da mora imeti del napetosti, ki se na referenčno napetost nanaša na ADC, isto vrednost kot ADC, ki ga odčita skupni ADC. (Brez upoštevanja popravka)
9. korak: Montaža
• Za priključitev senzorja poiščite zarezo na enem od njegovih priključkov, ki označuje pin 1.
• Od tam štejemo:
Pin 1 zagotavlja izhod signala (od 0V do 4.7V)
Pin 2 je referenca. (GND)
Pin 3 za napajanje. (Vs)
• Ker je izhodni signal 4,7 V, bomo uporabili delilnik napetosti, tako da je največja vrednost enakovredna 3V3. Za to smo naredili prilagoditev s potenciometrom.
10. korak: izvorna koda
Izvorna koda: #Vključuje in #opredeljuje
// Bibliotecas para utilizationçã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 pelos določa GPIO -je: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST deve serv a por por software
Vir: Globalne spremenljivke in konstante
Zaslon 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 pogovorão para atmosferas const float fator_bar = 0,01; // fator de pogovorão para bar const float fator_kgf_cm2 = 0,0101971621; // fator de pogovorão kgf/cm2
Izvorna koda: Setup ()
void setup () {pinMode (pin, INPUT); // pino de leitura analógica Serial.begin (115200); // iniciando serijsko // Inicia o display display.init (); display.flipScreenVertical (); // Vira a tela verticalmente}
Izvorna koda: Loop ()
void loop () {float medidas = 0.0; // variável para manipular as medidas float pressao = 0.0; // variaável para armazenar o valor da pressão // inicia a coleta de amostras do ADC for (int i = 0; i
Izvorna koda: funkcija, ki izračuna tlak v 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 DOS napaka) return ((corrigeMedida (medida) / 3.3) - 0,04) / 0,0012858; }
- SLIKE
Izvorna koda: funkcija, ki popravi vrednost AD
float corrigeMedida (float x) { / * Esta função foi 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 * 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; }
11. korak: Datoteke
Prenesite datoteke:
JAZ NE