Sommario:

Scopri qui un sensore estremamente importante!: 11 passaggi
Scopri qui un sensore estremamente importante!: 11 passaggi

Video: Scopri qui un sensore estremamente importante!: 11 passaggi

Video: Scopri qui un sensore estremamente importante!: 11 passaggi
Video: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Dicembre
Anonim
Scopri qui un sensore estremamente importante!
Scopri qui un sensore estremamente importante!

Come si può conoscere il livello dell'acqua in un serbatoio dell'acqua? Per monitorare questo tipo di cose, puoi usare un sensore di pressione. Si tratta di apparecchiature molto utili per l'automazione industriale, in generale. Oggi parleremo di questa esatta famiglia di sensori di pressione MPX, specificamente per la misurazione della pressione. Ti presenterò il sensore di pressione MPX5700 ed eseguirò un assemblaggio campione utilizzando ESP WiFi LoRa 32.

Non userò la comunicazione LoRa nel circuito oggi, né WiFi né Bluetooth. Tuttavia, ho optato per questo ESP32 perché ho già insegnato in altri video come utilizzare tutte le funzionalità di cui parlo oggi.

Passaggio 1: dimostrazione

Dimostrazione
Dimostrazione
Dimostrazione
Dimostrazione

Passaggio 2: risorse utilizzate

Risorse utilizzate
Risorse utilizzate

• Sensore di pressione differenziale MPX5700DP

• Potenziometro 10k (o trimpot)

• Scheda prototipi

• Cavi di collegamento

• Cavo USB

• ESP WiFi LoRa 32

• Compressore d'aria (opzionale)

Passaggio 3: perché misurare la pressione?

Perché misurare la pressione?
Perché misurare la pressione?

• Esistono numerose applicazioni in cui la pressione è un'importante variabile di controllo.

• Possiamo coinvolgere sistemi di controllo pneumatici o idraulici.

• Strumentazione medica.

• Robotica.

• Controllo dei processi industriali o ambientali.

• Misura di livello in giacimenti liquidi o gassosi.

Passaggio 4: la famiglia di sensori di pressione MPX

La famiglia MPX di sensori di pressione
La famiglia MPX di sensori di pressione

• Sono trasduttori di pressione in tensione elettrica.

• Si basano su un sensore piezo resistivo, dove la compressione viene convertita in una variazione della resistenza elettrica.

• Esistono versioni in grado di misurare piccole differenze di pressione (da 0 a 0,04 atm), o grandi variazioni (da 0 a 10 atm).

• Appaiono in più pacchetti.

• Possono misurare la pressione assoluta (relativa al vuoto), la pressione differenziale (la differenza tra due pressioni, p1 e p2), o relativa (relativa alla pressione atmosferica).

Passaggio 5: MPX5700DP

L'MPX5700DP
L'MPX5700DP
L'MPX5700DP
L'MPX5700DP

• La serie 5700 è dotata di sensori assoluti, differenziali e di misura.

• L'MPX5700DP può misurare una pressione differenziale da 0 a 700kPa (circa 7atm).

• La tensione di uscita varia da 0,2V a 4,7V.

• La sua potenza va da 4,75 V a 5,25 V

Passaggio 6: per la dimostrazione

Per la dimostrazione
Per la dimostrazione

• Questa volta non faremo un'applicazione pratica utilizzando questo sensore; lo monteremo solo ed eseguiremo alcune misurazioni a titolo dimostrativo.

• Per questo, utilizzeremo un compressore d'aria diretto per applicare la pressione all'ingresso dell'alta pressione (p1) e ottenere la differenza rispetto alla pressione atmosferica locale (p2).

• L'MPX5700DP è un sensore unidirezionale, il che significa che misura differenze positive dove p1 deve essere sempre maggiore o uguale a p2.

• p1> p2 e la differenza sarà p1 - p2

• Esistono sensori differenziali a due vie in grado di valutare differenze negative e positive.

• Sebbene sia solo una dimostrazione, potremmo facilmente utilizzare i principi qui riportati per controllare, ad esempio, la pressione in un serbatoio d'aria, alimentato da questo compressore.

Passaggio 7: calibrazione dell'ADC ESP

Calibrazione dell'ADC dell'ESP
Calibrazione dell'ADC dell'ESP
Calibrazione dell'ADC dell'ESP
Calibrazione dell'ADC dell'ESP
Calibrazione dell'ADC dell'ESP
Calibrazione dell'ADC dell'ESP

• Poiché sappiamo che la conversione analogico-digitale dell'ESP non è completamente lineare e può variare da un SoC all'altro, iniziamo con una semplice determinazione del suo comportamento.

• Utilizzando un potenziometro e un multimetro, misureremo la tensione applicata all'AD e la mettiamo in relazione con il valore indicato.

• Con un semplice programma per leggere l'AD e raccogliere le informazioni in una tabella, siamo stati in grado di determinare la curva del suo comportamento.

Passaggio 8: calcolo della pressione

Calcolo della pressione
Calcolo della pressione
Calcolo della pressione
Calcolo della pressione

• Sebbene il produttore ci fornisca la funzione con il comportamento del componente, è sempre consigliabile eseguire una calibrazione quando si tratta di effettuare misurazioni.

• Tuttavia, essendo solo una dimostrazione, utilizzeremo direttamente la funzione che si trova nel datasheet. Per questo, lo manipoleremo in un modo che ci dia la pressione in funzione del valore ADC.

* Ricordare che la frazione della tensione applicata all'ADC dalla tensione di riferimento deve avere lo stesso valore dell'ADC letto dall'ADC totale. (Trascurando la correzione)

Passaggio 9: assemblaggio

Assemblea
Assemblea
Assemblea
Assemblea

• Per collegare il sensore, cercare la tacca in uno dei suoi terminali, che indica il pin 1.

• Contando da lì:

Il pin 1 fornisce l'uscita del segnale (da 0V a 4.7V)

Il pin 2 è il riferimento. (GND)

Pin 3 per l'alimentazione. (V)

• Poiché l'uscita del segnale è 4,7V, utilizzeremo un partitore di tensione in modo che il valore massimo sia equivalente a 3V3. Per questo, abbiamo effettuato la regolazione con il potenziometro.

Passaggio 10: Codice sorgente

Codice Sorgente
Codice Sorgente
Codice Sorgente
Codice Sorgente

Codice sorgente: #include e #definisce

//Biblioteca per l'utilizzo del display oLED#include // Necessario accesso per Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo che #include "SSD1306Wire.h" //Os pinos fa OLED estão conectados ao ESP32 segue i GPIO: //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado por software

Fonte: variabili e costanti globali

Display 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; //fattore di conversazione per le atmosfere const float fator_bar = 0.01; //fattore di conversazione per la barra const float fator_kgf_cm2 = 0.0101971621; // fattore di conversione kgf/cm2

Codice sorgente: Setup ()

void setup(){ pinMode(pin, INPUT); //pino de leitura analógica Serial.begin(115200); //iniciando un seriale //Inizia o display display.init(); display.flipScreenVerticalmente(); //Vira a tela verticalmente }

Codice sorgente: Ciclo ()

void loop(){ float medidas = 0.0;//variável para manipolare 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(); //aggiusta o modifica per un'esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //aggiusta una fonte per Arial 10 display.setFont(ArialMT_Plain_16); //Escreve no buffer visualizza un 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 è legato a meno di 5 secondi, mostra una tela iniziale { //limpa o buffer do display display.clear(); //Ajusta o alinhamento per centralizzazione display.setTextAlignment(TEXT_ALIGN_CENTER); //aggiusta una 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"); //aggiusta una 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); }

Codice sorgente: Funzione che calcola la pressione in 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 DESVIOS DO COMPONENTE (erro) ritorno ((corregeMedida(medida) / 3.3) - 0.04) / 0.0012858; }

-- IMMAGINI

Codice sorgente: funzione che corregge il valore 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; }

Passaggio 11: file

Scarica i file:

PDF

IO NO

Consigliato: