Arduino based DC/DC Boost Converter by Reuse Inductor

โครงงานนี้เป็นการออกแบบวงจรบูทคอนเวอร์เตอร์ขนาด 20 วัตต์ โดยการใช้ตัวเหนี่ยวนำที่ซื้อมาจากร้านขายซึ่งถอดออกจากบอร์ดอิเล็กทรอนิกส์เก่ามาใช้ จากน้้นจะทดลองปรับความถี่สวิตชิ่งใช้งานที่ 85kHz โดยรับค่าแรงดันอินพุตในช่วง 13.8V-15V และกำหนดค่าแรงดันเอาต์พุตประมาณ 24V โดยวงจรจะควบคุมการทำงานด้วยบอร์ด Arduino UNO

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 1 เตรียมอุปกรณ์ต่างๆ สำหรับทดลอง
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 2 วาดเลย์เอาต์แผ่น PCB ในการประกอบวงจร

ในรูปที่ 1 และรูปที่ 2 เป็นการเตรียมอุปกรณ์สำหรับทดลองและทำแผ่นวงจรพิมพ์ (PCB) อย่างง่าย สำหรับทดลองการทำงานต้นแบบ โดยการเซาะร่องบนแผ่นวงจรพิมพ์ด้านบนซึ่งใช้เวลาเพียงเล็กน้อย

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 3 ตัวเหนี่ยวนำที่ใช้ในการทดลองวงจร (1)
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 4 ตัวเหนี่ยวนำที่ใช้ในการทดลองวงจร (2)
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 5 ตัวเหนี่ยวนำที่ใช้ในการทดลองวงจร (3)

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

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 6 ลักษณะของบอร์ดต้นแบบวงจรบูทคอนเวอร์เตอร์
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 7 การเชื่อมต่อบอร์ดควบคุม Arduino และวงจรบูทคอนเวอร์เตอร์

ในรูปที่ 6 และรูปที่ 7 แสดงลักษณะของบอร์ดต้นแบบวงจรบูทคอนเวอร์เตอร์ ที่ประกอบขึ้นใกล้เสร็จเรียบร้อยและการเชื่อมต่อกันระหว่างบอร์ดควบคุม Arduino UNO กับวงจรบูทคอนเวอร์เตอร์ สำหรับส่งสัญญาณพัลซ์วิดธ์มอดูเลตชั่นให้กับเพาเวอร์มอสเฟต รวมทั้งรับสัญญาณป้อนกลับ (Feedback signal) ค่าแรงดันและกระแสเอาต์พุตสำหรับควบคุมการทำงาน

/*
    Arduino Code for Boost Converter Topology
    MCU : Arduino UNO
    Fs = 85kHz   
    Vi = 13.8V-15V
    Vo = 24V/2A
    Output Power : 40W (Continuous)
    R&D by : www.electronicsdna.com
    Date : 22-7-2023 (V.0)       
 */

#include <PWM.h>

int PinPWM = 9;                
int Output_PWM = 0;
int Voutput;          
int Current;  
int32_t frequency = 85000;     // frequency (in Hz)

void setup()
{   
  Serial.begin(9600);
  InitTimersSafe();   
  bool success = SetPinFrequencySafe(PinPWM,frequency);   
  if(success) {   
    pinMode(9,OUTPUT);  
  }
}

void loop()
{

 MainLoop:
  
      Voutput = analogRead(A1); 
   //   Serial.print(" V = ");
   //   Serial.print(Voutput);                
      Current = analogRead(A0); 
   //   Serial.print(", Io = ");
      Serial.println(Current);           

 // Loop Output Short circuit and Current Limit Protection

   if(Current>100) {   // 100 Is Set Current Io < 2A  
       Output_PWM = 0;
       pwmWrite(PinPWM,Output_PWM);   
       delay(300); 
       goto  MainLoop;           
   }            
       if(Voutput>603){Output_PWM = Output_PWM-1; goto goPWMSignal;}   
       if(Voutput<597){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);   
}

สำหรับโปรแกรมทดลองการทำงานของบอร์ด Arduino UNO จะแบ่งออกเป็น 4 กลุ่มด้วยกันคือ กลุ่มแรกสำหรับหรับกำหนดค่าตัวแปรต่างๆ ในโปรแกรมและกำหนดการสร้างสัญญาณพัลซ์วิดธ์มอดูเลตชั่นที่คำสั่ง “bool success = SetPinFrequencySafe(PinPWM,frequency);” ซึ่งทำงานร่วมกับไลบารี่ #include <PWM.h> ต่อมาในกลุ่มที่ 2 จะทำหน้าที่ตรวจจับกระแสเกินที่ขา A0 ของวงจรที่คำสั่ง if(Current>100) { // 100 Is Set Current Io < 2A ต่อมาในกลุ่มที่ 3 จะทำหน้าที่เปรียบเทียบค่าแรงดันเอาต์พุตที่อ่านได้จากขา A1 กับค่าคงที่ที่กำหนดไว้ 603 และ 597 คำสั่ง if(Voutput>603) และ if(Voutput<597) สำหรับปรับค่าสัญญาณพัลซ์วิดธ์มอดูเลตชั่น และกลุ่มสุดท้ายที่ 4 จะทำหน้าที่รับค่าปรับที่ได้จากการเปรียบเทียบมาสัญญาณพัลซ์วิดธ์มอดูเลตชั่นด้วยคำสั่ง pwmWrite(PinPWM,Output_PWM);

Download Library ——-> PWM.h

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 8 ลักษณะเตรียมการทดลอง
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 9 แหล่งจ่ายไฟเลี้ยงในการทดลองวงจร
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 10 แคล้มมิเตอร์สำหรับกระแสเอาต์พุต
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 11 ตัวต้านทานโหลดขนาด 10 โอห์ม 20 วัตต์ 2 ตัว

ในรูปที่ 8 ถึงรูปที่ 11 เป็นลักษณะการเตรียมการทดลอง, แหล่งจ่ายไฟเลี้ยงทางด้านอินพุต, แคล้มมิเตอร์สำหรับกระแสเอาต์พุตและตัวต้านทานโหลดสำหรับทดสอบการทำงานต่างๆ

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 12 ตำแหน่งการวัดสัญญาณในบอร์ดทดลอง
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 13 สัญญาณขับขาเกตและแรงดันเอาต์พุตขณะวงจรสแตนบาย

รูปที่ 12 และรูปที่ 13 แสดงตำแหน่งการวัดสัญญาณที่เกิดขึ้นในวงจรสำหรับตรวจสอบการทำงานและลักษณะสัญญาณในขณะวงจรทำงานในโหมดสแตนบายโดยช่องวัดสัญญาณที่ 1 (CH1) เป็นสัญญาณขับขาเกตให้กับเพาเวอร์มอสเฟตและช่องวัดสัญญาณที่ 2 (CH2) เป็นการวัดค่าแรงดันเอาต์พุต (Vo)

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 14 การทดลองที่ 1 ให้วงจรจ่ายกระแสโหลดที่ 1.27A
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 15 สัญญาณขับขาเกตและแรงดันเอาต์พุตเมื่อจ่ายกระแสโหลดที่ 1.27A
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 16 ค่าแรงดันและกระแสอินพุต เมื่อจ่ายกระแสโหลดที่ 1.27A

ในรูปที่ 14 ถึงรูปที่ 16 เป็นการทดลองการทำงานที่ 1 โดยให้วงจรจ่ายกระแสโหลดที่ 1.27A จากนั้นสังเกตการตอบสนองสัญญาณพัลซ์วิดธ์มอดูเลชั่นที่เกิดขึ้นรวมทั้งค่าแรงดันเอาต์พุตและในรูปที่ 16 เป็นค่าแรงดันละกระแสทางด้านอินพุต

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 17 การทดลองที่ 2 ให้วงจรจ่ายกระแสโหลดที่ 2.16A
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 18 สัญญาณขับขาเกตและแรงดันเอาต์พุตเมื่อจ่ายกระแสโหลดที่ 2.16A
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 19 ค่าแรงดันและกระแสอินพุต เมื่อจ่ายกระแสโหลดที่ 2.16A

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

Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 20 วงจรที่ออกแบบและใช้ในการทดลองโครงงาน
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 21 ลักษณะการทดลองโตรงงาน (1)
Arduino Based DC/DC Boost Converter by Reuse Inductor
รูปที่ 22 ลักษณะการทดลองโตรงงาน (2)

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

Reference

  1. https://www.ti.com/seclit/ug/slyu036/slyu036.pdf
  2. https://www.ti.com/lit/an/snva731/snva731.pdf?ts=1672554711569
  3. https://www.onsemi.com/pdf/datasheet/ncv5171-d.pdf