042、OIS光学防抖系统:陀螺仪信号处理、音圈马达驱动与滚珠式/悬丝式结构对比
去年在调试某款旗舰机型的OIS时,遇到一个让人抓狂的问题:预览画面在低频抖动下表现完美,但一旦用户边走边拍,画面就开始出现诡异的“呼吸效应”——防抖补偿像是喝醉了酒,忽快忽慢。拆开模组一看,陀螺仪数据正常,驱动波形也没问题,最后发现是滚珠结构的预紧力设计余量不足,导致镜头在高速响应时产生了微小的机械谐振。这种坑,没在产线蹲过几个通宵,根本想不到。
陀螺仪信号处理:别被“干净”的数据骗了
OIS的核心输入是陀螺仪,但陀螺仪输出的原始数据就像没洗过的土豆——看着完整,实际全是泥。MEMS陀螺仪天生带噪声,尤其是低频漂移和温度漂移。很多新手直接拿原始角速度去算补偿量,结果画面在静止时反而会缓慢漂移。
实际工程中,第一步是高通滤波。别用太高的截止频率,否则会滤掉真实的低频抖动(比如走路时的0.5-3Hz晃动)。我一般设在0.1-0.5Hz,具体要看模组的机械带宽。这里有个坑:高通滤波会引入相位滞后,而OIS对相位极其敏感。滞后超过5度,补偿效果就会打折扣。所以滤波器的阶数要控制好,二阶巴特沃斯是常用选择,但记得在后续的驱动算法里做相位补偿。
第二步是采样率匹配。陀螺仪输出通常是几百Hz到几kHz,但OIS驱动马达的响应带宽只有几十Hz。直接降采样会丢失高频信息,导致防抖跟不上快速抖动。正确做法是先做低通滤波(截止频率设为马达带宽的2-3倍),再降采样。我习惯用CIC滤波器,计算量小,适合嵌入式实时处理。
第三步是温度校准。陀螺仪的零偏随温度变化,开机后前几分钟漂移最明显。量产时需要在产线做温度标定,存一个温度-零偏曲线。如果没做,用户从空调房走到室外,画面就会突然“抽风”。别问我怎么知道的——某次项目赶工期跳过了这一步,结果售后返修率直接翻倍。
音圈马达驱动:电流波形里的魔鬼细节
OIS音圈马达(VCM)的驱动核心是电流控制,不是电压控制。电压驱动会导致响应非线性,因为线圈电阻随温度变化。正确的做法是用恒流源,通过PWM配合采样电阻做闭环电流调节。
驱动波形有两种常见模式:正弦波和方波。方波驱动简单,但会产生高频谐波,激发马达的机械谐振。正弦波驱动更平滑,但需要DAC或高分辨率PWM。我倾向于用正弦波,尤其是在滚珠式结构中——滚珠的摩擦特性对高频振动极其敏感,方波驱动会让滚珠“跳起来”,导致画面出现微振纹。
PWM频率的选择也有讲究。太低会听到线圈的啸叫(人耳可听范围20Hz-20kHz),太高会增加开关损耗。我一般选20-40kHz,避开音频范围,同时保证电流纹波在1%以内。这里有个经验值:PWM频率 = 马达电感 / (采样电阻 × 10),算出来大概在这个范围。
驱动芯片的死区时间(dead time)是另一个容易忽略的点。死区时间太短会导致上下桥臂直通,烧毁驱动管;太长则会产生电流畸变,影响补偿精度。量产时一定要用示波器抓波形,确保死区时间在100-200ns之间。某次供应商换了批次,死区时间从150ns变成了50ns,结果产线烧了十几块板子才排查出来。
滚珠式 vs 悬丝式:机械结构的“性格”差异
这两种结构在手机OIS里最常见,但它们的脾气完全不同。
滚珠式:靠钢珠在导轨里滚动实现镜头平移。优点是行程大(±1mm以上),适合大尺寸传感器;缺点是摩擦非线性——低速时静摩擦占主导,高速时动摩擦变小,导致响应曲线有“死区”。调试时最头疼的是预紧力:太紧,滚珠压死,响应迟钝;太松,滚珠晃动,产生间隙。量产时需要用激光干涉仪测每个模组的滞回曲线,筛选出预紧力一致的批次。另外,滚珠式对灰尘敏感,哪怕一粒10μm的灰尘卡在导轨里,防抖就会失效。所以模组组装必须在千级无尘车间,别想着省钱。
悬丝式:用四根金属丝悬挂镜头,靠电磁力驱动。优点是零摩擦、响应快、无滞回;缺点是行程小(通常±0.3mm以内),且悬丝容易疲劳断裂。悬丝的材料是关键——常用铍铜合金或钛合金,弹性模量要高,疲劳寿命要长。某次为了降成本换了不锈钢悬丝,结果3万次寿命测试后断裂率超过10%。悬丝式的另一个问题是共振:悬丝本身有固有频率,如果和陀螺仪的工作频率接近,就会产生自激振荡。设计时一定要做模态分析,确保悬丝的一阶共振频率在200Hz以上,远离人手的抖动频段(1-10Hz)。
从调试角度看,滚珠式更适合大角度防抖(比如超广角镜头),但需要更复杂的摩擦补偿算法;悬丝式更适合高精度场景(比如长焦镜头),但对制造工艺要求极高。我个人的经验是:如果模组厚度允许,优先选悬丝式——少一个摩擦变量,调试工作量能减少30%。
个人经验性建议
别迷信“理论带宽”:OIS的闭环带宽通常标称50Hz,但实际受机械谐振、驱动延迟和算法延迟影响,有效带宽可能只有20Hz。调试时用扫频信号测实际响应,比看规格书靠谱。
陀螺仪和马达的“握手”要谨慎:陀螺仪数据经过滤波、延迟后,和马达驱动之间会有时间差。我习惯在驱动算法里加一个可调的延迟补偿(0.5-2ms),量产时用振动台扫频,找到最佳延迟值。
产线标定是OIS的命门:每个模组的陀螺仪零偏、马达灵敏度、机械滞回都不一样。必须做个体标定,把参数写进模组的EEPROM。别指望“通用参数”——同一批次不同模组的差异可能超过20%。
温度测试要覆盖全场景:从-20℃到60℃,OIS的性能会剧烈变化。尤其是滚珠式,低温下润滑脂变稠,响应变慢;高温下润滑脂变稀,可能漏油污染传感器。一定要做高低温循环测试,至少100个循环。
最后一条,也是最重要的一条:OIS不是独立系统,它和EIS(电子防抖)是搭档。OIS负责低频大角度补偿,EIS负责高频小角度补偿。两者之间的切换要平滑,否则用户会感觉到“防抖介入”的突兀感。我习惯在OIS输出端加一个低通滤波器,把高频残留丢给EIS处理——这样既减轻了OIS的负担,又避免了机械谐振。
写到这里,想起当年在产线蹲到凌晨三点,终于找到那个“呼吸效应”的根源——滚珠导轨的润滑脂涂多了0.1mg。有时候,影像系统的魔鬼就在这些微米级的细节里。