H-Bridge Sine Wave Inverter Circuit โดยใช้ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ทำความเข้าใจกับการออกแบบวงจร

หากคุณไม่ต้องการอ่านคำอธิบายทั้งหมดคุณสามารถดูวิดีโอนี้แทน:

  ข้อความเตือน: ไฟฟ้าเป็นอันตรายดำเนินการด้วยความระมัดระวัง

ตอนนี้ให้เราดูแผนภาพวงจรด้านล่างและเรียนรู้ว่าสิ่งนี้ทำงานอย่างไร เราเห็นชิ้นส่วนหลักต่อไปนี้ในวงจร:



  Arduino Sine Wave Full Bridge Inverter Circuit Diagram

บอร์ด Arduino - นี่คือสมองของเรา มันให้พัลส์ SPWM ที่ตัดสินใจว่าวงจรของเราจะทำงานอย่างไร

IR2110 MOSFET Driver ICS (IC1 และ IC2) -อุปกรณ์เหล่านี้ใช้สัญญาณ SPWM มาตรฐานจาก Arduino และทำให้เข้ากันได้เพื่อสลับ MOSFETs H-Bridge 4 N-Channel อย่างถูกต้องโดยใช้วิธีการบูต



MOSFETS (Q1, Q2, Q3, Q4) - นี่คือสวิตช์พลังงาน พวกเขาเปิดและปิดพลังงาน DC ในวิธีที่เฉพาะเจาะจงในการสร้าง AC ที่เอาต์พุต

ไดโอด (1N4007) และตัวเก็บประจุ - สิ่งเหล่านี้มีไว้สำหรับการเปิดใช้งานการทำงานที่ถูกต้องของเครือข่าย bootstrapping ของ ICS สำหรับการสลับอย่างสมบูรณ์แบบของ 4 mosfets

ตัวเก็บประจุและตัวต้านทานอื่น ๆ - สิ่งเหล่านี้มีขนาดเล็ก แต่สำคัญมากเพราะพวกเขาทำให้ทุกอย่างทำงานได้อย่างราบรื่น

แหล่งจ่ายไฟ - เราต้องการ +12V และ +5V สำหรับ Arduino และ IR2110 ICS และแรงดันไฟฟ้า DC สูงสำหรับ MOSFETs ตามข้อกำหนดของโหลด

เกิดอะไรขึ้นในวงจร?

ตอนนี้ให้เราดูว่ามันทำงานอย่างไรทีละขั้นตอน:

Arduino สร้างสัญญาณ SPWM ที่หมุดเอาท์พุทสองตัว (พิน 8 และพิน 9) สัญญาณเหล่านี้ยังคงเปลี่ยนความกว้างเพื่อสร้างรูปร่างเทียบเท่ากับคลื่น AC Sine

IR2110 ICS ได้รับสัญญาณ PWM เหล่านี้และใช้เพื่อเปิดและปิด MOSFETs ด้วยวิธีที่เฉพาะเจาะจงมาก

H-bridge ที่ทำโดยใช้ mosfets สี่ตัวแปลงแหล่งจ่ายไฟบัส DC เป็นเอาต์พุต AC-like โดยการสลับทิศทางปัจจุบันผ่านโหลดโดยใช้การสลับ SPWM

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

หากเราเพิ่มวงจรตัวกรองที่เอาต์พุตเราสามารถทำให้พัลส์เหล่านี้ราบรื่นและรับคลื่นไซน์ที่สมบูรณ์แบบยิ่งขึ้น

รหัส Arduino ของเราสำหรับ Sine Wave PWM

ตอนนี้ให้เราดูรหัส นี่คือสิ่งที่ Arduino จะทำงานเพื่อสร้างสัญญาณ SPWM

835EA9484999CA2B1A94FC3D1BB3E885B51FF2262

เกิดอะไรขึ้นในรหัสนี้?

ก่อนอื่นเราตั้งค่าพินเอาท์พุทสองตัว (พิน 8 และพิน 9) สิ่งเหล่านี้จะส่งสัญญาณ PWM ของเราออกไป

จากนั้นในลูปเราจะเปิดและปิดพินในรูปแบบพิเศษ

เราเริ่มต้นด้วยพัลส์แคบและค่อยๆเพิ่มความกว้างของพัลส์จากนั้นเราก็ลดลงกลับลง สิ่งนี้สร้างรูปแบบ PWM Sine Wave ที่ก้าวล้ำ

หลังจากครึ่งรอบแรกเสร็จแล้วเราทำซ้ำสิ่งเดียวกันบนพินอื่น ๆ (พิน 9) สำหรับรอบต่อไป

ด้วยวิธีนี้ H-Bridge ของเราจะเปลี่ยน mosfets ในคลื่นไซน์ที่เหมาะสมเช่นแฟชั่น

สิ่งที่ดีเกี่ยวกับการออกแบบนี้

การออกแบบนั้นง่ายมาก เราใช้เพียง Arduino และส่วนประกอบทั่วไป

เราไม่จำเป็นต้องใช้เครื่องกำเนิดคลื่นไซน์ที่นี่ใช่แล้ว Arduino เองกำลังสร้างรูปร่างไซน์โดยใช้ SPWM

H-Bridge ทำงานได้อย่างมีประสิทธิภาพโดยใช้ IR2110 ICS เพื่อให้แน่ใจว่าสวิตช์ MOSFETS อย่างถูกต้องโดยไม่ต้องมีความร้อนสูงเกินไป

เราสามารถปรับแต่ง SPWM ได้อย่างง่ายดายในกรณีที่เราต้องการความถี่คลื่นไซน์ที่แตกต่างกันจากนั้นเราเพียงแค่แก้ไขรหัสเล็กน้อย

วิธีที่เราควรจัดการกับความล่าช้าในการบูต Arduino

ตอนนี้สิ่งที่สำคัญมากที่เราต้องเข้าใจคือ Arduino ใช้เวลาสักครู่เพื่อเริ่มต้นหลังจากที่เราเปิดใช้พลังงาน

สิ่งนี้เกิดขึ้นเพราะเมื่อเราเปิดใช้งาน Arduino จากนั้นมันจะเรียกใช้ bootloader ภายในซึ่งใช้เวลาสองสามวินาที

ดังนั้นในช่วงเวลานี้ ICS และ MOSFETs ไดรเวอร์ IR2110 อาจไม่ได้รับสัญญาณที่เหมาะสมจาก Arduino

หากสิ่งนั้นเกิดขึ้น MOSFETs อาจเปิดแบบสุ่มซึ่งสามารถสร้างความเสียหายให้กับ ICS ได้ทันทีหรือทำให้เกิดการลัดวงจรหรือการระเบิด

เพื่อให้แน่ใจว่าการหน่วงเวลาการบูตด้านบนไม่ได้เผาไหม้ ICS และ MOSFETs ในระหว่างการเปิดเครื่องเริ่มต้นเราจำเป็นต้องแก้ไขรหัสด้านบนดังที่แสดงด้านล่าง:

// By Swagatam - Full Bridge Sine Wave Inverter Code with Delay
void setup() {
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    
    delay(3000); // Booting delay (wait for 3 seconds before starting)
}
void loop() {
    // First pin (8) switching pattern
    digitalWrite(8, HIGH);
    delayMicroseconds(500);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(750);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(1250);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(2000);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(1250);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(750);
    digitalWrite(8, LOW);
    delayMicroseconds(500);
    digitalWrite(8, HIGH);
    delayMicroseconds(500);
    digitalWrite(8, LOW);
    // Second pin (9) switching pattern
    digitalWrite(9, HIGH);
    delayMicroseconds(500);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(750);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(1250);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(2000);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(1250);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(750);
    digitalWrite(9, LOW);
    delayMicroseconds(500);
    digitalWrite(9, HIGH);
    delayMicroseconds(500);
    digitalWrite(9, LOW);
}

รายการชิ้นส่วน

บอร์ด Arduino Arduino Uno (หรือบอร์ดที่เข้ากันได้) 1
MOSFET Driver IC IR2110 คนขับด้านข้างสูงและต่ำ 2
Mosfets IRF3205 (หรือ N-channel ที่คล้ายกัน) 4
ไดโอด 1N4007 (สำหรับ Bootstrap & Protection) 4
ตัวต้านทาน 1KΩ 1/4W (MOSFET GATE PULL-DOWN) 4
ตัวต้านทาน 150Ω 1/4W (ตัวต้านทานซีรีย์ประตู MOSFET) 4
ตัวเก็บประจุ 100NF (ตัวเก็บประจุ bootstrap) 2
ตัวเก็บประจุ 22UF 25V (ตัวกรองแหล่งจ่ายไฟ) 2
โหลด ภาระตัวต้านทานหรืออุปนัยใด ๆ 1
แหล่งจ่ายไฟ +12V DC (สำหรับ MOSFETS) & +5V DC (สำหรับ Arduino) 1
สายไฟและตัวเชื่อมต่อ เหมาะสำหรับการเชื่อมต่อวงจร ตามต้องการ

เคล็ดลับการก่อสร้าง

ตอนนี้เมื่อเราสร้างสิ่งนี้จริง ๆ เราต้องระวังให้มากเกี่ยวกับสิ่งสำคัญสองสามอย่าง มิฉะนั้นอาจไม่ได้ผลหรือแย่กว่านั้นบางสิ่งบางอย่างอาจเหนื่อยล้า? ดังนั้นนี่คือเคล็ดลับการก่อสร้างที่สำคัญที่สุดที่เราต้องทำตาม:

เราควรจัดเรียงชิ้นส่วนบนกระดานอย่างไร

หากเราใช้เขียงหั่นขนมวงจรนี้อาจใช้งานไม่ได้เพราะ MOSFET และไดรเวอร์ที่ใช้พลังงานสูงต้องการการเชื่อมต่อที่แข็งแกร่งและแข็งแกร่ง

ดังนั้นเราควรใช้ PCB (แผงวงจรพิมพ์) หรืออย่างน้อยก็เป็นบอร์ดที่สมบูรณ์แบบและประสานชิ้นส่วนอย่างถูกต้อง

หากเราสร้าง PCB เราจะต้องเก็บ mosfets และ IR2110 ICs ไว้ด้วยกันเพื่อให้สัญญาณไม่อ่อนแอหรือล่าช้า

สายหนาควรไปสำหรับเส้นทางปัจจุบันสูงเช่นจากแหล่งจ่ายไฟไปยัง mosfets และจาก mosfets ไปยังโหลด

สายไฟบางสามารถใช้สำหรับการเชื่อมต่อสัญญาณเช่นจาก Arduino ไปยัง IR2110 ICS

เราควรวาง mosfets อย่างไร

ควรวาง mosfets ทั้งสี่ไว้ในรูปแบบ H-Bridge ที่เหมาะสมเพื่อให้การเดินสายไม่ยุ่งเหยิง

MOSFET แต่ละตัวควรมีการเชื่อมต่อที่สั้นและหนากับ IR2110 IC

หากเราวาง mosfets ที่อยู่ไกลจาก IR2110 มากเกินไปสัญญาณอาจอ่อนแอและ mosfets อาจสลับไม่ถูกต้อง

หากสิ่งนั้นเกิดขึ้น MOSFETS จะร้อนและถูกไฟไหม้

เราควรแก้ไขปัญหาความร้อนอย่างไร

หากเราใช้ MOSFETS IRF3205 หรือที่คล้ายกันพวกเขาจะร้อนขึ้นหากเราไม่ให้ฮีทซิงค์กับพวกเขา

ดังนั้นเราต้องแก้ไขฮีทซิงค์อลูมิเนียมขนาดใหญ่ให้กับ Mosfets เพื่อให้พวกเขาเย็น

หากเราทำอินเวอร์เตอร์กำลังสูง (มากกว่า 100W) เราควรติดตั้งพัดลมระบายความร้อนบนฮีทซิงค์

หาก mosfets ร้อนเกินไปที่จะสัมผัสนั่นหมายความว่ามีปัญหาบางอย่างและเราต้องตรวจสอบวงจรอีกครั้ง

เราควรให้พลังงานกับวงจรอย่างไร

ส่วน Arduino ทำงานบน 5V และ MOSFETs ต้องการ 12V หรือมากกว่าในการทำงาน

ดังนั้นเราต้องไม่เชื่อมต่อ 12V กับ Arduino หรือมันจะเผาไหม้ทันที!

IR2110 ICS ต้องการแหล่งจ่ายไฟสองแหล่ง:

12V สำหรับ mosfets ด้านสูง

5V สำหรับส่วนตรรกะ

หากเราผสมสายไฟเหล่านี้วงจรจะทำงานไม่ถูกต้องและ MOSFETS จะสลับไม่ถูกต้อง

เราควรเชื่อมต่อสายไฟอย่างไร

การเชื่อมต่อพื้นดิน (GND) มีความสำคัญอย่างยิ่ง หากการเดินสายพื้นดินอ่อนแอหรือยาววงจรอาจมีพฤติกรรมแปลก ๆ

เราควรใช้พื้นดินทั่วไปสำหรับทุกส่วนซึ่งหมายถึงพื้นดิน Arduino, IR2110 Ground และ MOSFET Source Ground ต้องเชื่อมต่อกัน

หากเราเห็นวงจรประพฤติตัวแปลก ๆ (เช่นเอาต์พุตกะพริบหรือ mosfets อุ่นโดยไม่ต้องโหลด) เราควรตรวจสอบการเชื่อมต่อภาคพื้นดินก่อน

เราควรตรวจสอบวงจรก่อนที่จะเปิดเครื่องได้อย่างไร

ก่อนที่เราจะเปิดพลังงานเราต้องตรวจสอบการเชื่อมต่อทั้งหมดเพื่อดูว่าทุกอย่างถูกต้องหรือไม่

หากเรามีมัลติมิเตอร์เราควรใช้เพื่อตรวจสอบแรงดันไฟฟ้าที่จุดต่าง ๆ ก่อนที่จะแทรก MOSFETS

เราจะต้องมีออสซิลโลสโคปอย่างเคร่งครัดเพื่อให้เราสามารถตรวจสอบสัญญาณ SPWM ที่มาจาก Arduino เพื่อดูว่าพวกเขาดูถูกต้องหรือไม่

เราควรทดสอบวงจรอย่างระมัดระวัง

วิธีที่ดีที่สุดในการทดสอบวงจรนี้อย่างปลอดภัยคือเริ่มต้นด้วยแรงดันไฟฟ้าต่ำ

แทนที่จะเป็น 12V เราสามารถลองด้วย 6V หรือ 9V เพื่อดูว่า MOSFETS สลับได้อย่างถูกต้องหรือไม่

หากวงจรทำงานได้ดีที่แรงดันไฟฟ้าต่ำเราสามารถเพิ่มขึ้นเป็น 12V และในที่สุดก็เป็นแรงดันไฟฟ้าเต็ม

หากเราใช้แรงดันไฟฟ้าเต็มและมีบางอย่างผิดปกติบางอย่างอาจทำให้เกิดความเหนื่อยล้าทันที!

ดังนั้นเราต้องทดสอบทีละขั้นตอนและตรวจสอบพฤติกรรมความร้อนสูงเกินไปหรือผิด

เราจะเพิ่มตัวกรองสำหรับเอาต์พุตที่ราบรื่นขึ้นได้อย่างไร

วงจรนี้ทำให้เอาต์พุต AC โดยใช้ PWM แต่ก็ยังทำจากพัลส์ที่รวดเร็ว

หากเราต้องการคลื่นไซน์ที่สะอาดเราต้องเพิ่มตัวกรอง LC ที่เอาต์พุต

ตัวกรอง LC นี้เป็นเพียงตัวเหนี่ยวนำขนาดใหญ่และตัวเก็บประจุที่เชื่อมต่อกับเอาต์พุต

ตัวเหนี่ยวนำจะลบพัลส์สลับอย่างรวดเร็วและตัวเก็บประจุทำให้รูปคลื่นเรียบ

หากเราทำสิ่งนี้อย่างถูกต้องเราจะได้คลื่นไซน์บริสุทธิ์ที่ปลอดภัยสำหรับเครื่องใช้ไฟฟ้า

เราควรปกป้องวงจรจากความเสียหายอย่างไร

เราควรเพิ่มฟิวส์ในซีรีส์ด้วยแหล่งจ่ายไฟ

หากสิ่งที่กางเกงขาสั้นหรือ MOSFET ล้มเหลวฟิวส์จะแตกหักก่อนและบันทึกวงจรจากการเผาไหม้

หาก mosfets ล้มเหลวบางครั้งพวกเขาก็ล้มเหลว (หมายถึงพวกเขาอยู่เสมอ)

หากสิ่งนั้นเกิดขึ้นกระแสขนาดใหญ่สามารถไหลและทำลายหม้อแปลงหรือชิ้นส่วนอื่น ๆ

ดังนั้นจึงเป็นการดีที่จะตรวจสอบ mosfets โดยใช้มัลติมิเตอร์ก่อนที่จะใช้พลังงานสูง

บทสรุป

ดังนั้นที่นี่เราเห็นวิธีที่เราสามารถสร้างอินเวอร์เตอร์ Sine Wave โดยใช้ Just Arduino และ H-Bridge Mosfet เราใช้ไดรเวอร์ IR2110 MOSFET เพื่อสลับการควบคุม MOSFETs และ PWM จาก Arduino อย่างถูกต้องเพื่อสร้าง AC ที่ปรับด้วยไซน์ของเรา

ตอนนี้สิ่งหนึ่งที่ต้องจำไว้คือเอาต์พุตนี้ยังคงทำจากพัลส์สลับอย่างรวดเร็วดังนั้นหากเราต้องการคลื่นไซน์บริสุทธิ์เราต้องเพิ่มตัวกรอง LC ที่เอาต์พุตเพื่อทำให้มันราบรื่น

แต่โดยรวมแล้วนี่เป็นวิธีที่ใช้งานง่ายและง่ายดายในการสร้างอินเวอร์เตอร์ Sine Wave ที่บ้าน!