Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]

โครงงานนี้เป็นการออกแบบวงจรซิงโครนัสบักคอนเวอร์เตอร์ขนาดเล็กโดยใช้ไอซี L293D เป็นส่วนของวงจรขับกำลังและใช้บอร์ดควบคุม Arduino UNO ในการประมวลผล โดยโครงงานนี้เป็นเนื้อหาต่อเนื่องจากบทความ Simple MPPT DC-DC Buck Converter with Arduino MEGA1280 [EP1] ทั้งนี้เพื่อศึกษาการทำงานของการติดตามตำแหน่งการจ่ายกำลังไฟฟ้าสูงสุดของโซล่าร์เซลล์ (MPPT : Maximum Power Point Tracking) ให้กับโหลดต่างๆ ต่อไป
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/5-4.jpg)
รูปที่ 1 แสดงวงจรที่ออกแบบและใช้ในการทดลองโครงงาน โดยจะแบ่งภาคการทำงานออกเป็น 3 ส่วนคือ ส่วนแรกซ้ายมือจะเป็นแผงโซล่าร์เซลล์ขนาด 24V จะทำหน้าที่เป็นแหล่งจ่ายพลังงานไฟฟ้าให้กับโหลดต่างๆ ที่ต้องการ ส่วนที่สองเป็นบอร์ดประมวลผล Arduino UNO จะทำหน้าที่รับค่าแรงดัน V(n) และ กระแส I(n) มาประมวลผล เพื่อหาค่าตำแหน่งที่แผงโซล่าร์เซลล์ให้พลังงานไฟฟ้าสูงสุดไปยังโหลด ในส่วนที่สามเป็นวงจรบักคอนเวอร์เตอร์ซึ่งจ่ายกระแสให้กับโหลด (RL) ประมาณ 2.4A (600mAx4) ที่แรงดันเอาต์พุตประมาณ 12V โดยโหลดจะหมายถึงวงจรต่างๆ เช่น วงจรชาร์จแบตเตอรี่, แหล่งจ่ายไฟเลี้ยงแรงดันต่ำกว่า 12V หรือปั้มน้ำขนาดเล็ด 12V เป็นต้น
// Simple MPPT DC-DC Converter //
// --- Global Variables ---
// Pin Definitions
const int PWM_PIN = 9; // The Arduino pin (e.g., Pin 9 or 10 on Uno for Timer1)
const int VIN_PIN = A0; // Analog pin for Solar Panel Voltage sensing
const int IIN_PIN = A1; // Analog pin for Solar Panel Current sensing
const int addLED = 13; // Display for Power increased
// MPPT Variables
int pwm = 128; // Initial PWM duty cycle (0-255 for 8-bit timer)
int delta = 3; // Small step size for changing the PWM
float Power_now = 0;
float Power_anc = 0; // "anc" stands for 'previous' or 'ancient'
// ---------------------------------------------
void setup() {
pinMode(PWM_PIN, OUTPUT);
pinMode(addLED, OUTPUT);
Serial.begin(9600);
// --- HIGH-FREQUENCY PWM SETUP (CRITICAL FOR DC-DC CONVERTER) ---
// A standard analogWrite() is too slow.
// This example sets Timer1 on an Uno (Pins 9 and 10) to Fast PWM mode with no prescaler (~31.25 kHz)
TCCR1B = TCCR1B & B11111000 | B00000001; // 31KHz //D11 & 12
TCCR1A |= 0x30; // inversion
analogWrite(PWM_PIN, pwm); // Start PWM at the initial duty cycle
}
void loop() {
// 1. Read and Scale Input Values
float Vin = analogRead(VIN_PIN) * 0.0293; // 30V
float Iin = analogRead(IIN_PIN) * 0.004889; // 5A
// 2. Calculate Current Power
Power_now = Vin * Iin;
// 3. MPPT - Perturb and Observe (P&O) Algorithm
// Power increased
if (Power_now > Power_anc) {pwm += delta; digitalWrite(13, HIGH);delay(100);digitalWrite(13, LOW);}
// Power decreased
if (Power_now < Power_anc) {pwm -= delta; delay(100);}
// 4. Update the PWM Output
// Constrain the PWM value to prevent overflow and protect the circuit (0 to 255)
pwm = constrain(pwm, 10, 250); // Added a small margin from 0 and 255
analogWrite(PWM_PIN, pwm);
// 5. Save the Current Power for the next cycle
Power_anc = Power_now;
// 6. Optional: Print values for debugging/monitoring
Serial.print("Vin: "); Serial.print(Vin);
Serial.print("V, Iin: "); Serial.print(Iin);
Serial.print("A Power: "); Serial.print(Power_now);
Serial.print("W, PWM: "); Serial.println(pwm);
delay(200); // Wait 200ms before the next perturbation
}
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/4-3.jpg)
ในรูปที่ 2 แสดงวงจรต้นแบบของการทดลองวงจร โดยในการทดลองนี้จะใช้แหล่งจ่ายไฟเลี้ยงกระแสตรง (DC Power supply) แทนโซล่าร์เซลล์และปรับค่าแรงดันที่ประมาณ 20V สำหรับทดลอง ซึ่งในการทดลองจะมี 3 เงื่อนไขคือ 1. ปรับค่าแรงดันอินพุตให้เพิ่มขึ้นเรื่อยๆ (15V-20V) ใน เงื่อนไขที่ 2. ทดลองปรับค่าแรงดันอินพุตให้ลดลงเรื่อยๆ (20V-15V) และ เงื่อนไขที่ 3. ไม่ปรับค่าแรงดันอินพุตใดๆ (20V) เพื่อสังเกตการทำงานและใช้ตัวต้านทานค่าคงที่ 20 โอห์มเป็นโหลด (RL)
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/ADD-1024x548.jpg)
ในรูปที่ 3 แสดงผลการทดลองเมื่อใช้ตัวต้านทานค่าคงที่ขนาด 20 โอห์มเป็นโหลด จากนั้นทดลองปรับค่าแรงดันอินพุตให้เพิ่มขึ้นเรื่อยๆ (P(n) > P(n-1)) จะสังเกตเห็นว่าระบบ MPPT จะติดตามไปที่ตำแหน่งการจ่ายพลังงานไฟฟ้าสูงสุดให้กับโหลด (ในกรณีที่โหลดเป็นระบบชาร์จแบตเตอรี่จะทำให้ชาร์ประจุได้มากที่สุด) โดยทั่วไปในช่วงเวลานี้แผงโซล่าร์เซลล์จะได้รับความเข้มแสงสูง
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/SUB-1024x545.jpg)
ในรูปที่ 4 แสดงผลการทดลองเมื่อใช้ตัวต้านทานค่าคงที่ขนาด 20 โอห์มเป็นโหลด จากนั้นทดลองปรับค่าแรงดันอินพุตให้ลดลงเรื่อยๆ (P(n) < P(n-1)) จะสังเกตเห็นว่าระบบ MPPT จะติดตามไปที่ตำแหน่งการจ่ายพลังงานไฟฟ้าสูงสุดให้กับโหลดเช่นเดิม (ในกรณีที่โหลดเป็นระบบชาร์จแบตเตอรี่จะทำให้ชาร์ประจุลดลง) โดยทั่วไปในช่วงเวลานี้แผงโซล่าร์เซลล์จะได้รับความเข้มแสงน้อย
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/no-1024x548.jpg)
ในรูปที่ 5 แสดงผลการทดลองเมื่อใช้ตัวต้านทานค่าคงที่ขนาด 20 โอห์มเป็นโหลด และไม่ปรับค่าแรงดันอินพุตใดๆ (P(n) = P(n-1)) จะสังเกตเห็นว่าระบบ MPPT จะคงตำแหน่งการจ่ายพลังงานไฟฟ้าสูงสุดให้กับโหลดไว้ (ในกรณีที่โหลดเป็นระบบชาร์จแบตเตอรี่จะทำให้ชาร์ประจุคงที่ค่าปัจจุบัน) โดยทั่วไปในช่วงเวลานี้แผงโซล่าร์เซลล์จะได้รับความเข้มแสงคงที่เช่นกัน
![Simple MPPT DC-DC Buck Converter with Arduino UNO [LEP]](https://www.electronicsdna.com/wp-content/uploads/2025/11/6-4.jpg)
สำหรับโครงงานการออกแบบวงจรซิงโครนัสบักคอนเวอร์เตอร์ขนาดเล็กโดยใช้ไอซี L293D เป็นส่วนวงจรขับกำลังและใช้บอร์ดควบคุม Arduino UNO ในการประมวลผล โดยวงจรต้นแบบนี้จ่ายกระแสโหลดได้ไม่สูงนักเนื่องจากใช้ไอซีสำเร็จวงจรขับกำลัง (สามารถออกแบบวงจรขับกำลังใหม่เพิ่มเติมได้ภายหลัง) ทั้งนี้เนื้อหาของการทดลองยังเป็นแนวความคิดเบื้องต้นของการศึกษาการทำงานระบบ MPPT : Maximum Power Point Tracking สำหรับนำความรู้ที่ได้ไปพัฒนาระบบการทำงานต่างๆ เพื่อให้สามารถควบคุมการจ่ายพลังงานไฟฟ้าสูงได้ดีขึ้นต่อไป
Reference
- https://www.ti.com/lit/ug/tidu404/tidu404.pdf
- https://www.researchgate.net/publication/330653338_DC-DC_Boost_Converter_Design_for_Fast_and_Accurate_MPPT_Algorithms_in_Stand-Alone_Photovoltaic_System
- https://www.researchgate.net/figure/Electronic-diagram_fig11_303563850
- https://www.researchgate.net/figure/Flowchart-of-conventional-HC-MPPT_fig10_303563850
- https://www.researchgate.net/figure/Flow-diagram-of-the-perturb-and-observe-P-O-algorithm_fig1_366942234
- https://pdfs.semanticscholar.org/d99a/94f1110d6e68d85c90547ea877aefd8fb53f.pdf
- https://ijarsct.co.in/Paper5700.pdf
- https://www.ijareeie.com/upload/2013/december/25_2Copies_DCToDC.pdf
- https://www.researchgate.net/figure/Searching-strategy-of-conventional-P-O-MPPT-algorithm_fig3_354901321
- https://www.researchgate.net/figure/Flowchart-of-P–O-based-MPPT-Algorithm_fig1_360395692
- https://www.ti.com/lit/an/slvafc9/slvafc9.pdf
- https://energybases.com/blog/mppt-explained-principles-benefits-top-brands/