تعلم هنا عن جهاز استشعار مهم للغاية: 11 خطوة
تعلم هنا عن جهاز استشعار مهم للغاية: 11 خطوة
Anonim
تعلم هنا عن جهاز استشعار مهم للغاية!
تعلم هنا عن جهاز استشعار مهم للغاية!

كيف يمكنك معرفة مستوى المياه في خزان المياه؟ لمراقبة هذا النوع من الأشياء ، يمكنك استخدام مستشعر الضغط. هذه معدات مفيدة جدًا للأتمتة الصناعية بشكل عام. اليوم ، سنتحدث عن هذه العائلة الدقيقة من مستشعرات ضغط MPX ، خاصة لقياس الضغط. سأقدم لك مستشعر الضغط MPX5700 وأجري تجميع عينة باستخدام ESP WiFi LoRa 32.

لن أستخدم اتصال LoRa في الدائرة اليوم ، لا WiFi ولا Bluetooth. ومع ذلك ، اخترت هذا ESP32 لأنني قمت بالفعل بتدريس في مقاطع فيديو أخرى كيفية استخدام جميع الميزات التي أناقشها اليوم.

الخطوة 1: العرض التوضيحي

برهنة
برهنة
برهنة
برهنة

الخطوة 2: الموارد المستخدمة

الموارد المستخدمة
الموارد المستخدمة

• MPX5700DP مستشعر الضغط التفاضلي

• مقياس جهد 10 كيلو (أو أداة تقليم)

• Protoboard

• أسلاك التوصيل

• كابل USB

• ESP WiFi LoRa 32

• ضاغط هواء (اختياري)

الخطوة 3: لماذا قياس الضغط؟

لماذا قياس الضغط؟
لماذا قياس الضغط؟

• هناك العديد من التطبيقات حيث الضغط هو متغير تحكم مهم.

• يمكننا استخدام أنظمة تحكم تعمل بالهواء المضغوط أو هيدروليكي.

• الأجهزة الطبية.

• علم الروبوتات.

• مراقبة العمليات الصناعية أو البيئية.

• قياس المستوى في الخزانات السائلة أو الغازية.

الخطوة 4: عائلة MPX لمستشعرات الضغط

عائلة MPX لمستشعرات الضغط
عائلة MPX لمستشعرات الضغط

• هي محولات ضغط في الجهد الكهربائي.

• تعتمد على مستشعر مقاومة بيزو ، حيث يتم تحويل الضغط إلى اختلاف في المقاومة الكهربائية.

• توجد إصدارات قادرة على قياس فروق الضغط الصغيرة (من 0 إلى 0.04 ضغط جوي) ، أو اختلافات كبيرة (من 0 إلى 10 ضغط جوي).

• تظهر في حزم متعددة.

• يمكنهم قياس الضغط المطلق (نسبة إلى الفراغ) ، والضغط التفاضلي (الفرق بين ضغوطتين ، p1 و p2) ، أو مقياس (بالنسبة للضغط الجوي).

الخطوة الخامسة: MPX5700DP

و MPX5700DP
و MPX5700DP
و MPX5700DP
و MPX5700DP

• تتميز سلسلة 5700 بأجهزة استشعار مطلقة وتفاضلية ومقاييس.

• يمكن لـ MPX5700DP قياس الضغط التفاضلي من 0 إلى 700 كيلو باسكال (حوالي 7 ضغط جوي).

• يختلف جهد الخرج من 0.2 فولت إلى 4.7 فولت.

• قوتها من 4.75V إلى 5.25V

الخطوة 6: للمظاهرة

للمظاهرة
للمظاهرة

• هذه المرة ، لن نقوم بتطبيق عملي باستخدام هذا المستشعر ؛ سنقوم فقط بتثبيته وإجراء بعض القياسات كتوضيح.

• لهذا ، سوف نستخدم ضاغط هواء مباشر لممارسة الضغط عند مدخل الضغط العالي (p1) والحصول على الفرق فيما يتعلق بالضغط الجوي المحلي (p2).

• MPX5700DP عبارة عن مستشعر أحادي الاتجاه ، مما يعني أنه يقيس الفروق الإيجابية حيث يجب أن يكون p1 دائمًا أكبر من أو يساوي p2.

• p1> p2 وسيكون الفرق بين p1 - p2

• توجد مستشعرات تفاضلية ثنائية الاتجاه يمكنها تقييم الفروق السلبية والإيجابية.

• على الرغم من أنه مجرد عرض توضيحي ، يمكننا بسهولة استخدام المبادئ هنا للتحكم ، على سبيل المثال ، في الضغط في خزان الهواء ، المدعوم من هذا الضاغط.

الخطوة 7: معايرة ESP ADC

معايرة ESP ADC
معايرة ESP ADC
معايرة ESP ADC
معايرة ESP ADC
معايرة ESP ADC
معايرة ESP ADC

• نظرًا لأننا نعلم أن التحويل الرقمي التناظري الخاص بـ ESP ليس خطيًا تمامًا ويمكن أن يختلف من SoC إلى آخر ، فلنبدأ بإجراء تحديد بسيط لسلوكه.

• باستخدام مقياس الجهد ومقياس متعدد ، سنقوم بقياس الجهد المطبق على AD وربطه بالقيمة المشار إليها.

• باستخدام برنامج بسيط لقراءة AD وجمع المعلومات في جدول ، تمكنا من تحديد منحنى سلوكه.

الخطوة الثامنة: حساب الضغط

حساب الضغط
حساب الضغط
حساب الضغط
حساب الضغط

• على الرغم من أن الشركة المصنعة توفر لنا الوظيفة مع سلوك المكون ، فمن المستحسن دائمًا إجراء معايرة عندما نتحدث عن أخذ القياسات.

• ومع ذلك ، نظرًا لأنه مجرد عرض توضيحي ، سنستخدم الوظيفة الموجودة في ورقة البيانات مباشرةً. لهذا ، سوف نتعامل معه بطريقة تعطينا الضغط كدالة لقيمة ADC.

* تذكر أن جزء الجهد المطبق على ADC بالجهد المرجعي يجب أن يكون له نفس قيمة ADC التي يقرأها إجمالي ADC. (تجاهل التصحيح)

الخطوة 9: التجميع

المجسم
المجسم
المجسم
المجسم

• لتوصيل المستشعر ، ابحث عن الشق الموجود في أحد أطرافه ، مما يشير إلى السن 1.

• العد من هناك:

يوفر Pin 1 خرج إشارة (من 0V إلى 4.7V)

دبوس 2 هو المرجع. (GND)

دبوس 3 للطاقة. (ضد)

• نظرًا لأن خرج الإشارة 4.7 فولت ، فسوف نستخدم مقسم جهد بحيث تكون القيمة القصوى مكافئة لـ 3 فولت 3. لهذا ، أجرينا التعديل باستخدام مقياس الجهد.

الخطوة 10: كود المصدر

كود المصدر
كود المصدر
كود المصدر
كود المصدر

كود المصدر: #Includes and #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 pelos seguintes 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

المصدر: المتغيرات والثوابت العالمية

عرض SSD1306 (0x3c ، SDA ، SCL ، RST) ؛ // Instanciando e ajustando os pinos do objeto "عرض" 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 convertão para bar const float fator_kgf_cm2 = 0.0101971621 ؛ // fator de Conversão kgf / cm2

كود المصدر: إعداد ()

إعداد باطل () {pinMode (pin، INPUT)؛ // pino de leitura analógica Serial.begin (115200) ؛ // iniciando a serial // Inicia o display.init () ؛ display.flipScreenVertically () ، // Vira a tela verticalmente}

كود المصدر: Loop ()

حلقة فارغة () {float medidas = 0.0؛ // variável para manipular as medidas float pressao = 0.0 ؛ // vará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 o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT) ؛ // ajusta a fonte para Arial 10 display.setFont (ArialMT_Plain_16) ؛ // Escreve no buffer لا تعرض شاشة pressao.drawString (0 ، 0 ، سلسلة (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.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 () ؛ // نقل o المخزن المؤقت للفقرة o تأخير العرض (50) ؛ }

كود المصدر: الوظيفة التي تحسب الضغط في كيلو باسكال

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 CONSIDERAO OS POSSÍVEENT DESEV erro) return ((corrigeMedida (medida) / 3.3) - 0.04) / 0.0012858 ؛ }

- الصور

كود المصدر: الدالة التي تصحح قيمة AD

Float CorrigeMedida (float x) {/ * Esta função foi obida 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 * س * س * س * س ؛ }

الخطوة 11: الملفات

قم بتنزيل الملفات:

بي دي إف

انا لا