ระดับกลาง
สร้างเครื่องมือตรวจวัดกำลังไฟฟ้าและกระแสไฟฟ้า
เซ็นเซอร์ระบบอัตโนมัติ
เลิกเดาปริมาณพลังงานที่โปรเจกต์ของคุณใช้จริงได้แล้ว มาวัดกระแสและแรงดันไฟฟ้าจริงพร้อมกัน โดยไม่ต้องถอดวงจรออกจากกันเลย
รวมชิ้นส่วนจริง 6 รายการ
ราคารวมชุดนี้: 1,400.00 ฿
ยังไม่รวมส่วนลดคำสั่งซื้อที่คุณอาจได้รับตอนชำระเงิน
สิ่งที่คุณต้องใช้
เป้าหมายของโปรเจกต์
โปรเจกต์ส่วนใหญ่ที่ดึงพลังงานออกมานั้นมักจะดึงออกมาโดยไม่มีวิธีง่ายๆ ที่จะดูว่าดึงมาเท่าไหร่ โปรเจกต์นี้ได้เพิ่มอุปกรณ์วัดผลจริงเข้ามา: เซ็นเซอร์ที่รายงานทั้งแรงดันไฟฟ้าและกระแสไฟฟ้า เพื่อให้คุณสามารถเห็นการดึงพลังงานจริง (เป็นวัตต์) แทนที่จะคาดเดา หรือแยกวงจรเพื่อตรวจสอบด้วยมัลติมิเตอร์แยกต่างหาก พัดลม DC ขนาดเล็กทำหน้าที่เป็นโหลด ทำให้คุณมีการดึงกระแสที่มองเห็นได้จริงและมีความหมายเพื่อดูการเปลี่ยนแปลงขณะที่พัดลมหมุนขึ้น
สิ่งที่คอนโทรลเลอร์ทำ
หน้าที่ของคอนโทรลเลอร์ที่นี่เรียบง่ายแต่ต่อเนื่อง: ตรวจสอบเซ็นเซอร์กระแส/แรงดันผ่าน I2C ในลูป ดึงค่าที่อ่านได้ล่าสุดกลับมา และรายงานค่าเหล่านั้น (ผ่านอนุกรม บนหน้าจอ หรือวิธีการใดก็ตามที่โปรเจกต์ของคุณแสดงผล) คอนโทรลเลอร์ไม่ได้ทำการตรวจจับกระแสไฟฟ้าเองทั้งหมด ซึ่งงานนั้นเกิดขึ้นทั้งหมดบนชิปเซ็นเซอร์
สิ่งที่เซ็นเซอร์กระแสและแรงดันไฟฟ้าทำ
INA219 วัดแรงดันไฟฟ้าและกระแสไฟฟ้าพร้อมกัน มันวัดแรงดันไฟฟ้าที่ลดลงเล็กน้อยที่ตัวต้านทานชะลอภายในของมันเองเพื่อคำนวณกระแสไฟฟ้า และแยกการวัดแรงดันบัส จากนั้นรวมทั้งสองบนชิปเพื่อคำนวณกำลังไฟฟ้าจริง (P = I x V) ทั้งหมดนี้จะถูกอ่านกลับผ่าน I2C เป็นตัวเลขที่พร้อมใช้งาน คุณไม่จำเป็นต้องตรวจสอบวงจรด้วยมือในระหว่างการทำงานเหมือนที่คุณทำกับมัลติมิเตอร์แบบมือถือ
สิ่งที่โหลดสาธิตทำ
พัดลม DC ขนาดเล็ก 5V มีไว้เพื่อให้เซ็นเซอร์มีสิ่งที่จะวัดได้จริง แตกต่างจาก LED หรือไมโครคอนโทรลเลอร์ที่อยู่เฉยๆ มอเตอร์ขนาดเล็กจะดึงกระแสที่สามารถสังเกตเห็นการเปลี่ยนแปลงได้อย่างชัดเจน ตั้งแต่เกือบศูนย์เมื่อหยุดนิ่ง ไปจนถึงการดึงกระแสที่สูงขึ้นอย่างชัดเจนและคงที่เมื่อมันหมุน ซึ่งทำให้เป็นวิธีที่ดีและมองเห็นได้ชัดเจนในการยืนยันว่าค่าที่คุณอ่านได้นั้นสอดคล้องกับความเป็นจริง
การวัดแบบ In-Line: อนุกรม vs. ขนาน
นี่คือแนวคิดการเดินสายไฟที่สำคัญกว่าสิ่งอื่นใดในโปรเจกต์นี้: ในการวัดกระแสไฟฟ้า เซ็นเซอร์จะต้องอยู่ในเส้นทางของกระแสไฟฟ้าโดยตรง นั่นหมายถึงการต่อสาย INA219 แบบอนุกรมระหว่างแหล่งจ่ายไฟและโหลด - ไฟเข้าด้านหนึ่ง ไฟออกไปโหลดอีกด้านหนึ่ง - ไม่ใช่แบบขนานคร่อมโหลดเหมือนที่คุณจะวัดแรงดันไฟฟ้าอย่างเดียว หากต่อแบบขนานโดยไม่ได้ตั้งใจ เซ็นเซอร์จะอ่านค่ากระแสเป็นศูนย์ เพราะไม่มีกระแสไหลผ่านมันจริงๆ
แนวคิดซอฟต์แวร์และไลบรารี
ใช้ไลบรารี INA219 ที่ใช้งานได้สำหรับแพลตฟอร์มคอนโทรลเลอร์ของคุณ แทนที่จะติดต่อกับรีจิสเตอร์ด้วยมือ ไลบรารีจำเป็นต้องได้รับการสอบเทียบด้วยค่าตัวต้านทานแบ่งแรงดันจริงบนบอร์ดเฉพาะของคุณ – ไลบรารีส่วนใหญ่จะใช้ค่าเริ่มต้นทั่วไป แต่หากบอร์ดของคุณแตกต่างออกไป ให้ปรับปรุงค่าคงที่การสอบเทียบ หรือตรวจสอบแผ่นข้อมูลของบอร์ดอีกครั้งก่อนที่จะเชื่อตัวเลข เมื่อได้รับการสอบเทียบแล้ว การอ่านกระแส แรงดัน และกำลังไฟมักจะเป็นเพียงสามฟังก์ชันเรียกง่ายๆ ต่อลูป
การทดสอบและการแก้ไขปัญหา
- การอ่านค่าแสดงเป็นศูนย์ – ข้อผิดพลาดที่พบบ่อยที่สุดคือการต่อเซ็นเซอร์แบบขนานกับโหลดแทนที่จะเป็นแบบอนุกรม เซ็นเซอร์ต้องอยู่ในเส้นทางของกระแสโดยตรงระหว่างแหล่งจ่ายไฟและโหลด มิฉะนั้นจะไม่มีกระแสไหลผ่านเพื่อวัดเลย
- ค่าที่อ่านได้ดูไม่ถูกต้องอย่างมาก – ยืนยันว่าค่าตัวต้านทานชันต์ที่โค้ดของคุณถูกปรับเทียบนั้นตรงกับค่าที่พิมพ์หรือระบุไว้สำหรับบอร์ดเซ็นเซอร์เฉพาะของคุณจริงหรือไม่
- เซ็นเซอร์ไม่ถูกตรวจพบบน I2C – หากอุปกรณ์ I2C อื่นๆ ใช้บัสเดียวกันอยู่แล้ว ให้ตรวจสอบความขัดแย้งของที่อยู่ตามปกติ; INA219 มีที่อยู่เริ่มต้น แต่บอร์ดหลายรุ่นช่วยให้คุณสามารถเปลี่ยนได้ผ่าน solder jumpers หากเกิดการชนกับอย่างอื่น
- ค่าที่อ่านได้กระโดดไปมาอย่างผิดปกติ – ตรวจสอบการเชื่อมต่อที่หลวมในเส้นทางอนุกรมก่อน; การเชื่อมต่อที่ไม่ต่อเนื่องในสายนำกระแสจะทำให้ค่าที่อ่านได้มีสัญญาณรบกวนมากกว่าสายสัญญาณที่หลวม
การอัปเกรดในอนาคต (ไม่บังคับ): เครื่องตรวจสอบพลังงานพร้อมการบันทึกข้อมูล
เมื่อการอ่านค่าพื้นฐานทำงานได้อย่างน่าเชื่อถือ ขั้นตอนต่อไปคือการบันทึกการใช้พลังงานเมื่อเวลาผ่านไป แทนที่จะดูแบบเรียลไทม์เท่านั้น – ดูโปรเจกต์เครื่องบันทึกข้อมูลไร้สายสำหรับแนวคิดที่เกี่ยวข้องกับการจัดเก็บและรายงานค่าที่อ่านได้ตามกำหนดเวลา แทนที่จะทีละครั้ง
การเดินสาย
- INA219 VCC → ESP32-C3 SuperMini 3.3V
- INA219 GND → GND
- INA219 SDA → GPIO8 (`SDA_PIN`)
- INA219 SCL → GPIO9 (`SCL_PIN`)
- แหล่งจ่ายไฟ 5V (พิน 5V/VBUS ของ ESP32-C3) → INA219 VIN+ — ไฟฟ้าไหลเข้าเซ็นเซอร์ก่อน
- INA219 VIN− → สายพัดลม + — แล้วออกไปยังโหลด
- สายพัดลม − → GND, ทั่วไปกับ ESP32-C3 และ GND ของแหล่งจ่ายไฟ
INA219 วัดค่าที่ไหลผ่านมัน ดังนั้นมันจะต้องอยู่ในแนวเดียวกับสายไฟบวกของพัดลม (VIN+ จากแหล่งจ่าย, VIN- ออกไปพัดลม) — ไม่ใช่แค่แตะบนรางไฟเท่านั้น พัดลมขนาดเล็ก 40 มม. กินกระแสไฟน้อยมากจนสามารถจ่ายไฟจากพิน 5V ของ ESP32-C3 ได้สบายสำหรับการสาธิตนี้ (แตกต่างจากโหลดที่กินกระแสไฟสูงกว่า เช่น เซอร์โวหลายตัว ซึ่งต้องการแหล่งจ่ายไฟแยกต่างหาก) ไม่มี OLED ในรายการชิ้นส่วนของโปรเจกต์นี้ ดังนั้นผลลัพธ์จะแสดงบน Serial Monitor; การเพิ่ม OLED I2C ขนาด 0.96 นิ้วในภายหลังเป็นการขยายที่ตรงไปตรงมา เนื่องจากจะใช้บัส I2C เดียวกัน
แผนภาพการต่อสาย
โค้ดเริ่มต้น
#include <Wire.h>
#include <Adafruit_INA219.h>
#define SDA_PIN 8 // ESP32-C3 default I2C SDA - adjust if your board differs
#define SCL_PIN 9 // ESP32-C3 default I2C SCL - adjust if your board differs
Adafruit_INA219 ina219;
void setup() {
Serial.begin(115200);
Wire.begin(SDA_PIN, SCL_PIN);
if (!ina219.begin(&Wire)) {
Serial.println("INA219 not found - check I2C wiring/address");
while (true) delay(1000);
}
Serial.println("Power & Current Monitor ready");
Serial.println("time_s,loadVoltage_V,shuntVoltage_mV,current_mA,power_mW");
}
void loop() {
float busVoltage_V = ina219.getBusVoltage_V();
float shuntVoltage_mV = ina219.getShuntVoltage_mV();
float current_mA = ina219.getCurrent_mA();
float power_mW = ina219.getPower_mW();
// Actual voltage across the load is bus voltage plus the (tiny) shunt drop
float loadVoltage_V = busVoltage_V + (shuntVoltage_mV / 1000.0);
Serial.printf("%.1f,%.3f,%.3f,%.2f,%.2f\n",
millis() / 1000.0, loadVoltage_V, shuntVoltage_mV, current_mA, power_mW);
delay(1000);
}
ไม่แน่ใจขั้นตอนไหน?
ถามเรา