Inhaltsverzeichnis:

Erfahren Sie hier über einen äußerst wichtigen Sensor! - Gunook
Erfahren Sie hier über einen äußerst wichtigen Sensor! - Gunook

Video: Erfahren Sie hier über einen äußerst wichtigen Sensor! - Gunook

Video: Erfahren Sie hier über einen äußerst wichtigen Sensor! - Gunook
Video: Sensorik Grundlagenvideo - Durchfluss-Sensoren 2024, November
Anonim
Erfahren Sie hier mehr über einen äußerst wichtigen Sensor!
Erfahren Sie hier mehr über einen äußerst wichtigen Sensor!

Wie kann man den Wasserstand in einem Wassertank herausfinden? Um diese Art von Dingen zu überwachen, können Sie einen Drucksensor verwenden. Dies ist im Allgemeinen eine sehr nützliche Ausrüstung für die industrielle Automatisierung. Heute werden wir über genau diese Familie von MPX-Drucksensoren sprechen, speziell für die Druckmessung. Ich stelle Ihnen den MPX5700 Drucksensor vor und führe eine Beispielmontage mit dem ESP WiFi LoRa 32 durch.

Ich werde heute keine LoRa-Kommunikation in der Schaltung verwenden, weder WiFi noch Bluetooth. Ich habe mich jedoch für dieses ESP32 entschieden, weil ich bereits in anderen Videos gelehrt habe, wie man alle Funktionen nutzt, die ich heute bespreche.

Schritt 1: Demonstration

Demonstration
Demonstration
Demonstration
Demonstration

Schritt 2: Verwendete Ressourcen

Verwendete Ressourcen
Verwendete Ressourcen

• MPX5700DP Differenzdrucksensor

• 10k Potentiometer (oder Trimpoti)

• Protoboard

• Anschlussdrähte

• USB-Kabel

• ESP-WLAN LoRa 32

• Luftkompressor (optional)

Schritt 3: Warum Druck messen?

Warum Druck messen?
Warum Druck messen?

• Es gibt zahlreiche Anwendungen, bei denen Druck eine wichtige Regelgröße ist.

• Wir können pneumatische oder hydraulische Steuerungen einbeziehen.

• Medizinische Instrumente.

• Robotik.

• Kontrolle von Industrie- oder Umweltprozessen.

• Füllstandmessung in Flüssigkeits- oder Gasbehältern.

Schritt 4: Die MPX-Drucksensorfamilie

Die MPX-Drucksensorfamilie
Die MPX-Drucksensorfamilie

• Sie sind Druckaufnehmer in elektrischer Spannung.

• Sie basieren auf einem piezoresistiven Sensor, bei dem die Kompression in eine Variation des elektrischen Widerstands umgewandelt wird.

• Es gibt Versionen, die kleine Druckunterschiede (von 0 bis 0,04 atm) oder große Schwankungen (von 0 bis 10 atm) messen können.

• Sie erscheinen in mehreren Paketen.

• Sie können Absolutdruck (bezogen auf Vakuum), Differenzdruck (die Differenz zwischen zwei Drücken, p1 und p2) oder Relativdruck (bezogen auf Atmosphärendruck) messen.

Schritt 5: Der MPX5700DP

Der MPX5700DP
Der MPX5700DP
Der MPX5700DP
Der MPX5700DP

• Die Serie 5700 verfügt über Absolut-, Differenz- und Manometersensoren.

• Der MPX5700DP kann einen Differenzdruck von 0 bis 700 kPa (ca. 7 atm) messen.

• Die Ausgangsspannung variiert von 0,2 V bis 4,7 V.

• Seine Leistung beträgt 4,75 V bis 5,25 V

Schritt 6: Für die Demonstration

Für die Demonstration
Für die Demonstration

• Dieses Mal werden wir mit diesem Sensor keine praktische Anwendung durchführen; wir werden es nur montieren und einige Messungen zu Demonstrationszwecken durchführen.

• Dazu verwenden wir einen direkten Luftkompressor, um Druck am Hochdruckeingang (p1) anzulegen und die Differenz zum lokalen Atmosphärendruck (p2) zu ermitteln.

• Der MPX5700DP ist ein unidirektionaler Sensor, dh er misst positive Differenzen, wobei p1 immer größer oder gleich p2 sein muss.

• p1> p2 und die Differenz ist p1 - p2

• Es gibt Zweiwege-Differenzsensoren, die negative und positive Differenzen auswerten können.

• Obwohl es sich nur um eine Demonstration handelt, könnten wir die Prinzipien hier leicht verwenden, um zum Beispiel den Druck in einem Luftbehälter zu steuern, der von diesem Kompressor angetrieben wird.

Schritt 7: Kalibrieren des ESP ADC

Kalibrieren des ESP-ADC
Kalibrieren des ESP-ADC
Kalibrieren des ESP-ADC
Kalibrieren des ESP-ADC
Kalibrieren des ESP-ADC
Kalibrieren des ESP-ADC

• Da wir wissen, dass die Analog-Digital-Wandlung von ESP nicht vollständig linear ist und von einem SoC zum anderen variieren kann, beginnen wir mit einer einfachen Bestimmung seines Verhaltens.

• Mit einem Potentiometer und einem Multimeter messen wir die am AD anliegende Spannung und setzen sie mit dem angezeigten Wert in Beziehung.

• Mit einem einfachen Programm zum Auslesen der AD und zum Zusammenfassen der Informationen in einer Tabelle konnten wir die Kurve ihres Verhaltens bestimmen.

Schritt 8: Berechnung des Drucks

Berechnung des Drucks
Berechnung des Drucks
Berechnung des Drucks
Berechnung des Drucks

• Obwohl uns der Hersteller die Funktion mit dem Verhalten des Bauteils zur Verfügung stellt, ist es immer ratsam, eine Kalibrierung durchzuführen, wenn es um Messungen geht.

• Da es sich jedoch nur um eine Demonstration handelt, verwenden wir direkt die Funktion aus dem Datenblatt. Dazu manipulieren wir es so, dass wir den Druck als Funktion des ADC-Wertes erhalten.

* Denken Sie daran, dass der Bruchteil der an den ADC angelegten Spannung von der Referenzspannung den gleichen Wert haben muss wie der ADC, der vom gesamten ADC gelesen wird. (Abgesehen von der Korrektur)

Schritt 9: Montage

Montage
Montage
Montage
Montage

• Um den Sensor anzuschließen, suchen Sie in einem seiner Anschlüsse nach der Kerbe, die Pin 1 anzeigt.

• Von dort aus zählen:

Pin 1 bietet Signalausgang (von 0 V bis 4,7 V)

Pin 2 ist die Referenz. (GND)

Pin 3 für Strom. (gegen)

• Da der Signalausgang 4,7 V beträgt, verwenden wir einen Spannungsteiler, damit der Maximalwert 3 V3 entspricht. Dazu haben wir die Einstellung mit dem Potentiometer vorgenommen.

Schritt 10: Quellcode

Quellcode
Quellcode
Quellcode
Quellcode

Quellcode: #Enthält und #Definiert

// Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 und posterior #include "SSD1306.h" // oder mesmo que #include "SSD1306Wire.h" //Os pinos do OLED estão conectados ua ESP32 pelos seguintes GPIOs: //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado por software

Quelle: Globale Variablen und Konstanten

SSD1306-Anzeige (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display" const int amostras = 10000; // número de amostras coletadas para a media 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; // Konversationsfaktor kgf/cm2

Quellcode: Setup ()

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

Quellcode: Schleife ()

Void Schleife () { 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.clear(); // ajusta oder alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16); //Escreve kein Puffer, um einen Pressao anzuzeigen 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 está ligado a menos de 5 segundos, exibe a tela initial { //limpa o buffer do display.clear(); //Ajusta oder alinhamento para centralize display.setTextAlignment(TEXT_ALIGN_CENTER); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // escreve kein Puffer display.drawString(64, 0, "Sensor Pressão"); //kein Puffer speichern display.drawString(64, 18, "Diferencial"); // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_10); // escreve kein Puffer display.drawString(64, 44, "ESP-WiFi-Lora"); } display.display(); // transfere o Buffer para o display delay (50); }

Quellcode: Funktion, die den Druck in kPa. berechnet

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) zurück ((corrigeMedida(medida) / 3,3) - 0,04) / 0,0012858; }

-- BILDER

Quellcode: Funktion, die den AD-Wert korrigiert

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

Schritt 11: Dateien

Laden Sie die Dateien herunter:

PDF

INO

Empfohlen: