โมดูล 2/5 · สัปดาห์ 4–6 · 27 ชม.

สอบเทียบและทดสอบ

UAT 321 ปฏิบัติการติดตั้ง การประกอบรวม ตรวจสอบ และบำรุงรักษาระบบอากาศยานไร้คนขับ

เวลาเรียนประมาณ 90 นาทีร่าง รอตรวจปรับปรุงล่าสุด 27 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. ลำดับขั้นการสอบเทียบเซนเซอร์ วิทยุ ESC และระบบวัดแบตเตอรี่ก่อนบินครั้งแรก พร้อมเหตุผลของแต่ละขั้น
  2. ปรับค่าคูณแรงดันและกระแสของโมดูลวัดไฟจากการวัดเทียบ
  3. วิเคราะห์ log การสั่นเทียบเกณฑ์ของ ArduPilot และตัดสินว่าต้องแก้ไขหรือไม่
  4. ตั้งค่า failsafe แบตเตอรี่และอธิบายหน้าที่ของการตรวจก่อนติดเครื่อง (pre-arm)

ความรู้พื้นฐานที่ควรมี: UAT 321 โมดูล 1

ทำไมต้องรู้

ตัวควบคุมการบินรู้จักโลกผ่านเซนเซอร์เท่านั้น ถ้า accelerometer เข้าใจว่าพื้นเอียง 3° โดรนจะดริฟต์ไปข้างหนึ่งตลอดเวลา ถ้าเข็มทิศถูกรบกวน โดรนอาจบินวนเป็นวงก้นหอย (toilet bowl) และถ้าระบบวัดแบตเตอรี่อ่านแรงดันผิด failsafe จะทำงานช้าเกินไปจนแบตเตอรี่หมดกลางอากาศ การสอบเทียบคือการสอนให้เครื่องวัดทุกตัวอ่านค่าตรงกับความจริง แล้วใช้การบินทดสอบกับ log เป็นหลักฐานว่าสอนสำเร็จ

ลำดับการสอบเทียบ

สิบขั้นเรียงเป็นสองแถว: ตรวจรุ่น firmware, ทิศติดตั้งและกรอบ, accelerometer 6 ท่า, level, เข็มทิศ, วิทยุบังคับ, ESC และทดสอบมอเตอร์, วัดแบตเตอรี่และ failsafe, pre-arm ผ่านครบ และบินทดสอบอ่าน log
ภาพที่ 1 ลำดับการสอบเทียบและตั้งค่าก่อนบินครั้งแรก

ลำดับนี้สำคัญ เพราะขั้นหลังพึ่งขั้นก่อน เช่น ถ้าตั้งทิศติดตั้งของบอร์ดผิด การสอบเทียบ accelerometer ทั้งหมดจะผิดตาม

  1. รุ่น firmware และชนิดกรอบ บันทึกรุ่นไว้ทุกครั้ง เพราะชื่อพารามิเตอร์และขั้นตอนเปลี่ยนตามรุ่น
  2. ทิศติดตั้ง (board orientation) บอกระบบว่าบอร์ดหันทางไหนเทียบกับลำ
  3. Accelerometer 6 ท่า วางลำนิ่งในหกทิศ (ราบ ตะแคงซ้าย ตะแคงขวา หัวก้ม หัวเงย และคว่ำ) เพื่อหาค่าชดเชยและสเกลของแต่ละแกน
  4. Level บอกว่าท่าราบของลำคือท่าไหน เอกสาร ArduPilot ระบุว่าใช้ชดเชยมุมที่บอร์ดติดเอียงจากลำได้ไม่เกินประมาณ 10°
  5. เข็มทิศ หมุนลำให้ครบทุกทิศ ทำกลางแจ้งห่างโครงเหล็กและรถยนต์ ถ้าติดตั้งอุปกรณ์ใหม่ใกล้เข็มทิศต้องสอบเทียบใหม่
  6. วิทยุบังคับ ให้ระบบรู้ช่วงปลายสุดและกึ่งกลางของแต่ละช่อง
  7. ESC และทดสอบมอเตอร์ ESC แบบ PWM ต้องสอบเทียบช่วงสัญญาณ ส่วน ESC แบบ DShot หรือ DroneCAN ไม่ต้อง จากนั้นใช้คำสั่งทดสอบมอเตอร์ทีละตัว โดยถอดใบพัด เพื่อยืนยันลำดับและทิศหมุนตามผังมอเตอร์ของกรอบนั้น
  8. ระบบวัดแบตเตอรี่และ failsafe (หัวข้อถัดไป)
  9. 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 ใหม่ จึงมีหลักฐานว่าการแก้ได้ผล ถ้ายังสั่น ให้ตรวจต่อที่ความสมดุลของใบพัด ลูกปืนมอเตอร์ ความแข็งของแขน และฐานลดการสั่น

แถบแนวนอนของค่าการสั่นเฉลี่ยบนพื้นสามช่วง: เขียว 0 ถึง 30 ยอมรับได้ เหลือง 30 ถึง 60 ควรตรวจ ชมพู 60 ถึง 100 มักมีปัญหา ก่อนแก้ X 24.7 Y 26.8 Z 42.0 หลังแก้ X 11.0 Y 12.0 Z 17.1
ภาพที่ 2 ค่าการสั่นก่อนและหลังเปลี่ยนใบพัดที่เสียหาย

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: สอบเทียบและบินทดสอบครั้งแรก

  1. สอบเทียบตามลำดับในภาพที่ 1 ด้วย Mission Planner หรือ QGroundControl บันทึกรุ่น firmware และภาพหน้าจอผลแต่ละขั้น
  2. ถอดใบพัด ทดสอบมอเตอร์ทีละตัว ยืนยันลำดับและทิศหมุนกับผังมอเตอร์ของกรอบ
  3. วัดแรงดันด้วยมัลติมิเตอร์ ปรับค่าคูณแรงดัน และตั้งเกณฑ์ failsafe แบตเตอรี่สำหรับ 6 เซลล์พร้อมเหตุผล
  4. ภายใต้การควบคุมของอาจารย์ บินลอยตัวทดสอบในพื้นที่ปิด 2 นาที ดาวน์โหลด log แล้ววิเคราะห์การสั่นด้วยโค้ดในตัวอย่างที่ 2
  5. เปรียบเทียบประจุที่ใช้ไปตาม log กับที่เครื่องชาร์จเติมกลับ และสรุปว่าต้องปรับค่าคูณกระแสหรือไม่

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • สอบเทียบเข็มทิศในอาคารหรือใกล้เหล็ก ทำให้ค่าชดเชยผิดตั้งแต่ต้น
  • ตั้งทิศติดตั้งหลังสอบเทียบ accelerometer จึงต้องสอบเทียบซ้ำ
  • ใช้ค่า failsafe เริ่มต้นของ 3 เซลล์กับแบตเตอรี่ 6 เซลล์
  • ปิดการตรวจ pre-arm เพื่อให้ติดเครื่องได้ แทนการแก้ต้นเหตุ
  • ดูแค่ค่าเฉลี่ยการสั่น โดยไม่ดูช่วงที่เกินเกณฑ์และ clipping

สรุป

  • สอบเทียบตามลำดับ เพราะขั้นหลังพึ่งขั้นก่อน และบันทึกรุ่น firmware ทุกครั้ง
  • ESC แบบ PWM ต้องสอบเทียบช่วงสัญญาณ ส่วน DShot และ DroneCAN ไม่ต้อง และถอดใบพัดทุกครั้งเมื่อทดสอบมอเตอร์
  • ค่าคูณแรงดันปรับด้วยอัตราส่วนค่าที่มิเตอร์วัดต่อค่าที่ระบบอ่าน
  • เกณฑ์การสั่นของ ArduPilot: ต่ำกว่า 30 m/s² ยอมรับได้ เกิน 60 m/s² มักมีปัญหา และ clipping ควรเป็นศูนย์
  • Failsafe แบตเตอรี่ต้องตั้งให้ตรงจำนวนเซลล์และภารกิจ

แบบฝึกตรวจความเข้าใจ

  1. ค่าคูณแรงดันเดิม 10.0 ระบบอ่าน 20.0 V มิเตอร์วัดได้ 20.5 V ค่าคูณใหม่เท่าใด
  2. ค่าการสั่นเฉลี่ยแกน Z เท่ากับ 45 m/s² อยู่ในช่วงใดตามเกณฑ์ ArduPilot
  3. ESC แบบใดไม่ต้องสอบเทียบช่วงสัญญาณ
  4. ทำไม failsafe แรงดันต่ำจึงรอให้แรงดันต่ำต่อเนื่องระยะหนึ่งก่อนทำงาน
  5. log ใช้ไป 3000 mAh แต่เครื่องชาร์จเติมกลับ 3300 mAh ระบบอ่านกระแสต่ำไปประมาณกี่เปอร์เซ็นต์
เฉลย
  1. ช่วง 30–60 m/s² ควรตรวจหาสาเหตุ
  2. ESC แบบ DShot และแบบ DroneCAN
  3. เพื่อไม่ให้แรงดันที่ตกชั่วขณะตอนดึงกระแสสูง เช่น ขณะไต่ระดับ ทำให้ failsafe ทำงานผิด

สรุปสูตรสำคัญ

ปรับค่าคูณแรงดัน
สัดส่วนเวลาที่เกินเกณฑ์

แหล่งอ้างอิงหลัก

  1. ArduPilot Dev Team. Accelerometer calibration. ArduPilot Copter documentation. link
  2. ArduPilot Dev Team. Compass calibration. ArduPilot Copter documentation. link
  3. ArduPilot Dev Team. ESC calibration. ArduPilot Copter documentation. link
  4. ArduPilot Dev Team. Connect ESCs and motors (motor test). ArduPilot Copter documentation. link
  5. ArduPilot Dev Team. Measuring vibration. ArduPilot Copter documentation. link
  6. ArduPilot Dev Team. Pre-arm safety checks. ArduPilot Copter documentation. link
  7. ArduPilot Dev Team. Battery failsafe. ArduPilot Copter documentation. link
  8. PX4 Autopilot. Standard configuration (sensor calibration). PX4 user guide. link
  9. PX4 Autopilot. Battery estimation tuning. PX4 user guide. link

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ

หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: เซนเซอร์และระบบสมองกลฝังตัว · คณิตศาสตร์ ฟิสิกส์ และสถิติ · การติดตั้ง บำรุงรักษา และการทดสอบ