振动马达(振动器)——是一种机电装置,在手机中产生振动,用于触觉反馈和通知。现代智能手机使用两种主要类型的振动马达:偏心式(ERM)和线性谐振致动器(LRA)。根据All About Circuits, 2024的数据,LRA致动器比ERM提供3倍更快的响应时间。
要点
振动马达(振动器)——是一种微型机电装置,将电能转换为机械振动,使智能手机外壳产生振动。振动马达的主要用途——在不使用声音信号的情况下,通过触觉通知用户有来电、消息和通知。在现代设备中,振动马达还用于与触摸屏交互时的触觉反馈。
第一个振动马达于1992年出现在Motorola Startac型号的手机中,用于静音来电通知。如今,振动不仅用于通知,还用于确认用户操作:按键、滑动、触摸。在现代智能手机中,振动马达与Taptic Engine和压电致动器一起构成触觉反馈系统的一部分。振动质量直接影响设备的感知:精确快速的振动与高端品质相关联。
在移动行业中,使用两种主要类型的振动马达:ERM(Eccentric Rotating Mass)带有旋转不平衡重物,和LRA(Linear Resonant Actuator)带有磁体线性运动。类型的选择取决于触觉感受质量、成本和智能手机外壳内可用空间的要求。在低端设备中更常使用ERM,在高端型号中使用LRA。
ERM(Eccentric Rotating Mass)——经典振动马达,由一个带有不对称重物的直流电机制成。施加电压时,转子开始旋转,不平衡重物的离心力传递到设备外壳,产生振动。振动幅度通过电压(2–5V)调节,频率通过转速调节。ERM制造成本低,但具有惯性:加速到工作速度的时间为20–50毫秒,停止后还有10–20毫秒的惯性余振。
LRA(Linear Resonant Actuator)——振动马达,其中磁体在线圈磁场中沿一个轴移动。磁体悬挂在弹性元件上,确保返回初始位置。LRA在谐振频率(通常150–200Hz)下工作,可以在最小能耗下达到最大幅度。LRA的响应时间为5–15毫秒,使其与ERM相比响应速度显著更快。在可比振动强度下,LRA比ERM更紧凑,是高端设备的理想选择。
| 参数 | ERM | LRA |
|---|---|---|
| 原理 | 旋转不平衡重物 | 磁体线性运动 |
| 响应时间 | 20–50毫秒 | 5–15毫秒 |
| 余振 | 10–20毫秒 | 1–3毫秒 |
| 精度 | 低 | 高 |
| 成本 | 低 | 中等 |
在选择用于智能手机的振动马达时,制造商考虑几个关键参数:响应时间、幅度控制精度、能耗和尺寸。ERM马达在成本和简单控制方面胜出——只需提供恒定电压即可工作。LRA致动器需要更复杂的驱动器,在谐振频率下产生交流信号,但提供3–4倍更清晰的触觉感受。
根据Precision Microdrives的研究,在产生感知上可比的振动时,LRA致动器比ERM马达节能40–50%。这是由于谐振工作模式:在最小输入功率下达到最大幅度。同时,ERM马达可以在更宽的频率范围内工作,通过简单改变电压产生不同强度的振动。
智能手机中的振动马达通过驱动器控制,该驱动器接收来自主处理器或专用触觉反馈控制器的指令。驱动器将数字指令转换为电信号:对于ERM——恒定电压,对于LRA——谐振频率的交流信号,幅度可调。振动马达的供电电压通常为2–5V,电流为50–200mA。
现代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毫秒用于通知,以避免引起用户不适。
对于辅助功能(accessibility),振动起着关键作用:使视障用户能够获得屏幕事件的触觉反馈。Android上的TalkBack和iOS上的VoiceOver在突出显示界面元素、确认操作和接收通知时发送振动信号。自适应振动模式有助于在无需视觉控制的情况下区分事件类型。
在Android上使用振动马达时,使用通过getSystemService()方法访问的系统服务Vibrator。从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上通过「声音和触觉信号」→「系统触觉信号」进行。关闭适用于所有应用。
可以通过工程菜单检查振动马达:在Samsung上拨打*#0*#,在Xiaomi上拨打*#*#6484#*#*,然后选择振动测试。在iPhone上:设置→辅助功能→触觉信号→打开「铃声模式触觉信号」。如果没有振动,可能是马达故障。
在Android上可以通过设置→通知→应用通知类别为单独应用配置振动。在iOS上,通过「声音和触觉信号」→选择通知类型→「触觉信号」选择预设模式来配置振动。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。