สอบเทียบและทดสอบ
UAT 321 ปฏิบัติการติดตั้ง การประกอบรวม ตรวจสอบ และบำรุงรักษาระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- ลำดับขั้นการสอบเทียบเซนเซอร์ วิทยุ ESC และระบบวัดแบตเตอรี่ก่อนบินครั้งแรก พร้อมเหตุผลของแต่ละขั้น
- ปรับค่าคูณแรงดันและกระแสของโมดูลวัดไฟจากการวัดเทียบ
- วิเคราะห์ log การสั่นเทียบเกณฑ์ของ ArduPilot และตัดสินว่าต้องแก้ไขหรือไม่
- ตั้งค่า failsafe แบตเตอรี่และอธิบายหน้าที่ของการตรวจก่อนติดเครื่อง (pre-arm)
ทำไมต้องรู้
ตัวควบคุมการบินรู้จักโลกผ่านเซนเซอร์เท่านั้น ถ้า accelerometer เข้าใจว่าพื้นเอียง 3° โดรนจะดริฟต์ไปข้างหนึ่งตลอดเวลา ถ้าเข็มทิศถูกรบกวน โดรนอาจบินวนเป็นวงก้นหอย (toilet bowl) และถ้าระบบวัดแบตเตอรี่อ่านแรงดันผิด failsafe จะทำงานช้าเกินไปจนแบตเตอรี่หมดกลางอากาศ การสอบเทียบคือการสอนให้เครื่องวัดทุกตัวอ่านค่าตรงกับความจริง แล้วใช้การบินทดสอบกับ log เป็นหลักฐานว่าสอนสำเร็จ
ลำดับการสอบเทียบ
ลำดับนี้สำคัญ เพราะขั้นหลังพึ่งขั้นก่อน เช่น ถ้าตั้งทิศติดตั้งของบอร์ดผิด การสอบเทียบ accelerometer ทั้งหมดจะผิดตาม
- รุ่น firmware และชนิดกรอบ บันทึกรุ่นไว้ทุกครั้ง เพราะชื่อพารามิเตอร์และขั้นตอนเปลี่ยนตามรุ่น
- ทิศติดตั้ง (board orientation) บอกระบบว่าบอร์ดหันทางไหนเทียบกับลำ
- Accelerometer 6 ท่า วางลำนิ่งในหกทิศ (ราบ ตะแคงซ้าย ตะแคงขวา หัวก้ม หัวเงย และคว่ำ) เพื่อหาค่าชดเชยและสเกลของแต่ละแกน
- Level บอกว่าท่าราบของลำคือท่าไหน เอกสาร ArduPilot ระบุว่าใช้ชดเชยมุมที่บอร์ดติดเอียงจากลำได้ไม่เกินประมาณ 10°
- เข็มทิศ หมุนลำให้ครบทุกทิศ ทำกลางแจ้งห่างโครงเหล็กและรถยนต์ ถ้าติดตั้งอุปกรณ์ใหม่ใกล้เข็มทิศต้องสอบเทียบใหม่
- วิทยุบังคับ ให้ระบบรู้ช่วงปลายสุดและกึ่งกลางของแต่ละช่อง
- ESC และทดสอบมอเตอร์ ESC แบบ PWM ต้องสอบเทียบช่วงสัญญาณ ส่วน ESC แบบ DShot หรือ DroneCAN ไม่ต้อง จากนั้นใช้คำสั่งทดสอบมอเตอร์ทีละตัว โดยถอดใบพัด เพื่อยืนยันลำดับและทิศหมุนตามผังมอเตอร์ของกรอบนั้น
- ระบบวัดแบตเตอรี่และ failsafe (หัวข้อถัดไป)
- Pre-arm ระบบตรวจตัวเองก่อนยอมติดเครื่อง ต้องผ่านครบ ไม่ควรปิดการตรวจเพื่อให้บินได้
PX4 ใช้ขั้นตอนมาตรฐานคล้ายกัน คือทิศติดตั้ง เข็มทิศ gyroscope accelerometer และ level horizon ผ่านโปรแกรม QGroundControl
สอบเทียบระบบวัดแบตเตอรี่
โมดูลวัดไฟรายงานแรงดันและกระแสผ่านค่าคูณ (multiplier) ในพารามิเตอร์ ถ้าค่าคูณผิด ทุกการตัดสินใจที่ใช้แรงดันหรือพลังงานที่เหลือจะผิดตาม วิธีตรวจคือวัดแรงดันจริงด้วยมัลติมิเตอร์ และเทียบประจุที่ใช้ไปตาม log กับประจุที่เครื่องชาร์จเติมกลับ
ตัวอย่างที่ 1 ปรับค่าคูณแรงดันและกระแส
old_volt_mult = 10.10
reported_v, meter_v = 22.05, 22.41 # ค่าที่ระบบอ่าน และค่าที่มัลติมิเตอร์วัดพร้อมกัน
new_volt_mult = old_volt_mult * meter_v / reported_v
print(f"new voltage multiplier {new_volt_mult:.3f}")
logged_mah, charger_mah = 3620, 3980 # ประจุที่ใช้ไปตาม log และประจุที่เครื่องชาร์จเติมกลับ
print(f"current reading low by {1 - logged_mah / charger_mah:.1%}; scale current by {charger_mah / logged_mah:.3f}")
new voltage multiplier 10.265
current reading low by 9.0%; scale current by 1.099
ระบบอ่านกระแสต่ำไป 9% จึงประเมินว่ายังเหลือพลังงานมากกว่าความจริง ประจุที่เครื่องชาร์จเติมกลับมักสูงกว่าที่ใช้ไปเล็กน้อยเพราะการชาร์จมีการสูญเสีย จึงควรเทียบหลายเที่ยวบินก่อนปรับ
Failsafe แบตเตอรี่
Failsafe คือการกระทำอัตโนมัติเมื่อเกิดเหตุผิดปกติ เช่น บินกลับจุดขึ้นหรือลงจอดเมื่อแบตเตอรี่ต่ำ
- ArduPilot มีเกณฑ์สองระดับ คือระดับต่ำและระดับวิกฤต ตั้งได้ทั้งแรงดันและประจุที่เหลือ ค่าเริ่มต้นของแรงดันต่ำคือ 10.5 V ซึ่งเหมาะกับแบตเตอรี่ 3 เซลล์ แบตเตอรี่ 6 เซลล์จึง ต้องตั้งเอง ระบบจะทำงานเมื่อแรงดันต่ำกว่าเกณฑ์ต่อเนื่อง 10 วินาทีตามค่าเริ่มต้น เพื่อไม่ให้แรงดันที่ตกชั่วขณะตอนไต่ระดับทำให้ failsafe ทำงานผิด และเลือกการกระทำได้ เช่น ลงจอดหรือบินกลับ
- PX4 ประมาณประจุที่เหลือจากแรงดันต่อเซลล์ โดยค่าเริ่มต้นถือว่า 3.6 V ต่อเซลล์คือ “ว่าง” และ 4.05 V คือ “เต็ม” ขณะมีโหลด และมีเกณฑ์เตือน 15% วิกฤต 7% และฉุกเฉิน 5%
ค่าที่เหมาะสมขึ้นกับแบตเตอรี่ ภารกิจ และระยะที่ต้องบินกลับ ต้องกำหนดจากการทดสอบและบันทึกเหตุผลไว้ ไม่ใช้ค่าเริ่มต้นโดยไม่ตรวจ
ทดสอบการสั่นจาก log
การสั่นที่มากเกินไปทำให้ accelerometer อ่านค่าผิด และตัวประมาณตำแหน่งอาจคำนวณความสูงผิดจนโดรนไต่ระดับเองได้ ArduPilot บันทึกข้อความ VIBE ซึ่งมีค่าการสั่นของแต่ละแกน (m/s²) และจำนวนครั้งที่ accelerometer อ่านค่าชนเพดานของช่วงวัด (clipping) แบบนับสะสม
เอกสาร ArduPilot ให้เกณฑ์ว่าค่าต่ำกว่า 30 m/s² โดยทั่วไปยอมรับได้ ค่าสูงกว่า 60 m/s² มักมีปัญหาเกือบทุกครั้ง และ clipping ควรเป็นศูนย์ (ถ้าเพิ่มขึ้นเฉพาะตอนลงจอดแรงอาจยังไม่ใช่ปัญหา) PX4 ไม่ได้ให้ตัวเลขเกณฑ์แบบนี้ แต่ให้ดูกราฟการสั่นใน Flight Review
ตัวอย่างที่ 2 เปรียบเทียบการสั่นก่อนและหลังเปลี่ยนใบพัด
ไฟล์ vibe_log.csv เป็นข้อมูลสังเคราะห์รูปแบบเดียวกับ VIBE จากการลอยตัว 2 นาทีสองเที่ยว ก่อนและหลังเปลี่ยนใบพัดที่บิ่น ไม่ใช่ log ของโดรนรุ่นใด ดาวน์โหลดไฟล์ข้อมูล สคริปต์สร้างข้อมูล และโค้ดของบทเรียนได้ที่ /downloads/uat-321/
import pandas as pd
vibe = pd.read_csv("vibe_log.csv")
axes = ["VibeX", "VibeY", "VibeZ"]
for flight, g in vibe.groupby("flight", sort=False):
worst = g[axes].max(axis=1)
new_clips = g["Clip"].iloc[-1] - g["Clip"].iloc[0]
means = ", ".join(f"{a[-1]} {g[a].mean():.1f}" for a in axes)
print(f"{flight:<7} mean {means} | over 30: {(worst > 30).mean():.0%}, "
f"over 60: {(worst > 60).mean():.1%}, new clips {new_clips}")
before mean X 24.7, Y 26.8, Z 42.0 | over 30: 99%, over 60: 2.8%, new clips 17
after mean X 11.0, Y 12.0, Z 17.1 | over 30: 0%, over 60: 0.0%, new clips 0
ก่อนแก้ แกน Z เฉลี่ย 42 m/s² อยู่ในช่วงควรตรวจ มีช่วงเกิน 60 และ clipping เพิ่ม 17 ครั้ง หลังเปลี่ยนใบพัดทุกแกนต่ำกว่า 30 และไม่มี clipping ใหม่ จึงมีหลักฐานว่าการแก้ได้ผล ถ้ายังสั่น ให้ตรวจต่อที่ความสมดุลของใบพัด ลูกปืนมอเตอร์ ความแข็งของแขน และฐานลดการสั่น
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: สอบเทียบและบินทดสอบครั้งแรก
- สอบเทียบตามลำดับในภาพที่ 1 ด้วย Mission Planner หรือ QGroundControl บันทึกรุ่น firmware และภาพหน้าจอผลแต่ละขั้น
- ถอดใบพัด ทดสอบมอเตอร์ทีละตัว ยืนยันลำดับและทิศหมุนกับผังมอเตอร์ของกรอบ
- วัดแรงดันด้วยมัลติมิเตอร์ ปรับค่าคูณแรงดัน และตั้งเกณฑ์ failsafe แบตเตอรี่สำหรับ 6 เซลล์พร้อมเหตุผล
- ภายใต้การควบคุมของอาจารย์ บินลอยตัวทดสอบในพื้นที่ปิด 2 นาที ดาวน์โหลด log แล้ววิเคราะห์การสั่นด้วยโค้ดในตัวอย่างที่ 2
- เปรียบเทียบประจุที่ใช้ไปตาม log กับที่เครื่องชาร์จเติมกลับ และสรุปว่าต้องปรับค่าคูณกระแสหรือไม่
ข้อผิดพลาดที่พบบ่อย
ระวัง
- สอบเทียบเข็มทิศในอาคารหรือใกล้เหล็ก ทำให้ค่าชดเชยผิดตั้งแต่ต้น
- ตั้งทิศติดตั้งหลังสอบเทียบ accelerometer จึงต้องสอบเทียบซ้ำ
- ใช้ค่า failsafe เริ่มต้นของ 3 เซลล์กับแบตเตอรี่ 6 เซลล์
- ปิดการตรวจ pre-arm เพื่อให้ติดเครื่องได้ แทนการแก้ต้นเหตุ
- ดูแค่ค่าเฉลี่ยการสั่น โดยไม่ดูช่วงที่เกินเกณฑ์และ clipping
สรุป
- สอบเทียบตามลำดับ เพราะขั้นหลังพึ่งขั้นก่อน และบันทึกรุ่น firmware ทุกครั้ง
- ESC แบบ PWM ต้องสอบเทียบช่วงสัญญาณ ส่วน DShot และ DroneCAN ไม่ต้อง และถอดใบพัดทุกครั้งเมื่อทดสอบมอเตอร์
- ค่าคูณแรงดันปรับด้วยอัตราส่วนค่าที่มิเตอร์วัดต่อค่าที่ระบบอ่าน
- เกณฑ์การสั่นของ ArduPilot: ต่ำกว่า 30 m/s² ยอมรับได้ เกิน 60 m/s² มักมีปัญหา และ clipping ควรเป็นศูนย์
- Failsafe แบตเตอรี่ต้องตั้งให้ตรงจำนวนเซลล์และภารกิจ
แบบฝึกตรวจความเข้าใจ
- ค่าคูณแรงดันเดิม 10.0 ระบบอ่าน 20.0 V มิเตอร์วัดได้ 20.5 V ค่าคูณใหม่เท่าใด
- ค่าการสั่นเฉลี่ยแกน Z เท่ากับ 45 m/s² อยู่ในช่วงใดตามเกณฑ์ ArduPilot
- ESC แบบใดไม่ต้องสอบเทียบช่วงสัญญาณ
- ทำไม failsafe แรงดันต่ำจึงรอให้แรงดันต่ำต่อเนื่องระยะหนึ่งก่อนทำงาน
- log ใช้ไป 3000 mAh แต่เครื่องชาร์จเติมกลับ 3300 mAh ระบบอ่านกระแสต่ำไปประมาณกี่เปอร์เซ็นต์
เฉลย
- ช่วง 30–60 m/s² ควรตรวจหาสาเหตุ
- ESC แบบ DShot และแบบ DroneCAN
- เพื่อไม่ให้แรงดันที่ตกชั่วขณะตอนดึงกระแสสูง เช่น ขณะไต่ระดับ ทำให้ failsafe ทำงานผิด
สรุปสูตรสำคัญ
| ปรับค่าคูณแรงดัน | |
| สัดส่วนเวลาที่เกินเกณฑ์ |
แหล่งอ้างอิงหลัก
- ArduPilot Dev Team. Accelerometer calibration. ArduPilot Copter documentation. link
- ArduPilot Dev Team. Compass calibration. ArduPilot Copter documentation. link
- ArduPilot Dev Team. ESC calibration. ArduPilot Copter documentation. link
- ArduPilot Dev Team. Connect ESCs and motors (motor test). ArduPilot Copter documentation. link
- ArduPilot Dev Team. Measuring vibration. ArduPilot Copter documentation. link
- ArduPilot Dev Team. Pre-arm safety checks. ArduPilot Copter documentation. link
- ArduPilot Dev Team. Battery failsafe. ArduPilot Copter documentation. link
- PX4 Autopilot. Standard configuration (sensor calibration). PX4 user guide. link
- PX4 Autopilot. Battery estimation tuning. PX4 user guide. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
การสอบเทียบและความไม่แน่นอนของการวัด
การทดสอบ UAV และการวิเคราะห์หลักฐาน
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม