สารบัญ:

เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!: 11 ขั้นตอน
เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!: 11 ขั้นตอน

วีดีโอ: เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!: 11 ขั้นตอน

วีดีโอ: เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!: 11 ขั้นตอน
วีดีโอ: ใครชอบถอนขนบ้าง ? #shorts #หมอโต๋ #ขนคุด #ถอนขน 2024, กรกฎาคม
Anonim
เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!
เรียนรู้ที่นี่เกี่ยวกับเซ็นเซอร์ที่สำคัญอย่างยิ่ง!

คุณจะทราบระดับน้ำในถังเก็บน้ำได้อย่างไร? ในการตรวจสอบสิ่งนี้ คุณสามารถใช้เซ็นเซอร์ความดัน นี่เป็นอุปกรณ์ที่มีประโยชน์มากสำหรับระบบอัตโนมัติทางอุตสาหกรรมโดยทั่วไป วันนี้ เราจะมาพูดถึงกลุ่มผลิตภัณฑ์เซ็นเซอร์ความดัน MPX โดยเฉพาะสำหรับการวัดความดันโดยเฉพาะ ฉันจะแนะนำให้คุณรู้จักกับเซ็นเซอร์ความดัน MPX5700 และทำการประกอบตัวอย่างโดยใช้ ESP WiFi LoRa 32

วันนี้ฉันจะไม่ใช้การสื่อสาร LoRa ในวงจร ทั้ง WiFi และ Bluetooth อย่างไรก็ตาม ฉันเลือกใช้ ESP32 นี้เนื่องจากฉันได้สอนในวิดีโออื่น ๆ เกี่ยวกับวิธีใช้คุณสมบัติทั้งหมดที่ฉันพูดถึงในวันนี้

ขั้นตอนที่ 1: การสาธิต

สาธิต
สาธิต
สาธิต
สาธิต

ขั้นตอนที่ 2: ทรัพยากรที่ใช้

ทรัพยากรที่ใช้
ทรัพยากรที่ใช้

• MPX5700DP ดิฟเฟอเรนเชียลเพรสเชอร์เซนเซอร์

• โพเทนชิออมิเตอร์ 10k (หรือ trimpot)

• โปรโตบอร์ด

• สายเชื่อมต่อ

• สาย USB

• ESP WiFi LoRa 32

• เครื่องอัดอากาศ (อุปกรณ์เสริม)

ขั้นตอนที่ 3: ทำไมต้องวัดความดัน

ทำไมต้องวัดความดัน?
ทำไมต้องวัดความดัน?

• มีการใช้งานมากมายที่ความดันเป็นตัวแปรควบคุมที่สำคัญ

• เราสามารถเกี่ยวข้องกับระบบควบคุมด้วยลมหรือไฮดรอลิก

• เครื่องมือแพทย์.

• วิทยาการหุ่นยนต์.

• การควบคุมกระบวนการทางอุตสาหกรรมหรือสิ่งแวดล้อม

• การวัดระดับในอ่างเก็บน้ำของเหลวหรือก๊าซ

ขั้นตอนที่ 4: เซ็นเซอร์ความดันตระกูล MPX

เพรสเชอร์เซนเซอร์ในตระกูล MPX
เพรสเชอร์เซนเซอร์ในตระกูล MPX

• เป็นทรานสดิวเซอร์แรงดันในแรงดันไฟฟ้า

• เซ็นเซอร์เหล่านี้ใช้เซ็นเซอร์แบบเพียโซรีซิสต์ทีฟ ซึ่งการบีบอัดจะถูกแปลงเป็นรูปแบบของความต้านทานไฟฟ้า

• มีรุ่นที่สามารถวัดความแตกต่างของแรงดันเล็กน้อย (จาก 0 ถึง 0.04atm) หรือรูปแบบที่หลากหลายมาก (ตั้งแต่ 0 ถึง 10atm)

• ปรากฏในหลายแพ็คเกจ

• พวกเขาสามารถวัดความดันสัมบูรณ์ (เทียบกับสุญญากาศ) ความดันแตกต่าง (ความแตกต่างระหว่างสองความดัน p1 และ p2) หรือเกจ (เทียบกับความดันบรรยากาศ)

ขั้นตอนที่ 5: MPX5700DP

MPX5700DP
MPX5700DP
MPX5700DP
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 ADC
การปรับเทียบ ESP ADC
การปรับเทียบ ESP ADC
การปรับเทียบ ESP ADC
การปรับเทียบ ESP ADC
การปรับเทียบ 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) (5000)) // se está ligado a mais que 5 segundos {// Limpa o บัฟเฟอร์แสดง display.clear (); //ajusta หรือ alinhamento สำหรับ esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //เปลี่ยนฟอนต์สำหรับ Arial 10 display.setFont(ArialMT_Plain_16); //Escreve ไม่มีบัฟเฟอร์ แสดง pressao 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 ไม่มีบัฟเฟอร์สำหรับ ADC display.drawString(0, 48, "adc:" + String(int(medidas))); } อื่น // se está ligado a menos de 5 segundos, exibe a tela inicial { //limpa o buffer ทำ display.clear (); //Ajusta หรือ alinhamento สำหรับ centralizado display.setTextAlignment(TEXT_ALIGN_CENTER); //เปลี่ยนฟอนต์สำหรับ Arial 16 display.setFont(ArialMT_Plain_16); //escreve ไม่มีบัฟเฟอร์ display.drawString (64, 0, "Sensor Pressão"); //escreve ไม่มีบัฟเฟอร์ display.drawString(64, 18, "Diferencial"); //เปลี่ยนฟอนต์สำหรับ Arial 10 display.setFont(ArialMT_Plain_10); //escreve ไม่มีบัฟเฟอร์ display.drawString (64, 44, "ESP-WiFi-Lora"); } display.display();// ถ่ายโอนบัฟเฟอร์พารา o การแสดงผลล่าช้า (50); }

รหัสที่มา: ฟังก์ชันที่คำนวณความดันในหน่วย 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

ฉันไม่

แนะนำ: