ตอนที่ 10: เจาะลึก D (Derivative): นักพยากรณ์อนาคตผู้สยบความแกว่ง

1. 🎯 ตอนที่ 10: เจาะลึก D (Derivative): นักพยากรณ์อนาคตผู้สยบความแกว่ง
2. 📖 เปิดฉาก (The Hook)
สวัสดีครับน้องๆ และเพื่อนวิศวกรทุกท่าน! กลับมาลุยกันต่อในซีรีส์ เจาะลึกวิศวกรรมระบบควบคุม (Control Systems) จาก 101 ถึง Advance สไตล์วิศวกรรุ่นพี่ครับ
จากสองตอนที่แล้ว เราได้รู้จักกับ P (Proportional) ที่เป็นเหมือนการเหยียบคันเร่งตามระยะห่าง และ I (Integral) ที่เป็นนักสะสมความผิดพลาดเพื่อแก้ปัญหาแรงตก (Steady-state error) แต่ถ้าเราใช้แค่ PI Controller ขับรถสปอร์ตพุ่งเข้าหาป้ายหยุดรถหน้าบ้าน สิ่งที่จะเกิดขึ้นคือ… รถจะพุ่งไปข้างหน้าอย่างรวดเร็ว (ด้วยพลังของ P) และแถมยังโดนเติมคันเร่งค้างไว้จากอดีต (ด้วยพลังของ I) ผลลัพธ์คือรถจะพุ่งทะลุเป้าหมายไปไกล เกิดอาการ Overshoot อย่างรุนแรง!
ในโลกความเป็นจริง คนขับรถที่เก่งจะไม่รอให้รถพุ่งไปถึงป้ายแล้วค่อยกระทืบเบรก แต่มองไกลไปถึง “อนาคต” ว่าตอนนี้รถพุ่งเข้ามาด้วย “ความเร็ว” เท่าไหร่ แล้ว “แตะเบรก” ล่วงหน้าเพื่อประคองให้รถจอดสนิทพอดีเป๊ะ หลักการเลียนแบบสัญชาตญาณนี้ในทางวิศวกรรมควบคุม เราเรียกว่า การควบคุมแบบอนุพันธ์ (Derivative Control) หรือ D-Control ครับ วันนี้พี่จะพาไปเจาะลึกว่า สมองกลมันพยากรณ์อนาคตและสยบความแกว่งได้อย่างไร!
3. 🧠 แก่นวิชา (Core Concepts)
Derivative Control (การควบคุมแบบอนุพันธ์) คือโหมดการควบคุมที่ถูกสร้างขึ้นมาเพื่อ “ต้านทานการเปลี่ยนแปลง” และเพิ่มเสถียรภาพ (Stability) ให้กับ Closed-loop system
หลักการทำงานของมันอิงจากวิชาแคลคูลัส (Calculus) ครับ:
- อัตราการเปลี่ยนแปลง (Rate of Change): ในขณะที่ P สนใจว่า Error “มีขนาดเท่าไหร่” และ I สนใจว่า Error “สะสมมานานแค่ไหน” ตัว D จะสนใจเพียงแค่ว่า Error “กำลังเปลี่ยนแปลงเร็วแค่ไหน” (Slope)
- การพยากรณ์อนาคต (Anticipatory Control): D-term จะจำลองเส้นสัมผัส (Tangent line) ของกราฟ Error ในปัจจุบัน เพื่อทำนายว่าในอีก $T_d$ วินาทีข้างหน้า Error จะไปอยู่ที่จุดไหน (Linear extrapolation)
- การแตะเบรก (Damping): ถ้าระบบ (Process Variable: PV) กำลังพุ่งเข้าหาเป้าหมาย (Setpoint: SP) อย่างรวดเร็ว ค่า Error จะลดลงอย่างรวดเร็ว (Slope ติดลบ) ตัว D-term จะนำ Slope ที่ติดลบนี้ไปคูณกับอัตราขยาย ทำให้เกิดสัญญาณสั่งงาน (Control output) ในทิศทาง “ตรงกันข้าม” กับการเคลื่อนที่ ซึ่งก็คือการ “แตะเบรก” สวนทางนั่นเองครับ
การเพิ่ม D-term เข้าไปจะช่วยเพิ่ม Damping ให้กับระบบ ลดการเกิด Overshoot และทำให้ Settling time (เวลาที่ระบบเริ่มนิ่ง) ลดลงอย่างเห็นได้ชัด

4. 🧮 ร่ายมนต์สมการและโค้ดควบคุม (The Math & Implementation)
ในโดเมนเวลา (Time Domain) สมการคณิตศาสตร์ของการควบคุมแบบ Derivative เดี่ยวๆ เขียนได้ดังนี้ครับ: $$ u_d(t) = K_d \frac{de(t)}{dt} $$ โดยที่:
- $u_d(t)$ คือ สัญญาณสั่งงานส่วนของอนุพันธ์
- $K_d$ คือ อัตราขยายอนุพันธ์ (Derivative Gain) ซึ่งบางครั้งอาจเขียนในรูปของ $K_p \cdot T_d$ (โดย $T_d$ คือ Derivative time)
- $\frac{de(t)}{dt}$ คือ อัตราการเปลี่ยนแปลงของ Error เมื่อเทียบกับเวลา
ในการแปลงสมการแคลคูลัสลงสู่ไมโครคอนโทรลเลอร์ (เช่น STM32) เราจะใช้ระเบียบวิธีเชิงตัวเลข (Numerical approximation) โดยการหาความชันจากจุดข้อมูลสองจุด (Backward difference) ดังนี้:
// ตัวแปรในระบบ (Global Variables)
float Kd = 0.5; // อัตราขยายอนุพันธ์ (Derivative Gain)
float dt = 0.01; // เวลาในการสุ่ม (Sampling time) เช่น 10ms
float prev_error = 0.0; // เก็บค่า Error ของรอบที่แล้ว
float Derivative_Control_Update(float setpoint, float measured_value) {
// 1. คำนวณ Error ปัจจุบัน
float current_error = setpoint - measured_value;
// 2. คำนวณอัตราการเปลี่ยนแปลง (Slope) de/dt ≈ Δe / Δt
float error_rate = (current_error - prev_error) / dt;
// 3. คำนวณ D-Term (แตะเบรกล่วงหน้า)
float d_out = Kd * error_rate;
// 4. อัปเดตค่า Error เก็บไว้ใช้รอบหน้า
prev_error = current_error;
return d_out;
}5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)
แม้ D-Control จะดูเป็นเวทมนตร์ที่ช่วยให้หุ่นยนต์เบรกได้นุ่มนวล แต่ในโลกของวิศวกรหน้างาน มันคือ “ดาบสองคม” ที่อันตรายที่สุดหากใช้ไม่เป็นครับ นี่คือ 2 ปัญหาคลาสสิกที่พี่อยากเตือน:
ปีศาจร้าย Derivative Kick (การเตะกระชากของอนุพันธ์): ลองนึกภาพว่าคุณป้อนคำสั่ง (Setpoint) แบบขั้นบันได (Step input) จาก 0 ไป 10 ทันที ค่า Error จะกระโดดขึ้นในเวลาพริบตาเดียว! การดิฟ (Derivative) กราฟที่ชันตั้งฉากแบบนั้น จะทำให้ค่า $\frac{de(t)}{dt}$ พุ่งทะยานเข้าใกล้ “อนันต์ (Infinity)” ส่งผลให้มอเตอร์ถูกกระชากด้วยแรงดันสูงสุดทันที (Derivative kick)
- วิธีแก้ระดับโปร: วิศวกรจะเลิกดิฟค่า Error แต่หันไป “ดิฟค่า Process Variable (PV)” แทน! เพราะเมื่อ Setpoint คงที่ $\frac{de(t)}{dt} = -\frac{dPV(t)}{dt}$ การดิฟค่า PV ที่ค่อยๆ ขยับขึ้น จะไม่ทำให้เกิดยอดแหลมของการกระชากครับ
Noise Amplification (การขยายสัญญาณรบกวน): สัญญาณจากเซ็นเซอร์ในโลกความจริง (เช่น Encoder หรือ Thermocouple) เต็มไปด้วย Noise หรือความขรุขระยิบย่อย การดิฟกราฟที่ขรุขระ จะเป็นการ “ขยาย (Amplify)” สัญญาณความถี่สูงเหล่านั้นให้ใหญ่ขึ้นทวีคูณ ส่งผลให้ตัวควบคุมสั่งจ่ายไฟแกว่งไปมาอย่างบ้าคลั่ง มอเตอร์จะร้องเสียงหลงและร้อนจี๋!
- วิธีแก้ระดับโปร: ห้ามใช้สมการ $K_d \frac{de(t)}{dt}$ เดี่ยวๆ เด็ดขาด! ต้องใส่ Low-pass Filter คั่นในพจน์อนุพันธ์เสมอ เพื่อกรอง Noise ความถี่สูงทิ้งไปก่อนนำมาคำนวณครับ (ฟังก์ชันถ่ายโอนของ D-term จะเปลี่ยนจาก $K_d s$ เป็น $\frac{K_d s}{\tau_d s + 1}$)
6. 🏁 บทสรุป (To be continued…)
Derivative Control (D) คือนักพยากรณ์ที่คอยเฝ้าดูความเร็วในการเข้าหาเป้าหมาย และทำหน้าที่ “แตะเบรก” เพื่อสยบอาการ Overshoot ทำให้ระบบมีเสถียรภาพและหยุดนิ่งได้เร็วขึ้น (Improve settling time)
เมื่อเรารวมร่าง P (เพื่อความเร็ว) + I (เพื่อความแม่นยำ) + D (เพื่อความนุ่มนวล) เข้าด้วยกัน เราก็จะได้สุดยอดสมการสมองกลที่ชื่อว่า “PID Controller” ที่ขับเคลื่อนอุตสาหกรรมทั่วโลก! แต่คำถามสำคัญคือ เราจะรู้ได้อย่างไรว่าควรปรับค่า $K_p, K_i, K_d$ เท่าไหร่ถึงจะพอดี? ในตอนต่อไป พี่จะพาไปเปิดคัมภีร์การจูน (Controller Tuning) ที่วิศวกรทุกคนต้องรู้ รอติดตามกันนะครับ!
ต้องการที่ปรึกษาด้านการออกแบบระบบควบคุม (Control Systems), หุ่นยนต์อัตโนมัติ (Robotics) หรือพัฒนาระบบ Automation ขั้นสูงให้กับโรงงานของคุณ? ทีมงาน WP Solution พร้อมให้บริการออกแบบและติดตั้งระบบแบบครบวงจร ดูรายละเอียดบริการของเราได้ที่: www.wpsolution2017.com หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p