กลับไปหน้ารวมไฟล์
arduino-power-meter-system-with-internal-plc-50cc36.md

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

ฟีเจอร์เด็ดๆ

Heavy Grid Analytics: ระบบวัดกำลังไฟฟ้าด้วย Arduino

การเอาแอร์ยักษ์หรือเครื่องขุดบิทคอยน์มาเสียบปลั๊กบ้านสายไฟเบอร์บางๆ นี่มันชวนให้สายไฟร้อนจัดจนไฟไหม้ได้เลยนะเว้ย! ระบบวัดกำลังไฟฟ้าด้วย Arduino ตัวนี้จะเข้ามาจัดการคำนวณค่าพารามิเตอร์ไฟฟ้ายักษ์ใหญ่บนสายเมนให้ปลอดภัย! โดยใช้ เซ็นเซอร์วัดกระแสแบบหนีบ SCT-013 ไปหนีบไว้ที่สายไฟเฟสหลักในตู้เบรกเกอร์บ้านเฉยๆ ฮาร์ดแวร์ตัวนี้ทำงานได้เหมือนกับคลิปมิเตอร์อุตสาหกรรมตัวเบิ้มเลย! มันอ่านสนามแม่เหล็กจากไฟบ้าน 220V แบบไม่ต้องสัมผัสสายไฟโดยตรง จากนั้นก็แปลงค่าแรงดันจิ๋วที่ได้ให้กลายเป็นข้อมูลดิจิทัลใน Arduino และคำนวณหาค่ากำลังไฟฟ้า (วัตต์) แบบเรียลไทม์จัดเต็ม!

คณิตศาสตร์แบบไม่ต้องตัดสายไฟ (EmonLib.h)

ห้าม! ห้ามตัดสายไฟแล้วเอาไฟบ้าน 240V AC ต่อตรงเข้า Arduino เด็ดขาด! มันระเบิดได้นะตัวนี้!

  1. เซ็นเซอร์หนีบ SCT-013 ตรวจจับสนามแม่เหล็กที่เกิดจากกระแสไฟฟ้าในสายไฟเป้าหมาย แล้วผลิตแรงดันไฟฟ้าเล็กจิ๋วที่แปรผันตามกระแสออกมา!
  2. เพราะไฟ AC มันเป็นคลื่นไซน์ที่แกว่งขึ้นลงแรงมาก (จากบวกไปลบ) ขาพิน Analog ของ Arduino (0-5V) อ่านค่าลบ -2.5V ไม่ได้โดยตรง!
  3. ต้องสร้างวงจร ปรับแรงดันออฟเซต (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 :

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE 1.8.19"
author: "amir_eshaqy"
category: "Sensors & Environment"
components:
  - "1x 4 Channel DC 5V Relay Module"
  - "1x n-channel MOSFET -p"
  - "1x Potentiometer 10K"
  - "1x PZEM-004-t"
  - "1x LCD 20X4-p"
  - "4x Pushbutton-p"
  - "1x Arduino Nano"
  - "5x 10k Ohm Resistors -p"
  - "1x 3D printer filament (PLA)"
  - "1x on/off switch"
description: "Current induction telemetry! Execute dangerous high-voltage diagnostic analysis flawlessly by integrating non-invasive SCT-013 split-core transformers perfectly alongside embedded analog interpolation formulas to definitively chart heavy AC-Grid power loads."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/de8e79a8-513a-4827-bb11-bb610dcc75df.ino"
encryptedPayload: "U2FsdGVkX18wEAtgom2TA+HpanWRYOoWFiioX4ErmscNeG9+27ko3CVYGAQ/T+JHS39V/Um4Rx0bBxCbZeca7xBXvzlPWFXdxd7/31YDu/g="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-power-meter-system-with-internal-plc-50cc36_cover.png"
lang: "en"
likes: 1
passwordHash: "b2a00c1b7c75e384964b970d5c26e1d7d67541e70a28796059c9d38c8ad6d2bd"
price: 2450
seoDescription: "Build an Arduino Power meter with Internal PLC to measure Voltage, Current, and Power Factor with high accuracy."
tags:
  - "Tools"
  - "Data Collection"
  - "Energy Efficiency"
  - "Human Welfare"
  - "Home Automation"
  - "Monitoring"
title: "ระบบวัดกำลังไฟฟ้า Arduino + PLC ในตัว งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/watch?v=Np4y_KRA4oQ"
  - "https://youtu.be/Np4y_KRA4oQ"
  - "https://youtu.be/dCQaTeNKbkk"
  - "https://youtu.be/r_vkd0LcIXw"
  - "https://www.youtube.com/watch?v=pQEmvJ6B6WI"
views: 3331