Cuprins:

Aflați aici despre un senzor extrem de important !: 11 pași
Aflați aici despre un senzor extrem de important !: 11 pași

Video: Aflați aici despre un senzor extrem de important !: 11 pași

Video: Aflați aici despre un senzor extrem de important !: 11 pași
Video: 𝗔𝗶 𝘂𝗻 𝗺𝗲𝘀𝗮𝗷 𝗨𝗥𝗚𝗘𝗡𝗧! 𝗗𝗘𝗦𝗧𝗜𝗡𝗨𝗟 𝗧𝗔̆𝗨 𝗘 𝗔𝗜𝗖𝗜! 𝗜𝗠𝗣𝗢𝗥𝗧𝗔𝗡𝗧! 2024, Noiembrie
Anonim
Aflați aici despre un senzor extrem de important!
Aflați aici despre un senzor extrem de important!

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

Demonstrație
Demonstrație
Demonstrație
Demonstrație

Pasul 2: Resurse utilizate

Resurse utilizate
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?

De ce să măsurăm presiunea?
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

Familia MPX de senzori de presiune
Familia MPX de senzori de presiune

• 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

MPX5700DP
MPX5700DP
MPX5700DP
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

Pentru demonstrație
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

Calibrarea ESP ADC
Calibrarea ESP ADC
Calibrarea ESP ADC
Calibrarea ESP ADC
Calibrarea ESP ADC
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

Calculul presiunii
Calculul presiunii
Calculul presiunii
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

Asamblare
Asamblare
Asamblare
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ă

Codul sursă
Codul sursă
Codul sursă
Codul 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 (5000)) // se leagă mai mult decât 5 secunde {// Limpa o buffer do display display.clear (); // ajusta o aliniament pentru a afișa stânga.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte pentru Arial 10 display.setFont (ArialMT_Plain_16); // Screve no buffer do display a pressao display.drawString (0, 0, String (int (pressao)) + "kPa"); display.drawString (0, 16, String (pressao * fator_atm) + "atm"); display.drawString (0, 32, String (pressao * fator_kgf_cm2) + "kgf / cm2"); // escreve no buffer o valor do ADC display.drawString (0, 48, "adc:" + String (int (medidas))); } else // se leagă la mai puțin de 5 secunde, exibă o țesătură inițială {// limpa o buffer do display display.clear (); // Ajusta o aliniament pentru centralizat display.setTextAlignment (TEXT_ALIGN_CENTER); // ajusta a fonte pentru Arial 16 display.setFont (ArialMT_Plain_16); // nu screve tampon display.drawString (64, 0, "Sensor Pressão"); // escreve no buffer display.drawString (64, 18, "Diferencial"); // ajusta a fonte pentru Arial 10 display.setFont (ArialMT_Plain_10); // nu screve tampon display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // transfere o buffer pentru o display delay (50); }

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:

PDF

EU NU

Recomandat: