Breadboard power current monitor with INA219 sensor wired to a small DC cooling fan

ระดับกลาง

สร้างเครื่องมือตรวจวัดกำลังไฟฟ้าและกระแสไฟฟ้า

เซ็นเซอร์ระบบอัตโนมัติ

เลิกเดาปริมาณพลังงานที่โปรเจกต์ของคุณใช้จริงได้แล้ว มาวัดกระแสและแรงดันไฟฟ้าจริงพร้อมกัน โดยไม่ต้องถอดวงจรออกจากกันเลย

รวมชิ้นส่วนจริง 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 เดียวกัน

แผนภาพการต่อสาย

VCC → 3.3V GND SDA → GPIO8 SCL → GPIO9 VIN+ ESP32-C3 SuperMini INA219 GND 5V supply Fan − lead Fan + lead INA219 VIN−

โค้ดเริ่มต้น

#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);
}

ไม่แน่ใจขั้นตอนไหน? ถามเรา