สารบัญ:
- ขั้นตอนที่ 1: การสาธิต
- ขั้นตอนที่ 2: ทรัพยากรที่ใช้
- ขั้นตอนที่ 3: ทำไมต้องวัดความดัน
- ขั้นตอนที่ 4: เซ็นเซอร์ความดันตระกูล MPX
- ขั้นตอนที่ 5: MPX5700DP
- ขั้นตอนที่ 6: สำหรับการสาธิต
- ขั้นตอนที่ 7: การปรับเทียบ ESP ADC
- ขั้นตอนที่ 8: การคำนวณความดัน
- ขั้นตอนที่ 9: การประกอบ
- ขั้นตอนที่ 10: ซอร์สโค้ด
- ขั้นตอนที่ 11: ไฟล์
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คุณจะทราบระดับน้ำในถังเก็บน้ำได้อย่างไร? ในการตรวจสอบสิ่งนี้ คุณสามารถใช้เซ็นเซอร์ความดัน นี่เป็นอุปกรณ์ที่มีประโยชน์มากสำหรับระบบอัตโนมัติทางอุตสาหกรรมโดยทั่วไป วันนี้ เราจะมาพูดถึงกลุ่มผลิตภัณฑ์เซ็นเซอร์ความดัน MPX โดยเฉพาะสำหรับการวัดความดันโดยเฉพาะ ฉันจะแนะนำให้คุณรู้จักกับเซ็นเซอร์ความดัน MPX5700 และทำการประกอบตัวอย่างโดยใช้ ESP WiFi LoRa 32
วันนี้ฉันจะไม่ใช้การสื่อสาร LoRa ในวงจร ทั้ง WiFi และ Bluetooth อย่างไรก็ตาม ฉันเลือกใช้ ESP32 นี้เนื่องจากฉันได้สอนในวิดีโออื่น ๆ เกี่ยวกับวิธีใช้คุณสมบัติทั้งหมดที่ฉันพูดถึงในวันนี้
ขั้นตอนที่ 1: การสาธิต
ขั้นตอนที่ 2: ทรัพยากรที่ใช้
• MPX5700DP ดิฟเฟอเรนเชียลเพรสเชอร์เซนเซอร์
• โพเทนชิออมิเตอร์ 10k (หรือ trimpot)
• โปรโตบอร์ด
• สายเชื่อมต่อ
• สาย USB
• ESP WiFi LoRa 32
• เครื่องอัดอากาศ (อุปกรณ์เสริม)
ขั้นตอนที่ 3: ทำไมต้องวัดความดัน
• มีการใช้งานมากมายที่ความดันเป็นตัวแปรควบคุมที่สำคัญ
• เราสามารถเกี่ยวข้องกับระบบควบคุมด้วยลมหรือไฮดรอลิก
• เครื่องมือแพทย์.
• วิทยาการหุ่นยนต์.
• การควบคุมกระบวนการทางอุตสาหกรรมหรือสิ่งแวดล้อม
• การวัดระดับในอ่างเก็บน้ำของเหลวหรือก๊าซ
ขั้นตอนที่ 4: เซ็นเซอร์ความดันตระกูล MPX
• เป็นทรานสดิวเซอร์แรงดันในแรงดันไฟฟ้า
• เซ็นเซอร์เหล่านี้ใช้เซ็นเซอร์แบบเพียโซรีซิสต์ทีฟ ซึ่งการบีบอัดจะถูกแปลงเป็นรูปแบบของความต้านทานไฟฟ้า
• มีรุ่นที่สามารถวัดความแตกต่างของแรงดันเล็กน้อย (จาก 0 ถึง 0.04atm) หรือรูปแบบที่หลากหลายมาก (ตั้งแต่ 0 ถึง 10atm)
• ปรากฏในหลายแพ็คเกจ
• พวกเขาสามารถวัดความดันสัมบูรณ์ (เทียบกับสุญญากาศ) ความดันแตกต่าง (ความแตกต่างระหว่างสองความดัน p1 และ p2) หรือเกจ (เทียบกับความดันบรรยากาศ)
ขั้นตอนที่ 5: MPX5700DP
• 5700 ซีรีส์มีเซนเซอร์แบบสัมบูรณ์ ดิฟเฟอเรนเชียล และเกจ
• MPX5700DP สามารถวัดแรงดันส่วนต่างได้ตั้งแต่ 0 ถึง 700kPa (ประมาณ 7atm)
• แรงดันไฟขาออกแตกต่างกันไปตั้งแต่ 0.2V ถึง 4.7V
• กำลังไฟตั้งแต่ 4.75V ถึง 5.25V
ขั้นตอนที่ 6: สำหรับการสาธิต
• ครั้งนี้ เราจะไม่ใช้งานจริงโดยใช้เซ็นเซอร์นี้ เราจะติดตั้งและทำการวัดเป็นการสาธิตเท่านั้น
• สำหรับสิ่งนี้ เราจะใช้เครื่องอัดอากาศโดยตรงเพื่อใช้แรงดันที่ทางเข้าแรงดันสูง (p1) และรับความแตกต่างที่สัมพันธ์กับความดันบรรยากาศในพื้นที่ (p2)
• MPX5700DP เป็นเซ็นเซอร์ทิศทางเดียว ซึ่งหมายความว่าจะวัดความแตกต่างเชิงบวก โดยที่ p1 ต้องมากกว่าหรือเท่ากับ p2 เสมอ
• p1> p2 และความแตกต่างจะเป็น p1 - p2
• มีเซ็นเซอร์วัดความแตกต่างแบบสองทางที่สามารถประเมินความแตกต่างด้านลบและด้านบวกได้
• แม้ว่าจะเป็นเพียงการสาธิต แต่เราสามารถใช้หลักการนี้เพื่อควบคุมได้อย่างง่ายดาย เช่น แรงดันในถังเก็บอากาศที่ขับเคลื่อนโดยคอมเพรสเซอร์นี้
ขั้นตอนที่ 7: การปรับเทียบ ESP ADC
• เนื่องจากเราทราบดีว่าการแปลงแอนะล็อก-ดิจิทัลของ ESP ไม่ได้เป็นเส้นตรงอย่างสมบูรณ์ และสามารถเปลี่ยนแปลงได้จาก SoC หนึ่งไปยังอีกตัวหนึ่ง เรามาเริ่มด้วยการกำหนดพฤติกรรมง่ายๆ ก่อน
• ใช้โพเทนชิออมิเตอร์และมัลติมิเตอร์ เราจะวัดแรงดันไฟฟ้าที่ใช้กับ AD และสัมพันธ์กับค่าที่ระบุ
• ด้วยโปรแกรมง่ายๆ สำหรับอ่าน AD และรวบรวมข้อมูลในตาราง เราสามารถกำหนดเส้นโค้งของพฤติกรรมได้
ขั้นตอนที่ 8: การคำนวณความดัน
• แม้ว่าผู้ผลิตจะให้ฟังก์ชันกับพฤติกรรมของส่วนประกอบแก่เรา แต่ก็แนะนำให้ทำการปรับเทียบเสมอเมื่อเราพูดถึงการวัด
• อย่างไรก็ตาม เนื่องจากเป็นเพียงการสาธิต เราจะใช้ฟังก์ชันที่พบในแผ่นข้อมูลโดยตรง สำหรับสิ่งนี้ เราจะจัดการกับมันในลักษณะที่ทำให้เรามีแรงกดดันตามหน้าที่ของค่า ADC
* โปรดจำไว้ว่าเศษส่วนของแรงดันไฟฟ้าที่ใช้กับ ADC โดยแรงดันอ้างอิงต้องมีค่าเดียวกับ ADC ที่อ่านโดย ADC ทั้งหมด (ไม่สนใจแก้ไข)
ขั้นตอนที่ 9: การประกอบ
• ในการเชื่อมต่อเซ็นเซอร์ ให้มองหารอยบากในขั้วใดขั้วหนึ่ง ซึ่งระบุพิน 1
• นับจากตรงนั้น:
ขา 1 ให้สัญญาณเอาท์พุต (จาก 0V ถึง 4.7V)
พิน 2 เป็นข้อมูลอ้างอิง (จีเอ็นดี)
พิน 3 สำหรับพลังงาน (เทียบกับ)
• เนื่องจากสัญญาณเอาท์พุต 4.7V เราจะใช้ตัวแบ่งแรงดันไฟเพื่อให้ค่าสูงสุดเท่ากับ 3V3 สำหรับสิ่งนี้ เราได้ทำการปรับด้วยโพเทนชิออมิเตอร์
ขั้นตอนที่ 10: ซอร์สโค้ด
ซอร์สโค้ด: #Includes และ #defines
//Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 e หลัง #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // ระบบปฏิบัติการ OLED ที่เชื่อมต่อกับ ao ESP32 แยกส่วน GPIO's: //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST พัฒนาซอฟต์แวร์สำหรับซอฟต์แวร์อื่นๆ
ที่มา: ตัวแปรโกลบอลและค่าคงที่
จอแสดงผล SSD1306 (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "แสดง" const int amostras = 10000; //número de amostras coletadas สำหรับสื่อ const int pin = 13; //pino de leitura const float fator_atm = 0.0098692327; //fator de conversão สำหรับ 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
รหัสที่มา: การตั้งค่า ()
การตั้งค่าเป็นโมฆะ () {pinMode (พิน, INPUT); //pino de leitura analógica Serial.begin (115200); //iniciando a serial // Inicia o แสดง display.init(); display.flipScreenVertically(); //Vira a tela verticalmente }
รหัสที่มา: วน ()
วงเป็นโมฆะ () { float medidas = 0.0;//variável para manipular เป็น 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)
รหัสที่มา: ฟังก์ชันที่คำนวณความดันในหน่วย 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ÇÃOES POSSÍVEIS COMPE (ระบบปฏิบัติการ) erro) ส่งคืน ((corrigeMedida(medida) / 3.3) - 0.04) / 0.0012858; }
-- ภาพ
ซอร์สโค้ด: ฟังก์ชันที่แก้ไขค่า AD
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; }
ขั้นตอนที่ 11: ไฟล์
ดาวน์โหลดไฟล์:
ไฟล์ PDF
ฉันไม่