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)
ในส่วนของโปรแกรมที่ 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
สำหรับในตอนที่สองนี้ นำตัวอย่างโปรแกรมที่ใช้ในการทดลองและผลการทดลองทั้ง 2 เพื่อเป็นการทดลองเบื้องต้นว่าสามารถใช้งานได้ และทำงานได้อย่างถูกต้อง โดยคอนเวอร์เตอร์ทั้งหมดของโครงงานนี้จะทำงานในลักษณะของการซิงโครนัส (Synchronous Buck-Boost Converter) เพื่อให้มีประสิทธิภาพในการทำงานที่สูงขึ้น โดยแอดมินนำโปรแกรมที่ทดลองมาแชร์ก่อนครับ ในส่วนของการทดลองวงจรบักคอนเวอร์เตอร์, วงจรบูทคอนเวอร์เตอร์ และการทดลองการทำงานร่วมกันทั้งหมดจะนำมาแชร์อีกครั้งในตอนต่อไปนะครับ.
Reference
- https://en.wikipedia.org/wiki/Buck%E2%80%93boost_converter
- https://learnabout-electronics.org/PSU/psu33.php
- https://www.benthamopen.com/FULLTEXT/TOEEJ-11-57
- https://www.semanticscholar.org/paper/Study-of-bi-directional-buck-boost-converter-with-Su-Xu/90f787d12c0115b595692b8dc7ea5223fe81ccbe
- https://www.allaboutcircuits.com/technical-articles/utilization-of-simple-converters-circuits/
- https://www.powerelectronics.com/technologies/dc-dc-converters/article/21862686/wide-vin-and-highpower-challenges-with-buckboost-converters
- https://www.researchgate.net/figure/Noninverting-synchronous-DC-DC-buck-boost-converter_fig1_240918085
- https://www.semanticscholar.org/paper/A-synchronous-buck-boost-converter-on-a-0.5%C2%B5m-George-Lehmann/5af9242cfbbf3d6d6c1ec4ccf42eda2dc78f0c0a
- https://www.sciencedirect.com/science/article/abs/pii/S0019057816307443
- 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