ระบบวัดกำลังไฟฟ้าด้วย Arduino พร้อม PLC ในตัว

Heavy Grid Analytics: ระบบวัดกำลังไฟฟ้าด้วย Arduino
การเอาแอร์ยักษ์หรือเครื่องขุดบิทคอยน์มาเสียบปลั๊กบ้านสายไฟเบอร์บางๆ นี่มันชวนให้สายไฟร้อนจัดจนไฟไหม้ได้เลยนะเว้ย! ระบบวัดกำลังไฟฟ้าด้วย Arduino ตัวนี้จะเข้ามาจัดการคำนวณค่าพารามิเตอร์ไฟฟ้ายักษ์ใหญ่บนสายเมนให้ปลอดภัย! โดยใช้ เซ็นเซอร์วัดกระแสแบบหนีบ SCT-013 ไปหนีบไว้ที่สายไฟเฟสหลักในตู้เบรกเกอร์บ้านเฉยๆ ฮาร์ดแวร์ตัวนี้ทำงานได้เหมือนกับคลิปมิเตอร์อุตสาหกรรมตัวเบิ้มเลย! มันอ่านสนามแม่เหล็กจากไฟบ้าน 220V แบบไม่ต้องสัมผัสสายไฟโดยตรง จากนั้นก็แปลงค่าแรงดันจิ๋วที่ได้ให้กลายเป็นข้อมูลดิจิทัลใน Arduino และคำนวณหาค่ากำลังไฟฟ้า (วัตต์) แบบเรียลไทม์จัดเต็ม!
คณิตศาสตร์แบบไม่ต้องตัดสายไฟ (EmonLib.h)
ห้าม! ห้ามตัดสายไฟแล้วเอาไฟบ้าน 240V AC ต่อตรงเข้า Arduino เด็ดขาด! มันระเบิดได้นะตัวนี้!
- เซ็นเซอร์หนีบ SCT-013 ตรวจจับสนามแม่เหล็กที่เกิดจากกระแสไฟฟ้าในสายไฟเป้าหมาย แล้วผลิตแรงดันไฟฟ้าเล็กจิ๋วที่แปรผันตามกระแสออกมา!
- เพราะไฟ AC มันเป็นคลื่นไซน์ที่แกว่งขึ้นลงแรงมาก (จากบวกไปลบ) ขาพิน Analog ของ Arduino (
0-5V) อ่านค่าลบ-2.5Vไม่ได้โดยตรง! - ต้องสร้างวงจร ปรับแรงดันออฟเซต (Voltage Biasing Circuit) ขึ้นมา (ใช้ตัวต้านทาน 10K สองตัวแบบแบ่งแรงดัน) เพื่อดึงสัญญาณฐานให้อยู่ที่
2.5 โวลต์พอดี! ตอนนี้คลื่น AC ก็จะแกว่งอยู่ระหว่าง0Vถึง5Vอย่างปลอดภัยแล้ว!
#include "EmonLib.h" // Include heavy AC interpolation library natively!
EnergyMonitor emon1; // Instantiate the core object
void setup() {
Serial.begin(9600);
emon1.current(A0, 111.1); // Calibrate: Current: Input pin, Calibration value.
}
void loop() {
// Demand the processor sample the sine wave exactly 1480 times recursively!
double Irms = emon1.calcIrms(1480); // Calculate the Root-Mean-Square (RMS) Amp flow!
double powerWattage = Irms * 230.0; // P = I * V (Assuming global 230V AC Grid Matrix!)
Serial.print("Current: ");
Serial.print(Irms);
Serial.print(" A | Power: ");
Serial.print(powerWattage);
Serial.println(" Watts");
}
การส่งข้อมูลผ่านสายไฟ (PLC Injection)
ถ้าวงจรวัดไฟเราอยู่ในตู้เบรกเกอร์ห้องใต้ดินคอนกรีตหนาเตี้ย Wi-Fi ก็จบเห่แน่นอน
- ระบบอุตสาหกรรมเค้าใช้ PLC (Power Line Communication) กัน!
- โมดูลอย่าง
KQ-130Fนี่มันฉีดข้อมูลแบบอนุกรม (เช่น"HOUSE LOAD: 4000W") เข้าไปในสายไฟทองแดง 220V/110V โดยตรงเลย! - เราแค่เสียบโมดูล
KQ-130Fตัวที่สองเข้ากับปลั๊มผนังข้างบนบ้าน มันจะกรองคลื่นไฟบ้าน 50Hz ออก แล้วดึงข้อมูลความถี่สูงที่ซ่อนอยู่มาแยกเป็นค่ากำลังไฟฟ้า แสดงผลบนจอ LCD ในครัวได้ชัดเจน! สะดวกจัดไปวัยรุ่น!
เมทริกซ์ฮาร์ดแวร์สำหรับงานไฟฟ้าแรงสูง (เล่นใหญ่เลยนะตัวนี้!)
- Arduino Uno/Nano (ตัวนี้มันจะคำนวณลูปตัวอย่างข้อมูลแบบหลายมิติที่โหดๆ ได้แบบเนทีฟเลย อย่าถามว่ามันทำได้ไง!)
- เซ็นเซอร์วัดกระแสไฟสลับแบบไม่ต้องตัดสาย SCT-013-000 (ฟังพี่ดีๆ: ต้องหนีบให้รอบสายไฟ สายไฟ (Live/Phase) สายเดียวเท่านั้น! ถ้าหนีบคร่อมทั้งสายไฟและสายนิวทรัลพร้อมกัน สนามแม่เหล็กมันจะหักล้างกันเองจนมิด วัดออกมาได้ 0.0 แอมป์เป๊ะๆ งานเข้าแน่!)
- วงจรไบแอสแรงดัน (Voltage Biasing Network) (ของต้องมีสองชิ้นนี้: ตัวต้านทาน
10K-Ohmสองตัว กับตัวเก็บประจุ10µFหนึ่งตัว เอาไว้ชดเชยคลื่นไซน์ด้านล่าง ขาดไม่ได้นะ ห้ามช็อต!) - โมดูลสื่อสารผ่านสายไฟ KQ-130F (ตัวเลือกเสริม ไว้ส่งข้อมูลแบบแกร่งสุดๆ ผ่านสายไฟทองแดงในบ้านเราเลย จัดไปวัยรุ่น)
ฟีเจอร์และวิธีปรับแต่งระบบ
จุดที่ 1: โดยการเปลี่ยนค่าความต้านทานของ R17 และ R16 ใน PZEM เราสามารถวัดแรงดันที่มากกว่า 280 โวลต์ได้ (นี่คือวงจรแบ่งแรงดันนะน้อง) ตัวอย่างเช่น ถ้า R17 มีค่า 2 เมกะโอห์ม และ R16 มีค่า 750 โอห์ม เราจะวัดแรงดันได้สูงสุดถึง 500 โวลต์ แต่ต้องไม่ลืมปรับโค้ดใน Arduino ด้วยนะ ข้อมูลเพิ่มเติมอยู่ในโฟลเดอร์ 500 volts ใน github
จุดที่ 2: ระบบนี้ยังรองรับโปรโตคอล Modbus อีกด้วย จะเอาไปต่อพ่วงกับอุปกรณ์อุตสาหกรรมอื่นๆ เช่น HMI หรือ PLC ก็ยังได้ สะดวกสุดๆ
วิดีโอทดสอบระบบ
การเชื่อมต่อมิเตอร์ไฟฟ้ากับ MATLAB และดูข้อมูลบนกราฟ
ทดสอบการวัดแรงดัน
ทดสอบการวัดกระแส
ทดสอบการทำงานของรีเลย์
การตั้งค่า PLC ภายใน :
เพื่อเข้าเมนูตั้งค่า เราต้องหมุนกุญแจ MODE ไปที่ตำแหน่ง ON ก่อน แล้วตั้งค่าพารามิเตอร์ที่ต้องการด้วยปุ่มลูกศร
| พารามิเตอร์ในเมนูตั้งค่า | การใช้งาน |
|---|---|
| OVER Voltage | ขีดจำกัดแรงดันสูงสุด |
| LOW Voltage | แรงดันต่ำสุด |
| OVER Current | ขีดจำกัดกระแสสูงสุด |
| LOW Frequency | ความถี่ต่ำสุด |
| OVER Frequency | ขีดจำกัดความถี่สูงสุด |
| LOW POWER FACTOR 1 | ขั้นที่หนึ่งของเพาเวอร์แฟกเตอร์ |
| LOW POWER FACTOR 2 | ขั้นที่สองของเพาเวอร์แฟกเตอร์ |
| LOW POWER FACTOR 3 | ขั้นที่สามของเพาเวอร์แฟกเตอร์ |
| TMS 1 SET | ตั้งเวลารีเลย์ตัวที่หนึ่ง |
| TMS 2 SET | ตั้งเวลารีเลย์ตัวที่สอง |
| TMS 3 SET | ตั้งเวลารีเลย์ตัวที่สาม |
| TMS 4 SET | ตั้งเวลารีเลย์ตัวที่สี่ |
| R1 | ตั้งโหมดการทำงานของรีเลย์ตัวที่หนึ่ง |
| R2 | ตั้งโหมดการทำงานของรีเลย์ตัวที่สอง |
| R3 | ตั้งโหมดการทำงานของรีเลย์ตัวที่สาม |
| R4 | ตั้งโหมดการทำงานของรีเลย์ตัวที่สี่ |
หลังจากตั้งค่าเสร็จแล้ว ให้หมุนกุญแจ MODE กลับไปที่ตำแหน่ง OFF เพื่อบันทึกข้อมูลลงในหน่วยความจำถาวรของคอนโทรลเลอร์
- หน่วยเวลาของตัวตั้งเวลารีเลย์แต่ละหน่วยคือ 100 มิลลิวินาที
- โหมดการทำงานต่างๆ ของรีเลย์ (R1,R2,R3,R4):
1- ฟังก์ชันกระแสเกินแบบผกผันกับเวลา 2- ฟังก์ชันกระแสเกินแบบเวลาเพิ่มคงที่ 3- ฟังก์ชันแรงดันเกิน 4- ฟังก์ชันแรงดันต่ำ 5- ฟังก์ชันความถี่ต่ำ 6- ฟังก์ชันความถี่สูง 7- ฟังก์ชันออกจากภาวะปกติ (ความถี่, แรงดัน, กระแส) 8- ฟังก์ชันขั้นของเพาเวอร์แฟกเตอร์ขั้นที่หนึ่ง
9- ฟังก์ชันปรับค่าตัวประกอบกำลัง (Power Factor) แบบขั้นละสอง 10- ฟังก์ชันปรับค่าตัวประกอบกำลัง (Power Factor) แบบขั้นละสาม 11- การทำงานเมื่อแรงดันไฟฟ้า (Voltage) ออกนอกช่วงปกติ 12- ฟังก์ชันการทำงานเมื่อความถี่ (Frequency) ออกนอกช่วงปกติ
#########################################################################
ลิงก์ Github :