جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
كيف يمكنك معرفة مستوى المياه في خزان المياه؟ لمراقبة هذا النوع من الأشياء ، يمكنك استخدام مستشعر الضغط. هذه معدات مفيدة جدًا للأتمتة الصناعية بشكل عام. اليوم ، سنتحدث عن هذه العائلة الدقيقة من مستشعرات ضغط MPX ، خاصة لقياس الضغط. سأقدم لك مستشعر الضغط MPX5700 وأجري تجميع عينة باستخدام ESP WiFi LoRa 32.
لن أستخدم اتصال LoRa في الدائرة اليوم ، لا WiFi ولا Bluetooth. ومع ذلك ، اخترت هذا ESP32 لأنني قمت بالفعل بتدريس في مقاطع فيديو أخرى كيفية استخدام جميع الميزات التي أناقشها اليوم.
الخطوة 1: العرض التوضيحي
الخطوة 2: الموارد المستخدمة
• MPX5700DP مستشعر الضغط التفاضلي
• مقياس جهد 10 كيلو (أو أداة تقليم)
• Protoboard
• أسلاك التوصيل
• كابل USB
• ESP WiFi LoRa 32
• ضاغط هواء (اختياري)
الخطوة 3: لماذا قياس الضغط؟
• هناك العديد من التطبيقات حيث الضغط هو متغير تحكم مهم.
• يمكننا استخدام أنظمة تحكم تعمل بالهواء المضغوط أو هيدروليكي.
• الأجهزة الطبية.
• علم الروبوتات.
• مراقبة العمليات الصناعية أو البيئية.
• قياس المستوى في الخزانات السائلة أو الغازية.
الخطوة 4: عائلة MPX لمستشعرات الضغط
• هي محولات ضغط في الجهد الكهربائي.
• تعتمد على مستشعر مقاومة بيزو ، حيث يتم تحويل الضغط إلى اختلاف في المقاومة الكهربائية.
• توجد إصدارات قادرة على قياس فروق الضغط الصغيرة (من 0 إلى 0.04 ضغط جوي) ، أو اختلافات كبيرة (من 0 إلى 10 ضغط جوي).
• تظهر في حزم متعددة.
• يمكنهم قياس الضغط المطلق (نسبة إلى الفراغ) ، والضغط التفاضلي (الفرق بين ضغوطتين ، p1 و p2) ، أو مقياس (بالنسبة للضغط الجوي).
الخطوة الخامسة: 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 ليس خطيًا تمامًا ويمكن أن يختلف من 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
كود المصدر: الوظيفة التي تحسب الضغط في كيلو باسكال
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: الملفات
قم بتنزيل الملفات:
بي دي إف
انا لا