อินเวอร์เตอร์ 12-220 โวลต์บน Arduino pure sine พร้อมรหัสโปรแกรมเต็ม
ทฤษฎี
การบรรลุผลคลื่นไซน์นั้นค่อนข้างยากและไม่สามารถแนะนำให้อินเวอร์เตอร์ได้เพราะ อิเล็กทรอนิกส์ อุปกรณ์มักไม่ชอบกระแสที่เพิ่มขึ้นหรือแรงดันไฟฟ้าชี้แจง เนื่องจากอินเวอร์เตอร์ส่วนใหญ่ผลิตขึ้นโดยใช้อุปกรณ์อิเล็กทรอนิกส์โซลิดสเตตรูปคลื่นไซน์จึงมักถูกกำจัด
อุปกรณ์ไฟฟ้าอิเล็กทรอนิกส์เมื่อทำงานกับคลื่นไซน์จะให้ผลลัพธ์ที่ไม่ได้ผลเนื่องจากอุปกรณ์ตามกฎจะได้รับความร้อนเมื่อเปรียบเทียบกับพัลส์รูปสี่เหลี่ยมผืนผ้า
ดังนั้นตัวเลือกที่ดีที่สุดสำหรับการนำคลื่นไซน์บนอินเวอร์เตอร์คือ PWM ซึ่งหมายถึงการปรับความกว้างพัลส์หรือ PWM
PWM เป็นวิธีการปรับปรุง (รุ่นดิจิตอล) ของการสัมผัสคลื่นรูปแบบเอ็กซ์โปเนนเชียลผ่านความกว้างพัลส์สี่เหลี่ยมจัตุรัสที่แปรผันตามสัดส่วนมูลค่าสุทธิที่คำนวณได้อย่างแม่นยำตามมูลค่าสุทธิของรูปคลื่นเอ็กซ์โปเนนเชียลที่เลือก ดังนั้น PWM ที่คำนวณได้ซึ่งมีการอ้างอิงถึงคลื่นไซน์ที่ให้นั้นสามารถใช้เป็นค่าที่เทียบเท่าในอุดมคติสำหรับการจำลองคลื่นไซน์ที่กำหนด นอกจากนี้ PWM จะเข้ากันได้อย่างดีกับอุปกรณ์ไฟฟ้าอิเล็กทรอนิกส์ (mosfets, BJTs, IGBTS) และอนุญาตให้ใช้กับความร้อนน้อยที่สุด
SPWM คืออะไร
วิธีที่พบมากที่สุดคือการผลิตเครื่องกำเนิดไฟฟ้าแบบ PWM (คลื่นไซน์) หรือ SPWM โดยการใช้สัญญาณตัวแปรชี้แจงแทนหลายสัญญาณเข้ากับอินพุตของเครื่องขยายสัญญาณการดำเนินงานสำหรับการประมวลผลที่จำเป็น ในบรรดาสัญญาณอินพุททั้งสองควรมีความถี่สูงกว่าเมื่อเปรียบเทียบกับสัญญาณอื่น
ใช้สัญญาณอินพุตสองสัญญาณ
ตามที่กล่าวไว้ในส่วนก่อนหน้านี้ขั้นตอนเกี่ยวข้องกับการจัดหาสัญญาณที่แตกต่างกันสองชี้แจงไปยังอินพุตของเครื่องขยายเสียงในการดำเนินงาน
ที่นี่แอมพลิฟายเออร์ด้านปฏิบัติการได้รับการกำหนดค่าเป็นตัวเปรียบเทียบทั่วไปดังนั้นเราจึงสามารถสันนิษฐานได้ว่าแอมพลิฟายเออร์ด้านการปฏิบัติการจะเริ่มเปรียบเทียบระดับแรงดันทันทีของสัญญาณที่ซ้อนทับทั้งสองในทันทีที่ปรากฏหรือนำไปใช้กับอินพุต
เพื่อให้แอมพลิฟายเออร์ในการดำเนินการใช้งาน PWM ไซน์ที่จำเป็นอย่างถูกต้องที่เอาต์พุตมันจำเป็นต้องมีสัญญาณหนึ่งที่มีความถี่สูงกว่าอีกอันหนึ่ง ความถี่ช้าลงที่นี่คือสิ่งที่ควรเป็นคลื่นไซน์ของตัวอย่างซึ่งควรจำลอง (จำลอง) โดย PWMs
ตามหลักการแล้วสัญญาณทั้งสองควรเป็นไซน์ไซด์ (สัญญาณที่มีความถี่สูงกว่าสัญญาณอื่น) อย่างไรก็ตามสัญญาณเดียวกันสามารถรับรู้ได้โดยการรวมคลื่นสามเหลี่ยม (ความถี่สูง) และคลื่นไซน์ (คลื่นที่เลือกด้วยความถี่ต่ำ) ดังที่เห็นได้จากภาพต่อไปนี้สัญญาณความถี่สูงจะถูกป้อนเข้ากับอินเวอร์เตอร์อินพุท (-) ของแอมพลิฟายเออร์ในขณะที่สัญญาณไซน์คลื่นที่ช้ากว่านั้นจะถูกส่งไปยังอินพุทที่ไม่ใช่ inverting (+) ในกรณีที่เลวร้ายที่สุดสัญญาณทั้งสองอาจเป็นคลื่นสามเหลี่ยมที่มีระดับความถี่ที่แนะนำตามที่อธิบายไว้ข้างต้น อย่างไรก็ตามสิ่งนี้จะช่วยในการบรรลุสัญญาณ PWM ที่ดีพอสมควร
สัญญาณที่มีความถี่สูงกว่าเรียกว่าสัญญาณพาหะในขณะที่สัญญาณตัวอย่างช้าลงเรียกว่าโมดูเลต
สร้าง SPWM ด้วยคลื่นสามเหลี่ยมและเอ็น
จากรูปด้านบนเป็นไปได้ที่จะเห็นภาพชัดเจนผ่านจุดที่พล็อตจุดเกิดขึ้นพร้อมกันหลายจุดหรือทับซ้อนกันของสัญญาณทั้งสองในช่วงเวลาที่กำหนด แกนนอนแสดงช่วงเวลาของรูปคลื่นในขณะที่แกนตั้งแสดงระดับแรงดันไฟฟ้าที่ 2 พร้อมกันคือรูปคลื่นซ้อนทับ ภาพแจ้งให้เราทราบว่าแอมพลิฟายเออร์ในการดำเนินงานจะตอบสนองต่อระดับแรงดันไฟฟ้าทันทีที่เกิดขึ้นทันทีของสัญญาณทั้งสองอย่างไร เครื่องขยายเสียงในการปฏิบัติงาน (op amp) เพียงเปรียบเทียบระดับแรงดันของคลื่นสามเหลี่ยมที่รวดเร็วเปลี่ยนคลื่นไซน์ได้ทันที (สามารถเป็นคลื่นสามเหลี่ยมได้) และตรวจสอบกรณีที่แรงดันไฟฟ้าของรูปคลื่นสามเหลี่ยมสามารถต่ำกว่าแรงดันของคลื่นไซน์และตอบสนอง สร้างตรรกะระดับสูงทันทีเมื่อออกจากคุณ
สิ่งนี้จะคงอยู่ตราบใดที่คลื่นศักย์ของรูปสามเหลี่ยมยังคงต่ำกว่าศักยภาพของคลื่นไซน์และในขณะที่การตรวจจับศักย์ของคลื่นไซน์นั้นต่ำกว่าศักยภาพในทันทีของคลื่นของสามเหลี่ยมรูปสามเหลี่ยมผลลัพธ์จะกลับมาน้อยที่สุดและทนต่อสถานการณ์
การเปรียบเทียบอย่างต่อเนื่องของระดับศักยภาพที่เป็นไปได้ของรูปคลื่นซ้อนทับสองตัวที่อินพุตสองตัวของแอมพลิฟายเออร์ในการดำเนินงานนำไปสู่การสร้างการเปลี่ยนแปลง PWM ที่สอดคล้องกันซึ่งสามารถจำลองรูปร่างไซน์
เครื่องขยายสัญญาณการปฏิบัติงานและ SPWM
รูปต่อไปนี้แสดงให้เห็นว่า การสร้างแบบจำลอง การดำเนินการดังกล่าวข้างต้น:
ที่นี่เราสามารถสังเกตได้ว่ามันถูกนำไปใช้ในทางปฏิบัติอย่างไรและนี่คือวิธีที่แอมป์ในการดำเนินการจะทำเช่นเดียวกัน (แม้ว่าจะมีความเร็วสูงกว่ามากใน MS)
การดำเนินการค่อนข้างชัดเจนและแสดงให้เห็นอย่างชัดเจนว่าแอมพลิฟายเออร์การดำเนินงานควรประมวลผลสัญญาณคลื่นไซน์ PWM อย่างไรโดยการเปรียบเทียบสัญญาณที่เปลี่ยนแปลงพร้อมกันสองสัญญาณที่อินพุตดังที่อธิบายไว้ในส่วนก่อนหน้า
ในความเป็นจริงแอมพลิฟายเออร์ในการดำเนินการจะประมวลผลสัญญาณ PWM แบบไซน์ได้แม่นยำกว่าการจำลองที่แสดงข้างต้นได้ดีกว่า 100 เท่าสามารถสร้าง PWM ที่สม่ำเสมอและวัดได้อย่างดีซึ่งตรงกับตัวอย่างที่ให้มา คลื่นไซน์
Arduino อินเวอร์เตอร์สองวงจร
รายการชิ้นส่วน
ตัวต้านทาน 1/4 วัตต์ทั้งหมด, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4pcs
• MOSFETs IRF540 = 2pcs
• Arduino UNO = 1
•หม้อแปลงไฟฟ้า = 9-0-9V / 220V / 120V
•แบตเตอรี่ = 12V
ตัวต้านทาน 1/4 วัตต์ทั้งหมด, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4pcs
• MOSFETs IRF540 = 2pcs
• Arduino UNO = 1
•หม้อแปลงไฟฟ้า = 9-0-9V / 220V / 120V
•แบตเตอรี่ = 12V
การออกแบบนั้นง่ายมากดังแสดงในรูปต่อไปนี้
Pin # 8 และ pin # 9 สร้าง PWM สลับกันและสลับ Mosfets ด้วย PWM เดียวกัน
ในทางกลับกัน Mosfet จะเหนี่ยวนำให้เกิดรูปคลื่น SPWM ที่มีกระแสสูงบนหม้อแปลงโดยใช้พลังงานของแบตเตอรี่ทำให้หม้อแปลงทุติยภูมิสามารถผลิตรูปคลื่นที่เหมือนกัน
วงจรอินเวอร์เตอร์ Arduino ที่เสนอสามารถอัปเกรดเป็นระดับพลังงานที่สูงกว่าที่ต้องการโดยเพียงแค่เปลี่ยน Mosfets และหม้อแปลงไฟฟ้าตามลำดับเป็นทางเลือกคุณยังสามารถแปลงให้เป็นบริดจ์แบบเต็มหรืออินเวอร์เตอร์คลื่นไซน์ H-bridge
Arduino บอร์ดพาวเวอร์
รูปภาพ Waveform สำหรับ Arduino SPWM
เนื่องจาก Arduino จะสร้างเอาท์พุท 5V จึงไม่เหมาะสำหรับการควบคุมทรานซิสเตอร์ MOS โดยตรง
ดังนั้นจึงจำเป็นต้องเพิ่มระดับแฟลชเป็น 12V เพื่อให้ Mosfets ทำงานได้อย่างถูกต้องโดยไม่ทำให้อุปกรณ์ร้อน
เพื่อให้แน่ใจว่า Mosfety ไม่เริ่มทำงานเมื่อ Arduino เริ่มทำงานหรือเริ่มทำงานคุณต้องเพิ่มตัวกำเนิดความล่าช้าต่อไปนี้และเชื่อมต่อเข้ากับฐานของทรานซิสเตอร์ BC547 สิ่งนี้จะช่วยปกป้อง Mosfets และป้องกันไม่ให้เกิดการเผาไหม้ในระหว่างการเปลี่ยนพลังงาน
การเพิ่มตัวควบคุมแรงดันไฟฟ้าอัตโนมัติ
เช่นเดียวกับอินเวอร์เตอร์อื่น ๆ ที่ผลลัพธ์ของการออกแบบนี้กระแสสามารถเพิ่มขึ้นถึงขีด จำกัด ที่ไม่ปลอดภัยเมื่อชาร์จแบตเตอรี่จนเต็ม
หากต้องการควบคุมสิ่งนี้ให้เพิ่มตัวควบคุมแรงดันไฟฟ้าอัตโนมัติ
นักสะสม BC547 จะต้องเชื่อมต่อกับฐานของคู่ BC547 ด้านซ้ายซึ่งเชื่อมต่อกับ Arduino ผ่านตัวต้านทาน 10K
รุ่นที่สองของอินเวอร์เตอร์โดยใช้ชิป sn7404 / k155ln1
มันเป็นสิ่งสำคัญที่:
เพื่อหลีกเลี่ยงการเปิดสวิตช์โดยไม่ตั้งใจก่อนที่จะโหลด Arduino ความล่าช้าอย่างง่ายในวงจรจับเวลาสามารถรวมไว้ในการออกแบบด้านบนดังที่แสดงด้านล่าง:
รหัสโปรแกรม:
/ *
รหัสนี้เป็นไปตามรหัส Swagatam SPWM ที่มีการเปลี่ยนแปลงเพื่อลบข้อผิดพลาด ใช้รหัสนี้เหมือนกับที่คุณใช้ผลงานของ Swagatam อื่น ๆ
Atton Risk 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}} // นี่คืออาร์เรย์ที่มีค่า SPWM เพื่อเปลี่ยนแปลงค่า
const int sPWMArrayValues = 13; // คุณต้องการสิ่งนี้เนื่องจาก C ไม่ได้ให้ความยาวของอาเรย์
// พิน
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// พินสวิตช์
บูล sPWMpin1Status = จริง
บูล sPWMpin2Status = จริง;
การตั้งค่าเป็นโมฆะ ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
เป็นโมฆะห่วง ()
{
// วนรอบสำหรับพิน 1
สำหรับ (int i (0); i! = sPWMArrayValues; i ++)
{
ถ้า (sPWMpin1Status)
{
digitalWrite (sPWMpin1, สูง);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = false;
}
อื่น
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = true;
}
}
// วนรอบสำหรับพิน 2
สำหรับ (int i (0); i! = sPWMArrayValues; i ++)
{
ถ้า (sPWMpin2Status)
{
digitalWrite (sPWMpin2, สูง);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = false;
}
อื่น
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = true;
}
}
}
ขอให้โชคดี