Basics DC-DC Buck-Boost Converter [EP2]

ในตอนที่ 2 นี้จะเป็นลำดับขั้นตอนการทดลอง Buck-Boost Converter ในแต่ละส่วน โดยการแยกในส่วนของวงจรบัก คอนเวอร์เตอร์ และส่วนของวงจรบูท คอนเวอร์เตอร์ ทั้งนี้เพื่อตรวจสอบกาทำงานและทดสอบประสิทธิภาพที่เกิดขึ้น โดยในโปรแกรมข้างล่างนี้จะใช้ในการทดลองและสามารถปรับแต่งค่าที่เกิดขึ้นได้ง่าย

สำหรับในกรอบข้างล่างนี้จะเป็นโปรแกรมการทดลองที่ 1 เพื่อทดลอง Buck converter ซึ่งเราสามารถนำโปรแกรมนี้ใช้ในการทดลองกับบอร์ดที่เราประกอบขึ้นได้เลย จากนั้นให้เราเปลี่ยนค่าตัวแปร OCR1A ให้อยู่ในช่วง 10-250 จากนั้นให้เราโปรแกรมและสังเกตผลการทดลอง โดยการวัดค่าแรงดันที่เอาต์พุต ซึ่งค่าแรงดันที่เอาต์พุตจะเป็นสัดส่วนกับค่าตัวแปร OCR1A ที่เรากำหนดให้นั้นเอง

/*
   Project Basics DC-DC Buck-Boost Converter
   Demo Code Program Arduino UNO for Synchronous Buck Converter Section   
   R&D By : www.electronicsDNA.com 
   Date: 2-3-2021 , (V.0)
*/

 define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
 define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
 int Setpoint = 512;  // 15V @ Voltage output 
 int error = 0;
 int Output_PWM = 0;
 int Delay = 1;

 void setup()
 {
 Serial.begin(9600);        // Connect to the serial port
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT); 
 pinMode(9,OUTPUT);
 pinMode(10,OUTPUT);
 digitalWrite(5, LOW);
 digitalWrite(6, LOW);
 digitalWrite(9, LOW);
 digitalWrite(10, LOW); 
 //  void Setup_timer1() {
 sbi (TCCR1B, CS10);
 cbi (TCCR1B, CS11);
 cbi (TCCR1B, CS12);
 // Timer1 PWM Mode set to Phase Correct PWM
 cbi (TCCR1A, COM1A0);  // clear OC1A on Compare Match, PWM pin 9
 sbi (TCCR1A, COM1A1);  
 sbi (TCCR1A, COM1B0);  // clear OC1B on Compare Match, PWM pin 10
 sbi (TCCR1A, COM1B1);
 sbi (TCCR1A, WGM10);   // Mode 1  / phase correct PWM
 cbi (TCCR1A, WGM11);
 cbi (TCCR1B, WGM12);
 cbi (TCCR1B, WGM13);
 //void Setup_timer0() {    
 sbi (TCCR0B, CS00);
 cbi (TCCR0B, CS01);
 cbi (TCCR0B, CS02);  
 // Timer0 PWM Mode set to Phase Correct PWM
 cbi (TCCR0A, COM0A0);  // clear OC0A on Compare Match, PWM pin 5
 sbi (TCCR0A, COM0A1);   
 sbi (TCCR0A, COM0B0);  // clear OC0B on Compare Match, PWM pin 6
 sbi (TCCR0A, COM0B1);
 sbi (TCCR0A, WGM00);   // Mode 1 phase correct PWM
 cbi (TCCR0A, WGM01);
 cbi (TCCR0B, WGM02);  
 }

 void loop(){   

 OCR0A = 0;         // pwm pin 6 Boost mode
 OCR0B = 255;         // pwm pin 5 Boost mode and Active ON

 Output_PWM = 128;   // Test set  Output_PWM =128 

 OCR1A = Output_PWM;   // pwm pin 9 Buck mode 
 OCR1B = OCR1A+6;      // pwm pin 10 Buck mode         
 delay(10);  
 }

ในกรอบโปรแกรมการทดลองที่ 1 แสดงโปรแกรมการทดลอง Buck converter)

Basics DC-DC Buck-Boost Converter
รูปที่ 1 การวัดสัญญาณที่ขา D9 และ D10 ของบอร์ด Arduino UNO
Basics DC-DC Buck-Boost Converter
รูปที่ 2 ลักษณะของสัญญาณที่วัดได้จากโปรแกรมการทดลองที่ 1 CH1 = D9, CH2 = D10

ในส่วนของโปรแกรมที่ 2 (ข้างล่างนี้) จะเป็นส่วนของการทำงาน Boost converter ซึ่งจะมีลักษณะของการทำงานคล้ายกับการทดลอง Buck converter และค่าตัวแปรที่เราจะใช้ในการทดลองจะเป็น OCR0A โดยให้เราทำลองปรับไปที่ค่าต่างๆ ในช่วง 10-250 จากนั้นให้เราสังเกตการทำงานของวงจรบูทคอนเวอร์เตอร์ที่เกิดขึ้นนั้นเอง

/*
   Project Basics DC-DC Buck-Boost Converter
   Demo Code Program Arduino UNO for Synchronous Boost Converter Section   
   R&D By : www.electronicsDNA.com 
   Date: 2-3-2021 , (V.0)
*/
 

 define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
 define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
 int Setpoint = 512;  // 15V @ Voltage output 
 int error = 0;
 int Output_PWM = 0;
 int Delay = 1;

 void setup()
 {
 Serial.begin(9600);        // Connect to the serial port
 pinMode(5,OUTPUT);
 pinMode(6,OUTPUT); 
 pinMode(9,OUTPUT);
 pinMode(10,OUTPUT);
 digitalWrite(5, LOW);
 digitalWrite(6, LOW);
 digitalWrite(9, LOW);
 digitalWrite(10, LOW); 
 //  void Setup_timer1() {
 sbi (TCCR1B, CS10);
 cbi (TCCR1B, CS11);
 cbi (TCCR1B, CS12);
 // Timer1 PWM Mode set to Phase Correct PWM
 cbi (TCCR1A, COM1A0);  // clear OC1A on Compare Match, PWM pin 9
 sbi (TCCR1A, COM1A1);  
 sbi (TCCR1A, COM1B0);  // clear OC1B on Compare Match, PWM pin 10
 sbi (TCCR1A, COM1B1);
 sbi (TCCR1A, WGM10);   // Mode 1  / phase correct PWM
 cbi (TCCR1A, WGM11);
 cbi (TCCR1B, WGM12);
 cbi (TCCR1B, WGM13);
 //void Setup_timer0() {    
 sbi (TCCR0B, CS00);
 cbi (TCCR0B, CS01);
 cbi (TCCR0B, CS02);  
 // Timer0 PWM Mode set to Phase Correct PWM
 cbi (TCCR0A, COM0A0);  // clear OC0A on Compare Match, PWM pin 5
 sbi (TCCR0A, COM0A1);   
 sbi (TCCR0A, COM0B0);  // clear OC0B on Compare Match, PWM pin 6
 sbi (TCCR0A, COM0B1);
 sbi (TCCR0A, WGM00);   // Mode 1 phase correct PWM
 cbi (TCCR0A, WGM01);
 cbi (TCCR0B, WGM02);  
 }

void loop(){   
 
OCR1A = 255;  // pwm pin 9 Hi Boost mode and Active ON 
OCR1B = 0;       // pwm pin 10 Lo Boost mode 

Output_PWM = 128;   // Test set  Output_PWM =128 

OCR0A = Output_PWM;   // pwm pin 6 Boost mode 
OCR0B = OCR0A+6;      // pwm pin 5 Boost mode 
delay(10);  
 }

ในกรอบโปรแกรมการทดลองที่ 2 แสดงโปรแกรมการทดลอง Boost converter

Basics DC-DC Buck-Boost Converter
รูปที่ 3 การวัดสัญญาณที่ขา D5 และ D6 ของบอร์ด Arduino UNO
Basics DC-DC Buck-Boost Converter
รูปที่ 4 ลักษณะของสัญญาณที่วัดได้จากโปรแกรมการทดลองที่ 2 CH1 = D6, CH2 = D5
รูปที่ 5 แสดงวงจร Buck-Boost Converter ที่ออกแบบและใช้ในการทดลอง

สำหรับในตอนที่สองนี้ นำตัวอย่างโปรแกรมที่ใช้ในการทดลองและผลการทดลองทั้ง 2 เพื่อเป็นการทดลองเบื้องต้นว่าสามารถใช้งานได้ และทำงานได้อย่างถูกต้อง โดยคอนเวอร์เตอร์ทั้งหมดของโครงงานนี้จะทำงานในลักษณะของการซิงโครนัส (Synchronous Buck-Boost Converter) เพื่อให้มีประสิทธิภาพในการทำงานที่สูงขึ้น โดยแอดมินนำโปรแกรมที่ทดลองมาแชร์ก่อนครับ ในส่วนของการทดลองวงจรบักคอนเวอร์เตอร์, วงจรบูทคอนเวอร์เตอร์ และการทดลองการทำงานร่วมกันทั้งหมดจะนำมาแชร์อีกครั้งในตอนต่อไปนะครับ.

Reference

  1. https://en.wikipedia.org/wiki/Buck%E2%80%93boost_converter
  2. https://learnabout-electronics.org/PSU/psu33.php
  3. https://www.benthamopen.com/FULLTEXT/TOEEJ-11-57
  4. https://www.semanticscholar.org/paper/Study-of-bi-directional-buck-boost-converter-with-Su-Xu/90f787d12c0115b595692b8dc7ea5223fe81ccbe
  5. https://www.allaboutcircuits.com/technical-articles/utilization-of-simple-converters-circuits/
  6. https://www.powerelectronics.com/technologies/dc-dc-converters/article/21862686/wide-vin-and-highpower-challenges-with-buckboost-converters
  7. https://www.researchgate.net/figure/Noninverting-synchronous-DC-DC-buck-boost-converter_fig1_240918085
  8. https://www.semanticscholar.org/paper/A-synchronous-buck-boost-converter-on-a-0.5%C2%B5m-George-Lehmann/5af9242cfbbf3d6d6c1ec4ccf42eda2dc78f0c0a
  9. https://www.sciencedirect.com/science/article/abs/pii/S0019057816307443
  10. https://www.ti.com/tool/PMP10681?utm_source=google&utm_medium=cpc&utm_campaign=sys-auto-null-refdesdynamic-cpc-evm-google-wwe&utm_content=refdesdynamic&ds_k=DYNAMIC+SEARCH+ADS&DCM=yes&gclid=Cj0KCQiA-OeBBhDiARIsADyBcE6TvFBcafk-_jlOM9j-p0e-Qm68J3DV9B1pHxgMXsUyr76Gcjmb0SMaAsyjEALw_wcB&gclsrc=aw.ds