พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. คลังความรู้
  3. อิเล็กทรอนิกส์กำลัง
  4. ควบคุมแบบดิจิทัล

// บทที่ 15.13 · อิเล็กทรอนิกส์กำลัง · Digital Control

ควบคุมคอนเวอร์เตอร์ DC-DC แบบดิจิทัล: ADC, DPWM, Limit Cycle, Tustin และโค้ด PI

จังหวะสุ่มสัญญาณ ดีเลย์ ความละเอียด DPWM กับ limit cycle แปลงตัวชดเชยด้วย Tustin โค้ด PI พร้อม anti-windup การป้องกันในฮาร์ดแวร์ และขั้นตอน bring-up

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • สุ่มกลางช่วง ON/OFF ได้ค่าเฉลี่ย iL โดยไม่ต้องกรอง
  • ดีเลย์ ≈1.5Ts\approx 1.5T_s กินเฟส 360∘fcTd360^\circ f_cT_d
  • ไม่เกิด limit cycle: DPWM ต้องละเอียดกว่า ADC
  • OCP ต้องอยู่ในฮาร์ดแวร์ ไม่ผ่าน CPU

โครงสร้าง

ADC สุ่ม vov_o (และ iLi_L) → ตัวชดเชยดิจิทัล Gc(z)G_c(z) → DPWM (ตัวนับ) → gate driver

สิ่งที่ต่างจากอนาล็อก: (1) delay จากการสุ่ม-คำนวณ-อัปเดต (2) quantization ทั้ง ADC และ PWM (3) aliasing

จังหวะการสุ่ม

สุ่ม ตรงกลางช่วง ON หรือ OFF (ใช้ trigger จาก timer PWM) จะได้ค่าเฉลี่ยของ iLi_L โดยไม่ต้องกรอง และหลบหนามจากการสวิตช์ — เป็นเทคนิคมาตรฐานของ C2000/STM32 HRTIM/dsPIC

Delay รวมโดยประมาณ Td≈Tconv+Tcalc+Ts/2T_d \approx T_{conv} + T_{calc} + T_s/2 (ZOH) → เฟสหาย ϕ=−360∘fcTd\phi = -360^\circ f_c T_d เช่น fs=100f_s = 100 kHz, Td=1.5TsT_d = 1.5T_s, fc=5f_c = 5 kHz → เสียเฟส 27°

ความละเอียดและ limit cycle

ความละเอียดแรงดันขาออกจาก DPWM (buck): ΔVo=Vin/2NPWM\Delta V_o = V_{in}/2^{N_{PWM}} โดย 2NPWM=fclk/fs2^{N_{PWM}} = f_{clk}/f_s เงื่อนไขไม่เกิด limit cycle: ΔVo,DPWM<ΔVo,ADC\Delta V_{o,DPWM} \lt \Delta V_{o,ADC} (PWM ละเอียดกว่า ADC) + ตัวควบคุมต้องมีอินทิเกรเตอร์ และ gain ของอินทิเกรเตอร์ไม่สูงเกิน

ตัวอย่าง: clock 170 MHz, fs=200f_s = 200 kHz → 850 count (≈9.7 บิต) → 24/850=2824/850 = 28 mV ขณะที่ ADC 12 บิตกับตัวแบ่ง 3.3/15 V → 3.7 mV ⇒ เกิด limit cycle! ต้องใช้ High-resolution PWM (HRTIM 184 ps ใน STM32G4, HRPWM ใน C2000 ~150 ps) หรือ dithering

แปลงตัวชดเชยต่อเนื่อง → ดิจิทัล

Tustin (bilinear) พร้อม prewarp ที่ fcf_c:

Z1 Tustin (bilinear) transform การแปลงบิลิเนียร์

s←2T1−z−11+z−1s \leftarrow \frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}

ได้รูปทั่วไป (2P2Z / 3P3Z):

Z2 2P2Z / 3P3Z difference equation สมการผลต่างของตัวชดเชย

u[n]=∑k=03bk e[n−k]−∑k=13aku[n−k]u[n] = \sum_{k=0}^{3} b_k\, e[n-k] - \sum_{k=1}^{3} a_k u[n-k]

หรือออกแบบโดยตรงใน z-domain (direct digital design) เมื่อ fcf_c ใกล้ fs/10f_s/10

โค้ด PI ภาษา C (จุดลอยตัว, เรียกใน ISR ของ ADC)

typedef struct { float kp, ki_T, i, umin, umax; } PI;
static inline float pi_step(PI *c, float ref, float meas) {
    float e = ref - meas;
    float u = c->kp * e + c->i + c->ki_T * e;      // ลอง output ก่อน
    if (u > c->umax) u = c->umax;                   // clamp
    else if (u < c->umin) u = c->umin;
    else c->i += c->ki_T * e;                       // conditional integration = anti-windup
    return u;                                       // duty 0..Dmax
}
// ISR: duty = pi_step(&vloop, vref_soft, adc_to_volt(ADC1->DR));
//      TIM->CCR1 = (uint32_t)(duty * PERIOD);

ซิมูเลเตอร์ของเว็บนี้ใช้อัลกอริทึมเดียวกัน (โหมด Voltage-mode PI) — ลองเพิ่ม Ki จนแกว่ง แล้วสังเกตผลของ soft-start

การป้องกันที่ต้องทำในฮาร์ดแวร์ ไม่ใช่ซอฟต์แวร์

OCP แบบ cycle-by-cycle ต้องใช้ comparator ภายใน MCU ต่อเข้าตัว PWM โดยตรง (fault input / blanking window) ไม่ผ่าน CPU — ซอฟต์แวร์ค้าง/รีเซ็ตต้องไม่ทำให้สวิตช์ค้าง ON

MCU ที่แนะนำ

ดูตารางเต็มที่ การเลือกตัวควบคุม — โดยสรุป: TI C2000 (F28003x/F28P55x/F28P65x), STM32G474 (HRTIM), Microchip dsPIC33CK/CH และ dsPIC33A เป็นสายที่ออกแบบมาเพื่อ power conversion โดยตรง; ESP32/Arduino เหมาะกับลูปช้า (MPPT, ชาร์จแบต, การสื่อสาร) แต่ไม่ควรใช้กับลูปกระแสเร็ว

ขั้นตอน bring-up

  1. รันลูปเปิด: ตรวจ ADC scaling, ทิศทาง, offset
  2. ปิดลูปด้วย gain ต่ำ, VinV_{in} ต่ำ ผ่านแหล่งจ่ายจำกัดกระแส
  3. วัด Bode โดยฉีดสัญญาณในซอฟต์แวร์ (เพิ่ม sine ที่ค่าอ้างอิงหรือ duty — เหมือนฟังก์ชันเจนฯ ในซิม) แล้วอ่านกลับผ่าน DAC/UART
  4. ทดสอบ step load, VinV_{in} ต่ำ-สูง, อุณหภูมิ

คำถามที่พบบ่อย

limit cycle ในคอนเวอร์เตอร์ดิจิทัลคืออะไร?

เมื่อ DPWM หยาบกว่า ADC แรงดันขาออกไม่มีระดับ duty ที่ตรงค่าอ้างอิงพอดี อินทิเกรเตอร์จึงกระโดดไปมาระหว่างสองระดับ เกิดการแกว่งความถี่ต่ำ แก้ด้วย high-resolution PWM หรือ dithering

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์