มอเตอร์ BLDC และ ESC
UAT 203 ระบบไฟฟ้าและอิเล็กทรอนิกส์สำหรับระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายหลักการทำงานของมอเตอร์ BLDC และการสลับขดลวดหกขั้นของ ESC แบบไม่มีเซนเซอร์
- แปลงค่า KV เป็นค่าคงที่แรงบิด และคำนวณรอบหมุน แรงบิด และประสิทธิภาพจากแบบจำลองอย่างง่าย
- อธิบายโพรโทคอล PWM และ DShot และประโยชน์ของ telemetry จาก ESC
- เลือก ESC และ firmware ให้เหมาะกับมอเตอร์และตัวควบคุมการบิน
ทำไมต้องรู้
มอเตอร์ของโดรนเกือบทั้งหมดเป็น มอเตอร์ไร้แปรงถ่าน (BLDC) ซึ่งหมุนเองไม่ได้ ต้องมี ESC (electronic speed controller) สลับกระแสเข้าขดลวดตามจังหวะที่ถูกต้องหลายพันครั้งต่อวินาที ถ้าเลือก ESC เล็กเกินไป มันจะร้อนจนดับกลางอากาศ ถ้าเลือกมอเตอร์ KV ไม่เข้ากับแรงดันและใบพัด มอเตอร์จะดึงกระแสเกินหรือได้แรงขับไม่พอ
มอเตอร์ BLDC และ ESC
มอเตอร์ BLDC มีแม่เหล็กถาวรบนส่วนที่หมุน และขดลวดสามเฟสบนส่วนที่อยู่กับที่ ESC สลับไฟเข้าขดลวดทีละคู่เป็นหกขั้นต่อหนึ่งรอบทางไฟฟ้า ทำให้สนามแม่เหล็กหมุนนำแม่เหล็กไปเรื่อย ๆ
ESC ต้องรู้ว่าแม่เหล็กอยู่ตำแหน่งใดจึงจะสลับถูกจังหวะ ESC ของโดรนส่วนใหญ่ ไม่มีเซนเซอร์ตำแหน่ง แต่ใช้เฟสที่ลอยอยู่ในแต่ละขั้นวัด แรงดันไฟฟ้าย้อนกลับ (back-EMF) ที่มอเตอร์สร้างขึ้นขณะหมุน ตามคู่มือ Microchip AN1175 ข้อจำกัดคือขณะเริ่มหมุนแทบไม่มี back-EMF ESC จึงต้องมีขั้นตอนออกตัวพิเศษ
KV และค่าคงที่แรงบิด
KV คือรอบหมุนขณะไม่มีโหลดต่อแรงดันหนึ่งโวลต์ (rpm/V) มอเตอร์ 400 KV ที่ 22.2 V หมุนได้ราว 8,880 rpm เมื่อไม่มีโหลด KV สัมพันธ์กับ ค่าคงที่แรงบิด (แรงบิดต่อกระแส) ตามเอกสารของ maxon โดย เมื่อ KV มีหน่วย rpm/V และ มีหน่วย N·m/A มอเตอร์ KV ต่ำจึงให้แรงบิดต่อแอมป์สูงกว่า เหมาะกับใบพัดใหญ่
KV อย่างเดียวไม่ได้บอกแรงขับ แรงขับขึ้นกับใบพัด รอบหมุน และกระแสที่แรงดันนั้น (โมดูล 4)
ตัวอย่างที่ 1 มอเตอร์ 400 KV ที่ 22.2 V
แบบจำลองอย่างง่าย: ความต้านทานขดลวด 0.08 Ω กระแสขณะไม่มีโหลด 0.8 A (ค่าสมมติ ค่าจริงดูจากเอกสารผู้ผลิต)
import math
kv, volts, r_winding, i_noload = 400, 22.2, 0.08, 0.8
kt = 60 / (2 * math.pi * kv)
print(f"Kt = {kt * 1000:.2f} mN·m/A; no-load speed ≈ {kv * volts:.0f} rpm")
for amps in (10, 20, 30):
rpm = kv * (volts - amps * r_winding)
torque = kt * (amps - i_noload)
p_mech = torque * rpm * 2 * math.pi / 60
p_elec = volts * amps
print(f"{amps:>2} A: {rpm:.0f} rpm, {torque:.3f} N·m, {p_mech:.0f} W out of {p_elec:.0f} W in, "
f"efficiency {p_mech / p_elec:.0%}")
Kt = 23.87 mN·m/A; no-load speed ≈ 8880 rpm
10 A: 8560 rpm, 0.220 N·m, 197 W out of 222 W in, efficiency 89%
20 A: 8240 rpm, 0.458 N·m, 396 W out of 444 W in, efficiency 89%
30 A: 7920 rpm, 0.697 N·m, 578 W out of 666 W in, efficiency 87%
ยิ่งกระแสสูง แรงดันตกในขดลวดยิ่งมาก รอบหมุนจึงลดลง และความร้อน ทำให้ประสิทธิภาพที่กระแสสูงลดลง แบบจำลองนี้ไม่รวมการสูญเสียในแกนเหล็กและ ESC ค่าจริงจึงต่ำกว่านี้
สัญญาณสั่งและข้อมูลย้อนกลับ
- PWM แบบเดิมสั่งด้วยความกว้างพัลส์ ต้องสอบเทียบช่วงสัญญาณ
- DShot ส่งคำสั่งเป็นดิจิทัล ไม่ต้องสอบเทียบ มีความเร็ว DShot150, 300, 600 และ 1200 เอกสาร ArduPilot แนะนำ DShot600 สำหรับโดรนส่วนใหญ่ และ DShot150 สำหรับอากาศยานใหญ่ที่สายสัญญาณยาว
- Bidirectional DShot ส่งรอบหมุนกลับมาทางสายเดียวกัน ใช้กับตัวกรองสัญญาณรบกวนตามรอบหมุนได้
- ESC telemetry แบบสายแยกส่งรอบหมุน แรงดัน กระแส และอุณหภูมิ ใช้ตรวจมอเตอร์ที่ทำงานผิดปกติ (ดู UAT 321)
Firmware ของ ESC แบบเปิดที่ใช้แพร่หลายคือ AM32 (สัญญาอนุญาต GPL-3.0 ใช้กับชิป STM32 และอื่น ๆ) และ Bluejay (พัฒนาต่อจาก BLHeli_S) ทั้งสองรองรับ bidirectional DShot ส่วน BLHeli_32 มีรายงานว่าหยุดพัฒนาในปี 2024
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ทดสอบมอเตอร์และ ESC บนแท่นวัด
- อ่านเอกสารข้อมูลของมอเตอร์ฝึก ระบุ KV ความต้านทานขดลวด กระแสขณะไม่มีโหลด และกระแสสูงสุด แล้วคำนวณ
- ถอดใบพัด ยึดมอเตอร์กับแท่นทดสอบ ใช้แหล่งจ่ายจำกัดกระแสและเครื่องวัดรอบ วัดรอบหมุนขณะไม่มีโหลดที่แรงดันสองค่า เทียบกับ KV
- ตั้ง ESC เป็น DShot600 ใน ArduPilot เปิด bidirectional DShot (ถ้า ESC รองรับ) แล้วดูค่ารอบหมุนใน telemetry
- ภายใต้การควบคุมของอาจารย์ ติดใบพัดบนแท่นวัดแรงขับที่มีกรง วัดแรงขับ กระแส และรอบหมุนที่คันเร่งหลายระดับ
- ใช้โค้ดตัวอย่างที่ 1 กับค่าจริงของมอเตอร์ฝึก เทียบประสิทธิภาพที่คำนวณกับที่วัดได้
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ใช้ KV บอกแรงขับ โดยไม่ดูใบพัดและข้อมูลทดสอบ
- เลือก ESC พิกัดพอดีกับกระแสสูงสุด โดยไม่มีส่วนเผื่อและการระบายความร้อน
- ใช้ DShot กับ ESC ที่ไม่รองรับ หรือสายสัญญาณยาวเกินที่ความเร็วสูง
- ทดสอบมอเตอร์บนโต๊ะโดยติดใบพัด นอกแท่นที่มีกรง
- ลืมว่าแบบจำลองอย่างง่ายไม่รวมการสูญเสียทั้งหมด
สรุป
- BLDC ต้องมี ESC สลับขดลวดหกขั้น ESC แบบไม่มีเซนเซอร์หาตำแหน่งจาก back-EMF
- KV คือ rpm ต่อโวลต์ขณะไม่มีโหลด และ
- รอบหมุนลดลงและความร้อนเพิ่มเมื่อกระแสสูง
- DShot600 เป็นค่าที่ ArduPilot แนะนำ และ telemetry ช่วยเฝ้าระวังมอเตอร์ firmware แบบเปิดคือ AM32 และ Bluejay
แบบฝึกตรวจความเข้าใจ
- มอเตอร์ 920 KV ที่ 14.8 V หมุนขณะไม่มีโหลดประมาณกี่ rpm
- มอเตอร์ 500 KV มีค่าคงที่แรงบิดเท่าใด (mN·m/A)
- N·m/A กระแส 15 A กระแสขณะไม่มีโหลด 1 A แรงบิดเท่าใด
- ESC แบบไม่มีเซนเซอร์รู้ตำแหน่งแม่เหล็กได้อย่างไร
- ArduPilot แนะนำ DShot ความเร็วใดสำหรับโดรนส่วนใหญ่
เฉลย
- rpm
- N·m/A หรือ 19.1 mN·m/A
- N·m
- วัดแรงดัน back-EMF ที่เฟสที่ลอยอยู่ในแต่ละขั้น
- DShot600
สรุปสูตรสำคัญ
| ค่าคงที่แรงบิดจาก KV | |
| รอบหมุนจากแรงดันที่เหลือ | |
| แรงบิดและกำลังกล |
แหล่งอ้างอิงหลัก
- maxon. Key information on maxon DC motor and maxon EC motor (speed constant and torque constant). link
- Microchip Technology. Sensorless brushless DC motor control with PIC16 (AN1175, DS00001175B). link
- ArduPilot Dev Team. DShot and bi-directional DShot. ArduPilot Copter documentation. link
- ArduPilot Dev Team. ESC telemetry. ArduPilot Copter documentation. link
- AM32 contributors. AM32 ESC firmware. link
- Bluejay contributors. Bluejay ESC firmware. link
- Quan, Q. (2017). Introduction to multicopter design and control. Springer Singapore. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz