มอเตอร์สั่น (vibrator) เป็นอุปกรณ์ไฟฟ้ากลที่สร้างการสั่นในโทรศัพท์มือถือสำหรับการตอบสนองทางการสัมผัสและการแจ้งเตือน สมาร์ทโฟนสมัยใหม่ใช้มอเตอร์สั่นหลักสองประเภท: มวลหนีศูนย์หมุน (ERM) และแอคชูเอเตอร์เรโซแนนซ์เชิงเส้น (LRA) ตามข้อมูลจาก All About Circuits, 2024 แอคชูเอเตอร์ LRA ให้เวลาในการตอบสนองเร็วกว่า 3 เท่า เมื่อเทียบกับ ERM
ประเด็นสำคัญ
มอเตอร์สั่น (vibrator) เป็นอุปกรณ์ไฟฟ้ากลขนาดเล็กที่แปลงพลังงานไฟฟ้าเป็นการแกว่งทางกลเพื่อสร้างการสั่นของตัวเครื่องสมาร์ทโฟน วัตถุประสงค์หลักของมอเตอร์สั่นคือการแจ้งเตือนทางการสัมผัสเกี่ยวกับสายเรียกเข้า ข้อความ และการแจ้งเตือนโดยไม่ต้องใช้สัญญาณเสียง ในอุปกรณ์สมัยใหม่ มอเตอร์สั่นยังใช้สำหรับการตอบสนองทางการสัมผัสเมื่อโต้ตอบกับหน้าจอสัมผัส
มอเตอร์สั่น ตัวแรกในโทรศัพท์มือถือปรากฏในปี 1992 ในรุ่น Motorola Startac สำหรับการแจ้งเตือนสายเรียกเข้าแบบเงียบ ปัจจุบัน การสั่นถูกใช้ไม่เพียงแต่สำหรับการแจ้งเตือน แต่ยังใช้เพื่อยืนยันการกระทำของผู้ใช้: การกดปุ่ม การปัด การสัมผัส ในสมาร์ทโฟนสมัยใหม่ มอเตอร์สั่นเป็นส่วนหนึ่งของระบบการตอบสนองทางการสัมผัสร่วมกับ Taptic Engine และแอคชูเอเตอร์เพียโซอิเล็กทริก คุณภาพของการสั่นส่งผลโดยตรงต่อการรับรู้ของอุปกรณ์: การสั่นที่แม่นยำและรวดเร็วสัมพันธ์กับคุณภาพระดับพรีเมียม
ในอุตสาหกรรมมือถือ ใช้มอเตอร์สั่นหลักสองประเภท: ERM (มวลหนีศูนย์หมุน) ที่มีมวลไม่สมดุลหมุน และ LRA (แอคชูเอเตอร์เรโซแนนซ์เชิงเส้น) ที่มีการเคลื่อนที่เชิงเส้นของแม่เหล็ก การเลือกประเภทขึ้นอยู่กับข้อกำหนดด้านคุณภาพของการตอบสนองทางการสัมผัส ต้นทุน และพื้นที่ว่างภายในตัวเครื่องสมาร์ทโฟน อุปกรณ์ราคาประหยัดมักใช้ ERM ในขณะที่อุปกรณ์พรีเมียมใช้ LRA
ERM (Eccentric Rotating Mass) เป็นมอเตอร์สั่นแบบคลาสสิกที่ประกอบด้วยมอเตอร์ DC ที่มีมวลไม่สมดุลบนเพลา เมื่อใช้แรงดันไฟฟ้า โรเตอร์จะเริ่มหมุนและแรงหนีศูนย์ของมวลไม่สมดุลจะถ่ายโอนไปยังตัวเครื่อง ทำให้เกิดการสั่น แอมพลิจูดของการสั่นถูกควบคุมโดยแรงดันไฟฟ้า (2–5 V) ความถี่โดยความเร็วรอบ มอเตอร์ ERM ราคาถูกในการผลิต แต่มีความเฉื่อย: เวลาเร่งความเร็วถึงความเร็วทำงานคือ 20–50 มิลลิวินาที และหลังจากหยุดอีก 10–20 มิลลิวินาทีของเสียงก้องเฉื่อย
LRA (Linear Resonant Actuator) เป็นมอเตอร์สั่นที่แม่เหล็กเคลื่อนที่ไปตามแกนเดียวในสนามแม่เหล็กของขดลวด แม่เหล็กถูกแขวนบนองค์ประกอบยืดหยุ่นที่รับประกันการกลับสู่ตำแหน่งเดิม LRA ทำงานที่ความถี่เรโซแนนซ์ (ปกติ 150–200 Hz) ทำให้ได้แอมพลิจูดสูงสุดโดยใช้พลังงานน้อยที่สุด เวลาในการตอบสนองของ LRA คือ 5–15 มิลลิวินาที ทำให้ ตอบสนองได้ดีกว่าอย่างมีนัยสำคัญ เมื่อเทียบกับ ERM LRA มีขนาดกะทัดรัดกว่า ERM ที่แรงสั่นเทียบเคียงได้ ทำให้เหมาะสำหรับอุปกรณ์พรีเมียม
| พารามิเตอร์ | ERM | LRA |
|---|---|---|
| หลักการ | การหมุนของมวลไม่สมดุล | การเคลื่อนที่เชิงเส้นของแม่เหล็ก |
| เวลาในการตอบสนอง | 20–50 มิลลิวินาที | 5–15 มิลลิวินาที |
| เสียงก้อง | 10–20 มิลลิวินาที | 1–3 มิลลิวินาที |
| ความแม่นยำ | ต่ำ | สูง |
| ต้นทุน | ต่ำ | ปานกลาง |
เมื่อเลือก มอเตอร์สั่น สำหรับสมาร์ทโฟน ผู้ผลิตพิจารณาพารามิเตอร์สำคัญหลายประการ: เวลาในการตอบสนอง ความแม่นยำในการควบคุมแอมพลิจูด การใช้พลังงาน และขนาด มอเตอร์ ERM ชนะในด้านต้นทุนและความง่ายในการควบคุม — พวกมันต้องการเพียงแรงดัน DC ในการทำงาน แอคชูเอเตอร์ LRA ต้องใช้ไดรเวอร์ที่ซับซ้อนกว่าซึ่งสร้างสัญญาณ AC ที่ความถี่เรโซแนนซ์ แต่ ให้ความรู้สึกทางการสัมผัสที่แม่นยำกว่า 3–4 เท่า
ตาม การวิจัยของ Precision Microdrives แอคชูเอเตอร์ LRA ใช้พลังงานน้อยกว่ามอเตอร์ ERM 40–50% เมื่อสร้างการสั่นที่เทียบเคียงได้ในการรับรู้ ทั้งนี้เนื่องจากโหมดการทำงานแบบเรโซแนนซ์: แอมพลิจูดสูงสุดทำได้ด้วยกำลังไฟฟ้าเข้าขั้นต่ำ ในขณะเดียวกัน มอเตอร์ ERM สามารถทำงานในช่วงความถี่ที่กว้างกว่า สร้างการสั่นที่มีความเข้มต่างกันเพียงแค่เปลี่ยนแรงดันไฟฟ้า
มอเตอร์สั่น ในสมาร์ทโฟนถูกควบคุมผ่านไดรเวอร์ที่รับคำสั่งจากโปรเซสเซอร์หลักหรือคอนโทรลเลอร์การตอบสนองทางการสัมผัสเฉพาะ ไดรเวอร์แปลงคำสั่งดิจิทัลเป็นสัญญาณไฟฟ้า: สำหรับ ERM — แรงดัน DC ในระดับที่กำหนด สำหรับ LRA — สัญญาณ AC ที่ความถี่เรโซแนนซ์พร้อมแอมพลิจูดที่ปรับได้ แรงดันไฟฟ้าสำหรับมอเตอร์สั่นโดยปกติคือ 2–5 V ที่กระแส 50–200 mA
ชิปเซ็ต Snapdragon สมัยใหม่ (Qualcomm) และ Dimensity (MediaTek) มีบล็อกควบคุมการสั่นในตัวที่รองรับรูปแบบการสัมผัสแบบกำหนดเอง โปรเซสเซอร์ส่งชุดคำสั่งไปยังไดรเวอร์โดยระบุแอมพลิจูด ระยะเวลา และรูปคลื่นสำหรับแต่ละพัลส์ จากไลบรารีของเอฟเฟกต์ที่ตั้งไว้ล่วงหน้า ระบบสามารถสร้างการสั่นสำหรับการแจ้งเตือน 10–30 ประเภทที่แตกต่างกันด้วยคุณลักษณะความรู้สึกทางการสัมผัสเฉพาะ
บน iOS การควบคุมมอเตอร์สั่นทำผ่าน Core Haptics พร้อมรองรับรูปแบบที่ซับซ้อน บน Android ก่อนเวอร์ชัน 8.0 (API 26) การควบคุมถูกจำกัด: นักพัฒนาสามารถเปิดและปิดการสั่นด้วยระยะเวลาคงที่เท่านั้น เริ่มตั้งแต่ Android 8.0 คลาส VibrationEffect ปรากฏขึ้นพร้อมรองรับรูปคลื่นผสม เอฟเฟกต์คลื่น และแอมพลิจูดที่ปรับได้
การสั่น ในแอปพลิเคชันมือถือถูกใช้ในหลายสถานการณ์: การแจ้งเตือนเหตุการณ์ (สายเรียกเข้า ข้อความ) การยืนยันทางการสัมผัสของการกระทำ (การกดปุ่ม การสลับสวิตช์) การตอบสนองทางการสัมผัสในเกม และคุณสมบัติการเข้าถึงสำหรับผู้ใช้ที่มีความบกพร่องทางการได้ยิน แต่ละสถานการณ์ต้องการพารามิเตอร์การสั่นที่แตกต่างกัน: พัลส์สั้นสำหรับการยืนยัน การสั่นยาวสำหรับการแจ้งเตือน
การสั่น ที่กำหนดค่าอย่างถูกต้องช่วยปรับปรุงประสบการณ์ผู้ใช้อย่างมีนัยสำคัญ การตอบสนองทางการสัมผัสสั้นเมื่อกดปุ่มสร้างความรู้สึกของการโต้ตอบทางกายภาพและลดภาระทางการรับรู้ ในเกม การสั่นถูกใช้เพื่อความดื่มด่ำ: การจำลองเสียงปืน การชน การทำงานของเครื่องยนต์ ตาม Google Material Design แนะนำให้ใช้การสั่นนาน 10–40 มิลลิวินาทีสำหรับการยืนยันทางการสัมผัส และ 200–1000 มิลลิวินาทีสำหรับการแจ้งเตือน เพื่อไม่ให้รบกวนผู้ใช้
สำหรับ การเข้าถึง การสั่นมีบทบาทสำคัญ: ช่วยให้ผู้ใช้ที่มีความบกพร่องทางการมองเห็นได้รับการตอบสนองทางการสัมผัสเกี่ยวกับเหตุการณ์บนหน้าจอ TalkBack บน Android และ VoiceOver บน iOS ส่งสัญญาณการสั่นเมื่อไฮไลต์องค์ประกอบอินเทอร์เฟซ ยืนยันการกระทำ และรับการแจ้งเตือน รูปแบบการสั่นแบบปรับตัวช่วยแยกแยะประเภทของเหตุการณ์โดยไม่ต้องควบคุมด้วยสายตา
ในการทำงานกับ มอเตอร์สั่น บน Android ใช้บริการระบบ Vibrator ซึ่งเข้าถึงได้ผ่านเมธอด getSystemService() เริ่มตั้งแต่ Android 10 (API 29) ได้เพิ่ม VibratorManager — API แบบครบวงจรสำหรับจัดการการสั่นบนอุปกรณ์ที่มีมอเตอร์สั่นหลายตัว เพื่อความเข้ากันได้กับเวอร์ชันเก่า นักพัฒนาใช้ Vibrator โดยตรงพร้อมตรวจสอบความพร้อมของเมธอด createOneShot()
import android.os.VibrationEffect
import android.os.Vibrator
import android.os.VibratorManager
import android.content.Context
class VibrationHelper(private val context: Context) {
private val vibrator: Vibrator get() {
return if (Build.VERSION.SDK_INT >= 31) {
val manager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE)
as VibratorManager
manager.getDefaultVibrator()
} else {
context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
}
fun playShortClick() {
val effect = VibrationEffect.createOneShot(30L, VibrationEffect.DEFAULT_AMPLITUDE)
vibrator.vibrate(effect)
}
fun playWaveform() {
val timings = longArrayOf(0L, 50L, 100L, 50L)
val amplitudes = intArrayOf(128, 255, 64, 255)
val effect = VibrationEffect.createWaveform(timings, amplitudes, -1)
vibrator.vibrate(effect)
}
}
คลาส VibrationEffect รองรับเอฟเฟกต์สองประเภท: createOneShot — พัลส์เดี่ยวที่มีระยะเวลาและแอมพลิจูดที่ระบุ และ createWaveform — รูปแบบคลื่นผสมที่มีอาร์เรย์ของจังหวะเวลาและแอมพลิจูด เมื่อใช้ createWaveform อาร์เรย์จังหวะเวลาจะระบุลำดับการเปิดใช้งานและการหยุดชั่วคราว ในขณะที่อาร์เรย์แอมพลิจูดจะระบุระดับการสั่น (0–255) สำหรับแต่ละส่วน พารามิเตอร์ repeat ระบุดัชนีที่จะเริ่มทำซ้ำรูปแบบ (-1 สำหรับการเล่นครั้งเดียว)
คำถามที่พบบ่อย
สมาร์ทโฟนสมัยใหม่ใช้มอเตอร์สั่นหลักสองประเภท: ERM (มวลหนีศูนย์หมุน) ในอุปกรณ์ราคาประหยัด และ LRA (แอคชูเอเตอร์เรโซแนนซ์เชิงเส้น) ในรุ่นพรีเมียม ERM ราคาถูกกว่าแต่ช้ากว่าและแม่นยำน้อยกว่า ในขณะที่ LRA ให้ความรู้สึกทางการสัมผัสที่ชัดเจน
ERM สร้างการสั่นโดยหมุนมวลไม่สมดุล มีเวลาในการตอบสนอง 20–50 มิลลิวินาทีและเสียงก้องเฉื่อย LRA เคลื่อนแม่เหล็กเป็นเส้นตรงในสนามแม่เหล็กของขดลวดด้วยเวลาในการตอบสนอง 5–15 มิลลิวินาทีและแทบไม่มีเสียงก้อง LRA ให้ความรู้สึกทางการสัมผัสที่แม่นยำและหลากหลายกว่า
ได้ ผู้ใช้สามารถ ปิดการสั่นในการตั้งค่าเสียงและการสัมผัสของสมาร์ทโฟน บน Android ทำได้ผ่าน “เสียงและการสั่น” → “การตอบสนองทางการสัมผัส” บน iOS — “เสียงและการสัมผัส” → “การสัมผัสของระบบ” การปิดมีผลกับทุกแอปพลิเคชัน
คุณสามารถตรวจสอบ มอเตอร์สั่น ผ่านเมนูวิศวกรรม: กด *#0*# บน Samsung หรือ *#*#6484#*#* บน Xiaomi และเลือกการทดสอบการสั่น บน iPhone: การตั้งค่า → การช่วยการเข้าถึง → การสัมผัส → การสั่น และเปิด “การสั่นในโหมดสายเข้า” หากไม่มีการสั่น มอเตอร์อาจเสีย
บน Android คุณสามารถกำหนดค่าการสั่นสำหรับแต่ละแอปผ่าน การตั้งค่า → การแจ้งเตือน → หมวดหมู่การแจ้งเตือนของแอป บน iOS กำหนดค่าการสั่นผ่าน “เสียงและการสัมผัส” → เลือกประเภทการแจ้งเตือน → “การสัมผัส” พร้อมเลือกรูปแบบที่ตั้งไว้ล่วงหน้า
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม