- หน้าแรก
- คลังความรู้
- ระบบควบคุม
- เมคาทรอนิกส์
// บทที่ 13.23 · ระบบควบคุม · Mechatronic Systems Control
ระบบควบคุมเมคาทรอนิกส์: เซนเซอร์ แอคชูเอเตอร์ เซอร์โว และคาสเคด
เมคาทรอนิกส์คือจุดที่กลไก ไฟฟ้า อิเล็กทรอนิกส์ และซอฟต์แวร์มาบรรจบกัน และระบบควบคุมคือกาวที่ยึดทุกอย่างไว้ เครื่อง CNC เครื่องพิมพ์ 3 มิติ กิมบอลกล้อง สายพานลำเลียง แขนกล และหุ่นยนต์ทุกตัว มีหัวใจเดียวกัน: มอเตอร์ที่ถูกคุมด้วยลูปซ้อนกระแส–ความเร็ว–ตำแหน่ง หน้านี้ออกแบบเซอร์โวจริงตั้งแต่เลือกเซนเซอร์จนถึงตั้งเกนทุกลูป ด้วยตัวเลขจากมอเตอร์ในตัวอย่าง M-2 สูตรใช้รหัส K
- คาสเคด: กระแส (kHz) ⊂ ความเร็ว (100 Hz) ⊂ ตำแหน่ง (10 Hz) ห่างกัน 5–10 เท่า
- ลูปกระแส PI: (ศูนย์หักล้างขั้วไฟฟ้า)
- ลูปความเร็ว PI: ศูนย์ที่ · ลูปตำแหน่ง P:
- Feedforward ความเร็ว/ความเร่ง ลดความผิดพลาดขณะเคลื่อนที่ได้มากกว่าเพิ่มเกน
องค์ประกอบ: เซนเซอร์ แอคชูเอเตอร์ ไดรเวอร์ พื้นฐาน
| ส่วน | ตัวเลือก | ข้อควรรู้ด้านการควบคุม |
|---|---|---|
| เซนเซอร์ตำแหน่ง | เอนโค้ดเดอร์ incremental/absolute, โพเทนชิโอมิเตอร์, resolver, Hall | ความละเอียดจำกัด → ควอนไทซ์ · อนุพันธ์ของตำแหน่งได้ความเร็วที่มีสัญญาณรบกวน |
| เซนเซอร์ความเร็ว/มุม | แทโคเจเนอเรเตอร์, ไจโร (IMU), คำนวณจากเอนโค้ดเดอร์ | ไจโรมีดริฟต์ ต้องหลอมรวมกับ accelerometer (complementary/Kalman) |
| เซนเซอร์กระแส | ตัวต้านทาน shunt + แอมป์, Hall-effect | สุ่มกลางพัลส์ PWM เพื่อเลี่ยงริปเปิล |
| แอคชูเอเตอร์ | DC มีแปรง, BLDC/PMSM, สเต็ปเปอร์, เซอร์โว RC, โซลินอยด์, นิวแมติก | แบบจำลอง M7 · BLDC ใช้ FOC ทำให้เหมือน DC |
| ไดรเวอร์ | H-bridge (MOSFET), อินเวอร์เตอร์สามเฟส | PWM ≥ 20 kHz (เกินช่วงได้ยิน) · dead-time ทำให้เกิด dead-zone · เกน |
| ตัวควบคุม | MCU (STM32, ESP32, Arduino), DSP, FPGA, PLC | คาบสุ่ม หน่วงคำนวณ ความละเอียด PWM (ดิจิทัล) |
K1 Encoder resolution ความละเอียดเอนโค้ดเดอร์
ตัวคูณ 4 จาก quadrature (นับทุกขอบของ A และ B) · ความเร็วต่ำใช้วิธีจับเวลาระหว่างพัลส์ (T-method) หรือผสม (M/T method)
ความละเอียดมุมและความเร็วเป็นเท่าไร ถ้าคำนวณความเร็วทุก 1 ms
นับต่อรอบ: K1
1 นับต่อ 1 ms = รอบ ต่อ 1 ms = 0.25 รอบ/วินาที = 15 rpm
มุมละเอียด 0.09° แต่ความเร็วละเอียดแค่ 15 rpm ที่ 1 kHz: ที่ความเร็วต่ำค่าจะกระโดด 0, 15, 0, 15 rpm ทำให้ลูปความเร็วสั่น ต้องเพิ่มคาบคำนวณ ใช้ T-method หรือใช้ตัวสังเกตประมาณความเร็ว
ออกแบบลูปคาสเคดทีละชั้น กลาง
ออกแบบจากในออกนอก แต่ละลูปถือว่าลูปในเร็วพอจนเป็น 1 (ตามหลักแบนด์วิดท์ห่าง 5–10 เท่า) หลักการเดียวกับลูปแทโค
K2 Current (torque) loop ลูปกระแส
ศูนย์ของ PI หักล้างขั้วไฟฟ้า วงปิดเป็นอันดับหนึ่งที่แบนด์วิดท์ · แรง EMF ต้านช้ามากเทียบกับลูปนี้ (มองเป็นการรบกวน)
K3 Speed loop ลูปความเร็ว
ครอสโอเวอร์ที่ ศูนย์ PI ต่ำกว่า 5 เท่า (PM ≈ 70°) · ต้องรวมโหลดที่สะท้อนผ่านเกียร์ (M10) ไม่อย่างนั้นแบนด์วิดท์จริงจะต่ำกว่าที่ออกแบบ
K4 Position loop + feedforward ลูปตำแหน่งและป้อนไปข้างหน้า
ลูปตำแหน่ง P พอ เพราะพลานต์มีอินทิเกรเตอร์อยู่แล้ว (ชนิด 1) · feedforward ความเร็วและความเร่งจากวิถีที่วางแผนไว้ ทำให้ following error เกือบเป็นศูนย์ขณะเคลื่อนที่ โดยไม่ต้องเพิ่มเกน (ไม่เสียเสถียรภาพ)
มอเตอร์ mH, kg·m², N·m/A ต้องการแบนด์วิดท์ กระแส 1 kHz ความเร็ว 100 Hz ตำแหน่ง 10 Hz
จำลองแบบเต็ม (รวม EMF และไดนามิกทุกลูป): ลูปกระแส PM 90° แบนด์วิดท์ 1.0 kHz · ลูปความเร็ว PM 73° ครอสโอเวอร์ 101 Hz · ลูปตำแหน่ง PM 89° ครอสโอเวอร์ 10.4 Hz ไม่มี overshoot เข้าที่ใน 64 ms
python-control ✓ · ในงานจริงจำกัด ไม่เกินกระแสสูงสุดของมอเตอร์ และจำกัด ด้วย พร้อม anti-windup ทุกชั้น
ปัญหาจริง: แรงเสียดทาน backlash และเรโซแนนซ์ ขั้นสูง
K5 Mechanical resonance and notch filter เรโซแนนซ์ทางกลและฟิลเตอร์ notch
เพลาหรือสายพานยืดหยุ่น () ทำให้มอเตอร์กับโหลดเป็นสองมวลที่สั่นใส่กัน ยอดเรโซแนนซ์บนโบดทำให้ GM หาย · วาง notch ที่ หรือจำกัดแบนด์วิดท์ลูปความเร็วให้ต่ำกว่า
K6 Friction compensation ชดเชยแรงเสียดทาน
ใช้ (ค่าสั่ง) แทน วัด เพื่อไม่ให้สั่นรอบความเร็วศูนย์ · ชดเชยไม่ครบ ปล่อยให้เทอม I จัดการส่วนที่เหลือ
แล็บ: ลูปความเร็วของมอเตอร์
พลานต์คือมอเตอร์จาก M-2 ( rad/s ต่อ V) และแบบมีโหลดเฉื่อยมากขึ้น ลองตั้ง PI แล้วดูการรบกวนจากโหลดครึ่งทาง เปิด “จำกัด |u|” ที่ 12 V เพื่อเห็นข้อจำกัดของแหล่งจ่าย
กำลังโหลดแล็บ (ต้องเปิด JavaScript)
ไอเดียโปรเจกต์เมคาทรอนิกส์ (จากง่ายไปยาก)
| โปรเจกต์ | สิ่งที่ได้เรียน | หน้าที่เกี่ยวข้อง | ระดับ |
|---|---|---|---|
| คุมความเร็วพัดลม/มอเตอร์ DC ด้วยเอนโค้ดเดอร์ | PI, PWM, วัดความเร็ว | PID | พื้นฐาน |
| คุมอุณหภูมิกล่อง/หัวแร้ง/เตาอบรีโฟลว์ | FOPDT, จูน PID, anti-windup | จูน PID | พื้นฐาน |
| หุ่นยนต์เดินตามเส้น | PD, เซนเซอร์อาร์เรย์, ความเร็วล้อ | โรโบติกส์ | พื้นฐาน |
| เซอร์โวตำแหน่งจากมอเตอร์ DC | คาสเคด, feedforward | หน้านี้ | กลาง |
| Ball-and-beam / ball-on-plate | ระบบชนิด 2, lead, กล้อง | lead | กลาง |
| ลอยแม่เหล็ก (maglev) | พลานต์ไม่เสถียร, ทำให้เป็นเชิงเส้น, lead | ทำเป็นเชิงเส้น | กลาง |
| กิมบอลกล้องสองแกน | IMU, sensor fusion, PI อัตราหมุน | ดิจิทัล | กลาง |
| ลูกตุ้มกลับหัวบนรถ / Furuta pendulum | ปริภูมิสถานะ, LQR, swing-up | LQR | ขั้นสูง |
| เครื่อง CNC / พล็อตเตอร์ 2 แกน | วางแผนวิถี, ประสานหลายแกน | วิถี | ขั้นสูง |
| ไดรฟ์ BLDC แบบ FOC | Clarke–Park, ลูปกระแส dq | คลาร์ก-พาร์ก | ขั้นสูง |
ไอเดียเพิ่มเติมอีกหลายสิบระบบ พร้อมเซนเซอร์และตัวขับ อยู่ในคลังไอเดียระบบควบคุม
ต่อยอดไปหน้าถัดไป
รวมมอเตอร์หลายตัวเข้าด้วยกันเป็นแขนกลหรือหุ่นยนต์เคลื่อนที่ ต้องเพิ่มจลนศาสตร์และพลศาสตร์หลายข้อต่อ ไปต่อที่โรโบติกส์
คำถามที่พบบ่อย
ทำไมเซอร์โวไดรฟ์ใช้ลูปซ้อนสามชั้น?
เพราะแต่ละชั้นจัดการปัญหาคนละความเร็ว ลูปกระแสในสุด (kHz) คุมแรงบิดและป้องกันกระแสเกิน ลูปความเร็ว (หลักร้อย Hz) ต้านการรบกวนจากโหลด ลูปตำแหน่งนอกสุด (หลักสิบ Hz) ทำให้ถึงเป้า ลูปในที่เร็วทำให้ลูปนอกเห็นพลานต์ที่ง่ายขึ้น และจำกัดค่าแต่ละชั้นได้อย่างปลอดภัย
แบนด์วิดท์ของแต่ละลูปควรห่างกันเท่าไร?
กฎทั่วไปคือ 5 ถึง 10 เท่า เช่น ลูปกระแส 1–2 kHz ลูปความเร็ว 100–200 Hz ลูปตำแหน่ง 10–30 Hz ถ้าห่างน้อยกว่านั้น ลูปในจะเพิ่มเฟสล่าช้าให้ลูปนอกจนมาร์จินลดลง
เลือกมอเตอร์สำหรับโปรเจกต์อย่างไร?
สเต็ปเปอร์เหมาะกับงานตำแหน่งเบา ๆ ไม่ต้องมีเซนเซอร์ (เครื่องพิมพ์ 3 มิติ) แต่หลุดขั้นได้ถ้าโหลดเกิน มอเตอร์ DC มีแปรงถ่านควบคุมง่าย ราคาถูก เหมาะกับหุ่นยนต์ล้อ BLDC/PMSM มีประสิทธิภาพสูงและเร็ว ต้องใช้ไดรเวอร์ FOC เหมาะกับโดรนและแขนกล ส่วนเซอร์โว RC รวมมอเตอร์ เกียร์ และตัวควบคุมตำแหน่งไว้ในตัว