Arduino based DC/DC Boost Converter by Reuse Inductor
โครงงานนี้เป็นการออกแบบวงจรบูทคอนเวอร์เตอร์ขนาด 20 วัตต์ โดยการใช้ตัวเหนี่ยวนำที่ซื้อมาจากร้านขายซึ่งถอดออกจากบอร์ดอิเล็กทรอนิกส์เก่ามาใช้ จากน้้นจะทดลองปรับความถี่สวิตชิ่งใช้งานที่ 85kHz โดยรับค่าแรงดันอินพุตในช่วง 13.8V-15V และกำหนดค่าแรงดันเอาต์พุตประมาณ 24V โดยวงจรจะควบคุมการทำงานด้วยบอร์ด Arduino UNO
ในรูปที่ 1 และรูปที่ 2 เป็นการเตรียมอุปกรณ์สำหรับทดลองและทำแผ่นวงจรพิมพ์ (PCB) อย่างง่าย สำหรับทดลองการทำงานต้นแบบ โดยการเซาะร่องบนแผ่นวงจรพิมพ์ด้านบนซึ่งใช้เวลาเพียงเล็กน้อย
สำหรับรูปที่ 3 ถึงรูปที่ 5 เป็นตัวเหนี่ยวสำหรับนำบูทคอนเวอร์เตอร์ (L-boost) ซึ่งตัวเหนี่ยวนำนี้จะเป็นอุปกรณ์ที่ใช้งานแล้วและนำมาใช้งานใหม่ ซึ่งสามารถหาซื้อได้จากร้านขายอะไหล่เก่าอุปกรณ์อิเล็กทรอนิกส์
ในรูปที่ 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);
ในรูปที่ 8 ถึงรูปที่ 11 เป็นลักษณะการเตรียมการทดลอง, แหล่งจ่ายไฟเลี้ยงทางด้านอินพุต, แคล้มมิเตอร์สำหรับกระแสเอาต์พุตและตัวต้านทานโหลดสำหรับทดสอบการทำงานต่างๆ
รูปที่ 12 และรูปที่ 13 แสดงตำแหน่งการวัดสัญญาณที่เกิดขึ้นในวงจรสำหรับตรวจสอบการทำงานและลักษณะสัญญาณในขณะวงจรทำงานในโหมดสแตนบายโดยช่องวัดสัญญาณที่ 1 (CH1) เป็นสัญญาณขับขาเกตให้กับเพาเวอร์มอสเฟตและช่องวัดสัญญาณที่ 2 (CH2) เป็นการวัดค่าแรงดันเอาต์พุต (Vo)
ในรูปที่ 14 ถึงรูปที่ 16 เป็นการทดลองการทำงานที่ 1 โดยให้วงจรจ่ายกระแสโหลดที่ 1.27A จากนั้นสังเกตการตอบสนองสัญญาณพัลซ์วิดธ์มอดูเลชั่นที่เกิดขึ้นรวมทั้งค่าแรงดันเอาต์พุตและในรูปที่ 16 เป็นค่าแรงดันละกระแสทางด้านอินพุต
ในรูปที่ 17 ถึงรูปที่ 19 เป็นการทดลองการทำงานที่ 2 ลักษณะเดียวกับการทดลองที่ 1 แต่จะเพิ่มการจ่ายกระแสโหลดที่ 2.16A จากนั้นสังเกตการตอบสนองสัญญาณพัลซ์วิดธ์มอดูเลชั่นที่เกิดขึ้นอีกครั้ง รวมทั้งค่าแรงดันเอาต์พุตและในรูปที่ 19 เป็นค่าแรงดันและกระแสทางด้านอินพุต
กับการทดลองโครงงานนี้เป็นการนำตัวเหนี่ยวนำที่ใช้งานแล้วนำกลับมาใช้อีกครั้ง ด้วยการนำมาใช้งานกับวงจรบูทคอนเวอร์เตอร์ จากนั้นใช้บอร์ดควบคุม Arduino UNO ในการทำงานของวงจรทั้งหมด โดยการทำงานต่างๆ ส่วนใหญ่จะกำหนดในตัวโปรแกรมทั้งหมดอย่างเช่น สัญญาณขับพัลซ์วิดธ์มอดูเลตชั่น การรับสัญญาณป้อนกลับแรงดัน (Vo) และกระแสเอาต์พุต (Io) รวมทั้งการคำหนดความถี่สวิตชิ่ง (fs) ทั้งนี้เพื่อให้ง่ายต่อการปรับแต่งและให้การทำงานของวงจรเป็นไปตามที่เราต้องการ
Reference