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

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

// บทที่ 13.23 · ระบบควบคุม · Mechatronic Systems Control

ระบบควบคุมเมคาทรอนิกส์: เซนเซอร์ แอคชูเอเตอร์ เซอร์โว และคาสเคด

เมคาทรอนิกส์คือจุดที่กลไก ไฟฟ้า อิเล็กทรอนิกส์ และซอฟต์แวร์มาบรรจบกัน และระบบควบคุมคือกาวที่ยึดทุกอย่างไว้ เครื่อง CNC เครื่องพิมพ์ 3 มิติ กิมบอลกล้อง สายพานลำเลียง แขนกล และหุ่นยนต์ทุกตัว มีหัวใจเดียวกัน: มอเตอร์ที่ถูกคุมด้วยลูปซ้อนกระแส–ความเร็ว–ตำแหน่ง หน้านี้ออกแบบเซอร์โวจริงตั้งแต่เลือกเซนเซอร์จนถึงตั้งเกนทุกลูป ด้วยตัวเลขจากมอเตอร์ในตัวอย่าง M-2 สูตรใช้รหัส K

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • คาสเคด: กระแส (kHz) ⊂ ความเร็ว (100 Hz) ⊂ ตำแหน่ง (10 Hz) ห่างกัน 5–10 เท่า
  • ลูปกระแส PI: KP=Lωci, KI=RωciK_P = L\omega_{ci},\ K_I = R\omega_{ci} (ศูนย์หักล้างขั้วไฟฟ้า)
  • ลูปความเร็ว PI: KP=Jωcs/KtK_P = J\omega_{cs}/K_t ศูนย์ที่ ωcs/5\omega_{cs}/5 · ลูปตำแหน่ง P: KP=ωcpK_P = \omega_{cp}
  • 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 · เกน VbusV_{bus}
ตัวควบคุมMCU (STM32, ESP32, Arduino), DSP, FPGA, PLCคาบสุ่ม หน่วงคำนวณ ความละเอียด PWM (ดิจิทัล)

K1 Encoder resolution ความละเอียดเอนโค้ดเดอร์

Δθ=360∘4NPPR,Δωmin⁡=2π4NPPR Ts rad/s (วิธีนับพัลส์ต่อคาบ)\Delta\theta = \frac{360^\circ}{4N_{PPR}}, \qquad \Delta\omega_{\min} = \frac{2\pi}{4N_{PPR}\,T_s} \ \text{rad/s (วิธีนับพัลส์ต่อคาบ)}

ตัวคูณ 4 จาก quadrature (นับทุกขอบของ A และ B) · ความเร็วต่ำใช้วิธีจับเวลาระหว่างพัลส์ (T-method) หรือผสม (M/T method)

ตัวอย่าง K-1 · เอนโค้ดเดอร์ 1000 PPR

ความละเอียดมุมและความเร็วเป็นเท่าไร ถ้าคำนวณความเร็วทุก 1 ms

  1. 4×1000=40004 \times 1000 = 4000 นับต่อรอบ: Δθ=0.09∘\Delta\theta = 0.09^\circ K1

  2. 1 นับต่อ 1 ms = 14000\frac{1}{4000} รอบ ต่อ 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 ลูปกระแส

IV≈1Ls+R,Ci(s)=KPs+R/Ls:  KP=L ωci,  KI=R ωci ⇒ II∗=ωcis+ωci\frac{I}{V} \approx \frac{1}{Ls + R}, \qquad C_i(s) = K_{P}\frac{s + R/L}{s}:\ \ K_P = L\,\omega_{ci},\ \ K_I = R\,\omega_{ci} \ \Rightarrow\ \frac{I}{I^*} = \frac{\omega_{ci}}{s + \omega_{ci}}

ศูนย์ของ PI หักล้างขั้วไฟฟ้า −R/L-R/L วงปิดเป็นอันดับหนึ่งที่แบนด์วิดท์ ωci\omega_{ci} · แรง EMF ต้านช้ามากเทียบกับลูปนี้ (มองเป็นการรบกวน)

K3 Speed loop ลูปความเร็ว

ΩI∗≈KtJs,Cω(s)=KP+KIs:  KP=JωcsKt,  KI=KPωcs5\frac{\Omega}{I^*} \approx \frac{K_t}{Js}, \qquad C_\omega(s) = K_P + \frac{K_I}{s}:\ \ K_P = \frac{J\omega_{cs}}{K_t},\ \ K_I = K_P\frac{\omega_{cs}}{5}

ครอสโอเวอร์ที่ ωcs\omega_{cs} ศูนย์ PI ต่ำกว่า 5 เท่า (PM ≈ 70°) · JJ ต้องรวมโหลดที่สะท้อนผ่านเกียร์ (M10) ไม่อย่างนั้นแบนด์วิดท์จริงจะต่ำกว่าที่ออกแบบ

K4 Position loop + feedforward ลูปตำแหน่งและป้อนไปข้างหน้า

ω∗=KPθ(θ∗−θ)+θ˙∗,i∗=Cω(ω∗−ω)+JKtθ¨∗,KPθ=ωcp\omega^* = K_{P\theta}(\theta^* - \theta) + \dot\theta^*, \qquad i^* = C_\omega(\omega^* - \omega) + \frac{J}{K_t}\ddot\theta^*, \qquad K_{P\theta} = \omega_{cp}

ลูปตำแหน่ง P พอ เพราะพลานต์มีอินทิเกรเตอร์อยู่แล้ว (ชนิด 1) · feedforward ความเร็วและความเร่งจากวิถีที่วางแผนไว้ ทำให้ following error เกือบเป็นศูนย์ขณะเคลื่อนที่ โดยไม่ต้องเพิ่มเกน (ไม่เสียเสถียรภาพ)

ตัวอย่าง K-2 · ตั้งเกนเซอร์โวทั้งสามชั้น

มอเตอร์ R=2 Ω, L=1R = 2\ \Omega,\ L = 1 mH, J=10−5J = 10^{-5} kg·m², Kt=0.02K_t = 0.02 N·m/A ต้องการแบนด์วิดท์ กระแส 1 kHz ความเร็ว 100 Hz ตำแหน่ง 10 Hz

  1. กระแส K2: ωci=2π(1000)=6283\omega_{ci} = 2\pi(1000) = 6283 → KP=10−3(6283)=6.28K_P = 10^{-3}(6283) = 6.28 V/A, KI=2(6283)=12566K_I = 2(6283) = 12566 V/(A·s)

  2. ความเร็ว K3: ωcs=628\omega_{cs} = 628 → KP=10−5(628)0.02=0.314K_P = \dfrac{10^{-5}(628)}{0.02} = 0.314 A·s/rad, KI=0.314×628/5=39.5K_I = 0.314 \times 628/5 = 39.5 A/rad

  3. ตำแหน่ง K4: KPθ=2π(10)=62.8K_{P\theta} = 2\pi(10) = 62.8 (rad/s)/rad

จำลองแบบเต็ม (รวม EMF และไดนามิกทุกลูป): ลูปกระแส PM 90° แบนด์วิดท์ 1.0 kHz · ลูปความเร็ว PM 73° ครอสโอเวอร์ 101 Hz · ลูปตำแหน่ง PM 89° ครอสโอเวอร์ 10.4 Hz ไม่มี overshoot เข้าที่ใน 64 ms

python-control ✓ · ในงานจริงจำกัด i∗i^* ไม่เกินกระแสสูงสุดของมอเตอร์ และจำกัด ω∗\omega^* ด้วย พร้อม anti-windup ทุกชั้น

ปัญหาจริง: แรงเสียดทาน backlash และเรโซแนนซ์ ขั้นสูง

K5 Mechanical resonance and notch filter เรโซแนนซ์ทางกลและฟิลเตอร์ notch

ωr=k(1Jm+1JL),N(s)=s2+2ζzω0s+ω02s2+2ζpω0s+ω02,  ζz≪ζp\omega_r = \sqrt{k\left(\frac{1}{J_m} + \frac{1}{J_L}\right)}, \qquad N(s) = \frac{s^2 + 2\zeta_z\omega_0s + \omega_0^2}{s^2 + 2\zeta_p\omega_0s + \omega_0^2},\ \ \zeta_z \ll \zeta_p

เพลาหรือสายพานยืดหยุ่น (kk) ทำให้มอเตอร์กับโหลดเป็นสองมวลที่สั่นใส่กัน ยอดเรโซแนนซ์บนโบดทำให้ GM หาย · วาง notch ที่ ω0=ωr\omega_0 = \omega_r หรือจำกัดแบนด์วิดท์ลูปความเร็วให้ต่ำกว่า ωr/3\omega_r/3

K6 Friction compensation ชดเชยแรงเสียดทาน

Tf=Tcsign⁡(ω)+b ω,iff=T^csign⁡(ω∗)+b^ ω∗KtT_f = T_c\operatorname{sign}(\omega) + b\,\omega, \qquad i_{ff} = \frac{\hat T_c\operatorname{sign}(\omega^*) + \hat b\,\omega^*}{K_t}

ใช้ ω∗\omega^* (ค่าสั่ง) แทน ω\omega วัด เพื่อไม่ให้สั่นรอบความเร็วศูนย์ · ชดเชยไม่ครบ ปล่อยให้เทอม I จัดการส่วนที่เหลือ

แล็บ: ลูปความเร็วของมอเตอร์

พลานต์คือมอเตอร์จาก M-2 (49.80.05s+1\frac{49.8}{0.05s + 1} 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-upLQRขั้นสูง
เครื่อง CNC / พล็อตเตอร์ 2 แกนวางแผนวิถี, ประสานหลายแกนวิถีขั้นสูง
ไดรฟ์ BLDC แบบ FOCClarke–Park, ลูปกระแส dqคลาร์ก-พาร์กขั้นสูง

ไอเดียเพิ่มเติมอีกหลายสิบระบบ พร้อมเซนเซอร์และตัวขับ อยู่ในคลังไอเดียระบบควบคุม

ต่อยอดไปหน้าถัดไป

รวมมอเตอร์หลายตัวเข้าด้วยกันเป็นแขนกลหรือหุ่นยนต์เคลื่อนที่ ต้องเพิ่มจลนศาสตร์และพลศาสตร์หลายข้อต่อ ไปต่อที่โรโบติกส์

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

ทำไมเซอร์โวไดรฟ์ใช้ลูปซ้อนสามชั้น?

เพราะแต่ละชั้นจัดการปัญหาคนละความเร็ว ลูปกระแสในสุด (kHz) คุมแรงบิดและป้องกันกระแสเกิน ลูปความเร็ว (หลักร้อย Hz) ต้านการรบกวนจากโหลด ลูปตำแหน่งนอกสุด (หลักสิบ Hz) ทำให้ถึงเป้า ลูปในที่เร็วทำให้ลูปนอกเห็นพลานต์ที่ง่ายขึ้น และจำกัดค่าแต่ละชั้นได้อย่างปลอดภัย

แบนด์วิดท์ของแต่ละลูปควรห่างกันเท่าไร?

กฎทั่วไปคือ 5 ถึง 10 เท่า เช่น ลูปกระแส 1–2 kHz ลูปความเร็ว 100–200 Hz ลูปตำแหน่ง 10–30 Hz ถ้าห่างน้อยกว่านั้น ลูปในจะเพิ่มเฟสล่าช้าให้ลูปนอกจนมาร์จินลดลง

เลือกมอเตอร์สำหรับโปรเจกต์อย่างไร?

สเต็ปเปอร์เหมาะกับงานตำแหน่งเบา ๆ ไม่ต้องมีเซนเซอร์ (เครื่องพิมพ์ 3 มิติ) แต่หลุดขั้นได้ถ้าโหลดเกิน มอเตอร์ DC มีแปรงถ่านควบคุมง่าย ราคาถูก เหมาะกับหุ่นยนต์ล้อ BLDC/PMSM มีประสิทธิภาพสูงและเร็ว ต้องใช้ไดรเวอร์ FOC เหมาะกับโดรนและแขนกล ส่วนเซอร์โว RC รวมมอเตอร์ เกียร์ และตัวควบคุมตำแหน่งไว้ในตัว

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