Taula de continguts:

Més informació sobre un sensor extremadament important: 11 passos
Més informació sobre un sensor extremadament important: 11 passos

Vídeo: Més informació sobre un sensor extremadament important: 11 passos

Vídeo: Més informació sobre un sensor extremadament important: 11 passos
Vídeo: Оппенгеймер - Как Создавали ОРУЖИЕ Конца Света? [История в Личностях] 2024, De novembre
Anonim
Obteniu informació sobre un sensor extremadament important
Obteniu informació sobre un sensor extremadament important

Com es pot conèixer el nivell de l'aigua en un dipòsit d'aigua? Per controlar aquest tipus de coses, podeu utilitzar un sensor de pressió. Aquest és un equip molt útil per a l'automatització industrial, en general. Avui parlarem d’aquesta família exacta de sensors de pressió MPX, específicament per a la mesura de pressió. Us presentaré el sensor de pressió MPX5700 i faré un muntatge de mostra amb l’ESP WiFi LoRa 32.

Avui no utilitzaré la comunicació LoRa al circuit, ni WiFi ni Bluetooth. Tot i això, vaig optar per aquest ESP32 perquè ja vaig ensenyar en altres vídeos a utilitzar totes les funcions que comentem avui.

Pas 1: demostració

Demostració
Demostració
Demostració
Demostració

Pas 2: recursos utilitzats

Recursos utilitzats
Recursos utilitzats

• Sensor de pressió diferencial MPX5700DP

• Potenciòmetre de 10 k (o trimpot)

• Protoboard

• Cable de connexió

• Cable USB

• ESP WiFi LoRa 32

• Compressor d’aire (opcional)

Pas 3: per què mesurar la pressió?

Per què mesurar la pressió?
Per què mesurar la pressió?

• Hi ha nombroses aplicacions en què la pressió és una variable de control important.

• Podem fer servir sistemes de control pneumàtic o hidràulic.

• Instrumentació mèdica.

• Robòtica.

• Control de processos industrials o ambientals.

• Mesura de nivell en dipòsits de líquids o gasos.

Pas 4: la família de sensors de pressió MPX

La família de sensors de pressió MPX
La família de sensors de pressió MPX

• Són transductors de pressió en tensió elèctrica.

• Es basen en un sensor resistiu piezoelèctric, on la compressió es converteix en una variació de la resistència elèctrica.

• Hi ha versions capaces de mesurar petites diferències de pressió (de 0 a 0,04 atm), o grans variacions (de 0 a 10 atm).

• Apareixen en diversos paquets.

• Poden mesurar la pressió absoluta (relativa al buit), la pressió diferencial (la diferència entre dues pressions, p1 i p2), o el manòmetre (relatiu a la pressió atmosfèrica).

Pas 5: el MPX5700DP

El MPX5700DP
El MPX5700DP
El MPX5700DP
El MPX5700DP

• La sèrie 5700 disposa de sensors absoluts, diferencials i de calibre.

• El MPX5700DP pot mesurar una pressió diferencial de 0 a 700kPa (aproximadament 7 atm).

• El voltatge de sortida varia de 0,2 V a 4,7 V.

• La seva potència és de 4.75V a 5.25V

Pas 6: per a la demostració

Per a la demostració
Per a la demostració

• Aquesta vegada, no farem cap aplicació pràctica amb aquest sensor; només el muntarem i realitzarem algunes mesures com a demostració.

• Per a això, utilitzarem un compressor d’aire directe per aplicar pressió a l’entrada d’alta pressió (p1) i obtenir la diferència en relació amb la pressió atmosfèrica local (p2).

• El MPX5700DP és un sensor unidireccional, el que significa que mesura diferències positives on p1 sempre ha de ser superior o igual a p2.

• p1> p2 i la diferència serà p1 - p2

• Hi ha sensors diferencials bidireccionals que poden avaluar diferències negatives i positives.

• Tot i que només és una demostració, podríem utilitzar fàcilment els principis aquí per controlar, per exemple, la pressió en un dipòsit d’aire alimentat per aquest compressor.

Pas 7: Calibratge de l'ADC ESP

Calibratge de l’ADC ESP
Calibratge de l’ADC ESP
Calibratge de l’ADC ESP
Calibratge de l’ADC ESP
Calibratge de l’ADC ESP
Calibratge de l’ADC ESP

• Com que sabem que la conversió analògica-digital d'ESP no és completament lineal i pot variar d'un SoC a un altre, comencem per fer una determinació senzilla del seu comportament.

• Mitjançant un potenciòmetre i un multímetre, mesurarem la tensió aplicada a l’AD i la relacionarem amb el valor indicat.

• Amb un programa senzill per llegir la AD i recollir la informació en una taula, hem pogut determinar la corba del seu comportament.

Pas 8: càlcul de la pressió

Càlcul de la pressió
Càlcul de la pressió
Càlcul de la pressió
Càlcul de la pressió

• Tot i que el fabricant ens proporciona la funció amb el comportament del component, sempre és aconsellable realitzar un calibratge quan estem parlant de prendre mesures.

• Tanmateix, com que només és una demostració, utilitzarem directament la funció que es troba al full de dades. Per a això, el manipularem de manera que ens doni la pressió en funció del valor ADC.

* Recordeu que la fracció de la tensió aplicada a l'ADC per la tensió de referència ha de tenir el mateix valor que l'ADC llegit per l'ADC total. (Ignorant la correcció)

Pas 9: Muntatge

muntatge
muntatge
muntatge
muntatge

• Per connectar el sensor, busqueu la osca en un dels seus terminals, que indica el pin 1.

• Comptant des d'allà:

El pin 1 proporciona sortida de senyal (de 0V a 4,7V)

El pin 2 és la referència. (GND)

Pin 3 per alimentar. (Vs)

• Com que la sortida del senyal és de 4,7 V, utilitzarem un divisor de tensió de manera que el valor màxim sigui equivalent a 3V3. Per a això, vam fer l’ajust amb el potenciòmetre.

Pas 10: codi font

Codi font
Codi font
Codi font
Codi font

Codi font: # Inclou i # defineix

// Biblioteques per a ús de la pantalla oLED # include // Necessari apenas for o Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // Els pinos del OLED estan connectats al ESP32 pelos següents GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST ha de ser ajustat pel programari

Font: variables globals i constants

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

Codi font: Setup ()

void setup () {pinMode (pin, INPUT); // pi de leitura analògica Serial.begin (115200); // iniciando a serial // Inicia o display display.init (); display.flipScreenVertically (); // Vira a tela verticalment}

Codi font: Loop ()

void loop () {float medidas = 0,0; // variável para manipular as mesures 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)) // està lligat a més de 5 segons {// Limpa o buffer do display display.clear (); // ajusta o alinhamento per a l'esquerra display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte per Arial 10 display.setFont (ArialMT_Plain_16); // No escriviu cap memòria intermèdia que mostri 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 // està lligat a menys de 5 segons, es mostra a tela inicial {// limpa o buffer do display display.clear (); // Ajusta o alinhamento per centralitzat display.setTextAlignment (TEXT_ALIGN_CENTER); // ajusta a fonte per Arial 16 display.setFont (ArialMT_Plain_16); // escreve no buffer display.drawString (64, 0, "Sensor Pressão"); // escreve no buffer display.drawString (64, 18, "Diferencial"); // ajusta a fonte per Arial 10 display.setFont (ArialMT_Plain_10); // escreve no buffer display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // transfere o buffer para o display delay (50); }

Codi font: funció que calcula la pressió en kPa

float calculaPressao (float medida) {// Calcula a pressão com o // valor do AD corrigido pela função corrigeMedida () // Esta funció va ser escrita d'acord amb dats del fabricant // e NÃO LEVA EM CONSIDERAÇÃO OS POSSÍVEIS DESVIOS DO COMPONENTE (erro) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }

- IMATGES

Codi font: funció que corregeix el valor 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 * 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; }

Pas 11: fitxers

Descarregueu els fitxers:

PDF

INO

Recomanat: