สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: รวบรวมส่วนประกอบที่จำเป็น
- ขั้นตอนที่ 2: หลักการทำงาน
- ขั้นตอนที่ 3: นำชิ้นส่วนต่างๆ มารวมกัน.
- ขั้นตอนที่ 4: การเพิ่มชิ้นส่วนสำหรับเครือข่ายการรับรู้แรงดันไฟฟ้า
- ขั้นตอนที่ 5: การเพิ่มชิ้นส่วนสำหรับเครือข่ายความรู้สึกปัจจุบัน
- ขั้นตอนที่ 6: เสร็จสิ้นการเชื่อมต่อที่เหลือและเสร็จสิ้นการสร้าง.
- ขั้นตอนที่ 7: เชื่อมต่อโมดูลกับ Arduino
- ขั้นตอนที่ 8: รหัสโครงการและแผนภาพวงจร
- ขั้นตอนที่ 9: วิดีโอการสอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีทุกคน ฉันหวังว่าคุณจะทำได้ดีมาก! ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นว่าฉันสร้างโมดูล Power meter / Wattmeter สำหรับใช้กับบอร์ด Arduino ได้อย่างไร เครื่องวัดพลังงานนี้สามารถคำนวณพลังงานที่ใช้โดยและ DC Load นอกจากกำลังไฟฟ้าแล้ว โมดูลนี้ยังช่วยให้เราอ่านค่าแรงดันและกระแสได้อย่างแม่นยำอีกด้วย สามารถวัดแรงดันไฟฟ้าต่ำ (ประมาณ 2V) และกระแสไฟต่ำได้อย่างง่ายดายเพียง 50 mA โดยมีข้อผิดพลาดไม่เกิน 20mA ความแม่นยำขึ้นอยู่กับการเลือกส่วนประกอบตามความต้องการของคุณ
เสบียง
- IC LM358 dual OP-AMP
- ฐานไอซี 8 พิน
- ตัวต้านทาน Shunt (8.6 มิลลิโอห์มในกรณีของฉัน)
- ตัวต้านทาน: 100K, 10K, 2.2K, 1K (1/2watt)
- ตัวเก็บประจุ: 3 * 0.1uF ตัวเก็บประจุเซรามิก
- Veroboard หรือกระดานศูนย์
- ขั้วต่อสกรู
- หัวแร้งและหัวแร้ง
- Arduino Uno หรือบอร์ดอื่นๆ ที่เข้ากันได้
- จอแสดงผล OLED
- การต่อสายเบรดบาร์ด
ขั้นตอนที่ 1: รวบรวมส่วนประกอบที่จำเป็น
โปรเจ็กต์นี้ใช้ส่วนประกอบที่ง่ายมากและง่ายต่อการรับ ซึ่งประกอบด้วยตัวต้านทาน ตัวเก็บประจุเซรามิก แอมพลิฟายเออร์ในการดำเนินงาน และเวโรบอร์ดสำหรับการสร้างต้นแบบ
ทางเลือกและมูลค่าของส่วนประกอบขึ้นอยู่กับประเภทของการใช้งานและช่วงกำลังไฟฟ้าที่คุณต้องการวัด
ขั้นตอนที่ 2: หลักการทำงาน
การทำงานของโมดูลกำลังจะขึ้นอยู่กับสองแนวคิดของทฤษฎีวงจรและไฟฟ้าพื้นฐาน: แนวคิดตัวแบ่งแรงดันไฟฟ้าสำหรับการวัดแรงดันไฟฟ้าขาเข้าและกฎของโอห์มเพื่อคำนวณกระแสที่ไหลผ่านวงจร เรากำลังใช้ตัวต้านทาน shunt เพื่อสร้างแรงดันตกคร่อมที่น้อยมาก แรงดันตกคร่อมนี้เป็นสัดส่วนกับปริมาณกระแสที่ไหลผ่านตัวแบ่ง แรงดันไฟฟ้าขนาดเล็กนี้เมื่อขยายโดยแอมพลิฟายเออร์ในการดำเนินงานสามารถใช้เป็นอินพุตไปยังไมโครคอนโทรลเลอร์ซึ่งสามารถตั้งโปรแกรมเพื่อให้ค่าปัจจุบันแก่เรา แอมพลิฟายเออร์ในการดำเนินงานใช้เป็นแอมพลิฟายเออร์ที่ไม่กลับด้านซึ่งเกนจะถูกกำหนดโดยค่าของผลป้อนกลับ ตัวต้านทาน R2 และ R1 การใช้การกำหนดค่าที่ไม่กลับด้านทำให้เรามีกราวด์ร่วมกันเป็นข้อมูลอ้างอิงการวัด สำหรับสิ่งนี้ กระแสจะถูกวัดที่ด้านล่างของวงจร สำหรับแอปพลิเคชันของฉัน ฉันเลือกอัตราขยาย 46 โดยใช้ตัวต้านทาน 100K และ 2.2K เป็นเครือข่ายป้อนกลับ การวัดแรงดันไฟฟ้าทำได้โดยใช้วงจรแบ่งแรงดันซึ่งแบ่งแรงดันไฟฟ้าขาเข้าตามสัดส่วนของเครือข่ายตัวต้านทานที่ใช้
ทั้งค่าปัจจุบันจาก OP-Amp และค่าแรงดันไฟฟ้าจากเครือข่ายตัวแบ่งสามารถป้อนลงในอินพุตแบบอะนาล็อกสองตัวของ Arduino เพื่อให้เราสามารถคำนวณพลังงานที่ใช้โดยโหลด
ขั้นตอนที่ 3: นำชิ้นส่วนต่างๆ มารวมกัน.
ให้เราเริ่มสร้างโมดูลพลังงานของเราโดยกำหนดตำแหน่งของขั้วต่อสกรูสำหรับการเชื่อมต่ออินพุตและเอาต์พุต หลังจากทำเครื่องหมายตำแหน่งที่เหมาะสมแล้ว เราประสานขั้วสกรูและตัวต้านทานแบ่งเข้าที่
ขั้นตอนที่ 4: การเพิ่มชิ้นส่วนสำหรับเครือข่ายการรับรู้แรงดันไฟฟ้า
สำหรับการตรวจจับแรงดันไฟฟ้าอินพุต ฉันใช้เครือข่ายตัวแบ่งแรงดันไฟฟ้า 10K และ 1K ฉันยังเพิ่มตัวเก็บประจุ 0.1 uF ทั่วตัวต้านทาน 1K เพื่อทำให้แรงดันไฟฟ้าราบรื่นขึ้น เครือข่ายตรวจจับแรงดันไฟฟ้าถูกบัดกรีใกล้กับขั้วอินพุต
ขั้นตอนที่ 5: การเพิ่มชิ้นส่วนสำหรับเครือข่ายความรู้สึกปัจจุบัน
กระแสจะถูกวัดโดยการคำนวณและขยายแรงดันตกคร่อมตัวต้านทาน shunt ด้วยอัตราขยายที่กำหนดไว้ล่วงหน้าที่กำหนดโดยเครือข่ายตัวต้านทาน ใช้โหมดการขยายแบบไม่กลับด้าน ขอแนะนำให้รักษาร่องรอยการบัดกรีให้มีขนาดเล็กเพื่อหลีกเลี่ยงแรงดันไฟฟ้าตกที่ไม่ต้องการ
ขั้นตอนที่ 6: เสร็จสิ้นการเชื่อมต่อที่เหลือและเสร็จสิ้นการสร้าง.
ด้วยเครือข่ายแรงดันและกระแสสัมผัสที่เชื่อมต่อและบัดกรี ถึงเวลาที่จะประสานหมุดส่วนหัวของตัวผู้ และทำการเชื่อมต่อที่จำเป็นของกำลังไฟฟ้าและเอาต์พุตสัญญาณ โมดูลจะใช้พลังงานจากแรงดันไฟฟ้ามาตรฐาน 5 โวลต์ ซึ่งเราสามารถหาได้จากบอร์ด Arduino เอาต์พุตความรู้สึกแรงดันไฟฟ้าสองตัวจะเชื่อมต่อกับอินพุตแบบอะนาล็อกของ Arduino
ขั้นตอนที่ 7: เชื่อมต่อโมดูลกับ Arduino
เมื่อโมดูลเสร็จสมบูรณ์ ในที่สุดก็ถึงเวลาเชื่อมต่อกับ Arduino และเริ่มต้นใช้งาน เพื่อดูค่า ฉันใช้จอแสดงผล OLED ซึ่งใช้โปรโตคอล I2C เพื่อสื่อสารกับ Arduino พารามิเตอร์ที่แสดงบนหน้าจอ ได้แก่ แรงดันไฟ กระแสไฟ และกำลัง
ขั้นตอนที่ 8: รหัสโครงการและแผนภาพวงจร
ฉันได้แนบแผนภาพวงจรและรหัสของโมดูลพลังงานในขั้นตอนนี้ (ก่อนหน้านี้ฉันได้แนบไฟล์.ino และ.txt ที่มีรหัสอยู่ แต่ข้อผิดพลาดของเซิร์ฟเวอร์บางอย่างทำให้ผู้ใช้ไม่สามารถเข้าถึงหรืออ่านรหัสได้ ดังนั้นฉันจึงเขียนทั้งหมด รหัสในขั้นตอนนี้ ฉันรู้ว่านั่นไม่ใช่วิธีที่ดีในการแบ่งปันรหัส:() โปรดแก้ไขรหัสนี้ตามความต้องการของคุณ ฉันหวังว่าโครงการนี้จะเป็นประโยชน์สำหรับคุณ โปรดแบ่งปันความคิดเห็นของคุณในความคิดเห็น ไชโย!
#รวม
#รวม
#รวม
#รวม
#define OLED_RESET 4 จอแสดงผล Adafruit_SSD1306 (OLED_RESET);
ค่าลอย=0;
กระแสลอย=0;
แรงดันลอย=0;
พลังลอย=0;
การตั้งค่าเป็นโมฆะ () {
โหมดพิน (A0, INPUT);
โหมดพิน (A1, INPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // เริ่มต้นด้วย I2C addr 0x3C (สำหรับ 128x32) display.display();
ล่าช้า (2000);
// ล้างบัฟเฟอร์
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.setTextColor(สีขาว);
Serial.begin(9600); // เพื่อดูค่าบนจอภาพอนุกรม
}
วงเป็นโมฆะ () {
// หาค่าเฉลี่ยสำหรับการอ่านที่เสถียร
สำหรับ (int i=0;i<20;i++) {
ปัจจุบัน=ปัจจุบัน + analogRead(A0);
แรงดันไฟฟ้า = แรงดัน + อ่านอนาล็อก (A1); }
ปัจจุบัน=(ปัจจุบัน/20); ปัจจุบัน = ปัจจุบัน * 0.0123 * 5.0; // ค่าสอบเทียบ, ที่จะเปลี่ยนตามส่วนประกอบที่ใช้
แรงดันไฟฟ้า = (แรงดันไฟฟ้า/20); แรงดันไฟ = แรงดัน* 0.0508 * 5.0; // ค่าสอบเทียบ, ที่จะเปลี่ยนตามส่วนประกอบที่ใช้
กำลัง = แรงดัน * กระแส;
//พิมพ์ค่าบนจอภาพอนุกรม
Serial.print (แรงดันไฟฟ้า);
Serial.print(" ");
Serial.print (ปัจจุบัน);
Serial.print(" ");
Serial.println(พลังงาน);
// พิมพ์ค่าบนจอแสดงผล OLED
display.setCursor(0, 0);
display.print("แรงดันไฟฟ้า: ");
display.print(แรงดัน);
display.println("วี");
display.setCursor(0, 10);
display.print("ปัจจุบัน: ");
display.print(ปัจจุบัน);
display.println("A");
display.setCursor(0, 20);
display.print("กำลัง: ");
display.print(พลังงาน);
display.println("W");
display.display();
ล่าช้า (500); // อัตราการรีเฟรชที่กำหนดโดยความล่าช้า
display.clearDisplay();
}