สารบัญ:

เครื่องชั่งดิจิตอลพร้อม ESP32: 12 ขั้นตอน
เครื่องชั่งดิจิตอลพร้อม ESP32: 12 ขั้นตอน

วีดีโอ: เครื่องชั่งดิจิตอลพร้อม ESP32: 12 ขั้นตอน

วีดีโอ: เครื่องชั่งดิจิตอลพร้อม ESP32: 12 ขั้นตอน
วีดีโอ: EP.1 ESP32 (IOT) เบื้องต้น 2024, กรกฎาคม
Anonim
Image
Image
ทรัพยากรที่ใช้
ทรัพยากรที่ใช้

คุณเคยคิดที่จะติดตั้งเครื่องชั่งดิจิตอลโดยใช้ ESP32 และเซ็นเซอร์ (เรียกว่าโหลดเซลล์) หรือไม่? วันนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีการทำสิ่งนี้ผ่านกระบวนการที่ช่วยให้สามารถทำการทดสอบในห้องปฏิบัติการอื่นๆ ได้ เช่น การระบุแรงที่เครื่องยนต์กระทำต่อจุดหนึ่ง เป็นต้น

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

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

• Heltec Lora 32 WiFi ESP

• โหลดเซลล์ (0 ถึง 50 นิวตัน โดยใช้มาตราส่วน)

• 1 โพเทนชิโอมิเตอร์ 100k (ดีกว่าถ้าคุณใช้ trimpot multivolt สำหรับการปรับแบบละเอียด)

• 1 แอมป์ Op LM358

• ตัวต้านทาน 1M5 2 ตัว

• ตัวต้านทาน 10k 2 ตัว

• 1 4k7 ตัวต้านทาน

• สายไฟ

• โปรโตบอร์ด

• สาย USB สำหรับ ESP

• เครื่องชั่ง ภาชนะที่มีปริมาตรที่กำหนด หรือวิธีการสอบเทียบอื่นๆ

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

สาธิต
สาธิต

ขั้นตอนที่ 3: โหลดเซลล์

โหลดเซลล์
โหลดเซลล์

• พวกเขาเป็นตัวแปลงสัญญาณแรง

• สามารถใช้วิธีการต่างๆ เพื่อแปลงแรงที่ใช้ไปเป็นขนาดตามสัดส่วนที่สามารถใช้เป็นหน่วยวัดได้ ในบรรดาอุปกรณ์ที่ใช้กันทั่วไป ได้แก่ เครื่องวัดความยืดแบบแผ่น, เอฟเฟกต์เพียโซอิเล็กทริก, ระบบไฮดรอลิกส์, สายสั่น ฯลฯ…

• ยังสามารถจำแนกตามรูปแบบการวัด (ความตึงหรือแรงอัด)

ขั้นตอนที่ 4: โหลดเซลล์และสเตรนเกจ

โหลดเซลล์และสเตรนเกจ
โหลดเซลล์และสเตรนเกจ
โหลดเซลล์และสเตรนเกจ
โหลดเซลล์และสเตรนเกจ

• เครื่องวัดความยืดของแผ่นเป็นฟิล์ม (โดยปกติคือพลาสติก) ที่มีลวดพิมพ์ซึ่งมีความต้านทานอาจแตกต่างกันไปตามขนาดที่เปลี่ยนไป

• การก่อสร้างมีวัตถุประสงค์หลักเพื่อแปลงการเสียรูปทางกลเป็นการเปลี่ยนแปลงของขนาดไฟฟ้า (ความต้านทาน) สิ่งนี้ควรเกิดขึ้นในทิศทางเดียว เพื่อให้สามารถดำเนินการประเมินส่วนประกอบได้ สำหรับสิ่งนี้ การรวมกันของ extensometers หลายตัวเป็นเรื่องปกติ

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

• เหล่านี้เรียกอีกอย่างว่าสเตรนเกจ

• เมื่อยืดออกด้วยแรงดึง เส้นจะยาวและแคบ ทำให้มีความต้านทานเพิ่มขึ้น

• เมื่อถูกบีบอัดด้วยแรงอัด สายไฟจะสั้นลงและกว้างขึ้น ทำให้ความต้านทานลดลง

ขั้นตอนที่ 5: สะพานวีตสโตน

สะพานวีตสโตน
สะพานวีตสโตน

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

• ในการกำหนดค่านี้ เราสามารถกำหนดความผันแปรของความต้านทานผ่านความไม่สมดุลของบริดจ์

• ถ้า R1 = Rx และ R2 = R3 ตัวแบ่งแรงดันไฟฟ้าจะเท่ากัน และแรงดันไฟฟ้า Vc และ Vb จะเท่ากันด้วยสะพานในภาวะสมดุล นั่นคือ Vbc = 0V;

• ถ้า Rx เป็นอย่างอื่นที่ไม่ใช่ R1 สะพานจะไม่สมดุลและแรงดันไฟฟ้า Vbc จะไม่เป็นศูนย์

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

ขั้นตอนที่ 6: การขยายเสียง

การขยายเสียง
การขยายเสียง

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

• เพื่อแก้ไขสถานการณ์นี้ เราจะใช้การขยายเสียงสองขั้นตอน อันหนึ่งเพื่อกำหนดความแตกต่างและอีกอันหนึ่งเพื่อให้ตรงกับค่าที่ได้รับจาก ADC ของ ESP

ขั้นตอนที่ 7: การขยาย (โครงการ)

การขยาย (โครงการ)
การขยาย (โครงการ)

• อัตราขยายของขั้นตอนการลบกำหนดโดย R6 / R5 และเท่ากับ R7 / R8

• กำไรของขั้นตอนสุดท้ายที่ไม่กลับด้านจะได้รับจาก Pot / R10

ขั้นตอนที่ 8: การรวบรวมข้อมูลสำหรับการสอบเทียบ

การรวบรวมข้อมูลสำหรับการสอบเทียบ
การรวบรวมข้อมูลสำหรับการสอบเทียบ
การรวบรวมข้อมูลสำหรับการสอบเทียบ
การรวบรวมข้อมูลสำหรับการสอบเทียบ

• เมื่อประกอบแล้ว เราจะตั้งค่าเกนสุดท้ายเพื่อให้ค่าของมวลที่วัดได้มากที่สุดใกล้เคียงกับค่าสูงสุดของ ADC ในกรณีนี้ สำหรับ 2 กก. ที่ใช้ในเซลล์ แรงดันเอาต์พุตจะอยู่ที่ประมาณ 3V3

• ต่อไป เราจะเปลี่ยนแปลงมวลที่ใช้ (ทราบจากเครื่องชั่งและสำหรับแต่ละค่า) และเราเชื่อมโยง LEITUR ของ ADC เพื่อให้ได้ตารางถัดไป

ขั้นตอนที่ 9: การได้มาซึ่งความสัมพันธ์ของฟังก์ชันระหว่างมวลที่วัดได้กับค่าของ ADC ที่ได้รับ

การได้มาซึ่งความสัมพันธ์ของฟังก์ชันระหว่างมวลที่วัดได้กับค่าของ ADC ที่ได้รับ
การได้มาซึ่งความสัมพันธ์ของฟังก์ชันระหว่างมวลที่วัดได้กับค่าของ ADC ที่ได้รับ

เราใช้ซอฟต์แวร์ PolySolve เพื่อให้ได้พหุนามที่แสดงความสัมพันธ์ระหว่างมวลกับค่าของ ADC

ขั้นตอนที่ 10: รหัสที่มา

ซอร์สโค้ด - #Includes

ตอนนี้เรามีวิธีการวัดและทราบความสัมพันธ์ระหว่าง ADC กับมวลที่ใช้แล้ว เราสามารถดำเนินการเขียนซอฟต์แวร์ได้จริง

//Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 e anterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h"

ซอร์สโค้ด - #Defines

//Os pinos ทำ 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; //ปิโน เดอ เลตูรา

ซอร์สโค้ด - การตั้งค่า ()

การตั้งค่าเป็นโมฆะ () {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 massa = 0.0; //variável para armazenar o valor da massa //inicia a coleta de amostras ทำ ADC สำหรับ (int i = 0; i (5000)) // se está ligado a mais que 5 segundos { //Envia um CSV contendo o instante, a medida média do ADC e o valor em gramas // para a Serial. Serial.print (มิลลิวินาที () / 1000.0, 0); //ตัวอย่างทันที segundos Serial.print(", "); Serial.print(medidas, 3);//valor médio obtido no ADC Serial.print(", "); Serial.println((massa), 1); //massa em gramas //Escreve ไม่มีบัฟเฟอร์แสดง display.clear(); // Limpa o buffer do display //ajusta o alinhamento สำหรับ esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //เปลี่ยนฟอนต์สำหรับ Arial 16 display.setFont(ArialMT_Plain_16); //Escreve ไม่มีบัฟเฟอร์แสดง Massa display.drawString(0, 0, "Massa: " + String(int(massa)) + "g"); //escreve ไม่มีบัฟเฟอร์สำหรับ ADC display.drawString(0, 30, "ADC:" + String(int(medidas))); } อื่น // se está ligado a menos de 5 segundos { display.clear(); //limpa o บัฟเฟอร์แสดง display.setTextAlignment(TEXT_ALIGN_LEFT); //Ajusta หรือ alinhamento สำหรับ esquerda display.setFont(ArialMT_Plain_24); //ajusta เป็นฟอนต์สำหรับ Arial 24 display.drawString(0, 0, "Balança"); //escreve ไม่มีบัฟเฟอร์ display.setFont(ArialMT_Plain_16);//Ajusta a fonte para Arial 16 display.drawString(0, 26, "ESP-WiFi-Lora"); //escreve ไม่มีบัฟเฟอร์ } display.display ();// ถ่ายโอนบัฟเฟอร์ para o แสดงความล่าช้า (50); }

รหัสที่มา - ฟังก์ชัน calculaMassa ()

//função para cálculo da massa obtida pela regressão//usando oPolySolve float calculaMassa (float medida) { return -6.798357840659e+01 + 3.885671618930e-01 * medida + 3.684944764970e-04 * -medida * 1087 medida +3.7 medida * medida * medida + 1.796252359323e-10 * medida * medida * medida * medida + -3.995722708150e-14 * medida * medida * medida * medida * medida + 3.284692453344e-18 * medida * medida * medida * medida * medida * เมธิดา; }

ขั้นตอนที่ 11: การเริ่มต้นและการวัด

การเริ่มต้นและการวัด
การเริ่มต้นและการวัด

ขั้นตอนที่ 12: ไฟล์

ดาวน์โหลดไฟล์

ฉันไม่

ไฟล์ PDF

แนะนำ: