Getting Started STM32F103C Board with Arduino IDE [LEP]

ในตอนสุดท้ายของการเริ่มต้นใช้งานบอร์ดควบคุม STM32F103C8T6 จะเป็นการนำไปประยุกต์ใช้งานกับวงจรดีซี ทู ดีซี แบบซิงโครนัสบัก คอนเวอร์เตอร์ (DC to DC Synchronous Buck Converter) โดยในการทดลองจะใช้บอร์ดต้นแบบซิงโครนัสบัก คอนเวอร์เตอร์สำเร็จ และรับแรงดันอินพุต (Vi) 20V กำหนดค่าแรงดันเอาต์พุต (Vo) ไว้ที่ 12V/2.4A ต่อเนื่อง (Continuous Power : COP) เป็นบอร์ดแยกให้สามารถทดลองการทำงานได้ง่าย โดยในการทดลองนี้เป็นแนวความคิดเบื้องต้นของการนำไปใช้งานอื่นๆ ต่อไป


รูปที่ 1 และรูปที่ 2 แสดงบอร์ดต้นแบบซิงโครนัสบัก คอนเวอร์เตอร์ และวงจรสำหรับบอร์ดวงจรซิงโครนัสบัก คอนเวอร์เตอร์ สำหรับใช้ในการทดลองโครงงานร่วมกับบอร์ดควบคุม STM32F103C8T6 ทั้งนี้บอร์ดต้นแบบซิงโครนัสบัก คอนเวอร์เตอร์ สามารถต่อใช้งานร่วมกับไมโครคอนโทรลเลอร์อื่นได้ เช่น Arduino, NodeMCU ESP32, NodeMCU ESP8266 และ Raspberry Pi Pico เป็นต้น
#include <HardwareTimer.h>
int pwmValue = 0;
int setValue = 0;
// Use Timer
HardwareTimer pwmtimer4(4); // CH4 = PIN PB9
// CH3 = PIN PB8
// CH2 = PIN PB7
// CH1 = PIN PB6
void setup() {
Serial.begin(9600);
// Configure Timer 4 for PWM
pwmtimer4.pause();
pwmtimer4.setOverflow(1800); // Sets PWM frequency
pwmtimer4.setPrescaleFactor(1);
pwmtimer4.refresh();
pwmtimer4.resume();
// Set the pin mode for the PWM output pin
pinMode(PB9, PWM); // Assuming PB9 is connected to Timer 4
}
void loop() {
int sensorVo = analogRead(PA2); // Reads 0 - 4095
if (sensorVo > 2020) {setValue = setValue-5;}
if (sensorVo < 2000) {setValue = setValue+5;}
pwmValue = map(setValue, 0, 4095, 0, 1800);
pwmWrite(PB9, pwmValue); // OUTPUT duty cycle
// Serial.print(" Vo = ");
// Serial.println(sensorVo);
delay(1);
}
Arduino Library for HardwareTimer.h


รูปที่ 3 และรูปที่ 4 เป็นการต่อวงจรระหว่างวงจรซิงโครนัสบัก คอนเวอร์เตอร์ และบอร์ดควบคุม STM32F103C สำหรับการทดลอง โดยจะใช้ออสซิลโลสโคปวัดสัญญาณพัลซ์วิดมอดูเลตชั่น (CH1) ในการตอบสนองต่อโหลดทางด้านเอาต์พุตที่กระแส 1.2A และ 2.4A รวมทั้งวัดค่าแรงดันเอาต์พุต์ (CH2) ที่เกิดขึ้น


รูปที่ 5 และรูปที่ 6 แสดงการทดลองที่ 1 โดยวัดค่าแรงดันเอาต์พุต (Vo) มีค่าประมาณ 12V (เมื่อวัดค่าด้วยดิจิตอลมัลติมิเตอร์) ของวงจรซิงโครนัสบัก คอนเวอร์เตอร์ และสัญญาณพัลซ์วิดมอดูเลตชั่นที่ขา PB9 ความถี่สวิตชิ่ง (Fsw) ประมาณ 35kHz (CH1) ค่าแรงดันเอาต์พุต (CH2) ที่เกิดขึ้นในขณะสแตนบาย


รูปที่ 7 และรูปที่ 8 การทดลองที่ 2 เป็นการวัดสัญญาณพัลซ์วิดมอดูเลตชั่น (CH1) และรูปที่ 8 วัดค่าแรงดันเอาต์พุต เมื่อจ่ายกระแสโหลดที่ 1.2A (ต่อเนื่อง) โดยผลการทดลองจะเห็นว่าค่าแรงดันเอาต์พุตลดลง 0.02V เมื่อเทียบกับในขณะที่วงจรกำลังสแตนบาย


รูปที่ 9 และรูปที่ 10 การทดลองที่ 3 เช่นเดียวกับการทดลองที่ 2 เป็นการวัดสัญญาณพัลซ์วิดมอดูเลตชั่น (CH1) และรูปที่ 10 วัดค่าแรงดันเอาต์พุต เมื่อจ่ายกระแสโหลดที่ 2.4A (ต่อเนื่อง) โดยผลการทดลองจะเห็นว่าค่าแรงดันเอาต์พุตลดลง 0.05V เมื่อเทียบกับในขณะที่วงจรกำลังสแตนบาย


สำหรับการเริ่มต้นใช้งานบอร์ดควบคุม STM32F103C8T6 และนำมาประยุกต์ใช้งานกับวงจรดีซี ทู ดีซี แบบซิงโครนัสบัก คอนเวอร์เตอร์ ซึ่งเป็นการใช้งานฟังก์ต่างๆ ภายในชิฟ STM32F103C8T6 บางส่วน ทั้งนี้ยังมีฟังก์อื่นๆ ให้สามารถนำไปประยุกต์การใช้งานต่างๆ ที่หลากหลาย อย่างเช่น ระบบควบคุมอัตโนมัติ (Automatic Control System), วงจรสวิตชิ่งโหมดเพาเวอร์ ซัพพลาย (SMPSU) และวงจรอินเวอร์เตอร์ (Inverter) โดยแนะนำเข้าไปดูในเว็บไซต์ตามลิ้งก์อ้างอิงข้างล่างนี้ครับ.
Reference
- https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html
- https://www.st.com/resource/en/datasheet/stm32f103c8.pdf
- https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
- https://www.pcb-hero.com/blogs/lickys-column/stm32f103c8t6-blue-pill-development-board
- https://forum.arduino.cc/t/wiring-uart-communication-between-arduino-nano-softserial-and-stm32f103c8t6/638799/2
- https://reversepcb.com/stm32f103c8t6/
- https://www.instructables.com/How-to-Program-STM32F103C8T6-With-ArduinoIDE/
- https://www.ti.com/lit/ug/sluu239/sluu239.pdf
- https://www.analog.com/media/en/technical-documentation/data-sheets/3731hfb.pdf
- https://www.onsemi.com/download/data-sheet/pdf/ncp6332-d.pdf
- https://fscdn.rohm.com/en/products/databook/applinote/ic/power/switching_regulator/buck_converter_efficiency_app-e.pdf
- https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ApplicationNotes/ApplicationNotes/00793a.pdf
- https://www.ti.com/lit/ds/symlink/lm5164.pdf
- https://www.st.com/resource/en/application_note/an2603-st1s09-high-efficiency-synchronous-buck-converter-stmicroelectronics.pdf
- https://www.we-online.com/components/media/o109025v410%20ANP017c_EN.pdf
- https://www.electronicsdna.com/inverter-control-by-arduino-uno/
- https://www.electronicsdna.com/voltage-mode-control-flyback-converter-smps-based-on-arduino-uno/
- https://www.electronicsdna.com/basics-open-loop-half-bridge-smps-using-arduino-uno/