Innehållsförteckning:

Lär dig här om en extremt viktig sensor !: 11 steg
Lär dig här om en extremt viktig sensor !: 11 steg

Video: Lär dig här om en extremt viktig sensor !: 11 steg

Video: Lär dig här om en extremt viktig sensor !: 11 steg
Video: Полный курс по Next js - Изучи Nextjs за 2 часа! | React SSR +таймкоды 2024, Juli
Anonim
Lär dig här om en extremt viktig sensor!
Lär dig här om en extremt viktig sensor!

Hur kan du ta reda på vattennivån i en vattentank? För att övervaka den här typen av saker kan du använda en trycksensor. Detta är mycket användbar utrustning för industriell automatisering i allmänhet. Idag ska vi prata om just denna familj av MPX -trycksensorer, speciellt för tryckmätning. Jag ska presentera dig för trycksensorn MPX5700 och utföra en provmontering med ESP WiFi LoRa 32.

Jag kommer inte att använda LoRa -kommunikation i kretsen idag, varken WiFi eller Bluetooth. Jag valde dock denna ESP32 eftersom jag redan i andra videor lärde mig att använda alla funktioner som jag diskuterar idag.

Steg 1: Demonstration

Demonstration
Demonstration
Demonstration
Demonstration

Steg 2: Resurser som används

Resurser som används
Resurser som används

• MPX5700DP differenstrycksensor

• 10k potentiometer (eller trimpot)

• Protoboard

• Anslutningskablar

• USB-kabel

• ESP WiFi LoRa 32

• Luftkompressor (tillval)

Steg 3: Varför mäta tryck?

Varför mäta tryck?
Varför mäta tryck?

• Det finns många applikationer där tryck är en viktig kontrollvariabel.

• Vi kan involvera pneumatiska eller hydrauliska styrsystem.

• Medicinsk instrumentering.

• Robotik.

• Kontroll av industri- eller miljöprocesser.

• Nivåmätning i vätske- eller gasbehållare.

Steg 4: MPX -familjen av trycksensorer

MPX -familjen av trycksensorer
MPX -familjen av trycksensorer

• De är tryckgivare i elektrisk spänning.

• De är baserade på en piezoresistiv sensor, där komprimering omvandlas till en variation av det elektriska motståndet.

• Det finns versioner som kan mäta små tryckskillnader (från 0 till 0,04atm) eller stora variationer (från 0 till 10atm).

• De visas i flera paket.

• De kan mäta absolut tryck (i förhållande till vakuum), differenstryck (skillnaden mellan två tryck, p1 och p2) eller mätare (i förhållande till atmosfärstryck).

Steg 5: MPX5700DP

MPX5700DP
MPX5700DP
MPX5700DP
MPX5700DP

• 5700 -serien har sensorer med absolut, differential och mätare.

• MPX5700DP kan mäta ett differenstryck från 0 till 700 kPa (cirka 7 atm).

• Utgångsspänningen varierar från 0,2V till 4,7V.

• Dess effekt är från 4,75V till 5,25V

Steg 6: För demonstrationen

För demonstrationen
För demonstrationen

• Den här gången kommer vi inte att göra en praktisk applikation med denna sensor; vi kommer bara att montera den och utföra några mätningar som en demonstration.

• För detta kommer vi att använda en direkt luftkompressor för att applicera tryck vid högtrycksinloppet (p1) och få skillnaden i förhållande till det lokala atmosfärstrycket (p2).

• MPX5700DP är en enriktad sensor, vilket innebär att den mäter positiva skillnader där p1 alltid måste vara större än eller lika med p2.

• p1> p2 och skillnaden blir p1 - p2

• Det finns tvåvägs differentialsensorer som kan utvärdera negativa och positiva skillnader.

• Även om det bara är en demonstration, kan vi enkelt använda principerna här för att kontrollera till exempel trycket i en luftreservoar, som drivs av denna kompressor.

Steg 7: Kalibrera ESP ADC

Kalibrering av ESP ADC
Kalibrering av ESP ADC
Kalibrering av ESP ADC
Kalibrering av ESP ADC
Kalibrering av ESP ADC
Kalibrering av ESP ADC

• Eftersom vi vet att ESP: s analog-digital konvertering inte är helt linjär och kan variera från en SoC till en annan, låt oss börja med att göra en enkel bestämning av dess beteende.

• Med en potentiometer och en multimeter mäter vi spänningen som appliceras på AD och relaterar den till det angivna värdet.

• Med ett enkelt program för att läsa AD och samla informationen i en tabell, kunde vi bestämma kurvan för dess beteende.

Steg 8: Beräkning av trycket

Beräkning av trycket
Beräkning av trycket
Beräkning av trycket
Beräkning av trycket

• Även om tillverkaren ger oss funktionen med komponentens beteende, är det alltid lämpligt att utföra en kalibrering när vi talar om att göra mätningar.

• Men eftersom det bara är en demonstration kommer vi direkt att använda funktionen som finns i databladet. För detta kommer vi att manipulera det på ett sätt som ger oss trycket som en funktion av ADC -värdet.

* Kom ihåg att bråkdelen av spänningen som appliceras på ADC med referensspänningen måste ha samma värde som ADC läst av den totala ADC. (Bortser från korrigeringen)

Steg 9: Montering

hopsättning
hopsättning
hopsättning
hopsättning

• För att ansluta sensorn, leta efter skåran i en av dess terminaler, vilket indikerar stift 1.

• Räkna därifrån:

Stift 1 ger signalutgång (från 0V till 4,7V)

Pin 2 är referensen. (GND)

Pin 3 för effekt. (Mot)

• Eftersom signalutgången är 4,7V använder vi en spänningsdelare så att maxvärdet motsvarar 3V3. För detta gjorde vi justeringen med potentiometern.

Steg 10: Källkod

Källkod
Källkod
Källkod
Källkod

Källkod: #Includes och #defines

// Bibliotecas para utilizaçã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 delar upp 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

Källa: Globala variabler och konstanter

SSD1306 -skärm (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

Källkod: Setup ()

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

Källkod: 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 está ligado a mais que 5 segundos {// Limpa o buffer do display display.clear (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16); // Skapa ingen buffert visa en 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))); } Annars // se está ligado a menos de 5 segundos, exibe a tela inicial {// limpa o buffer do display display.clear (); // Ajusta o alinhamento para centralizado display.setTextAlignment (TEXT_ALIGN_CENTER); // ajusta a fonte para 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 para 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); }

Källkod: Funktion som beräknar trycket i 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) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }

-- BILDER

Källkod: Funktion som korrigerar AD -värdet

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; }

Steg 11: Filer

Ladda ner filerna:

PDF

INO

Rekommenderad: