Basic Current-sharing by using Voltage-Controlled Current Source for DC-DC Converters V.2

โครงงานการต่อขนานของวงจรดีซี ทู ดีซีคอนเวอร์เตอร์ เพื่อแชร์กระแสระหว่างกัน (Current-sharing) ในครั้งนี้ เป็นการพัฒนาต่อจากโครงงานเดิมที่นำเสนอไว้ก่อน (Basic Current-sharing for DC-DC Converters V.1) ซึ่งจะเป็นการแชร์กระแสในลักษณะของ Master-Slave Operation แต่ในโครงงานงานจะทดลองในลักษณะของ Voltage-Controlled Current Sources ซึ่งจะนำเอาบอร์ดต้นแบบเดิมมาปรับแต่งการต่อใช้งานเล็กน้อยและปรับโปรแกรมการทำงาน Arduino UNO เพื่อให้สามารถทำงานตามแนวความคิดที่ต้องสำหรับการออกแบบโครงงานครับ



รูปที่ 1 ถึงรูปที่ 3 แสดงบอร์ดต้นแบบเดิมจากโครงงานที่ผ่านมา โดยนำมาทดลองและต่อใช้งาน รวมทั้งปรับให้เป็นการทำงานแบบใหม่คือ Voltage-Controlled Current Sources โดยยังคงใช้บอร์ดควบคุม Arduino UNO เช่นเดิม



ในรูปที่ 4 ถึงรูปที่ 6 เป็นการวัดสัญญาณเพื่อตรวจสอบความถูกต้อง การกำหนดค่าแรงดันเอาต์พุตไว้ที่ประมาณ 12V และการแสดงผลการทำงานของบอร์ดควบคุม Arduino UNO ซึ่งจะแสดงมาที่หน้าต่าง Serial monitor ในส่วนของค่าแรงดันเอาต์พุตและค่ากระแสโหลดจากวงจรดีซี ทู ดีซี คอนเวอร์เตอร์ทั้ง 2 วงจร
/* *Pseudo Code for MCU Arduino *Application for Basic Current-sharing for DC-DC Converter. *Design by : www.electronicsDNA.com *Date : 25/5/2023 (V.2) Vi : 18V-25VDC Vo : 12VDC Io : 3A (Continuous) Fs : 31.37kHz Eff : > 80% */ int Output_PWM = 0; int Voutput = 0; int Iphase1 = 0; int Iphase2 = 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 TCCR2B=0b00000001; // Set Fsw = 31.37 kHz delay(500); digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); } void loop() { Voutput = analogRead(A5); // Read ADC A1 for Voutput Serial.print(" Vo = "); Serial.print(Voutput); MainLoop: Iphase1 = analogRead(A0); // Read ADC A0 for Iinductor (D3) Iphase2 = analogRead(A4); // Read ADC A0 for Iinductor (D11) Serial.print(", Io1 = "); Serial.print(Iphase1); Serial.print(", Io2 = "); Serial.println(Iphase2); // Loop Output Short circuit and Current Limit Protection if(Iphase1>300||Iphase2>300) { // 300 Is Set Current Io < 5A Output_PWM = 0; OCR2A = Output_PWM; // PIN D11 Hi Side OCR2B = 255-Output_PWM; // PIN D3 Hi Side delay(300); goto MainLoop; } 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 Hi Side OCR2B = 255-Output_PWM; // PIN D3 Hi Side if (Iphase1>Iphase2){OCR2A = Output_PWM+2;} // Adj PWM register OCR2A for Current-sharing // Iphase1 for PWM PIN D3 // Iphase2 for PWM PIN D11 // delay(1); // Delay for Stability Loop Control }
สำหรับโปรแกรมการทำงาน Arduino UNO นั้น จะมีปรับปรุงบ้างเล็กน้อยเมื่อเทียบกับโครงงานเดิม ในส่วนของการอ่านค่ากระแสจากวงจรทั้ง 2 ส่วน ด้วยคำสั่ง Iphase1 = analogRead(A0); และ Iphase2 = analogRead(A4); การป้องกันกระแสเกินให้กับวงจรจะใช้คำสั่ง if(Iphase1>300||Iphase2>300) และการปรับชดเชยกระแสให้ใกล้เคียงกันด้วยคำสั่ง if (Iphase1>Iphase2){OCR2A = Output_PWM+2;} ทั้งนี้โปรแกรมการทำงานยังเป็นแนวคิดแบบง่ายสำหรับการทดลอง




สำหรับรูปที่ 7 ถึงรูปที่ 10 การทดลองที่ 1 โดยการให้วงจรดีซี ทู ดีซี คอนเวอร์เตอร์ จ่ายกระแสโหลดที่ 580mA จากนั้นวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่นและวัดค่าแรงดันเอาต์พุตที่ได้ รวมทั้งการแสดงผลการทำงานในหน้าต่าง Serial monitor




รูปที่ 11 ถึงรูปที่ 14 การทดลองที่ 2 ให้วงจรจ่ายจ่ายกระแสโหลดเพิ่มขึ้น 1.16A และวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่น วัดค่าแรงดันเอาต์พุตที่ได้ รวมทั้งการแสดงผลการทำงานในหน้าต่าง Serial monitor




รูปที่ 15 ถึงรูปที่ 18 การทดลองที่ 3 ปรับการจ่ายกระแสโหลดที่ 2.25A เช่นเดิมวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่นและวัดค่าแรงดันเอาต์พุต การแสดงผลการทำงานในหน้าต่าง Serial monitor



รูปที่ 19 ถึงรูปที่ 21 การทดลองที่ 4 เป็นการทดสอบการซ๊อตเซอร์กิตที่เอาต์พุต เพื่อทดลองการป้องกันกระแสเกินให้กับตัววงจรเอง จากนั้นวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่น วัดค่าแรงดันเอาต์พุต การแสดงผลหน้าต่าง Serial monitor ซึ่งในรูปที่ 21 จะเห็นว่าในกรอบสีแดงจะมีค่าที่อ่านได้มากกว่า 300 ซึ่งเกินกว่าที่กำหนดไว้ในโปรแกรม


รูปที่ 22 และรูปที่ 23 แสดงบล๊อกไดอะแกรมการทำงานการทำงานของวงจรดีซี ทู ดีซีคอนเวอร์เตอร์ เพื่อแชร์กระแสระหว่างกันในลักษณะของ Voltage-Controlled Current Sources โดยจะต่อขนานกันโดยตรงทางด้านเอาต์พุตสำหรับวงจรดีซี ทู ดีซีคอนเวอร์เตอร์

สำหรับโครงงานนี้เป็นการพัฒนาจากโครงงานเดิม เพื่อศึกษาการต่อขนานของวงจรดีซี ทู ดีซีคอนเวอร์เตอร์ให้แชร์กระแสระหว่างกันได้ในลักษณะของ Voltage-Controlled Current Sources โดยการทดลองสรุปได้ว่าลักษณะของการแชร์ในลักษณะนี้ จะให้ความถูกต้องของการจ่ายกระแสจากวงจรดีซี ทู ดีซีคอนเวอร์เตอร์เพิ่มขึ้น ด้วยการตรวจจับค่ากระแสที่เกิดขึ้นทั้ง 2 ช่อง แล้วทำการปรับชดเชยการทำงานให้วงจรดีซี ทู ดีซีคอนเวอร์เตอร์ทั้ง 2 ส่วนทำงานใกล้เคียงกันมากที่สุด โดยยังคงให้ค่าแรงดันเอาต์พุตเป็นไปตามที่กำหนดไว้
Reference
- https://www.industrial-electronics.com/switching-power-supply_1-24.html
- https://www.thierry-lequeu.fr/data/SLUP094.pdf
- https://www.edn.com/balancing-power-sharing-of-paralleled-boost-converters-in-speakers/
- https://e2e.ti.com/blogs_/b/powerhouse/posts/how-to-design-a-simple-two-phase-current-sharing-synchronous-buck-regulator-using-a-voltage-mode-controller
- https://www.sunpower-uk.com/glossary/what-is-current-sharing/
- https://www.ednasia.com/op-amp-amplifies-current-sense-voltage-in-demo-boards/