รูปปกบทความ

1. 🎯 ตอนที่ 7: กำเนิด PID Controller: เครื่องมือวิเศษของวิศวกร

2. 📖 เปิดฉาก (The Hook)

สวัสดีครับผู้อ่านและน้องๆ วิศวกรทุกคน! กลับมาพบกันอีกครั้งในซีรีส์ เจาะลึกวิศวกรรมระบบควบคุม (Control Systems) จาก 101 ถึง Advance ครับ

ในตอนที่แล้ว เราได้เห็นฝันร้ายของการใช้ On-Off Control หรือ Bang-Bang Control กันไปแล้วใช่ไหมครับ? ลองจินตนาการว่าคุณกำลังขับรถ Cruise Control แต่คันเร่งมีแค่ 2 สถานะคือ “เหยียบมิด” กับ “ปล่อยหมด” ผลที่ได้คือรถจะพุ่งกระชากสลับกับหัวทิ่มไปมา ทำให้เกิดการแกว่ง (Hunting) รอบๆ ความเร็วเป้าหมาย และยังทำให้อุปกรณ์จักรกล (Mechanical Wear) พังก่อนวัยอันควรด้วย

เพื่อแก้ปัญหานี้ โลกวิศวกรรมจึงได้ให้กำเนิด “สมองกล” ที่สามารถหรี่พลังงานและคิดคำนวณได้อย่างนุ่มนวล นั่นคือ PID Controller (Proportional-Integral-Derivative Controller) ซึ่งถูกคิดค้นหลักการทางคณิตศาสตร์มาตั้งแต่ปี 1922 ในการคุมหางเสือเรือรบ และในปัจจุบัน กว่า 90-95% ของระบบควบคุมอัตโนมัติในอุตสาหกรรมทั่วโลก ล้วนถูกขับเคลื่อนด้วยเวทมนตร์ของสมการ PID ทั้งสิ้นครับ! วันนี้พี่จะพาไปผ่าสมองของมันกันว่า มันทำงานอย่างไรถึงได้กลายมาเป็นเครื่องมือวิเศษของวิศวกรควบคุม

3. 🧠 แก่นวิชา (Core Concepts)

PID Controller ทำหน้าที่รับค่าความผิดพลาด (Error, $e(t)$) ซึ่งเกิดจาก Setpoint (SP) ลบด้วย Process Variable (PV) แล้วนำมาคำนวณเพื่อสั่งงาน (Control Output) ผ่าน 3 กระบวนการคิดที่แตกต่างกัน ดังนี้ครับ:

  • P (Proportional) - พลังแห่งปัจจุบัน: การควบคุมแบบสัดส่วน ทำหน้าที่เหมือน “คนขับรถที่มองเห็นระยะห่าง” ถ้ารถอยู่ห่างเป้าหมายมาก (Error มาก) ก็จะเหยียบคันเร่งแรง ถ้าใกล้ถึงก็จะค่อยๆ ถอนคันเร่ง แต่ปัญหาของ P คือเมื่อ Error น้อยลงจนถึงจุดหนึ่ง แรงส่งจะไม่พอเอาชนะแรงเสียดทาน ทำให้เกิดค่าความผิดพลาดค้างในระบบที่เรียกว่า Steady-state error (Offset)
  • I (Integral) - พลังแห่งอดีต: เพื่อกำจัด Offset เราจึงต้องมี I-term ซึ่งทำหน้าที่ “จดจำและสะสมความผิดพลาดในอดีต” ตราบใดที่ยังมี Error ค้างอยู่แม้เพียงนิดเดียว I-term จะค่อยๆ สะสมค่าการอินทิเกรต (Integration) เพื่อเพิ่มแรงสั่งงานไปเรื่อยๆ จนกว่า PV จะแตะ SP ได้พอดี แต่ถ้ารวมค่ามากไป ระบบก็จะเกิดการพุ่งเกินเป้าหมาย (Overshoot)
  • D (Derivative) - พลังแห่งอนาคต: นี่คือ “ตาทิพย์” ที่คอยดูอัตราการเปลี่ยนแปลง (Rate of change) ของ Error ถ้า PV พุ่งเข้าหา SP เร็วเกินไป D-term จะสร้างค่าติดลบเพื่อช่วย “แตะเบรก” ล่วงหน้า ช่วยลดการเกิด Overshoot และทำให้ระบบหยุดนิ่งได้อย่างนุ่มนวลขึ้น
บล็อกไดอะแกรมแสดงการทำงานของ P, I, และ D

4. 🧮 ร่ายมนต์สมการและโค้ดควบคุม (The Math & Implementation)

ในโดเมนเวลา (Time Domain) สมการคณิตศาสตร์ของ PID Controller ทั่วไปจะอยู่ในรูปแบบรวม (Parallel form) ดังนี้ครับ: $$ u(t) = K_p e(t) + K_i \int_{0}^{t} e(t) dt + K_d \frac{de(t)}{dt} $$ โดยที่:

  • $u(t)$ คือ สัญญาณสั่งงานที่ส่งให้ Actuator (Manipulated Variable)
  • $K_p, K_i, K_d$ คือ อัตราขยาย (Gains) ที่เราต้องปรับจูน (Tuning) ให้เหมาะกับแต่ละระบบ
  • $e(t)$ คือ ความผิดพลาด ณ เวลา $t$

เมื่อเรานำสมการคณิตศาสตร์ระดับหอคอยงาช้างนี้ มาลงสู่โลกความจริงของ Microcontroller (เช่น STM32 หรือ Arduino) เราจะเขียนโค้ด C/C++ ออกมาในรูปแบบ Discrete-time ดังนี้ครับ:

// ตัวแปรสำหรับคำนวณ PID
float Kp = 2.0, Ki = 0.5, Kd = 0.1; // ค่ายกตัวอย่าง
float integral = 0.0;
float prev_error = 0.0;
float dt = 0.01; // เวลาในการสุ่ม (Sample time) เช่น 10ms

float PID_Compute(float setpoint, float measured_value) {
    // 1. หาค่าความผิดพลาดปัจจุบัน (Error)
    float error = setpoint - measured_value;
    
    // 2. P-Term: คำนวณสัดส่วน
    float P_out = Kp * error;
    
    // 3. I-Term: สะสมค่าความผิดพลาด (Integration)
    integral += error * dt;
    float I_out = Ki * integral;
    
    // 4. D-Term: คำนวณอัตราการเปลี่ยนแปลง (Derivative)
    float derivative = (error - prev_error) / dt;
    float D_out = Kd * derivative;
    
    // เก็บค่า error ไว้ใช้ในรอบถัดไป
    prev_error = error;
    
    // 5. รวมพลัง 3 ทหารเสือ
    float output = P_out + I_out + D_out;
    
    return output;
}

5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)

ความวิเศษของ PID ทำให้มันถูกใช้งานอย่างแพร่หลายในหลายอุตสาหกรรมครับ ตัวอย่างที่ชัดเจนได้แก่:

  • อุตสาหกรรมเคมีและโลหะ (Chemical/Metallurgical): คุมอุณหภูมิเตาหลอม, คุมแรงดัน, หรือคุมอัตราการไหลของสารเคมี (Flow rate) ให้แม่นยำ
  • ยานยนต์และอากาศยาน (Autopilot & Drones): ระบบ Cruise Control ในรถยนต์ หรือการรักษาสมดุลการบินของ Quadcopter ที่ต้องสู้กับกระแสลม (Disturbance)
  • หุ่นยนต์อุตสาหกรรม (Robotics): คุมความเร็วและตำแหน่งของมอเตอร์ (DC Motor) ให้แขนกลขยับได้แม่นยำระดับมิลลิเมตร

ข้อควรระวังสำหรับวิศวกรมือใหม่ (Pro-Tip): แม้ D-term จะช่วยเบรกการพุ่งเกินได้ดี แต่มันมีจุดอ่อนร้ายแรงคือ “มันจะขยายสัญญาณรบกวน (Measurement Noise)” อย่างมหาศาล! ในโลกความจริง เซ็นเซอร์มักจะมี Noise เสมอ หากใช้ D-term โดยไม่ทำ Low-pass filter กรองสัญญาณก่อน มอเตอร์ของคุณอาจจะสั่นกระตุกอย่างรุนแรง (Jitter) ด้วยเหตุนี้ ในหลายๆ ระบบโดยเฉพาะการคุมความร้อนหรือของไหล วิศวกรจึงมักจะปิด D-term ทิ้ง และใช้เพียงแค่ PI Controller ก็เพียงพอต่อการควบคุมแล้วครับ

6. 🏁 บทสรุป (To be continued…)

PID Controller เกิดมาเพื่อกลบจุดอ่อนของการควบคุมแบบ On-Off อย่างแท้จริง ด้วยการผสมผสานการดูข้อผิดพลาดปัจจุบัน (P), การชดเชยข้อผิดพลาดสะสมในอดีต (I), และการดักทางอนาคต (D) ทำให้มันกลายเป็นอัลกอริทึมที่ครอบจักรวาลและใช้งานได้จริงในแทบทุกวงการอุตสาหกรรม

แต่คำถามที่สำคัญที่สุดคือ… “แล้วเราจะรู้ได้อย่างไรว่าควรตั้งค่า $K_p, K_i, K_d$ เป็นเท่าไหร่เครื่องจักรถึงจะไม่พัง?” การเดาสุ่มคงไม่ใช่เรื่องสนุกแน่ๆ ครับ ในตอนต่อไป เราจะมาเจาะลึกศาสตร์แห่งการจูน (Controller Tuning) ทั้งแบบแมนนวลและแบบอัตโนมัติ (Auto-tuning) รอติดตามชมกันนะครับ!


ต้องการที่ปรึกษาด้านการออกแบบระบบควบคุม (Control Systems), หุ่นยนต์อัตโนมัติ (Robotics) หรือพัฒนาระบบ Automation ขั้นสูงให้กับโรงงานของคุณ? ทีมงาน WP Solution พร้อมให้บริการออกแบบและติดตั้งระบบแบบครบวงจร ดูรายละเอียดบริการของเราได้ที่: www.wpsolution2017.com หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p