Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Cum poți afla despre nivelul apei într-un rezervor de apă? Pentru a monitoriza acest tip de lucruri, puteți utiliza un senzor de presiune. Acest echipament este foarte util pentru automatizarea industrială, în general. Astăzi, vom vorbi despre această familie exactă de senzori de presiune MPX, special pentru măsurarea presiunii. Vă voi prezenta senzorul de presiune MPX5700 și voi efectua un eșantion de montaj utilizând ESP WiFi LoRa 32.
Nu voi folosi comunicarea LoRa în circuit astăzi, nici WiFi, nici Bluetooth. Cu toate acestea, am optat pentru acest ESP32 pentru că deja am predat în alte videoclipuri cum să folosesc toate caracteristicile pe care le discut astăzi.
Pasul 1: demonstrație
Pasul 2: Resurse utilizate
• Senzor de presiune diferențială MPX5700DP
• 10k potențiometru (sau trimpot)
• Protoboard
• Firele de conectare
• Cablu USB
• ESP WiFi LoRa 32
• Compresor de aer (opțional)
Pasul 3: De ce să măsurăm presiunea?
• Există numeroase aplicații în care presiunea este o variabilă de control importantă.
• Putem implica sisteme de control pneumatic sau hidraulic.
• Instrumentare medicală.
• Robotică.
• Controlul proceselor industriale sau de mediu.
• Măsurarea nivelului în rezervoarele de lichid sau gaz.
Pasul 4: Familia de senzori de presiune MPX
• Sunt traductoare de presiune în tensiune electrică.
• Se bazează pe un senzor piezo-rezistiv, unde compresia este transformată într-o variație a rezistenței electrice.
• Există versiuni capabile să măsoare diferențe mici de presiune (de la 0 la 0,04atm) sau variații mari (de la 0 la 10atm).
• Apar în mai multe pachete.
• Pot măsura presiunea absolută (raportată la vid), presiunea diferențială (diferența dintre două presiuni, p1 și p2) sau manometrul (raportat la presiunea atmosferică).
Pasul 5: MPX5700DP
• Seria 5700 dispune de senzori absoluți, diferențiali și de măsurare.
• MPX5700DP poate măsura o presiune diferențială de la 0 la 700kPa (aproximativ 7atm).
• Tensiunea de ieșire variază de la 0,2V la 4,7V.
• Puterea sa este de la 4.75V la 5.25V
Pasul 6: Pentru demonstrație
• De data aceasta, nu vom face o aplicație practică folosind acest senzor; îl vom monta și vom efectua doar câteva măsurători ca demonstrație.
• Pentru aceasta, vom folosi un compresor de aer direct pentru a aplica presiune la intrarea de înaltă presiune (p1) și pentru a obține diferența în raport cu presiunea atmosferică locală (p2).
• MPX5700DP este un senzor unidirecțional, ceea ce înseamnă că măsoară diferențe pozitive în care p1 trebuie să fie întotdeauna mai mare sau egal cu p2.
• p1> p2 și diferența va fi p1 - p2
• Există senzori diferențiali bidirecționali care pot evalua diferențele negative și pozitive.
• Deși este doar o demonstrație, am putea folosi cu ușurință principiile de aici pentru a controla, de exemplu, presiunea dintr-un rezervor de aer, alimentat de acest compresor.
Pasul 7: Calibrarea ESP ADC
• Deoarece știm că conversia analog-digitală a ESP nu este complet liniară și poate varia de la un SoC la altul, să începem prin a face o simplă determinare a comportamentului său.
• Folosind un potențiometru și un multimetru, vom măsura tensiunea aplicată AD și o vom raporta la valoarea indicată.
• Cu un program simplu pentru citirea AD și colectarea informațiilor într-un tabel, am putut determina curba comportamentului său.
Pasul 8: Calculul presiunii
• Deși producătorul ne oferă funcția cu comportamentul componentei, este întotdeauna recomandabil să efectuați o calibrare atunci când vorbim despre măsurători.
• Cu toate acestea, deoarece este doar o demonstrație, vom folosi direct funcția găsită în foaia tehnică. Pentru aceasta, îl vom manipula într-un mod care ne oferă presiunea în funcție de valoarea ADC.
* Amintiți-vă că fracțiunea de tensiune aplicată ADC de tensiunea de referință trebuie să aibă aceeași valoare ca ADC citită de ADC total. (Ignorând corectarea)
Pasul 9: Asamblare
• Pentru a conecta senzorul, căutați crestătura la unul dintre terminalele sale, care indică pinul 1.
• Numărând de acolo:
Pinul 1 asigură ieșirea semnalului (de la 0V la 4,7V)
Pinul 2 este referința. (GND)
Pinul 3 pentru putere. (Vs)
• Deoarece ieșirea semnalului este de 4,7 V, vom folosi un divizor de tensiune astfel încât valoarea maximă să fie echivalentă cu 3V3. Pentru aceasta, am făcut reglarea cu potențiometrul.
Pasul 10: Cod sursă
Cod sursă: # Include și # definește
// Bibliotecas pentru utilizare do display oLED # include // Necessário apenas for 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 este următorul GPIO: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST trebuie să fie ajustat prin software
Sursă: Variabile și constante globale
Afișaj SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do object "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 conversație pentru atmosferă const float fator_bar = 0.01; // fator de conversie pentru bar const float fator_kgf_cm2 = 0.0101971621; // fator de converso kgf / cm2
Cod sursă: Setup ()
void setup () {pinMode (pin, INPUT); // pino de leitura analogică Serial.begin (115200); // iniciando a serial // Inicia o display display.init (); display.flipScreenVertically (); // Vira a tela verticalmente}
Cod sursă: 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
Cod sursă: Funcție care calculează presiunea în kPa
float calculaPressao (float medida) {// Calcula a pressão com o // valor do AD corrigido pela função corrigeMedida () // Esta funcție a fost scrisă de acord cu date de fabricație // e NÃO LEVA EM CONSIDERAÇÃO OS POSSÍVEIS DESVIOS DO COMPONENTE (erro) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }
- IMAGINI
Cod sursă: Funcție care corectează valoarea AD
float corrigeMedida (float x) {/ * Esta funcție a fost obținută prin relația între tensiunea aplicată nu AD și valorul 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; }
Pasul 11: Fișiere
Descărcați fișierele:
EU NU