มาเริ่มกันเลยวัยรุ่น!
วันนี้รุ่นพี่จะพาน้องๆ มาทำความรู้จักกับวงจรอิเล็กทรอนิกส์ตัวใหม่ที่เรียกว่า "Boost Converter" หรือบางทีก็เรียกกันว่า Step-up Converter, DC-to-DC Converter หรือ SMPS (Switch Mode Power Supply) จะเรียกยังไงก็ได้ตามสะดวกเลยจ้า
หน้าที่หลักของวงจรตัวนี้คือ เพิ่มแรงดันไฟฟ้ากระแสตรง (DC) จากระดับต่ำให้สูงขึ้นอย่างมีประสิทธิภาพ แต่ต้องจำให้ขึ้นใจนะว่า วงจรนี้ใช้กับไฟ DC เท่านั้น! ถ้าจะเพิ่มแรงดันไฟ AC ต้องใช้หม้อแปลง (Transformer) ซึ่งเป็นเรื่องของอีกบทเรียนนึง
สำหรับ Boost Converter ที่รุ่นพี่จะออกแบบในโปรเจคนี้ มันรับแรงดันเข้า (Input) ที่ 4V - 5V DC และสามารถปรับแรงดันออก (Output) ได้ตั้งแต่ 5V ไปจนถึง 30V DC ตามที่เราต้องการเลย แต่! มีข้อแม้สำคัญนึงนะน้อง อย่าไปต่อโหลดที่กินกระแสสูงๆ เข้านะ เพราะยิ่งแรงดันออกสูง กระแสที่จ่ายได้จะลดลงตามกฎการอนุรักษ์พลังงาน ระวังวงจรจะช็อตซะก่อน!
รายการอุปกรณ์ (จัดเต็มเวอร์):
ถ้าอยากได้วงจรที่เสถียรและประสิทธิภาพเป๊ะ ต้องเลือกใช้อุปกรณ์คุณภาพดีตามนี้เลย:
- ATTINY85 (ไมโครคอนโทรลเลอร์ 8-BIT)
- IRF Z44 MOSFET (แบบ N-Channel)
- ไดโอด SCHOTTKY รุ่น 1N5819
- ตัวเหนี่ยวนำ หรือคอยล์ (Inductor/Coil)
- ซ็อกเก็ต IC แบบ 8-PIN DIP
- สกรูเทอร์มินอล (Screw Terminal)
- แผ่น PCB ด้านเดียวหรือสองด้าน
- คาปาซิเตอร์แบบอิเล็กโทรไลต์ (Electrolytic Capacitor)
- ตัวต้านทาน (Resistors)
- ชีลด์สำหรับโปรแกรม ATTINY85
ATTINY85 - สมองจิ๋วแต่แจ๋ว:

ATtiny85 เป็นไมโครคอนโทรลเลอร์ 8-bit สมรรถนะสูง ประหยัดพลังงาน ใช้สถาปัตยกรรม RISC มันมี Flash Memory ขนาด 8 Kbytes ที่โปรแกรมในระบบได้ (In-System Programmable) และเป็นที่นิยมเพราะขนาดกะทัดรัดแต่ความสามารถครบครัน
เจาะลึก ATtiny85: ไอซีตัวน้อยพลังล้น
ATtiny85 เป็นไมโครคอนโทรลเลอร์จากตระกูล AVR ของ Microchip (เดิมคือ Atmel) แม้จะมีแค่ 8 ขา แต่ความสามารถไม่ธรรมดา! มันสร้างสัญญาณ PWM ที่แม่นยำและอ่านค่าอะนาล็อกได้อย่างเที่ยงตรง เหมาะมากสำหรับโปรเจคที่ต้องการประหยัดพื้นที่
แผนภาพขา (Pinout) ของ ATTINY85:

แผนภาพขา (Pinout) ของ IRF Z44 (MOSFET):

หลักการทำงาน (เตรียมสมองมาให้พร้อม):
หลักการทำงานของ Boost Converter นั้นคล้ายกับ SMPS (Switch Mode Power Supply) สมัยใหม่นี่แหละ เลยทำให้บางครั้งเราเรียกมันว่า SMPS ไปด้วย เพื่อให้เข้าใจง่ายขึ้น รุ่นพี่จะอธิบายด้วยวงจรด้านล่างนี้

วงจรอิเล็กทรอนิกส์นี้ประกอบด้วยอุปกรณ์พาสซีฟ 5 ชนิด:
- ตัวเหนี่ยวนำ (L)
- สวิตช์ (SW)
- ไดโอดช็อตต์กี (D)
- คาปาซิเตอร์อิเล็กโทรไลต์ (C)
- ตัวต้านทานโหลด (R)
Vi คือแรงดันไฟฟ้าขาเข้า สำหรับวงจรของรุ่นพี่จะอยู่ที่ 4V ถึง 5V ส่วน Vout คือแรงดันไฟฟ้าขาออกของวงจร
หัวใจของวงจร Boost Converter คือการจัดการพลังงานผ่านการสวิตชิ่ง โดยใช้อุปกรณ์หลัก 5 อย่าง:
- ตัวเหนี่ยวนำ (Inductor - L): เก็บสะสมพลังงาน
- สวิตช์ (MOSFET): ควบคุมการไหลของกระแส
- ไดโอดช็อตต์กี้ (Schottky Diode - D): ป้องกันกระแสย้อนกลับและรักษาระดับแรงดัน
- ตัวเก็บประจุ (Capacitor - C): กรองแรงดันเอาต์พุตให้เรียบ
- โหลด (Load - R): อุปกรณ์ปลายทางที่เราใช้งาน
ทฤษฎีการทำงาน (จัดเต็มให้เลย):-
STEP 1:- เมื่อสวิตช์ (SW) ปิด (ON) ตัวเหนี่ยวนำ (คอยล์) จะต่อขนานกับแหล่งจ่ายแรงดันเข้า (Vi) กระแสเล็กๆ สมมติว่า I จะเริ่มไหล ค่าของกระแสนี้จะค่อยๆ เพิ่มขึ้นช้าๆ และหลังจากเวลาผ่านไป กระแส I จะไปถึงค่าสูงสุดของมัน กระแสที่เพิ่มขึ้นนี้สร้างฟลักซ์แม่เหล็กที่เปลี่ยนแปลง (Changing Magnetic Flux) รอบๆ ตัวเหนี่ยวนำ และตามกฎข้อแรกของฟาราเดย์ การเปลี่ยนแปลงของฟลักซ์แม่เหล็กจะสร้างแรงดันเหนี่ยวนำ (Induced EMF) ขึ้นในวงจร (ในกรณีนี้คือในตัวเหนี่ยวนำ) และตามกฎข้อสองของฟาราเดย์ อีกที ขั้วของแรงดันเหนี่ยวนำนี้จะตรงข้ามกับแรงดันเข้า (Vin)
สรุป Step 1 (สวิตช์ ON): เมื่อ MOSFET นำกระแส (ปิด) ตัวเหนี่ยวนำจะต่อขนานกับแหล่งจ่ายไฟเข้า (Vi) กระแสเริ่มไหลผ่านตัวเหนี่ยวนำ เพิ่มขึ้นเรื่อยๆ และสร้างสนามแม่เหล็กเพื่อเก็บพลังงาน ในช่วงเวลานี้ ไดโอดจะบล็อกไม่ให้กระแสจากเอาต์พุตไหลย้อนกลับมา
STEP 2:- เมื่อสวิตช์ (SW) ปิด (ON) ตัวเก็บประจุ C จะเริ่มคายประจุผ่านตัวต้านทานโหลด (R) {ระหว่างอธิบาย step 1 พี่สมมติว่าตัวเก็บประจุ C มีประจุอยู่แล้วนะ} เมื่อสวิตช์ (SW) ON อยู่ พลังงานไฟฟ้าที่ไหลในตัวต้านทานโหลดจะมาจากตัวเก็บประจุ C ที่คอยรักษาระดับไว้
สรุป Step 2 (ตัวเก็บประจุคายประจุ): ขณะที่สวิตช์ ON อยู่ พลังงานที่จ่ายให้โหลดจะมาจากตัวเก็บประจุ (C) ที่ถูกชาร์จไว้ก่อนหน้า เพื่อรักษาแรงดันให้คงที่
STEP 3:- เมื่อสวิตช์ (SW) เปิด (OFF) ตัวเหนี่ยวนำ L จะต่ออนุกรมกับแรงดันเข้า (Vi) และขั้วของแรงดันเหนี่ยวนำที่ตกคร่อมตัวเหนี่ยวนำจะตรงข้ามกับแรงดันเข้า (Vi) ดังนั้นแรงดันเอาต์พุตทั้งหมด (Vout) จะเป็นผลรวมของแรงดันเข้า (Vin) และแรงดันเหนี่ยวนำ เพราะในสเตปนี้ แรงดันเข้าและแรงดันเหนี่ยวนำทำงานเหมือนแบตเตอรี่สองก้อนต่ออนุกรม คราวนี้ตัวเก็บประจุ C จะเริ่มชาร์จ และคราวนี้ตัวต้านทานโหลด R จะได้รับพลังงานจากผลรวมของแรงดันเหนี่ยวนำและแรงดันเข้า (Vin)
สรุป Step 3 (สวิตช์ OFF): เมื่อ MOSFET หยุดนำกระแส (เปิด) สนามแม่เหล็กในตัวเหนี่ยวนำจะยุบตัวลงอย่างรวดเร็ว สร้างแรงดันเหนี่ยวนำย้อนกลับ (Flyback Voltage) ซึ่งบวกเพิ่มเข้าไปในแรงดันเข้า (Vi) ส่งผลให้แรงดันรวมที่ไหลผ่านไดโอดมีค่ามากกว่า Vi พลังงานส่วนนี้จะไปชาร์จตัวเก็บประจุและจ่ายให้โหลด
STEP 4:- เมื่อสวิตช์ (SW) ปิด (ON) อีกครั้ง ตัวเหนี่ยวนำก็เริ่มเก็บสะสมพลังงานไฟฟ้าในสนามแม่เหล็กของมันอีกครั้ง และตัวต้านทานโหลดจะได้รับพลังงานจากตัวเก็บประจุ C ทฤษฎีส่วนที่เหลือของสเตปนี้ก็เหมือนกับ STEP 1 เป๊ะ
สรุป Step 4 (ทำซ้ำ): กระบวนการนี้จะเกิดซ้ำๆ หลายหมื่นครั้งต่อวินาที (ความถี่สูง) เพื่อรักษาแรงดันเอาต์พุตให้สูงกว่าแรงดันเข้าได้อย่างต่อเนื่อง
ตอนลงมือทำวงจร (สู้งานนะน้อง):-
ระหว่างทำวงจร ต้องมีหัวแร้งที่ควบคุมอุณหภูมิได้ เพื่อปรับอุณหภูมิให้เหมาะสม และอุปกรณ์ทั้งหมดที่พี่ใช้ที่นี่เป็นแบบ THT (Through-hole Technology) สำหรับการบัดกรีทุกชิ้นส่วน พี่ใช้ PCB แบบสองหน้า (Double-sided PCB) เพราะคุณภาพการกระจายความร้อนดีมาก จำเป็นอย่างยิ่งที่น้องต้องมีประสบการณ์บัดกรีที่ดี ไม่เช่นนั้นพอจ่ายไฟให้วงจรครั้งแรก อาจมีอะไรบางอย่างระเบิดตูมตามมาได้ (ห้ามช็อตนะตัวนี้)
รูปผลงานของพี่:-



รูป PCB ตัวจริง:


ชิลด์โปรแกรม ATtiny85:


วิธีโปรแกรม ATtiny85 ด้วย Arduino UNO:
ก่อนจะโปรแกรม ATtiny85 ผ่าน Arduino IDE ได้ สิ่งแรกที่ต้องทำคือติดตั้งบอร์ด ATtiny เข้าไปในโปรแกรม ตามขั้นตอนนี้เลยน้อง ง่ายนิดเดียว
- ขั้นตอนที่ 1: เชื่อมต่อคอมพิวเตอร์กับอินเทอร์เน็ต แล้วเปิดโปรแกรม Arduino IDE ขึ้นมา
- ขั้นตอนที่ 2: คลิกที่เมนู Tools > Board > Boards Manager... พอหน้าต่าง Boards Manager เปิดขึ้นมา ให้พิมพ์คำว่า attiny ลงในช่องค้นหา รอสักครู่ก็จะเห็นไลบรารีของ ATtiny โผล่มาให้เห็น
- ขั้นตอนที่ 3: คลิกปุ่ม Install เพื่อติดตั้งไลบรารีนั้นซะ เรียบร้อยบอร์ด ATtiny ก็จะถูกเพิ่มเข้ามาแล้ว
- ขั้นตอนที่ 4: กลับไปที่หน้าแรกของ Arduino IDE อีกที แล้วคลิก Tools > Board ดูสิ จะเห็นตัวเลือกบอร์ด ATtiny โผล่มาให้เลือกแล้ว ง่ายมั้ยล่ะ!
การเบิร์น Bootloader ลง ATtiny85:
ATtiny85 ตัวใหม่ที่เพิ่งซื้อมาจากตลาดหรือสั่งออนไลน์ มันจะยังไม่มี Bootloader ติดมาด้วยนะน้อง เพราะฉะนั้นเราต้องเบิร์น Bootloader ลงไปเอง ซึ่งพี่มีชิลด์โปรแกรม DIY กับวงจรให้ดูเป็นตัวอย่าง เอาไปทำตามได้เลย งานนี้จัดไปวัยรุ่น!
ขั้นตอนการเบิร์น Bootloader ตามนี้เลย:
- ขั้นตอนที่ 1: ต่อ ATtiny85 เข้ากับ Arduino UNO ด้วยสายจัมเปอร์ ตาม Schematic ที่พี่ให้ไว้ ตรวจสอบให้ดีว่าเสียบถูกขาทุกเส้นนะ ไม่งั้นเบิร์นไม่ขึ้นหรอก
- ขั้นตอนที่ 2: เชื่อม Arduino UNO เข้ากับคอมพิวเตอร์ แล้วอัปโหลดสเก็ตช์ ArduinoISP ลงบน Arduino UNO (หาได้จาก File > Examples > ArduinoISP) พออัปโหลดเสร็จ ก็พร้อมเบิร์น Bootloader แล้ว
- ขั้นตอนที่ 3: ใน Arduino IDE คลิก Tools แล้วตั้งค่าตามนี้: Board > ATtiny Microcontrollers > ATtiny85, Processor > ATtiny85, Clock > Internal 8 MHz
- ขั้นตอนที่ 4: คลิก Tools > Programmer > Arduino as ISP
- ขั้นตอนที่ 5: คลิก Tools > Burn Bootloader ได้เลย! รอสักพัก ถ้าเห็นข้อความว่า "Done burning bootloader." แสดงว่าเสร็จสิ้น สู้งานนะน้อง!
สรุปขั้นตอนโปรแกรม ATtiny85:
ก่อนจะใช้ ATtiny85 ได้ เราต้องทำสองขั้นตอนหลักคือ เบิร์น Bootloader และ อัปโหลดโค้ด ผ่าน Arduino UNO โดยใช้เทคนิค Arduino as ISP นะครับ ห้ามช็อตนะตัวนี้!
1. เตรียม Arduino IDE ให้พร้อม:
- เข้าไปที่
File > Preferencesแล้วเพิ่ม URL สำหรับบอร์ด ATtiny ในช่อง Additional Boards Manager ไปเลย - จากนั้นไปที่
Tools > Board > Boards Managerหาคำว่า "attiny" แล้วกด Install จัดไปวัยรุ่น
2. เผา Bootloader ลงไป (Burn Bootloader):
ชิพที่ซื้อมาใหม่ๆ มักจะยังไม่มี Bootloader ติดมา เราต้องติดตั้งให้มันก่อน เพื่อให้ชิพทำงานที่ความถี่ 8 MHz (Internal) ได้:
- ต่อ ATtiny85 เข้ากับ Arduino UNO ตามรูปวงจร Programming Shield
- เลือกตัวอย่างสเก็ตช์
ArduinoISPแล้วอัปโหลดลง Arduino UNO - ตั้งค่า
Tools > Board: ATtiny25/45/85และProcessor: ATtiny85 - เลือก
Clock: Internal 8 MHz - เลือก
Programmer: Arduino as ISP - คลิก "Burn Bootloader" ได้เลย สู้งานนะน้อง
อัปโหลดสเก็ตช์ Boost Converter:
หลังจากอัปโหลด Bootloader สำเร็จแล้ว ก็พร้อมจะอัปโหลดสเก็ตช์สำหรับวงจร Boost Converter ลงบนชิพ ATtiny85 ได้เลย ข้อสำคัญ! อย่าไปเปลี่ยนการตั้งค่าใน Arduino IDE จากตอนที่ Burn Bootloader เลย ไม่งั้นสเก็ตช์จะอัปโหลดไม่ขึ้นนะตัวนี้ เปิดสเก็ตช์ Boost Converter ขึ้นมา แล้วไปที่เมนู Sketch เลือก Upload using Programmer เท่านี้สเก็ตช์ก็จะถูกอัปโหลดลง ATtiny85 สำเร็จ ทีนี้ก็ถอดชิพ ATtiny85 ออกจาก Programming Shield ไปเสียบลงบน PCB Boost Converter ของเราได้เลย งานนี้ได้ Boost Converter ทำมือใช้เองแน่นอน!
สเก็ตช์ของ Boost Converter:
โค้ดนี้ทำหน้าที่เป็นตัวควบคุมแบบ ระบบป้อนกลับ (Closed-loop Feedback System) เพื่อรักษาระดับแรงดันไฟฟ้าให้คงที่ตามที่เราตั้งไว้ด้วยโพเทนชิโอมิเตอร์
#define F_CPU 8000000 // Defines CPU frequency at 8MHz
int pwm = 1; // Output pin for sending PWM signal to MOSFET
int potinput = A2; // Pin to read value from Potentiometer for desired voltage
int feedbackinput = A3; // Pin to read feedback voltage from Output
int potinputval;
int feedbackinputval;
int pwmval;
void setup() {
// Sets Timer Registers to generate high-frequency PWM
TCCR0A = 2 << COM0A0 | 2 << COM0B0 | 3 << WGM00;
TCCR0B = 0 << WGM02 | 1 << CS00;
TCCR1 = 0 << PWM1A | 0 << COM1A0 | 1 << CS10;
GTCCR = 1 << PWM1B | 2 << COM1B0;
pinMode(pwm, OUTPUT);
pinMode(potinput, INPUT);
pinMode(feedbackinput, INPUT);
digitalWrite(pwm, LOW);
pwmval = 0;
}
void loop() {
potinputval = analogRead(potinput);
potinputval = map(potinputval, 1023, 0, 255, 0); // Converts target value
feedbackinputval = analogRead(feedbackinput);
feedbackinputval = map(feedbackinputval, 1023, 0, 255, 0); // Reads actual voltage
// Dynamic voltage adjustment logic
while (potinputval > feedbackinputval) { // If actual voltage is lower than target
if (pwmval == 230) { // Limits maximum Duty Cycle for safety
potinputval = analogRead(potinput);
potinputval = map(potinputval, 1023, 0, 255, 0);
feedbackinputval = analogRead(feedbackinput);
feedbackinputval = map(feedbackinputval, 1023, 0, 255, 0);
}
else {
pwmval = pwmval + 1;
analogWrite(pwm, pwmval);
potinputval = analogRead(potinput);
potinputval = map(potinputval, 1023, 0, 255, 0);
feedbackinputval = analogRead(feedbackinput);
feedbackinputval = map(feedbackinputval, 1023, 0, 255, 0);
}
}
while (potinputval < feedbackinputval) {
if (pwmval == 0) {
potinputval = analogRead(potinput);
potinputval = map(potinputval, 1023, 0, 255, 0);
feedbackinputval = analogRead(feedbackinput);
feedbackinputval = map(feedbackinputval, 1023, 0, 255, 0);
}
else {
pwmval = pwmval - 1;
analogWrite(pwm, pwmval);
potinputval = analogRead(potinput);
potinputval = map(potinputval, 1023, 0, 255, 0);
feedbackinputval = analogRead(feedbackinput);
feedbackinputval = map(feedbackinputval, 1023, 0, 255, 0);
}
}
}
เรียบร้อย! งานเข้า
ขอบคุณมากๆ นะจ๊ะ!
ผู้เขียน - Ramji Patel376 จากประเทศอินเดีย
ลิงก์สำหรับซื้ออุปกรณ์อิเล็กทรอนิกส์ (จัดไปวัยรุ่น!):

รายการอุปกรณ์ที่ต้องจัด (ห้ามช็อตนะตัวนี้):