การควบคุมป้อนกลับ
DRT 344 ระบบอัตโนมัติ หุ่นยนต์ และการควบคุมอัจฉริยะ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- เปรียบเทียบการควบคุมแบบวงเปิดกับวงปิด
- อธิบายหน้าที่ของเทอม P, I และ D และผลต่อการตอบสนอง
- คำนวณความคลาดเคลื่อนสถานะคงตัวของการควบคุมแบบ P
- ปรับจูน PID เบื้องต้นด้วยวิธี Ziegler–Nichols และบอกข้อจำกัด
- อธิบายโครงสร้างควบคุมแบบซ้อน (cascade) ของมัลติโรเตอร์ใน PX4 และลำดับการจูน
ทำไมต้องรู้
โดรนมัลติโรเตอร์ไม่มีเสถียรภาพในตัว ถ้าไม่มีตัวควบคุมปรับความเร็วมอเตอร์หลายร้อยครั้งต่อวินาที มันจะพลิกคว่ำในเสี้ยววินาที ตัวควบคุมที่อยู่เบื้องหลังเกือบทุกระบบ ตั้งแต่โดรน หุ่นยนต์ ไปจนถึงเครื่องปรับอากาศ คือ การควบคุมป้อนกลับ และรูปแบบที่ใช้มากที่สุดคือ PID
การควบคุมป้อนกลับเปรียบได้กับการขับรถให้อยู่กลางเลน ตาดูว่ารถเบี่ยงจากกลางเลนไปเท่าไร (ความคลาดเคลื่อน) แล้วหมุนพวงมาลัยแก้ ยิ่งเบี่ยงมากยิ่งหมุนมาก ถ้ามีลมด้านข้างพัดตลอด ก็ค่อย ๆ ถือพวงมาลัยเผื่อไว้ และถ้าเห็นว่ารถกำลังเบี่ยงเร็ว ก็แก้ล่วงหน้า สามพฤติกรรมนี้คือ P, I และ D
วงเปิดกับวงปิด
- วงเปิด สั่งงานตามแผนโดยไม่วัดผล เช่น เปิดมอเตอร์ที่กำลังคงที่ตามตาราง ถ้ามีลมหรือน้ำหนักเปลี่ยน ผลจะคลาดโดยไม่มีใครแก้
- วงปิด วัดผลจริงด้วยเซนเซอร์ เทียบกับค่าเป้าหมาย แล้วปรับคำสั่งตามความคลาดเคลื่อน
ตัวควบคุม PID
| เทอม | ตอบสนองต่อ | ผลเมื่อเพิ่มค่า | ข้อควรระวัง |
|---|---|---|---|
| P (proportional) | ความคลาดเคลื่อนตอนนี้ | ตอบสนองเร็วขึ้น | มากไปทำให้แกว่ง ใช้อย่างเดียวมักเหลือความคลาดเคลื่อนค้าง |
| I (integral) | ความคลาดเคลื่อนสะสมในอดีต | กำจัดความคลาดเคลื่อนค้าง | มากไปทำให้แกว่งและ overshoot ต้องมี anti-windup |
| D (derivative) | อัตราการเปลี่ยนของความคลาดเคลื่อน | ลดการแกว่ง หน่วงการเคลื่อนที่ | ขยายสัญญาณรบกวน ต้องกรองสัญญาณ |
Integrator windup เกิดเมื่อตัวขับเร้าถึงขีดจำกัด เช่น มอเตอร์เต็มกำลังแล้ว แต่เทอม I ยังสะสมต่อ เมื่อความคลาดเคลื่อนกลับทิศ ตัวควบคุมจะตอบช้ามาก จึงต้องจำกัดค่าของเทอม I (anti-windup) ซึ่ง PX4 ทำด้วยการจำกัดค่า (clamping) ในวงความเร็ว
ตัวอย่างที่ 1 ทำไม P อย่างเดียวจึงไม่ถึงเป้า
ระบบอันดับหนึ่งมีอัตราขยายสถานะคงตัว ใช้ตัวควบคุม P ที่ เมื่อสั่งค่าเป้าหมายแบบขั้นบันได
ระบบค้างห่างเป้าหมายราว 14.3% ถ้าเพิ่ม ความคลาดเคลื่อนจะเล็กลงแต่ไม่หายไป และระบบจริงที่มีความหน่วงจะเริ่มแกว่ง การเพิ่มเทอม I จึงเป็นวิธีกำจัดความคลาดเคลื่อนค้างนี้
ปรับจูนด้วย Ziegler–Nichols
Ziegler และ Nichols (1942) เสนอวิธีหาค่า PID เริ่มต้นจากการทดลอง แบบหนึ่งคือเพิ่ม ทีละน้อย (ปิด I และ D) จนระบบแกว่งคงที่ บันทึกอัตราขยายนั้นเป็น และคาบการแกว่งเป็น แล้วใช้ตาราง (Åström & Murray, ตาราง 11.1)
| ตัวควบคุม | |||
|---|---|---|---|
| P | – | – | |
| PI | – | ||
| PID |
ตัวอย่างที่ 2 คำนวณค่า PID จากการทดลอง
ทดลองกับแท่นทดสอบมอเตอร์ พบว่าระบบแกว่งคงที่ที่ คาบ s
- s ได้
- s ได้
Åström และ Murray เตือนว่ากฎของ Ziegler–Nichols ใช้ข้อมูลของระบบน้อยเกินไป และมักได้วงปิดที่ทนทานไม่พอ ค่าเหล่านี้จึงเป็นเพียงจุดเริ่มต้น และ ห้ามทดลองให้โดรนจริงแกว่งจนถึงขีดจำกัด ต้องทำในแท่นทดสอบหรือการจำลองเท่านั้น
การควบคุมแบบซ้อนในมัลติโรเตอร์
PX4 ใช้โครงสร้างควบคุมแบบซ้อน (cascade) ซึ่งเป็นการผสมตัวควบคุม P และ PID ต่อกันเป็นชั้น
| วง | ชนิด | ส่งออก | พารามิเตอร์ตัวอย่างใน PX4 |
|---|---|---|---|
| ตำแหน่ง | P | ความเร็วเป้าหมาย | MPC_XY_P, MPC_Z_P |
| ความเร็ว | PID | ความเร่งเป้าหมาย | MPC_XY_VEL_P_ACC, MPC_XY_VEL_I_ACC, MPC_XY_VEL_D_ACC |
| ท่าทาง | P บน quaternion | อัตราหมุนเป้าหมาย | MC_ROLL_P, MC_PITCH_P, MC_YAW_P |
| อัตราหมุน | PID | แรงบิดไปยัง mixer | MC_ROLLRATE_P/I/D, MC_PITCHRATE_P/I/D |
วงในทำงานเร็วกว่าวงนอก วงอัตราหมุนรับข้อมูลจาก gyro ผ่านตัวกรองสัญญาณ และความถี่ของข้อมูล gyro ตั้งได้ด้วย IMU_GYRO_RATEMAX คู่มือปรับจูนของ PX4 ย้ำว่า ต้องจูนวงอัตราหมุนให้ดีก่อน เพราะมีผลกับทุกโหมดการบิน หลังจากนั้นวงท่าทางจะจูนง่ายกว่ามาก คู่มือแนะนำให้เพิ่มค่าครั้งละ 20–30% แล้วลดเป็น 5–10% ช่วงละเอียด และทดสอบด้วยการสั่งขั้นบันไดเร็ว ๆ ขณะลอยตัว
กิจกรรมในชั้นเรียน
กิจกรรม: จำลองตัวควบคุมความสูง
- เขียนโปรแกรม Python จำลองระบบอันดับหนึ่งแบบไม่ต่อเนื่อง (discrete) กับตัวควบคุม P, PI และ PID
- เปรียบเทียบเวลาขึ้น overshoot และความคลาดเคลื่อนค้างของแต่ละแบบ
- ใส่ขีดจำกัดของตัวขับเร้าแล้วสังเกต integrator windup จากนั้นเพิ่ม anti-windup
- อ่าน log การจูนจาก SITL ของ PX4 (ถ้ามี) แล้วระบุว่าวงใดถูกจูนก่อน
ข้อผิดพลาดที่พบบ่อย
ระวัง
- จูนวงนอกก่อนวงใน ทำให้แก้ปัญหาผิดจุด
- เพิ่ม D โดยไม่กรองสัญญาณ มอเตอร์สั่นและร้อน
- ไม่มี anti-windup เมื่อตัวขับเร้าถึงขีดจำกัด
- ใช้ค่า Ziegler–Nichols เป็นค่าสุดท้าย โดยไม่ตรวจความทนทาน
- ทดลองให้โดรนจริงแกว่งจนถึงขีดจำกัด
สรุป
- วงปิดวัดผลจริงแล้วแก้ตามความคลาดเคลื่อน
- P ตอบสนองต่อความคลาดเคลื่อนปัจจุบัน I กำจัดความคลาดเคลื่อนค้าง D หน่วงการแกว่ง
- P อย่างเดียวกับระบบอันดับหนึ่งเหลือ
- Ziegler–Nichols แบบ PID: , , ใช้เป็นจุดเริ่มต้นเท่านั้น
- PX4 ใช้วงซ้อน P → PID → P → PID และต้องจูนวงอัตราหมุนก่อน
แบบฝึกตรวจความเข้าใจ
- เทอมใดของ PID ใช้กำจัดความคลาดเคลื่อนค้าง
- ระบบอันดับหนึ่ง ใช้ P ที่ ความคลาดเคลื่อนสถานะคงตัวเท่าใด
- ทดลองได้ , s คำนวณ , และ ของ PID ตาม Ziegler–Nichols
- ใน PX4 วงใดส่งอัตราหมุนเป้าหมายให้วงอัตราหมุน
- ทำไมต้องจูนวงอัตราหมุนก่อนวงอื่น
เฉลย
- เทอม I (integral)
- หรือราว 11%
- , s ได้ , s ได้
- วงท่าทาง (attitude) ซึ่งเป็นตัวควบคุม P บน quaternion
- เพราะวงนอกทุกวงทำงานผ่านวงอัตราหมุน ถ้าวงในไม่ดี วงนอกจะจูนให้ดีไม่ได้ และมีผลกับทุกโหมดการบิน
สรุปสูตรสำคัญ
| ตัวควบคุม PID | |
| ความคลาดเคลื่อนสถานะคงตัว (ระบบอันดับหนึ่ง กับ P) | |
| Ziegler–Nichols แบบ ultimate gain (PID) | |
| แปลงเป็นอัตราขยาย |
แหล่งอ้างอิงหลัก
- Åström, K. J., & Murray, R. M. (2021). Feedback systems: An introduction for scientists and engineers (2nd ed.). Princeton University Press. link
- Nise, N. S. (2019). Control systems engineering (8th ed.). Wiley.
- Ziegler, J. G., & Nichols, N. B. (1942). Optimum settings for automatic controllers. Transactions of the ASME, 64(8), 759–765. link
- PX4 Autopilot. Controller diagrams; Multicopter PID tuning guide. PX4 user guide (main). link
- Beard, R. W., & McLain, T. W. (2012). Small unmanned aircraft: Theory and practice. Princeton University Press.
- Quan, Q. (2017). Introduction to multicopter design and control. Springer.
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
การควบคุมป้อนกลับและตัวควบคุม PID
การควบคุมแบบ cascade และการปรับจูน flight controller
ในชั้นเรียน / ภาคสนาม
บรรยาย อภิปรายกรณีศึกษา และแก้โจทย์ในชั้นเรียน
หลักฐานการเรียนรู้: ผล quiz และแบบฝึกหัดที่ส่ง