หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Line-interactive UPS บน Arduino - Part 1

วิธีสร้าง Pure-sine Line-interactive UPS ที่ใช้งานได้จริงบน Arduino

โปรเจกต์ Line-interactive UPS บน Arduino - Part 1

รายการอุปกรณ์และเครื่องมือ

1x Arduino Nano
-

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

บทนำ

ผมคิดเกี่ยวกับโปรเจกต์นี้มานานแล้ว ตั้งแต่ตอนที่ผมถอดประกอบ UPS เครื่องแรกเพื่อพยายามหาวิธีทำให้มันฉลาดขึ้น มันเป็น Line-interactive UPS ราคาถูกที่ไม่มีแบรนด์ ซึ่งมี LED เพียง 3 ดวงสำหรับแสดงสถานะไฟขาออก, การชาร์จ และความผิดปกติของ Battery มันช่วยผมได้ตอนที่ไฟตกสั้นๆ แต่ทำงานได้ค่อนข้างแย่ในช่วงที่ไฟดับนานกว่า 2 ชั่วโมง โดยมันปิดเครื่อง Server ของผมแบบไม่ปกติ

แรงจูงใจแรกของผมคือการพัฒนา Connector ระหว่าง UPS เครื่องนี้กับ Server เพื่อให้มันสามารถ Shutdown ได้อย่างถูกต้อง ความคิดแรกของผมคือการใช้ Arduino Micro สำหรับงานนี้ เนื่องจากสามารถเชื่อมต่อกับ PC ได้ง่ายผ่านพอร์ต USB ในตัว และมี Analog inputs ซึ่งสามารถใช้เพื่อวัด Battery voltage และ Current ได้ ผลลัพธ์ที่ได้คือเกิดเป็น โปรเจกต์ HID-compliant UPS simulator ขึ้นมา

สิ่งที่ทำให้ผมประหลาดใจคือ โปรเจกต์นั้นได้รับความสนใจ - บางคนนำไปใช้กับการออกแบบ UPS และ Battery ของตัวเอง ผมเองก็คิดจะใช้มันกับ UPS ของผมเหมือนกัน แต่ก็พบปัญหาหลักอย่างหนึ่งอย่างรวดเร็ว คือ UPS ตัวนั้นมี Battery และ Logic ของแผงวงจรหลักเชื่อมต่อกับ AC mains โดยตรงโดยไม่มี Galvanic isolation ที่เหมาะสม ดังนั้น ความคิดแรกที่ผมจะใช้ Analog Arduino inputs สำหรับการวัดค่า Battery จึงไม่สามารถใช้งานได้จริง เพราะ Server ของผมอาจจะ "ร้อน" หรือแม้แต่พังจากการถูกกระแสไฟฟ้า AC ไหลผ่านการเชื่อมต่อ USB เนื่องจากความซับซ้อนในการทำ Insulation สำหรับ Sensor ที่จำเป็นทั้งหมด ผมจึงเกิดไอเดียที่จะใช้ Arduino 2 ตัวสื่อสารกันผ่าน Serial bus ที่แยกส่วนด้วย Optocouplers ตัวหนึ่งจะเป็น UPS controller ที่ทำหน้าที่หลักในการจัดการ Logic ของ UPS และส่งสถานะผ่าน I2C ไปยัง Arduino ตัวที่สอง ซึ่งทำหน้าที่รักษาการสื่อสารแบบ HID-compliant กับเครื่อง Host

แผนของผมคือการทำให้โปรเจกต์นี้เรียบง่ายและราคาถูกที่สุด: ไม่ใช้ชิ้นส่วนราคาแพงหรือหายาก และใช้ Discrete components ในจำนวนที่น้อยที่สุด

ภาคทฤษฎี

ขอให้เราถอยกลับมาหนึ่งก้าวเพื่อพูดคุยเรื่องทฤษฎีกันก่อน สำหรับใครที่ไม่รู้ว่า "Line-interactive UPS" (หรือเรียกสั้นๆ ว่า LI UPS) หมายถึงอะไรจริงๆ แล้วมันคือประเภทของ UPS ที่แพร่หลายที่สุด ราคาไม่แพง และประหยัดพลังงานเมื่อเทียบกับประเภทอื่นๆ เช่น Online และ Offline หากคุณสนใจอยากทราบข้อมูลเพิ่มเติมและความแตกต่างของแต่ละประเภท บทความนี้ น่าจะช่วยได้ ข้อดีหลักของ LI UPS คือราคาต่ำและประหยัดพลังงาน แต่ข้อเสียอย่างหนึ่งคือการขาด Insulation ระหว่าง Mains และ Load ตามที่ผมได้กล่าวไว้ในตอนต้น

มีรูปแบบและทางเลือกมากมายในการสร้าง LI UPS ผมจะไม่พิจารณาทุกสถานการณ์ที่เป็นไปได้ แต่จะยึดตามรูปแบบที่ผมพบเจอบ่อยที่สุดใน LI UPS ระดับ Consumer-grade โดยแผนผังวงจรแสดงไว้ด้านล่างนี้:

ส่วนสำคัญของ LI UPS คือ Big Iron Transformer หาก Input voltage อยู่ในช่วงที่ยอมรับได้ (230V +/- 10%) ตัว UPS จะส่งผ่านกระแสไฟไปยัง Load โดยไม่มีการเปลี่ยนแปลง เพียงแค่ผ่านวงจร EMI/RFI filters เท่านั้น แต่เมื่อค่า Input เบี่ยงเบนไปมากกว่า 10% จากค่าปกติ Relay RY2 และ RY3 จะสลับการทำงานเพื่อเพิ่มหรือลดขดลวด L1 booster ของ Transformer เพื่อให้แน่ใจว่าแรงดันไฟฟ้าจะกลับมาเป็น Back หรือ Boost ขึ้นอยู่กับทิศทางของการเบี่ยงเบน

ในกรณีที่ Input voltage ตกต่ำเกินขีดจำกัดของการควบคุมแบบ Back/boost แล้ว Relay ขาเข้า RY1 จะถูกตัดการเชื่อมต่อ และ DC/AC inverter จะเริ่มทำงานเพื่อให้แน่ใจว่ามีการจ่ายพลังงานไปยัง Load ได้อย่างต่อเนื่อง ส่วน Relay RY4 ส่วนใหญ่มีไว้เพื่อป้องกัน Load จากสถานการณ์ Under-/overvoltage หรือ Overload

เนื่องจาก Inverter ดึงพลังงานมาจาก Battery ตัว Battery จึงต้องได้รับการชาร์จเมื่อ Load ได้รับพลังงานจาก Mains มีตัวเลือกมากมายในการสร้าง Charger แต่รุ่นใหม่ๆ มักจะใช้ตัวแปลงแรงดันไฟฟ้าแบบ Fast-switching บางประเภทที่รักษา Battery charging current และ Voltage ที่ต้องการด้วยการทำ Pulse-width modulation

จากการดูแผนผังวงจร นี่คือสิ่งที่ LI UPS controller ควรจะสามารถทำได้ (ข้อกำหนดขั้นต่ำ):

  1. ควบคุม Relay RY1-RY4
  2. วัดค่า Input และ Output AC voltage รวมถึง Output AC current
  3. วัดค่า Battery voltage และ Current
  4. จัดการการเปิด/ปิด DC/AC inverter
  5. จัดการกระบวนการชาร์จ Battery
  6. ตรวจจับกรณีที่ผิดปกติ เช่น Under/over voltage, Overload, Battery failure ฯลฯ และดำเนินการตามแผนการเตือนที่เกี่ยวข้อง

ข้อกำหนดเพิ่มเติมอาจรวมถึง:

  1. การแสดงผลสถานะของ LI UPS และพารามิเตอร์หลัก เช่น Battery level, Load level, Input และ Output voltage เป็นต้น
  2. รองรับเสียงเตือน Buzzer ที่แตกต่างกันเมื่อ UPS ใช้พลังงานจาก Battery หรือเมื่อเกิดปัญหา
  3. รองรับการ Shutdown โหลดตามคำสั่งจากภายนอก
  4. รองรับการกู้คืนการจ่ายไฟไปยัง Load โดยอัตโนมัติเมื่อ AC mains อยู่ในเกณฑ์ที่ยอมรับได้
    1. รองรับการ Self-test

ข้อกำหนดเบื้องต้นและการพิจารณาในการนำไปใช้งาน

เพื่อให้ได้อะไรที่ใช้งานได้เร็ว ผมจึงไม่อยากเริ่มจากศูนย์และตัดสินใจนำ LI UPS เชิงพาณิชย์ราคาถูกมาใช้เป็นชุดเริ่มต้น (ขอเรียกว่า Donor) คุณอาจจะถามว่า - ทำไมต้องสร้าง UPS ใหม่จากของเดิมที่มีอยู่? เหตุผลหลักคือคุณภาพ - LI UPS ราคาถูกที่วางขายทั่วไปมักไม่ค่อยน่าเชื่อถือ จัดการ Battery ได้ไม่ดีส่งผลให้อายุการใช้งานสั้นลง นอกจากนี้ UPS ราคาถูกมักจะผลิตรูปคลื่นแบบ Square approximation of the sine ในขาออกเมื่อใช้พลังงานจาก Battery ในขณะที่ผมต้องการแบบ Pure sine ซึ่ง Pure-sine UPS เชิงพาณิชย์อาจมีราคาสูงมาก

ดังนั้น หลังจากตรวจสอบ Donor UPS แล้ว ผมพบว่ามันตรงกับแผนผังด้านบนอย่างมาก ส่วน Inverter ใน Donor ถูกสร้างขึ้นบน H-bridge ในส่วนของ Power เนื่องจากผมไม่อยากเก็บ Inverter controller เดิมของ Donor ไว้ ผมจึงถอดวงจรที่เกี่ยวข้องออกทั้งหมด และเก็บไว้เพียงแค่ H-bridge สำหรับ Pure sine ผมได้ใช้โมดูลยอดนิยม EGS002 มันเป็นบอร์ดราคาประหยัดที่ให้ Solution ที่สมบูรณ์แบบสำหรับ H-Bridge pure sine inverter controller พร้อมพละกำลังขาออกที่หลากหลาย

ตาม Datasheet กล่าวไว้ว่า "EGS002 เป็นบอร์ด Driver เฉพาะสำหรับ Single phase sinusoid inverter โดยใช้ ASIC EG8010 เป็น Control chip และ IR2110S เป็น Driver chip บอร์ด Driver นี้รวมฟังก์ชันการป้องกัน Voltage, Current และ Temperature, การแสดงสถานะเตือนด้วย LED และการควบคุมพัดลมไว้ด้วยกัน Jumper สามารถตั้งค่า 50/60Hz AC output, โหมด Soft start และ Dead time ได้" มันคือแทบทุกอย่างที่เราต้องการสำหรับการสร้าง UPS inverter อย่างไรก็ตาม จำเป็นต้องมีการปรับแต่งบางอย่าง

ประการแรก บอร์ดนี้ถูกตั้งค่าล่วงหน้ามาให้เป็น Soft start เป็นค่าเริ่มต้น ซึ่งหมายความว่า Output voltage จะไปถึงระดับที่กำหนดไม่ใช่ในทันที แต่จะใช้เวลา 3 วินาทีหลังจากเปิดเครื่อง ซึ่งวิธีนี้ใช้ไม่ได้กับ Line-interactive ที่เราคาดหวังให้พลังงาน Backup จ่ายออกมาทันทีเมื่อ AC ขาเข้าดับลง เพื่อปิดการใช้งาน Soft start จะต้องถอด JP2 jumper ออก และเชื่อมปิด (Soldered short) ที่ JP6 แทน

ประการที่สอง เราต้องเปิด/ปิด Output โดยอัตโนมัติตามสัญญาณจาก UPS Controller บอร์ด EGS002 ไม่มี Pin สำหรับจัดการ Output โดยตรง โชคดีที่ Chip EG8010 มีขา SPWMEN (ขา #6) ดังนั้นเราจึงสามารถใช้ขานี้เพื่อการนั้นได้โดยเฉพาะ

นอกจากนี้ยังมีการปรับเปลี่ยนอื่นๆ ที่จำเป็นสำหรับการจัดการการชาร์จ ซึ่งเราจะละไว้ก่อนในตอนนี้ และจะมาพูดถึงกันภายหลัง

แผนผัง H-bridge สำหรับใช้ร่วมกับ EGS002 สามารถพบได้ใน Datasheet ของ EG8010 ผมขอแนบไว้ที่นี่เผื่อในกรณีฉุกเฉิน แผนผังอาจแตกต่างกันไปขึ้นอยู่กับพลังงานขาออกที่ต้องการและ MOSFETs ที่ใช้ ซึ่ง Donor UPS ของผมนั้นมีความใกล้เคียงกับมันมาก:

โปรดติดตามตอนต่อไป...

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: line-interactive-ups-on-arduino-part-1-bcd89b
2450 บาท
PromptPay QR Code