iphone从6开始使用LRA马达,很早之前买了一个回来打算研究一下,结果一拖就拖到了现在,终于找到了时间去测试一下这个可以让一个假按键按下振动以假乱真的Taptic Engine。
结构
结构网上对应的图片很多,下面放两个比较直观的图,第一幅图是官方的渲染图,从这张图基本就能看出整个LRA的结构,转子为加有配重的永磁体,定子共两组线圈。两端弹簧用来限制转子位置,保证在无输出的时候转子始终处于中心位置。注意这个地方的弹簧,经过测试其刚度系数很大,在5V双极性驱动的情况下,转子都不会撞到外壳。而弹簧刚度大的好处就是可以更快的制动。
第二张图是X-ray透视图,图片下可以清晰的看到马达驱动的状态,仔细看的话,正常工作的情况下,由于弹簧刚度系数很大,其转子的行程其实很小。
扫频
由于不知道额定的驱动电压,临时使用了5V驱动,在扫频的时候尽量出力小一点,避免烧机。
测试条件是5V双极性驱动,载波频率21khz,出力30%。利用加速度计来衡量振动强度。目前基波使用方波调制,所以振动波形没有那么平滑,之后如果有需要改成正弦调制应该会好看很多。
先粗扫一下共振点的大概位置,扫频起始频率20HZ,终止频率500HZ,步进10HZ,频点驻留时间0.5s
图上绿线为加速度计的输出,单位G,蓝线为对应的频率,单位khz。可以看到,力矩振幅在220hz左右达到最大。
在220hz左右的位置做一下步进更小的扫频
扫频起始频率190HZ,终止频率250HZ,步进1HZ,频点驻留时间0.5s
可以看到,振幅最大的位置是221hz,实际振幅在220~222之间基本是一致的。
启停特性
理论上LRA的马达相对于ERM来说,最大的优势就是启停特性,简单来说就是起的快,停的快,苹果宣称在一个周期能即可达到最大振幅,下面就测试一下不同输出强度下的启停特性。
上图为220HZ,30%出力十个周期的力矩振幅曲线,其性能表现与苹果宣称的性能比较符合,可以看到在第一个周期结束时,振幅基本就达到了最大振幅,停止衰减速度很快,在一个周期内就几乎下降到0了
下面分别测一下其60%出力和100%出力时力矩振幅的幅值曲线,理论上出力更大的情况下,振幅表现会更好一些。
上图为60%出力力矩振幅,可以看到此时加速度已经达到+-5G的量级。
上图为100%出力的力矩振幅,由于我是用的加速度计量程为+-8G,因此有一部分峰值被削顶了,实际最大的加速度应该超过+-8G,此时已经有非常有力的振感了,但从加速度数值看的话,这个时候还是没有撞到外壳的。
Z轴振子的测试
手上还有一个三星祖传的Z轴振子,顺便一起测试一下,测试条件与Taptic Engine一致。
粗扫共振点在210HZ的左右的位置上,但低频表现比较奇怪,似乎有其他模态存在,远离共振点之后频率衰减速度比Taptic Engine快很多。
进行步进更小的扫频之后,对比更加明显,其共振点的增益最大,偏离共振点之后衰减速度很快。而且此时也确定了其共振点为203HZ,在共振点出几乎没有平台,这个和Taptic Engine不太一样。
30%出力下的启停特性,一对比就发现,比Taptic Engine差了很多,10周期的振动无法分辨是否到达了最大振幅,有一个非常明显振幅爬坡曲线,因为10周期下振幅最大值构成的平台无法分辨,只能加大到20周期再做测试。
加大到三十个周期后测试,测试发现经过3个周期左右到达最大力矩幅值,但是很奇怪的是有低频的成分加了进来,暂时没搞懂怎么回事。而且很明显的,这个振子在停止时衰减速度慢了很多,猜测是弹簧相对比较软的原因。
60%出力测试,可以看到这个振子的出力比Taptic Engine稍微大一点,在60%出力时,振幅峰值有接近+-6G
100%出力测试,最大出力峰值超过+-9G,这个地方更好能测到9G的原因是正常Z轴有一个G的重力加速度,看负半轴的出力已经顶到了-8G,因此推测最大出力超过+-9G。但是衰减和Taptic Engine比还是一样的挫。
利用Taptic Engine模拟按键按下的手感
iphone上利用Taptic Engine模拟物理按键按下手感的功能让人印象深刻,不客气的说简直可以以假乱真,实际该功能就是利用其优秀的启停特性来做到对物理按键按下时振动的复现,只要保证其波形相似度够高,就可以欺骗你的手了,后面我会通过加计采集一个物理按键按下时的波形,利用软件生成该波形来尝试复现其手感。
一次按键按下及弹起的典型波形:
只关心其幅值,不关心其偏置,偏置是因为我手握持导致有重力加速度被耦合进来了,放大波形观察
可以看到对于按键按下和弹起的振动来说,是一个非常短促的震动周期,我们要做的就是通过Taptic Engine去模拟这样一个波形出来。而且通过总图发现,按键按下时的振动幅值小于弹起的幅值。
通过Taptic Engine复现波形
由于按键按下时振动的能量是分布在三个轴上的,但是Taptic Engine振动主要体现在一个轴上,所以适当的增加该轴的输出幅值,以弥补其他轴能量的缺失。
上图包含一个真实的按键过程和一个模拟的按键过程,可以看到真实按键的能量主要分布在Z轴上,在XY轴上也有一定的分量。而模拟的大部分能量只能分布在X轴上,因此提高了X轴的振动强度以弥补损失。从这个角度出发,对于模拟按键来说Z轴的振子反而是更好的选择。
放大波形观察,尽管Taptic Engine拥有极佳的启停特性,但是波形也做不到完美。这个波形下模拟的手感其实比苹果做的还是要差很多的,毕竟随手一调出来的和花费时间精心调教出来的手感还是没办法比的。不过就算如此,已经可以模拟出实体按键的一丝味道了