ไจโรสโคปคือเซนเซอร์ที่วัดความเร็วเชิงมุมของการหมุนของอุปกรณ์รอบสามแกน ต่างจากแอคเซเลอโรมิเตอร์ที่วัดความเร่งเชิงเส้น ไจโรสโคปจะตรวจจับการหมุนและการวางแนวในพื้นที่ ตามข้อมูลจาก STMicroelectronics, 2024 MEMS-ไจโรสโคปสมัยใหม่มีความแม่นยำถึง 0.01 องศาต่อวินาที ซึ่งช่วยให้นำไปใช้ในการนำทาง การรักษาเสถียรภาพภาพ และแอปพลิเคชัน AR
要点
ไจโรสโคป ในสมาร์ทโฟนคือเซนเซอร์ไมโครอิเล็กโตรเมคานิคอล (MEMS) ที่วัดความเร็วเชิงมุมของการหมุนของอุปกรณ์ แตกต่างจากไจโรสโคปเชิงกลในอากาศยาน MEMS-ไจโรสโคปคือชิปซิลิคอนขนาด 2×2×1 มม. ที่ติดตั้งบนแผงวงจรหลักของโทรศัพท์
ในสมาร์ทโฟนสมัยใหม่ใช้ MEMS-ไจโรสโคป แบบสั่นสะเทือนเท่านั้น — tuning-fork และ ring-design ซึ่งไม่มีชิ้นส่วนหมุน ทำให้มีความทนทานถึง 10 ปีของการทำงานต่อเนื่อง ผู้ผลิตชั้นนำคือ Bosch Sensortec (ซีรี่ส์ BMI), STMicroelectronics (ซีรี่ส์ L3G, A3G) และ InvenSense (ซีรี่ส์ ICM)
MEMS-ไจโรสโคปทั่วไปมีช่วงการวัดตั้งแต่ ±125 ถึง ±2000 °/วินาที ความถี่ในการสุ่มตัวอย่างสูงถึง 32 kHz และ กินไฟ 3–6 มิลลิแอมป์ ตามข้อมูลจาก Bosch Sensortec BMI160 (2023) ระดับสัญญาณรบกวนอยู่ที่ 0.007 °/วินาที/√Hz ที่ช่วง ±125 °/วินาที — เพียงพอสำหรับการติดตามการหมุนที่แม่นยำ
| พารามิเตอร์ | ค่า |
|---|---|
| เทคโนโลยี | MEMS (แบบสั่นสะเทือน) |
| ช่วง | ±125 — ±2000 °/วินาที |
| การกินไฟ | 3–6 มิลลิแอมป์ |
| ขนาด | 2×2×1 มม. |
| สัญญาณรบกวน | 0.007 °/วินาที/√Hz |
หลักการทำงานของ MEMS-ไจโรสโคปอาศัย แรงโคริโอลิส ภายในชิปมีมวลซิลิคอนที่สั่นด้วยความถี่ที่กำหนด (15–30 kHz) เมื่ออุปกรณ์หมุน แรงโคริโอลิสจะกระทำต่อมวลที่สั่น ซึ่งแปรผันตามความเร็วเชิงมุม
องค์ประกอบสำคัญของ MEMS-ไจโรสโคปคือ อิเล็กโทรดขับเคลื่อน ที่สร้างการสั่นสะเทือน และอิเล็กโทรดตรวจจับที่บันทึกการเบี่ยงเบน ตามงานวิจัย “MEMS Gyroscopes for Consumer Electronics” (IEEE, 2023) โครงสร้างทั่วไปประกอบด้วยโครงสร้างแบบหวี 4–8 ชุด วางสมมาตรรอบมวลกลาง
ไจโรสโคปสมัยใหม่ส่งข้อมูลผ่านบัส I²C หรือ SPI ตัวควบคุมสมาร์ทโฟนได้รับค่าความเร็วเชิงมุมสามแกน — แกน X (Pitch), Y (Roll) และ Z (Yaw) ADC ในตัวจะแปลงสัญญาณคาปาซิทีฟ เป็นค่าดิจิทัลความละเอียด 16–24 บิต อัตราการอัปเดตในโหมดเกมสูงถึง 400 Hz
แอคเซเลอโรมิเตอร์ วัดความเร่งเชิงเส้น — การเปลี่ยนแปลงความเร็วของวัตถุตามแนวแกน ไจโรสโคป วัดการหมุน — อัตราการเปลี่ยนแปลงของมุม เซนเซอร์ทั้งสองเสริมกัน: แอคเซเลอโรมิเตอร์บอกการวางแนวเทียบกับแรงโน้มถ่วง แต่ไม่สามารถแยกความแตกต่างระหว่างการเอียงกับการเคลื่อนที่เชิงเส้นได้ ไจโรสโคปติดตามการหมุนโดยไม่ขึ้นกับแรงโน้มถ่วง แต่มีปัญหาการเลื่อน
ในแอปพลิเคชันจริงใช้ Sensor Fusion — อัลกอริทึมที่รวมข้อมูลจากไจโรสโคป แอคเซเลอโรมิเตอร์ และแมกนิโตมิเตอร์ ฟิลเตอร์ Mahony หรือ Complementary Filter คำนวณควอเทอร์เนียนการวางแนวด้วยความแม่นยำถึง 2 องศา ในสภาวะนิ่ง และ 5 องศาในสภาวะเคลื่อนที่ Android มีเซนเซอร์เสมือน TYPE_ROTATION_VECTOR ในระดับเฟรมเวิร์ก
val rotationVector = sensorManager
.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)
val callback = object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
val quat = FloatArray(4)
SensorManager.getQuaternionFromVector(quat, event.values)
// quat[0..3] — ควอเทอร์เนียนการวางแนว
}
}
Android มีเซนเซอร์ไจโรสโคปสองประเภท: TYPE_GYROSCOPE (ผ่านการสอบเทียบ ไม่มีการเลื่อน) และ TYPE_GYROSCOPE_UNCALIBRATED (ข้อมูลดิบพร้อมค่าประมาณการเลื่อน) การเข้าถึงทำผ่าน SensorManager.getDefaultSensor() ข้อมูลส่งกลับในหน่วย rad/s — เรเดียนต่อวินาที
การลงทะเบียน Listener ของไจโรสโคปต้องระบุความหน่วง: SENSOR_DELAY_GAME (20 ms) สำหรับเกม SENSOR_DELAY_UI (67 ms) สำหรับอินเทอร์เฟซ SENSOR_DELAY_FASTEST (0 ms) สำหรับความถี่สูงสุด หากไม่ยกเลิกการลงทะเบียนใน onPause() แบตเตอรี่จะหมดภายใน 2–3 ชั่วโมง
class GyroActivity : AppCompatActivity() {
private lateinit var sensorManager: SensorManager
private var gyroscope: Sensor? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
gyroscope = sensorManager.getDefaultSensor(
Sensor.TYPE_GYROSCOPE
)
}
override fun onResume() {
super.onResume()
gyroscope?.let { sensor ->
sensorManager.registerListener(
this, sensor, SensorManager.SENSOR_DELAY_GAME
)
}
}
}
ข้อมูลดิบ จาก event.values[0..2] สอดคล้องกับความเร็วเชิงมุมตามแกน X, Y และ Z ในการหามุมหมุนต้องอินทิเกรตความเร็วเชิงมุมตามเวลา ที่ความถี่ 50 Hz ข้อผิดพลาดจากการอินทิเกรตประมาณ 1 องศาต่อนาที — ยอมรับได้สำหรับเกม แต่ไม่เพียงพอสำหรับการนำทางโดยไม่มีการแก้ไข
การเลื่อนศูนย์ (bias drift) คือปัญหาหลักของ MEMS-ไจโรสโคป แม้ในสภาวะนิ่ง เซนเซอร์อาจแสดงความเร็วเชิงมุมที่ไม่เป็นศูนย์ (0.1–2 °/วินาที) สาเหตุคือการเปลี่ยนแปลงอุณหภูมิและความเค้นเชิงกลในโครงสร้างซิลิคอน ผู้ผลิตชดเชยผลกระทบนี้ในระดับฮาร์ดแวร์
ระบบ Android จะสอบเทียบไจโรสโคปอัตโนมัติเมื่อ เปิดเครื่องครั้งแรก หรือเมื่ออุณหภูมิเปลี่ยนแปลง กระบวนการสอบเทียบใช้เวลา 10–30 วินาทีและไม่ต้องให้ผู้ใช้ดำเนินการใด ๆ — เพียงวางโทรศัพท์บนพื้นผิวที่นิ่ง เมธอด calibrate() ไม่พร้อมใช้งานในทุกอุปกรณ์ สำหรับการสอบเทียบแบบบังคับให้ใช้ TYPE_GYROSCOPE_UNCALIBRATED เพื่อรับ bias offset ผ่าน event.values[3..5]
private fun handleUncalibratedGyro(event: SensorEvent) {
val rawX = event.values[0] // เรด/วินาที ไม่ผ่านการสอบเทียบ
val biasX = event.values[3] // ค่าออฟเซ็ตแกน X
val calibratedX = rawX - biasX
applyCalibrationToFusion(
calibratedX,
event.values[1] - event.values[4],
event.values[2] - event.values[5]
)
}
ไจโรสโคปถูกใช้ในหลายสิบสถานการณ์ ตั้งแต่การรักษาเสถียรภาพกล้องไปจนถึง ชุด VR Google Cardboard ARKit จาก Apple และ ARCore จาก Google ใช้ไจโรสโคปเป็นเซนเซอร์หลักในการติดตามการหมุนศีรษะ ตามข้อมูล Apple ARKit Technical Specification (2024) ไจโรสโคปคู่กับแอคเซเลอโรมิเตอร์ให้ความแม่นยำในการติดตามถึง 0.5 องศา
นอกเหนือจากอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค ไจโรสโคปยังใช้ใน หุ่นยนต์และ UAV หุ่นยนต์เคลื่อนที่ที่ใช้ Android Things และ ROS (Robot Operating System) ใช้ MEMS-ไจโรสโคปเพื่อรักษาเสถียรภาพการเคลื่อนที่และการวัดระยะทาง ตามงานวิจัย IEEE “MEMS IMU in Robotics” (2024) ความแม่นยำในการระบุตำแหน่งของหุ่นยนต์เคลื่อนที่ที่มีไจโรสโคปสูงกว่า 3–5 เท่าเมื่อเทียบกับการวัดระยะทางจากล้อเพียงอย่างเดียว โดยเฉพาะบนพื้นผิวลื่น ในโดรนระดับผู้บริโภค ไจโรสโคปคู่กับบารอมิเตอร์รักษาระดับความสูงได้แม่นยำ 0.5 เมตรในลมสูงถึง 10 ม./วินาที
สำหรับ แอปพลิเคชัน AR ไจโรสโคปเป็นเซนเซอร์หลักที่กำหนดตำแหน่งของวัตถุเสมือนเทียบกับโลกจริง Google ARCore ใช้ไจโรสโคปเพื่อติดตามการเคลื่อนที่ของอุปกรณ์ด้วยความถี่ 1000 Hz (ผ่านการสุ่มตัวอย่างภายใน ไม่ขึ้นกับความถี่ API) ARKit จาก Apple มีความแม่นยำในการระบุตำแหน่ง 0.5 องศาในขณะเคลื่อนที่ ซึ่งเพียงพอสำหรับการวางเฟอร์นิเจอร์เสมือนหรือตัวละครเกมบนฉากจริง
IMU 6 แกน รุ่นใหม่ (InvenSense ICM-42688, 2024) รวมไจโรสโคปและแอคเซเลอโรมิเตอร์ในชิปเดียวด้วยการกินไฟ 0.45 มิลลิแอมป์ในโหมดประหยัดพลังงาน การพัฒนาไจรมิเตอร์และไจโรสโคปแบบอะตอมสำหรับอุปกรณ์มือถือยังอยู่ในขั้นต้นแบบในห้องปฏิบัติการ MEMS-ไจโรสโคประดับอุตสาหกรรมที่มีความแม่นยำ 0.001 °/วินาที คาดว่าจะออกสู่ตลาดภายในปี 2028
คำถามที่พบบ่อย
ไจโรสโคปตรวจจับการหมุนและการวางแนวของอุปกรณ์ในพื้นที่ หากไม่มีไจโรสโคป โหมด VR การหมุนหน้าจออัตโนมัติตามการเอียง การรักษาเสถียรภาพวิดีโอ และแอปพลิเคชัน AR จะเป็นไปไม่ได้ โทรศัพท์สมัยใหม่ไม่สามารถทำงานได้หากไม่มีไจโรสโคป
แอคเซเลอโรมิเตอร์ วัดความเร่งเชิงเส้น (การเคลื่อนไหวและการเอียงเทียบกับแรงโน้มถ่วง) ไจโรสโคปวัดความเร็วเชิงมุม (การหมุน) แอคเซเลอโรมิเตอร์ไม่สามารถแยกความแตกต่างระหว่างการหมุนอุปกรณ์กับการเคลื่อนที่เชิงเส้นได้ — ไจโรสโคปแก้ปัญหานี้
ใน Android มี การสอบเทียบอัตโนมัติ สำหรับการสอบเทียบด้วยตนเอง ให้ดาวน์โหลดแอปอย่าง “GPS Status & Toolbox” — แอปเหล่านี้จะแนะนำให้วางโทรศัพท์บนพื้นผิวเรียบและทำการสอบเทียบผ่าน TYPE_GYROSCOPE_UNCALIBRATED
นี่คือ การเลื่อนศูนย์ — คุณสมบัติตามธรรมชาติของเซนเซอร์ MEMS แม้แต่ไจโรสโคปราคาแพงก็มีค่าออฟเซ็ต 0.1–2 °/วินาทีในขณะนิ่ง การสอบเทียบจะลบค่าออฟเซ็ตนี้ออก หากการเลื่อนเกิน 5 °/วินาที — แสดงว่าเซนเซอร์เสีย
ใช้ SensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) และลงทะเบียน SensorEventListener ข้อมูลจะมาในหน่วย rad/s ตามสามแกน สำหรับเกมให้ใช้ SENSOR_DELAY_GAME (20 ms) สำหรับพื้นหลังให้ใช้ SENSOR_DELAY_UI (67 ms)
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม