Voltage Mode Control Flyback Converter SMPS Based on Arduino UNO

โครงงานแหล่งจ่ายไฟสวิตชิ่งเพาเวอร์ซัพพลาย แบบฟายแบกคอนเวอร์เตอร์ ใช้วิธีการควบคุมด้วยโหมดแรงดัน (Voltage Mode Control) และใช้บอร์ดควบคุม Arduino UNO ในการประมวลผลแทนไอซีตัวเดิม (UC3842) ซึ่งทำงานในโหมดกระแส (Current Mode Control) ด้วยการนำวงจรสวิตชิ่งสำเร็จมาปรับแต่งวงจรใหม่ที่เคยนำเสนอเนื้อหามาก่อนหน้านี้ (Flyback Converter for Power Switching Panel TV) เพื่อศึกษาการควบคุมและเรียนรู้การทำงานให้กับแหล่งจ่ายไฟสวิตชิ่งแบบฟายแบกคอนเวอร์เตอร์

Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 1 ลักษณะบอร์ดสวิตชิ่งเพาเวอร์ซัพพลาย แบบฟายแบกคอนเวอร์เตอร์
Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 2 ตำแหน่งไอซี UC3842 ใช้ในการควบคุมฟายแบกคอนเวอร์เตอร์

รูปที่ 1 และรูปที่ 2 แสดงบอร์ดสวิตชิ่งเพาเวอร์ซัพพลาย แบบฟายแบกคอนเวอร์เตอร์ สำหรับใช้ในการทดลองโครงงาน และตำแหน่งไอซี UC3842 ใช้ในการควบคุมฟายแบกคอนเวอร์เตอร์ ส่วนการทำงานของวงจรในบอร์ดสวิตชิ่งเพาเวอร์ซัพพลาย สามารถดูได้ที่ https://www.electronicsdna.com/flyback-converter-for-power-switching-panel-tv/

Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 3 แสดงการถอดไอซีควบคุม UC3842 ออกจากบอร์ด
Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 4 แสดงวงจรการทำงานเดิมเมื่อใช้ไอซี UC3842 ในการควบคุมการทำงาน

ในรูปที่ 3 และรูปที่ 4 เป็นการถอดไอซีควบคุม UC3842 เดิมออกจากบอร์ด ซึ่งไอซีตัวนี้จะทำงานแบบอะนาลอก (Analog Control) และในรูปที่ 4 เป็นวงจรการทำงานที่ยังคงใช้ไอซีควบคุม UC3842 โดยเราจะสนใจในส่วนของการส่งสัญญาณ PWM (ขา 6), การรับสัญญาณตรวจจับกระแส Isense (ขา 3) และขารับสัญญาณป้อนกลับ VFB (ขา 2) เป็นหลัก

Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 5 วงจรเชื่อมต่อ (Interface circuit) ระหว่างบอร์ด Arduino UNO และบอร์ดสวิตชิ่ง
Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 6 การเชื่อมต่อระหว่างบอร์ดสวิตชิ่งมายังวงจรเชื่อมต่อ (Interface circuit)

รูปที่ 5 และรูปที่ 6 เป็นวงจรเชื่อมต่อ (Interface circuit) ระหว่างบอร์ด Arduino UNO และบอร์ดสวิตชิ่งให้สามารถสื่อสารระหว่างกันได้ ทั้งนี้ตัวบอร์ด Arduino UNO จะประมวลผลสัญญาณในรูปแบบดิจิตอลเป็นหลัก (Digital Control) ซึ่งจะใช้ออปโต้คัปเปิ้ลเป็นส่วนใหญ่และให้วงจรทั้งหมดสามารถควบคุมการทำงานร่วมกันได้อย่างเหมาะสม

Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 7 ลักษณะของการต่อวงจรทั้งหมดเข้าด้วยกันสำหรับทดลอง
Voltage Mode Control Flyback Converter SMPUS Based on Arduino
รูปที่ 8 แสดงวงจรสวิตชิ่งเดิมที่ใช้บอร์ดควบคุม Arduino UNO แทนไอซี UC3842

ในรูปที่ 7 และรูปที่ 8 แสดงลักษณะการต่อวงจรทั้งหมดเข้าด้วยกันเพื่อใช้ในทดลองการทำงานร่วมกันทั้งหมด โดยในรูปที่ 8 จะเป็นบอร์ดวงจรสวิตชิ่งเดิมแต่ใช้บอร์ดควบคุม Arduino UNO แทนไอซี UC3842 ซึ่งจะสังเกตตำแหน่งส่งสัญญาณพัลซ์วิดมอดูเลตชั่นที่ขา D9, ขารับสัญญาณตรวจจับกระแสที่ขา D2 และขารับสัญญาณป้อนกลับแรงดันเอาต์พุตที่ขา A1 โดยในการทดลองครั้งนี้จะควบคุมค่าแรงดันเอาต์พุตที่ 24V

/*
    Voltage mode control flyback converter SMPS based on Arduino UNO
    MCU : Arduino UNO
    Fs = 45kHz   
    Vi = 220Vac/50Hz-60Hz
    Vo = 24V/1.2A
    Output Power : 28W (Continuous)    
    Date : 24-3-2024 (V.0)       
 */

#include <PWM.h>

int PinPWM = 9;                
int Output_PWM = 0;
int Voutput;    
int32_t frequency = 45000;     // Fs frequency (in Hz)

void setup()
{   
  Serial.begin(9600);
  pinMode(2, INPUT);       //  PIN 2 Current Limit Signal
  pinMode(9,OUTPUT);    //  PIN 9 PWM Signal OUTPUT
  
  InitTimersSafe();   
  bool success = SetPinFrequencySafe(PinPWM,frequency);   
  if(success) {        
  }
}

void loop()
{

 MainLoop:
  
      Voutput = analogRead(A1); 
   //   Serial.print(" V = ");
   //   Serial.print(Voutput);                 

 // Loop Output Short circuit and Current Limit Protection
 if(digitalRead(2) == LOW) {   
       Output_PWM = 0;
       pwmWrite(PinPWM,Output_PWM);   
       delay(300); 
       goto  MainLoop;                   
   }            
       if(Voutput>560){Output_PWM = Output_PWM-1; goto goPWMSignal;}   
       if(Voutput<550){Output_PWM = Output_PWM+1; goto goPWMSignal;} 
         
 goPWMSignal:
       if(Output_PWM>128){Serial.print("\t MAX "); Output_PWM=128; goto setPWMSignal;}            
       if(Output_PWM<0)  {Serial.print("\t MIN "); Output_PWM=0; goto setPWMSignal;}
         
 setPWMSignal:           
       pwmWrite(PinPWM,Output_PWM);   
       delay(1);   
}

สำหรับโปรแกรม Arduino เพื่อทดลองารทำงานของวงจรสวิตชิ่งเพาเวอร์ซัพพลาย แบบฟายแบกคอนเวอร์เตอร์ข้างบนนี้ จะแบ่งออกเป็น 3 ส่วนคือ ส่วนแรกจะเป็นการใช้งานไลบารี่ #include <PWM.h> และประกาศค่าตัวแปรที่จะใช้ในการประมวลผล ส่วนที่สอง void setup() จะเป็นการกำหนดฟังก์ชั่นการใช้งาน bool success = SetPinFrequencySafe(PinPWM,frequency); สำหรับสร้างสัญญาณพัลซ์วิดมอดูเลตชั่นและการกำหนดขาอินพุตและเอาต์พุตในการรับและส่งสัญญาณควบคุมในวงจร ส่วนที่สาม void loop() จะเป็นการอ่านค่าแรงดันเอาต์พุตป้อนกลับ (VFB) เข้ามาที่ขา A1 ด้วยคำสั่ง Voutput = analogRead(A1); จากนั้นนำค่าที่ได้มาเปรียบเทียบด้วยคำสั่ง if(Voutput>560) และ if(Voutput<550) เพื่อปรับเปลี่ยนปรับค่าดิวตี้ไซเกิลสัญญาณพัลซ์วิดมอดูเลตชั่น โดยค่าที่ได้จะถูกกำหนดให้อยู่ในช่วง 0-128 (Duty cycle 0%-50%) และส่งไปยังคำสั่ง pwmWrite(PinPWM,Output_PWM); สุดท้ายที่คำสั่ง if(digitalRead(2) == LOW) จะทำหน้าที่ตรวจสอบกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่งไม่เกิน 3A เท่านั้น

Download Library ——-> PWM.h

Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 9 แรงดันอินพุต (Vi) กระแสสลับ 220Vac สำหรับทดลอง
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 10 แรงดันเอาต์พุต (Vo) กระแสตรงกำหนดไว้ที่ประมาณ 24Vdc
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 11 การวัดสัญญาณขับขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2)

ในรูปที่ 9 ถึงรูปที่ 11 เป็นการทดลองวัดสัญญาณขณะวงจรอยู่ในโหมดสแตนบาย (Stanby mode) โดยในการทดลองจะป้อนแรงดันอินพุต (Vi) กระแสสลับที่ 220Vac และค่าแรงดันเอาต์พุต (Vo) กระแสตรงกำหนดไว้ที่ประมาณ 24Vdc ในรูปที่ 11 เป็นการวัดสัญญาณขับขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2)

Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 12 การทดลองที่ 1 เมื่อให้วงจรจ่ายกระแสโหลดที่ 0.59A
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 13 การวัดสัญญาณขับขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2) เมื่อวงจรจ่ายกระแสโหลดที่ 0.59A
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 14 ค่าแรงดันเอาต์พุตเมื่อวงจรจ่ายกระแสโหลดที่ 0.59A

รูปที่ 12 ถึงรูปที่ 14 การทดลองที่ 1 เมื่อให้วงจรจ่ายกระแสโหลดที่ 0.59A จากนั้นสังเกตสัญญาณพัลซ์วิดมอดูเลตชั่นที่ขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2) และวัดค่าแรงดันเอาต์พุตดังในรูปที่ 14 เพื่อดูการเปลี่ยนแปลงค่าแรงดันที่เกิดขึ้น

Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 15 การทดลองที่ 2 เมื่อให้วงจรจ่ายกระแสโหลดที่ 1.18A
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 16 การวัดสัญญาณขับขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2) เมื่อวงจรจ่ายกระแสโหลดที่ 1.18A
Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 17 ค่าแรงดันเอาต์พุตเมื่อวงจรจ่ายกระแสโหลดที่ 1.18A

รูปที่ 15 ถึงรูปที่ 17 การทดลองที่ 2 ให้วงจรจ่ายกระแสโหลดเพิ่มขึ้นที่ 1.18A และสังเกตสัญญาณพัลซ์วิดมอดูเลตชั่นที่ขาเกต (CH1) และกระแสที่ไหลผ่านหม้อแปลงสวิตชิ่ง (CH2) มีค่าเพิ่มขึ้นเมื่อเทียบกับการทดลองที่ 1 ส่วนค่าแรงดันเอาต์พุตในรูปที่ 17 เปลี่ยงแปลงเล็กน้อย

Voltage Mode Control Flyback Converter SMPUS Based on Arduino UNO
รูปที่ 18 แสดงลักษณะการทดลองวงจรทั่วไป

สำหรับโครงงานแหล่งจ่ายไฟสวิตชิ่งเพาเวอร์ซัพพลาย แบบฟายแบกคอนเวอร์เตอร์ และใช้บอร์ดควบคุม Arduino UNO ครั้งนี้ ให้ผลการทดลองเป็นที่น่าพอใจ โดยจะขอเน้นเนื้อหาในเรื่องการศึกษาโครงสร้างฟายแบกคอนเวอร์เตอร์และการนำบอร์ดควบคุม Arduino เข้ามาควบคุมการทำงานเป็นหลัก ซึ่งในกรณีที่จะนำบอร์ดควบคุม Arduino มาเป็นตัวควบคุมให้กับวงจรฟายแบกคอนเวอร์เตอร์ เราจะต้องพิจารณาเรื่องต้นทุนของอุปกรณ์ในการออกแบบโดยรวมอีกเรื่องหนึ่ง

Reference

  1. https://www.electronicsdna.com/flyback-converter-for-power-switching-panel-tv/
  2. https://www.ti.com/lit/ml/slup072/slup072.pdf?ts=1623464319352&ref_url=https%253A%252F%252Fwww.google.com%252F
  3. https://www.onsemi.com/pub/Collateral/AN1327-D.PDF
  4. https://www.onsemi.com/pub/Collateral/SMPSRM-D.PDF
  5. http://ww1.microchip.com/downloads/en/appnotes/01114a.pdf
  6. https://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/00002122B.pdf
  7. https://www.ti.com/lit/an/slua143/slua143.pdf?ts=1623464672735&ref_url=https%253A%252F%252Fwww.google.com%252F