Mini SEPIC Converter Topology by using Arduino UNO

โครงงานนี้เป็นวงจรดีซี ทู ดีซี คอนเวอร์เตอร์ (DC to DC Converter) อีกแบบหนึ่งที่น่าสนใจที่เรียกว่าเซปิก คอนเวอร์เตอร์ (SEPIC Converter Topology) และอาจจะเห็นนำมาใช้งานไม่งานนัก เมื่อเทียบกับคอนเวอร์เตอร์ที่เราจะได้ยินทั่วไป เช่น แบบฟายแบกคอนเวอร์เตอร์ (Flyback converte), ฟอร์เวิร์ดคอนเวอร์เตอร์ (Forward converter), พุช-พูลคอนเวอร์เตอร์ (Push-Pull converter) และฮาฟบริดจ์คอนเวอร์เตอร์ (Half-Bridge converter) เป็นต้น ทั้งนี้จุดเด่นของตัวเซปิก คอนเวอร์เตอร์ จะสามารถปรับโหมดการทำงานในตัวเองเพื่อรักษาระดับแรงดันทางด้านเอาต์พุตให้คงที่เมื่อแรงดันทางด้านอินพุตมีการเปลี่ยนแปลงได้ดี


รูปที่ 1 และรูปที่ 2 แสดงอุปกรณ์ที่นำมาใช้ประกอบโครงงานเซปิก คอนเวอร์เตอร์ โดยเฉพาะตัวเหนี่ยวนำ (L1 และ L2) จะเป็นแบบสำเร็จที่สามารถซื้อได้ทั่วไปซึ่งมาค่าเหนี่ยวนำ 470uH และในส่วนของบอร์ดควบคุมและประมวลผลจะใช้ Arduino UNO ที่สามารถหาซื้อได้ง่ายและราคาไม่แพงมากนัก สามารถนำมาใช้งานได้ง่ายและสะดวกในส่วนอุปกรณ์อื่นๆ จะเป็นอุปกรณ์ทั่วไปนั้นเอง



รูปที่ 5 เป็นโหลดที่ใช้ในการทดสอบการทำงานของวงจรโดยจะใช้ตัวต้านทานค่าคงที่ ซึ่งจะสามารถทดลองการจ่ายกำลังไฟฟ้าได้ที่ประมาณ 7 วัตต์ (ต่อเนื่อง) สำหรับโครงงานครั้งนี้ แต่ไม่สามารถทดลองได้นามเกิน 3 นาทีเนื่องจากตัวต้านทานจะมีความที่เกิดขึ้นมากพอควร


รูปที่ 6 และรูปที่ 7 แสดงลักษณะของการเตรียมการทดลองในส่วนของบอร์ดควบคุมและบอร์ดคอนเวอร์เตอร์ การเตรียมเครื่องมือสำหรับวัดค่าแรงดันอินพุตและเอาต์พุตด้วยมัลติมิเตอร์ และในการวัดสัญญาณพัลซ์วิดธ์มอดูเลตชั่นด้วยดิจิตอลออสซิลโลสโคป เพื่อสังเกตพฤติกรรมการตอบสนองต่อแรงดันอินพุตค่าต่างๆ เมื่อวงจรจ่ายกำลังไฟฟ้าคงที่
/* Demo Code for DC-DC SEPIC Converter Topology MCU : Arduino UNO Fs = 35kHz Vi = 10V-20V Vo = 15V/500mA Output Power : 7W (Continuous) R&D by : www.electronicsdna.com Date : 30-12-2021 (V.0) */ #include <PWM.h> int PinPWM = 9; int Output_PWM = 0; int32_t frequency = 35000; // frequency (in Hz) void setup() { Serial.begin(9600); InitTimersSafe(); bool success = SetPinFrequencySafe(PinPWM, frequency); if(success) { pinMode(9,OUTPUT); } } void loop() { int Voutput = analogRead(A1); // Serial.print(" Vo = "); // Serial.println(Voutput); if(Voutput>503){Output_PWM = Output_PWM-1; goto goPWMSignal;} if(Voutput<497){Output_PWM = Output_PWM+1; goto goPWMSignal;} goPWMSignal: if(Output_PWM>230){Serial.print("\t MAX "); Output_PWM=230; goto setPWMSignal;} if(Output_PWM<0) {Serial.print("\t MIN "); Output_PWM=0; goto setPWMSignal;} setPWMSignal: pwmWrite(PinPWM,Output_PWM); // delay(1); }
สำหรับโปรแกรมข้างบนนี้เป็นโปรแกรมทดลองการทำงานของวงจรเซปิก คอนเวอร์เตอร์ในเบื้องต้น สำหรับเป็นการทดสอบการควบคุมการทำงาน เพื่อรักษาระดับของแรงดันที่เอาต์พุตให้คงที่ ซึ่งเป็นแนวทางให้ผู้อ่านสามารถนำไปพัฒนาต่อเพิ่มเติมตามที่ต้องการ เช่น การแสดงผลค่ากระแสและแรงดันต่างๆ ผ่านคอมพิวเตอร์ การควบคุมและการป้องกันกระแสเกินให้กับตัววงจรเป็นต้น



รูปที่ 8 ถึงรูปที่ 10 แสดงผลการทดลองที่ 1 โดยกำหนดให้ค่าแรงดันอินพุตและค่าแรงดันทางด้านเอาต์พุตใกล้เคียงกัน โดยโครงงานนีจะกำหนดแรงดันเอาต์พุตที่ 15V (แสดงในรูปที่ 8) เมื่อทดลองต่อโหลดเพื่อจ่ายกำลังไฟฟ้าที่ 7 วัตต์ (ต่อเนื่อง) สัญญาณพัลซ์วิดธ์มอดูเลตชั่นจะมีค่าใกล้เคียง 50% และกำหนดความถี่สวิตชิ่งที่ 35kHz (แสดงในรูปที่ 9) ในรูปที่ 10 ค่าแรงดันเอาต์พุตยังคงที่ประมาณ 15V
*Duty Cycle or Voltage output Calculation, Vo = (D*Vi)/(1-D) [SEPIC converter]



รูปที่ 11 ถึงรูปที่ 13 แสดงผลการทดลองที่ 2 โดยกำหนดให้ค่าแรงดันอินพุตให้น้อยกว่าค่าแรงดันทางด้านเอาต์พุต โดยโครงงานจะปรับแรงดันอินพุตที่ 10V (แสดงในรูปที่ 11) ทดลองต่อโหลดเพื่อจ่ายกำลังไฟฟ้าที่ 7 วัตต์ (ต่อเนื่อง) สัญญาณพัลซ์วิดธ์มอดูเลตชั่นจะมีค่ามากกว่า 50% (แสดงในรูปที่ 12) ในรูปที่ 13 ค่าแรงดันเอาต์พุตยังคงที่ประมาณ 15V



เช่นเดียวกันในรูปที่ 14 ถึงรูปที่ 16 แสดงผลการทดลองที่ 3 โดยกำหนดให้ค่าแรงดันอินพุตให้มากกว่าค่าแรงดันทางด้านเอาต์พุต โดยโครงงานจะปรับแรงดันอินพุตที่ 20V (แสดงในรูปที่ 14) และยังคงทดลองต่อโหลดเพื่อจ่ายกำลังไฟฟ้าที่ 7 วัตต์ (ต่อเนื่อง) สัญญาณพัลซ์วิดธ์มอดูเลตชั่นจะมีค่าน้อยกว่า 50% (แสดงในรูปที่ 15) ในรูปที่ 16 ค่าแรงดันเอาต์พุตยังคงที่ประมาณ 15V



สำหรับโครงงานเซปิก คอนเวอร์เตอร์ (SEPIC Converter Topology) นี้เป็นโครงงานเล็กๆ อีก 1 ตัว สำหรับเป็นการเรียนรู้เพิ่มเติมของแอดมินเอง เพื่อให้เข้าใจแนวความคิดและหลักการทำงานของคอนเวอร์เตอร์ลักษณะนี้เพิ่มขึ้น รวมทั้งศึกษาพฤติกรรมการทำงาน การเขียนโปรแกรมให้กับบอร์ดควบคุม Arduino UNO เพื่อให้สามารถทำงานร่วมกันได้ในเบื้องต้น โดยทั้งนี้แอดมินจึงนำขั้นตอนการประกอบ ผลการทดลองเบื้องต้นและตัวโปรแกรมสำหรับบอร์ดควบคุม มาแชร์ให้ผู้อ่านเพื่อเป็นแนวทางให้ท่านสามารถนำไปพัฒนาต่อ และเรียนรู้คอนเวอร์เตอร์ได้ง่ายและเร็วยิ่งขึ้น สำหรับข้อมูลในการศึกษาเพิ่มเติมถึงการทำงานในแต่ละสเตจ (Operating states) และการคำนวณค่าต่างๆ แนะนำลิ้งก์เว็บไซต์ข้างล่างนี้ครับ
Reference
- https://www.ti.com/lit/an/snva168e/snva168e.pdf
- https://web.wpi.edu/Pubs/E-project/Available/E-project-050114-131841/unrestricted/SEPIC_MQP_Final_Report.pdf
- https://nptel.ac.in/content/storage2/courses/108105066/PDF/L-24(DK&SSG)(PE)%20((EE)NPTEL).pdf
- https://en.wikipedia.org/wiki/Single-ended_primary-inductor_converter
- https://www.maximintegrated.com/en/design/technical-documents/tutorials/1/1051.html
- https://iopscience.iop.org/article/10.1088/1742-6596/1818/1/012220/pdf
- https://engrxiv.org/69puh/download
- https://www.analog.com/media/en/technical-documentation/data-sheets/8494fa.pdf
- http://research.bkkthon.ac.th/abstac/ab_31052563174848.pdf