Change the Controller from uPC494C to Arduino UNO for Switching Power Supply

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

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 1 กล่องสวิตชิ่งเพาเวอร์ซัพพลายสำหรับนำมาใช้ทดลอง
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 2 แสดงสเปกเนมเพลตของตัวสวิตชิ่งเพาเวอร์ซัพพลาย

รูปที่ 1 และรูป 2 แสดงแหล่งจ่ายสวิตชิ่งเพาเวอร์ซัพพลายที่นำมาใช้ในการทดลอง และสเปกของสวิตชิ่งเพาเวอร์ซัพพลายโดยจะเป็นกล่องขนาด 100 วัตต์ ที่แรงดันเอาต์พุต 10V และจ่ายกระแสที่ 10A

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 3 ลักษณะของอุปกรณ์ภายในกล่องสวิตชิ่งเพาเวอร์ซัพพลาย
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 4 แสดงไอซีควบคุมเดิมแบบอะนาลอกเบอร์ uPC494C
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 5 ลักษณะของการทดลองวัดสัญญาณ
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 6 แสดงตำแหน่งของการวัดสัญญาณเอาต์พุตของตัวไอซี uPC494C

รูปที่ 3 ถึงรูปที่ 6 แสดงลักษณะของบอร์ดสวิตชิ่งเพาเวอร์ซัพพลายและตำแหน่งของตัวไอซีในบอร์ด รวมถึงการวัดสัญญาณที่เกิดขึ้นเมื่อทดสอบการทำงานของตัววงจรสวิตชิ่ง

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 7 การทดลองที่ 1 ให้สวิตชิ่งเพาเวอร์ซัพพลายจ่ายกระแสโหลดที่ 5.89A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 8 สัญญาณพัลซ์จากไอซี uPC494C เมื่อจ่ายกระแสโหลดที่ 5.89A

รูปที่ 7 และรูปที่ 8 เป็นการทดลองที่ 1 โดยการให้วงจรสวิตชิ่งจ่ายกระแสโหลดที่ 5.89A จากนั้นสังเกตสัญญาณขับที่จ่ายออกมาจากไอซี uPC494C เพื่อตอบสนองการทำงานและรักษาระดับแรงดันเอาต์พุตให้คงที่

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 9 การทดลองที่ 2 ให้สวิตชิ่งเพาเวอร์ซัพพลายจ่ายกระแสโหลดที่ 11.14A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 10 สัญญาณพัลซ์จากไอซี uPC494C เมื่อจ่ายกระแสโหลดที่ 11.14A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 11 ลักษณะการทดลองสวิตชิ่งเพาเวอร์ซัพพลายที่ใช้ไอซี uPC494C ควบคุมการทำงาน

รูปที่ 9 ถึงรูปที่ 11 การทดลองที่ 2 จะเป็นลักษณะเดียวกับการทดลองที่ 1 แต่จะให้วงจรจ่ายกระแสโหลดเพิ่มขึ้นที่ 11.14A และสังเกตสัญญาณขับจากไอซี uPC494C สำหรับตอบสนองการทำงาน และรักษาแรงดันเอาต์พุตให้คงที่ ซึ่งการทดลองทั้ง 2 ครั้งจะศึกษาลักษณะการทำงานของการควบคุมด้วยไอซีแบบอะนาลอกเดิม

/*
    *Code for Arduino UNO
    *Application for Change the Controller from uPC494C to Arduino UNO for Switching Power Supply.
  
     Vi : 300VDC
     Vo : 12VDC
     Io : 6A (Continuous Power)     
     Fsw : 31kHz    
     Protection : Output Short circuit and Current Limit     
   *Dev by : www.electronicsDNA.com
   *Date : 4/11/2022 (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 = 31kHz

delay(500);
digitalWrite(13, HIGH); 
delay(500);
digitalWrite(13, LOW);  
}

void loop()
{

MainLoop:

  Voutput = analogRead(A0);    // Read ADC A0 for Voutput
  Iinductor = analogRead(A1);  // Read ADC A1 for Iinductor 
 
  Serial.print(" IL = ");
  Serial.println(Iinductor); 

  // Loop Output Short circuit and Current Limt

   if(Iinductor>20) {  // 20 Is Set Current (6A)  
       Output_PWM = 0;
       OCR2A = 255-Output_PWM;          
       OCR2B = Output_PWM;          
       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 = 255-Output_PWM;    // PIN D11 Hi Side 
       OCR2B = Output_PWM;          // PIN D3 Hi Side     
    //   delay(1);                // Delay for Adj Stability Loop Control
    
       } 

สำหรับตัวอย่างโปรแกรมที่แสดงข้างบนเป็นการใช้ในทดลองใช้งานกับโครงงานที่ทดลอง โดยผู้อ่านสามารถพัฒนาเพิ่มเติมทั้งในเรื่องของการแสดงผลค่าพารามิเตอร์ต่างๆ หรือการปรับค่าแรงดันและกระแสที่เอาต์พุตได้ตามต้องการ หรือการปรับรูปแบบการควบคุมการทำงานของตัววงจร เป็นต้น

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 12 ถอดตัวบอร์ดสวิตชิ่งออกจากกล่อง (รูปด้านล่าง)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 13 ถอดตัวบอร์ดสวิตชิ่งออกจากกล่อง (รูปด้านบน)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 14 ถอดไอซีควบคุม uPC494C เดิมออกจากบอร์ด

ในรูปที่ 12 ถึงรูปที่ 14 แสดงขั้นตอนการถอดไอซี uPC494C ออกจากบอร์ดสวิตชิ่งเพาเวอร์ซัพพลายเดิม เพื่อเปลี่ยนตัวควบคุมใหม่ด้วยบอร์ด Arduino UNO แทน

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 15 เตรียมบอร์ดควบคุม Arduino UNO และสายไฟาสำหรับเชื่อมต่อ

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

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 16 แสดงลักษณะการเชื่อมต่อระหว่างบอร์ด Arduino UNO และสวิตชิ่งเพาเวอร์ซัพพลาย (รูปที่ 1)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 17 แสดงลักษณะการเชื่อมต่อระหว่างบอร์ด Arduino UNO และสวิตชิ่งเพาเวอร์ซัพพลาย (รูปที่ 2)

ในรูปที่ 16 และรูปที่ 17 เป็นลักษณะของการเชื่อมต่อระหว่างบอร์ด Arduino UNO และสวิตชิ่งเพาเวอร์ซัพพลาย เพื่อทำสอบการทำงานเบื้องต้น โดยจะทดสอบในส่วนของโปรแกรมที่ใช้ในการควบคุม และตรวจสอบสัญญาณที่ส่งมาจากบอร์ด Arduino UNO มายังวงจรขับสัญญาณ (Driver signal) ให้ได้ขนาดที่ถูกต้องและเหมาะสม

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 18 ตำแหน่งการวัดสัญญาณและการทดลองร่วมกับสวิตชิ่งเพาเวอร์ซัพพลาย
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 19 สัญญาณพัลซ์ที่ขา D3 และขา D11 ของบอร์ด Arduino UNO ในขณะยังไม่จ่ายไฟเลี้ยงแรงดันสูงให้วงจร

รูปที่ 18 รูปที่ 19 เป็นการต่ออุปกรณ์ต่างๆ เพิ่มเติมสำหรับการทดลอง เช่น การส่งสัญญาณป้อนกลับแรงดันเอาต์พุต (Vo Feedback signal) และการตรวจจับกระแสเอาต์พุต สำหรับสัญญาณรูปที่ 19 จะเป็นในช่วงบอร์ด Arduino UNO ส่งออกมาโดยยังไม่ได้จ่ายไฟเลี้ยงที่แรงดันสูงให้กับตัววงจร (310VDC) ซึ่งความถี่ของสัญญาณสวิตชิ่งจะเพิ่มขึ้นมาที่ 31kHz เมื่อเทียบกับการใช้ตัวควบคุมด้วยไอซี uPC494C

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 20 ค่าแรงดันไฟเลี้ยงสำหรับทดลองวงจรประมาณ 320V
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 21 แรงดันเอาต์พุตที่ที่กำหนดประมาณ 12V
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 22 สัญญาณที่ขา D3 และ D11 สำหรับหม้อแปลงขับสัญญาณ (ขณะสแตนบาย)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 23 ตัวต้านทานโหลดที่ใช้ในการทดสอบวงจร

ในรูปที่ 21 ถึงรูปที่ 23 แสดงการเตรียมการทดลองต่างๆ เช่น ค่าแรงดันอินพุตสำหรับทดลองที่ประมาณ 320V กำหนดค่าแรงดันเอาต์พุตที่ประมาณ 12V และลักษณะของสัญญาณพัลซ์วิดมอดูเลตชั่นที่เกิดขึ้นในขณะวงจรอยู่ในโหมดสแตนบาย รวมทั้งตัวต้านทานโหลดในการทดสอบการทำงานขนาด 2.2 โอห์ม 60 วัตต์

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 24 การทดลองที่ 3 ให้วงจรจ่ายกระแสที่ 5.55A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 25 แรงดัเอาต์พุตเมื่อให้วงจรจ่ายกระแสที่ 5.55A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 26 สัญญาณที่ขา D3 และ D11 เพื่อตอบสนองกระแสโหลดที่ 5.55A

สำหรับในรูปที่ 24 ถึงรูปที่ 26 การทดลองที่ 3 เป็นการทดลองให้วงจรสวิตชิ่งเพาเวอร์ซัพพลายที่ควบคุมด้วยบอร์ด Arduino UNO จ่ายกระแสให้โหลดที่ 5.55A จากนั้นวัดค่าแรงดันเอาต์พุตเพื่อสังเกตความเปลี่ยนแปลงที่เกิดขึ้น และสัญญาณพัลซ์วิดมอดูเลตชั่นที่ตอบสนองต่อกระแสโหลด

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 27 การทดลองที่ 4 ทดลองให้เอาต์พุตซ๊อตเซอร์กิต
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 28 แรงดันเอาต์พุตเมื่อซ๊อตเซอร์กิต(ใกล้เคียง 0V)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 29 สัญญาณที่ขา D3 และ D11 เมื่อซ๊อตเซอร์กิต

รูปที่ 27 ถึงรูปที่ 29 เป็นการทดลองที่ 4 โดยการให้เอาต์พุตซ๊อตเซอร์กิต ทั้งนี้เพื่อเป็นการทดสอบการควบคุมกระแสเกินของตัวโปรแกรมที่พัฒนาขึ้นและการทำงานของตัวเพาเวอร์สวิตชิ่งเพื่อรับปริมาณกระแสสูงชั่วขณะได้ ซึ่งจากการทดลองสามารถซ๊อตเซอร์กิตไว้ 2 วินาที ตัววงจรสวิตชิ่งเพาเวอร์ซัพพลายสามารถทำงานได้เป็นปกติ

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 30 การทดลองที่ 5 ให้วงจรจ่ายกระแสที่ 10.04A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 31 แรงดันเอาต์พุตเมื่อให้วงจรจ่ายกระแสที่ 10.04A
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 32 สัญญาณที่ขา D3 และ D11 เพื่อตอบสนองกระแสโหลดที่ 10.04A

รูปที่ 30 ถึงรูปที่ 32 จะเป็นการทดลองที่ 5 เช่นเดียวกับการทดลองที่ 3 แต่จะให้ตัววงจรจ่ายกระแสโหลดเพิ่มขึ้นที่ 10.04A จากนั้นวัดค่าแรงดันเอาต์พุตเพื่อสังเกตความเปลี่ยนแปลงที่เกิดขึ้น (ซึ่งจากผลที่ได้ค่าแรงดันลดลง 0.94V เมื่อเทียบกับการทดลองที่ 3) และสัญญาณพัลซ์วิดมอดูเลตชั่นที่ตอบสนองต่อกระแสโหลดอีกครั้ง

Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 33 ลักษณะการทดลองเมื่อใช้บอร์ดควบคุม Arduino UNO
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 34 แสดงตัวบอร์ด Arduino UNO เสียไป 1 บอร์ดในระหว่างการทดลอง
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 35 แสดงบล็อกไดอะแกรมของสวิตชิ่งเพาเวอร์ซัพพพลายเมื่อใช้ตัวควบคุมเดิม (uPC494C หรือ TL494)
Change the Controller from TL494 to Arduino UNO for Switching Power Supply
รูปที่ 36 บล็อกไดอะแกรมของสวิตชิ่งเพาเวอร์ซัพพพลายเมื่อใช้ตัวควบคุม Arduino UNO

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

Reference

  1. https://www.infineon.com/dgdl/Infineon-ApplicationNote_demoboard_IDP2303_120W-AN-v01_00-EN.pdf?fileId=5546d4625b3ca4ec015b5c3e8acf35c0
  2. https://ww1.microchip.com/downloads/en/appnotes/01114a.pdf
  3. https://www.power-supplies.com.au/files/mean-well-user-technical-manual.pdf
  4. reverz45b.png (1220×860) (danyk.cz)
  5. https://docs.arduino.cc/hardware/uno-rev3
  6. https://www.vishay.com/docs/73668/73668.pdf