16. 多摄像头功耗:多摄同时工作的功耗、主摄与副摄切换策略、ToF传感器功耗
多摄像头这事儿,这几年大家都见怪不怪了。从双摄到四摄,甚至五摄,手机背面都快成“蜂窝煤”了。但说实话,多摄带来的功耗问题,远比想象中复杂。我早期参与过一个项目,客户要求三摄同时预览,结果手机烫得能煎鸡蛋——嗯,那会儿我才真正意识到,多摄功耗不是简单的“1+1=2”。
16.1 多摄同时工作的功耗模型
多摄同时工作,功耗是怎么叠加的?很多人以为就是每个摄像头功耗加起来。其实没那么简单。
我习惯把多摄功耗拆成三块来看:
- Sensor 本身功耗:每个图像传感器工作时的功耗,包括像素阵列读取、ADC 转换、PLL 锁相环等。
- ISP 处理功耗:多路图像数据同时进入 ISP,处理负载翻倍甚至更多。
- 总线与内存带宽:多路数据同时写入 DDR,带宽压力剧增,DDR 频率被迫拉高。
举个例子,双摄同时工作,功耗并不是单摄的两倍。我实测过一组数据:
| 场景 | Sensor 功耗 (mW) | ISP 功耗 (mW) | DDR 带宽功耗 (mW) | 总功耗 (mW) |
|---|---|---|---|---|
| 单主摄预览 | 180 | 120 | 50 | 350 |
| 主摄+广角预览 | 180+150=330 | 120+100=220 | 50+80=130 | 680 |
| 三摄同时预览 | 180+150+130=460 | 120+100+90=310 | 50+80+120=250 | 1020 |
你看,三摄总功耗接近 1W,这还没算上屏幕和射频。所以多摄场景下,功耗优化必须从系统层面下手,不能只盯着某一个摄像头。
核心观点:多摄功耗的瓶颈往往不在 sensor 本身,而在 ISP 和 DDR 带宽。优化时要优先考虑这两块。
16.2 主摄与副摄切换策略
多摄切换,说白了就是“什么时候用哪个摄像头”。但这里有个坑:切换本身也有功耗开销。
我遇到过一种情况:用户从主摄切到长焦,系统先关闭主摄,再打开长焦。这个过程大概需要 200-300ms,期间画面会黑一下。更糟糕的是,频繁切换会导致 sensor 反复上下电,功耗反而比一直开着还高。
我个人建议的切换策略是这样的:
- 预加载策略:当用户从主摄 1x 变焦到 2x 时,提前把长焦 sensor 打开,但只输出低分辨率预览。等变焦到位后,再切到全分辨率。这样切换时间从 300ms 降到 50ms 以内。
- 延迟关闭策略:切到副摄后,主摄不要立刻关闭,保持低功耗待机状态 1-2 秒。如果用户快速切回来,就不用重新上电了。
- 场景感知切换:根据环境光照自动选择摄像头。光线充足时用主摄,暗光下切到副摄(像素更大)。这个策略我在一个项目中用过,整体功耗降低了 15%。
小技巧:切换时不要同时关闭所有 sensor。可以先把新 sensor 打开,等它稳定输出后再关闭旧的。这叫“先开后关”,能避免画面闪烁和功耗尖峰。
16.3 ToF 传感器功耗分析
ToF 传感器这几年挺火的,人脸解锁、AR 测距都用得上。但 ToF 的功耗,很多人低估了。
ToF 的工作原理是发射红外光,然后测量反射时间。这个发射过程本身就很耗电。我拆过几款 ToF 模组,发现它们的峰值功耗能达到 500-800mW,比普通 RGB sensor 还高。
ToF 功耗主要分三部分:
- VCSEL 激光发射器:这是最耗电的部分,峰值电流能到 1A 以上。
- 传感器读取:ToF sensor 需要高速读取,帧率通常在 30fps 以上。
- 深度计算:从原始数据算出深度图,需要额外的 DSP 或 NPU 处理。
怎么优化?我分享几个实战经验:
- 降低帧率:人脸解锁场景,10fps 就够用了,没必要跑 30fps。帧率降下来,VCSEL 的 duty cycle 也降了,功耗能省一半。
- 动态调整发射功率:近距离(比如 30cm 以内)用低功率发射,远距离再提高。这个策略我在一个 AR 项目里用过,平均功耗从 600mW 降到了 350mW。
- 深度计算 offload:把深度计算从 CPU 搬到 DSP 或 NPU 上,能省 30-40% 的功耗。CPU 做这个太浪费了。
注意:ToF 的 VCSEL 激光有安全限制,不能随意提高功率。优化时一定要遵守 Class 1 激光安全标准,别为了省电把眼睛搞坏了。
16.4 多摄功耗优化框架图
下面这张图是我自己总结的多摄功耗优化框架,涵盖了 sensor 层、ISP 层、系统层三个维度的优化手段。
这张图我建议你保存下来。做多摄功耗优化时,从这三个层面逐一排查,基本不会漏掉关键点。
16.5 实战避坑指南
最后分享几个我踩过的坑:
- 别盲目相信 sensor 厂商的 datasheet:上面写的功耗往往是理想值,实际跑起来要高 20-30%。我建议拿到模组后先实测一下。
- 切换策略别写死:不同场景下最优策略不一样。比如拍照场景和录像场景,切换逻辑应该不同。我习惯用策略模式,把切换逻辑做成可配置的。
- ToF 不要一直开着:很多应用只在特定场景需要深度信息。比如人脸解锁,解锁成功后就可以关掉 ToF。我曾经见过一个项目,ToF 一直开着做背景虚化,结果续航直接掉了 1 小时。
- 注意 thermal throttling:多摄同时工作发热量大,很容易触发温控降频。这时候功耗反而会上升(因为降频后任务处理变慢,占用时间变长)。我建议在温控策略里给多摄场景单独设一个阈值。
一句话总结:多摄功耗优化,核心是“按需分配”——什么时候用哪个摄像头、用多少帧率、用多大功率,都要根据实际场景动态调整。别一股脑全开,也别频繁开关。
好了,这一章就聊到这儿。多摄功耗是个系统工程,需要 sensor、ISP、系统三方面配合。你想想看,如果能把这三块都优化到位,续航提升 20% 不是问题。