Two-Phase Buck Converter Based on Arduino UNO
โครงงานนี้เป็นการนำบอร์ด Arduino UNO มาควบคุมการทำงานของวงจรบักคอนเวอร์เตอร์แบบ 2 เฟส (Digital Control) ซึ่งในโครงงานที่ผ่านมาได้นำเสนอวงจรในลักษณะเดียวกัน แต่ใช้ไอซีแบบอะนาลอกเบอร์ SG3524 เป็นตัวควบคุม (โครงงาน Simple Dual-Phase Buck Converter by Using SG3524 Controller) โดยในโครงงานจะใช้ส่วนของวงจรภาคกำลังบักคอนเวอร์เตอร์เดิมและปรับวงจรอีกเล็กน้อย เพื่อให้วงจรส่วนของ บอร์ด Arduino UNO และบักคอนเวอร์เตอร์แบบ 2 เฟสสามารถทำงานร่วมกันได้
รูปที่ 1 ถึงรูปที่ 3 แสดงการเตรียมอุปกรณ์ต่างๆ และนำบอร์ด Arduino UNO มาเชื่อมต่อเข้ากับบอร์ดวงจรบักคอนเวอร์เตอร์แบบ 2 เฟส สำหรับการเปลี่ยนบอร์ดควบคุมเดิมมาเป็นบอร์ด Arduino UNO และการวัดสัญญาณในวงจร เพื่อสังเกตการทำงานเมื่อวงจรทำงานบนเงื่อนไขต่างๆ
ในรูปที่ 4 ถึงรูปที่ 8 เป็นการเตรียมเครื่องมือและอุปกรณ์สำหรับสำหรับการทดสอบโครงงาน โดยแรงดันอินพุตในการทดสอบจะกำหนดไว้ที่ประมาณ 25V กำหนดแรงดันเอาต์พุตที่ 12V วัดกระแสเอาต์พุตด้วยแคล้มมิเตอร์และโหลดตัวต้านทานค่าคงที่ขนาด 10 โอห์ม 20 วัตต์ จำนวน 2 ตัว
รูปที่ 9 ถึงรูปที่ 11 เป็นการทดลองที่ 1 ด้วยการให้วงจรจ่ายกระแสโหลดที่ 1.21A จากนั้นวัดค่าแรงดันเอาต์พุตที่เกิดขึ้น รวมทั้งสังเกตสัญญาณขับที่ขาเกต (รูปที่ 10) เพื่อตอบสนองให้แรงดันเอาต์พุตให้คงที่
ในรูปที่ 12 ถึงรูปที่ 14 เป็นการทดลองที่ 2 ซึ่งจะเป็นลักษณะเดียวกับการทดลองที่ 1 แต่จะให้วงจรจ่ายกระแสโหลดเพิ่มขึ้นที่ 2.34A และวัดค่าแรงดันเอาต์พุตที่เกิดขึ้น รวมทั้งสังเกตสัญญาณขับที่ขาเกต เพื่อตอบสนองให้แรงดันเอาต์พุตคงที่ โดยจากการทดลองค่าแรงดันเอาต์พุตลดลง 1.71V เมื่อเทียบกับแรงดันเอาต์พุตขณะวงจรสแตนบาย
/* *Pseudo Code for Arduino UNO *Application for DC-DC Two Phase Converter By using Arduino UNO. Vi : 25VDC Vo : 12VDC Io : 2.38A (Continuous) Po : 24W Fs : 31.372kHZ Eff : > 80% Protection : Output Short circuit and Current Limit *Design by : www.electronicsDNA.com *Date : 15/1/2023 (V.0) */ int Output_PWM = 0; int Voutput = 0; int Iinductor = 0; int Setpoint = 500; // 500 = 12V @ Voltage output double error; void setup() { pinMode (3, OUTPUT); // PWM Signal Lo Side pinMode (11, OUTPUT); // PWM Signal Hi Side pinMode (13, OUTPUT); // LED Signal OK RUN System Serial.begin(9600); TCCR2A=0b10110001; // Generate inverted PWM signals in output TCCR2B=0b00000001; // Set Fsw = 31.9 kHz delay(500); digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); } void loop() { MainLoop: Iinductor = analogRead(A0); // Read ADC A0 for Iinductor Voutput = analogRead(A1); // Read ADC A1 for Voutput Serial.print(" IL = "); Serial.println(Iinductor); // Loop Output Short circuit and Current Limit if(Iinductor>30) { // 30 Is Set Current (6A) Output_PWM = 0; OCR2A = Output_PWM; // PIN D11 OCR2B = 255-Output_PWM; // PIN D3 delay(300); goto MainLoop; } // error = (Setpoint-Voutput); // Serial.print("\t Err = "); // Serial.println(error); if(Setpoint>Voutput){ Output_PWM = Output_PWM+2; goto OUT_PUT; } if(Setpoint<Voutput){ Output_PWM = Output_PWM-2; goto OUT_PUT; } OUT_PUT: if (Output_PWM<1){Output_PWM=0;} // Limit Min PWM Signal if (Output_PWM>128){Output_PWM=128;} // Limit Max PWM Signal OCR2A = Output_PWM; // PIN D11 OCR2B = 255-Output_PWM; // PIN D3 // delay(1); // Delay for Adj Stability Loop Control }
สำหรับโปรแกรม Arduino UNO ที่ใช้ในการทดลอง (แสดงข้างบน) เป็นตัวอย่างที่ใช้ในการทดลองโครงงาน ซึ่งผู้อ่านสามารถปรับการใช้งานได้ตามต้องการ ซึ่งจะสังเกตเห็นว่าโปรแกรมจะแบ่งออกเป็น 3 กลุ่มใหญ่ คือ กลุ่มแรกจะเป็นการประกาศค่าตัวแปรและกำหนดรีจิสเตอร์สำหรับสร้างสัญญาณพัลซ์วิดมอดูเลตชั่น void setup() กลุ่มที่สอง เป็นเมนลูป void loop() จะตรวจสอบค่าแรงดันเอาต์พุต (Voutput) เพื่อเปรียบเทียบกับค่าที่กำหนด (Setpoint) และปรับขนาดของค่าตัวแปรสัญญาณพัลซ์วิดธ์มอดูเลตชั่น (Output_PWM) ในกลุ่มที่สาม (OUT_PUT) จะส่งค่าตัวแปรสำหรับรีจิสเตอร์ (OCR2A และ OCR2B) เพื่อการสร้างพัลซ์ให้เกิดขึ้น นอกจากนี้จะกำหนดขนาดของค่าตัวแปร (Output_PWM) ให้อยู่ในช่วง 0-128 เท่านั้น
สำหรับรูปที่ 15 ถึงรูปที่ 18 เป็นการทดลองที่ 3 ด้วยการทดสอบให้วงจรเกิดการช๊อดเซอร์กิตที่เอาต์พุต ทั้งนี้เพื่อเป็นการตรวจสอบส่วนของการทำงานควบคุมกระแสเกิน (Current Limit Circuit) ที่จะทำให้วงจรได้รับความเสียหายและการทำงานร่วมกับโปรแกรมควบคุมการทำงาน
สำหรับโครงงานนี้เป็นการต่อยอดสำหรับการเปลี่ยนตัวควบคุมการทำงานเดิมแบบอะนาลอก (Analog control) เป็นแบบการควบคุมดิจิตอล (Digital Control) โดยยังคงใช้ส่วนบอร์ดขับกำลังบักคอนเวอร์เตอร์ และปรับการส่งสัญญาณควบคุมให้วงจรทั้งสองส่วนสามารถทำงานร่วมกันได้อย่างเหมาะสม ทั้งนี้คิดว่าตัวโครงงานจะเป็นแนวความคิดเบื้องต้นให้ผู้อ่านสามารถนำไปพัฒนาเพิ่มเติมในรูปแบบต่างๆ ต่อไป
Reference
- https://oa.upm.es/35986/1/INVE_MEM_2014_195391.pdf
- https://www.infineon.com/dgdl/Infineon-Digital_multiphase_controller_dual_phase_operation_in_multiphase_buck_applications-ApplicationNotes-v01_00-EN.pdf?fileId=5546d46272e49d2a01737bf04c75581c
- https://www.analog.com/en/technical-articles/improve-twophase-buck-converter-performance-with-a-coupledchoke-topology.html
- https://www.researchgate.net/figure/Circuit-and-operating-modes-of-two-phase-buck-converter-a-Circuit-b-Mode-1-and-c_fig1_331271726
- https://eu.mouser.com/new/maxim-integrated/maxim-max77540-buck-converter/
- https://iopscience.iop.org/article/10.1088/1755-1315/354/1/012030/pdf
- https://www.maximintegrated.com/content/dam/files/design/technical-documents/reference-designs/maxrefdes1033.pdf