Sisukord:

Siit saate teada äärmiselt olulise anduri kohta!: 11 sammu
Siit saate teada äärmiselt olulise anduri kohta!: 11 sammu

Video: Siit saate teada äärmiselt olulise anduri kohta!: 11 sammu

Video: Siit saate teada äärmiselt olulise anduri kohta!: 11 sammu
Video: Riigikogu 08.05.2023 2024, November
Anonim
Siit saate teada äärmiselt olulise anduri kohta!
Siit saate teada äärmiselt olulise anduri kohta!

Kuidas saate teada veetaseme kohta veemahutis? Seda tüüpi asjade jälgimiseks võite kasutada rõhuandurit. See on üldiselt väga kasulik tööstusautomaatika varustus. Täna räägime sellest täpsest MPX -rõhuandurite perekonnast, spetsiaalselt rõhu mõõtmiseks. Tutvustan teile MPX5700 rõhuandurit ja viin proovi kokku ESP WiFi LoRa 32 abil.

LoRa sidet ma vooluringis täna kasutama ei hakka, ei WiFi ega Bluetooth. Siiski valisin selle ESP32, kuna õpetasin juba teistes videotes, kuidas kasutada kõiki täna arutletud funktsioone.

1. samm: demonstratsioon

Demonstratsioon
Demonstratsioon
Demonstratsioon
Demonstratsioon

2. samm: kasutatud ressursid

Kasutatud ressursid
Kasutatud ressursid

• MPX5700DP diferentsiaalrõhu andur

• 10k potentsiomeeter (või trimpot)

• Protoboard

• Ühendusjuhtmed

• USB -kaabel

• ESP WiFi LoRa 32

• Õhukompressor (valikuline)

Samm: miks rõhku mõõta?

Miks mõõta survet?
Miks mõõta survet?

• On palju rakendusi, kus rõhk on oluline muutuja.

• Me võime kaasata pneumaatilisi või hüdraulilisi juhtimissüsteeme.

• Meditsiiniseadmed.

• Robootika.

• tööstuslike või keskkonnaprotsesside kontroll.

• Taseme mõõtmine vedeliku- või gaasimahutites.

Samm: MPX rõhuandurite perekond

Rõhuandurite perekond MPX
Rõhuandurite perekond MPX

• Need on elektrienergia pingemuundurid.

• Need põhinevad piesotakistusanduril, kus kompressioon muudetakse elektrilise takistuse variatsiooniks.

• On versioone, mis suudavad mõõta väikseid rõhuvahesid (0–0,04atm) või suuri erinevusi (0–10atm).

• Neid on mitmes pakendis.

• Need võivad mõõta absoluutset rõhku (vaakumi suhtes), rõhkude erinevust (kahe rõhu erinevus p1 ja p2) või manomeetrit (atmosfäärirõhu suhtes).

Samm: MPX5700DP

MPX5700DP
MPX5700DP
MPX5700DP
MPX5700DP

• 5700 -seerial on absoluut-, diferentsiaal- ja gabariidiandurid.

• MPX5700DP suudab mõõta rõhkude erinevusi vahemikus 0 kuni 700 kPa (umbes 7 atm).

• Väljundpinge varieerub vahemikus 0,2 V kuni 4,7 V.

• Selle võimsus on 4,75V kuni 5,25V

6. samm: tutvustamiseks

Demonstratsiooni jaoks
Demonstratsiooni jaoks

• Seekord me selle anduri abil praktilist rakendust ei tee; me paigaldame selle ainult ja teeme mõned mõõtmised näitena.

• Selleks kasutame otsese õhukompressorit, et avaldada rõhku kõrgsurve sisselaskeavale (p1) ja saada erinevus kohaliku atmosfäärirõhu (p2) suhtes.

• MPX5700DP on ühesuunaline andur, mis tähendab, et see mõõdab positiivseid erinevusi, kus p1 peab alati olema suurem või võrdne p2.

• p1> p2 ja erinevus on p1 - p2

• On olemas kahesuunalised diferentsiaalandurid, mis suudavad hinnata negatiivseid ja positiivseid erinevusi.

• Kuigi see on vaid demonstratsioon, saaksime siinseid põhimõtteid hõlpsalt kasutada näiteks rõhu reguleerimiseks selle kompressori toitega õhumahutis.

Samm 7: ESP ADC kalibreerimine

ESP ADC kalibreerimine
ESP ADC kalibreerimine
ESP ADC kalibreerimine
ESP ADC kalibreerimine
ESP ADC kalibreerimine
ESP ADC kalibreerimine

• Kuna me teame, et ESP analoog-digitaalne muundamine ei ole täielikult lineaarne ja võib SoC-s erineda, alustame selle käitumise lihtsa määramisega.

• Potentsiomeetri ja multimeetri abil mõõdame AD -le rakendatavat pinget ja seostame selle näidatud väärtusega.

• Lihtsa programmiga AD lugemiseks ja tabelisse teabe kogumiseks suutsime määrata selle käitumiskõvera.

8. samm: rõhu arvutamine

Rõhu arvutamine
Rõhu arvutamine
Rõhu arvutamine
Rõhu arvutamine

• Kuigi tootja annab meile funktsiooni koos komponendi käitumisega, on mõõtmiste tegemisel alati soovitatav kalibreerida.

• Kuna see on siiski vaid demonstratsioon, kasutame me otse andmelehe funktsiooni. Selleks manipuleerime sellega viisil, mis annab meile surve ADC väärtuse funktsioonina.

* Pidage meeles, et ADC -le rakendatud pinge murdosa võrdluspingega peab olema sama, mis kogu ADC poolt loetud ADC väärtus. (Parandust ei arvesta)

9. samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

• Anduri ühendamiseks otsige selle klemmidest sälku, mis näitab tihvti 1.

• Loendamine sealt:

Pin 1 annab signaali väljundi (0V kuni 4,7V)

Tihvt 2 on viide. (GND)

Pin 3 toite jaoks. (Vs)

• Kuna signaali väljund on 4,7 V, kasutame pingejaoturit, nii et maksimaalne väärtus oleks 3V3. Selleks tegime reguleerimise potentsiomeetriga.

10. samm: lähtekood

Lähtekood
Lähtekood
Lähtekood
Lähtekood

Lähtekood: #Sisaldab ja #määratleb

// 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 pelos segu GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST deve ser a justado por software

Allikas: globaalsed muutujad ja konstandid

SSD1306 ekraan (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

Lähtekood: seadistamine ()

void setup () {pinMode (pin, INPUT); // pino de leitura analógica Serial.begin (115200); // sarja alustamine // Inicia või ekraani kuvamine.init (); display.flipScreenVertically (); // Vira a tela verticalmente}

Lähtekood: Loop ()

void loop () {float medidas = 0.0; // varievel 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 või alinhamento esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16); // Kui puhvrit pole, kuvatakse pressao kuva.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 está ligado a menos de 5 segundos, exibe a tela inicial {// limpa o buffer do display display.clear (); // Ajusta või alinhamento central display 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, "Erinevus"); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_10); // escreve no buffer display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display (); // ülekande puhver para o kuva viivitus (50); }

Lähtekood: funktsioon, mis arvutab rõhu 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 erro) tagasitulek ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858; }

- PILDID

Lähtekood: funktsioon, mis parandab AD väärtust

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

Samm 11: failid

Laadige failid alla:

PDF

INO

Soovitan: