2. AF 系统架构:镜头马达类型、驱动 IC 与接口、AF 算法流水线
自动对焦这事儿,说白了就是让镜头动起来,并且动得准。我做了这么多年 ISP,发现很多工程师把精力全放在算法上,结果硬件选型没搞对,项目直接翻车。今天咱们就把 AF 系统的底裤扒干净,从马达到驱动,再到算法流水线,一条龙讲透。
2.1 镜头马达类型:三种主流方案
镜头马达是 AF 系统的执行器。选哪种马达,直接决定了你的对焦速度、精度、功耗和成本。目前市面上就三种主流方案:VCM、步进电机、压电马达。
| 类型 | 原理 | 典型应用 | 我踩过的坑 |
|---|---|---|---|
| VCM(音圈马达) | 电磁线圈 + 永磁体,类似喇叭 | 手机摄像头、小型模组 | 谐振频率没算好,画面一直抖 |
| 步进电机 | 电磁脉冲驱动转子步进 | 安防球机、工业相机 | 丢步导致对焦位置漂移 |
| 压电马达 | 压电陶瓷逆压电效应 | 高端单反、显微镜 | 驱动波形调了一周才稳定 |
2.1.1 VCM(音圈马达)
VCM 是手机摄像头的主力。它的结构很简单:一个线圈放在磁场里,通电就动。电流越大,位移越大。我习惯叫它「电磁弹簧」,因为本质上它就是个线性执行器。
关键参数:
- 行程:通常 0.3~0.5mm,够用
- 响应时间:< 10ms,很快
- 功耗:几十 mW,省电
- 线性度:中低端 VCM 有 5%~10% 的非线性
我在项目中遇到过一个问题:VCM 的谐振频率大概在 200~500Hz。如果驱动信号的频率接近这个范围,镜头就会振荡。嗯,这里要注意,驱动 IC 必须做 阻尼控制,否则画面会一直抖。
2.1.2 步进电机
步进电机是开环控制的典型。你给它一个脉冲,它就转一个步距角。我最早做安防摄像头时用的就是它。优点是结构简单、成本低,缺点嘛——丢步。
避坑指南:我曾经在低温环境下测试步进电机,结果丢步率高达 30%。后来加了温度补偿和闭环检测才搞定。如果你做户外产品,务必考虑温度对步进电机的影响。
步进电机的驱动方式有两种:整步和半步。整步扭矩大但分辨率低,半步分辨率高但扭矩小。我个人习惯在启动时用整步,接近目标时切半步,这样又快又准。
2.1.3 压电马达
压电马达是高端货。它利用压电陶瓷的逆压电效应,通电后陶瓷变形,推动镜头移动。优点是精度极高(纳米级)、响应极快(微秒级),缺点是贵、驱动复杂。
我记得有一次做医疗内窥镜项目,客户要求对焦精度达到 0.1μm。VCM 和步进电机都做不到,最后上了压电马达。驱动波形我调了一周,才让它在谐振点稳定工作。
2.2 驱动 IC 与接口
马达选好了,接下来就是怎么驱动它。驱动 IC 是 AF 系统的「肌肉」,接口是「神经」。两者配合不好,马达再好也白搭。
2.2.1 驱动 IC 的核心功能
- 电流/电压控制:VCM 需要恒流驱动,步进电机需要恒压驱动
- 位置检测:通过霍尔传感器或编码器反馈位置
- 保护机制:过流、过温、短路保护
- 通信接口:I²C、SPI、PWM
| 接口类型 | 速率 | 适用场景 | 我推荐的理由 |
|---|---|---|---|
| I²C | 400kHz~1MHz | 手机、小型模组 | 引脚少,适合空间受限 |
| SPI | 10MHz+ | 工业相机、高端设备 | 速度快,支持多从机 |
| PWM | 取决于频率 | 低成本方案 | 简单粗暴,但精度有限 |
我的经验:如果你做手机摄像头,I²C 是标配。但要注意 I²C 总线上的电容负载,超过 400pF 信号就会变形。我曾经因为布线太长导致 I²C 通信失败,后来加了电平转换芯片才解决。
2.2.2 驱动 IC 选型要点
选驱动 IC 时,我一般看三个指标:
- 输出电流能力:VCM 通常需要 50~200mA,步进电机需要 500mA~2A
- 纹波噪声:驱动电流的纹波会直接影响对焦精度,建议 < 1%
- 保护功能:至少要有过流和过温保护,否则烧了马达哭都来不及
2.3 AF 算法流水线
硬件搞定了,接下来是软件。AF 算法流水线是整个系统的「大脑」。我把它分成四个阶段:
2.3.1 图像采集
AF 算法需要图像数据来计算清晰度。通常我们直接从 sensor 拿 RAW 数据,或者从 ISP 拿 YUV 数据。我个人习惯用 RAW,因为没经过 ISP 处理,信息最原始,评价结果更准。
注意:采集窗口的选择很重要。我一般取画面中心 1/3 区域,因为大多数拍摄主体都在中间。但如果你做追踪 AF,窗口要跟着目标走。
2.3.2 清晰度评价
这是 AF 算法的核心。评价函数的好坏直接决定对焦精度。常用的方法有两种:
- 对比度法(CDAF):计算图像边缘的梯度。梯度越大,画面越清晰。我用的是 Sobel 算子,简单高效。
- 相位法(PDAF):通过 sensor 上的相位检测像素,直接计算离焦方向和距离。速度快,但需要硬件支持。
我做过一个对比实验:CDAF 精度高但慢(需要来回扫),PDAF 快但精度受限于像素数量。现在高端手机都是两者结合——PDAF 粗调 + CDAF 精调。
2.3.3 搜索策略
评价函数算出来了,接下来怎么找峰值?常用的搜索策略有:
| 策略 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 爬山法 | 朝评价函数增大的方向移动 | 实现简单 | 容易陷入局部峰值 |
| 全局搜索 | 遍历整个行程 | 一定能找到全局峰值 | 慢,功耗高 |
| 二分法 | 不断缩小搜索区间 | 速度快 | 对噪声敏感 |
| 预测搜索 | 根据历史位置预测下一帧 | 适合运动场景 | 预测不准会跑偏 |
我的建议:静态场景用爬山法 + 全局搜索兜底,动态场景用预测搜索。我曾经在安防项目里只用爬山法,结果遇到低对比度场景,算法一直在局部峰值来回跳。后来加了全局搜索做初始化,问题就解决了。
2.3.4 驱动执行
搜索策略算出了目标位置,接下来驱动马达过去。这里有两种控制方式:
- 开环控制:直接给马达一个位置指令,不检测实际位置。简单,但精度差。
- 闭环控制:通过霍尔传感器或编码器反馈实际位置,用 PID 算法调整。精度高,但成本高。
我习惯在手机项目里用开环 + 校准表。因为手机 VCM 的线性度还行,提前标定好电流-位移曲线,开环也能做到不错的效果。工业相机嘛,老老实实上闭环。
避坑指南:我曾经在闭环 PID 调试时,积分项设得太大,导致马达过冲后反复振荡。嗯,这里要注意,PID 参数一定要根据马达的机械特性来调,不能照搬公式。
2.4 小结
AF 系统架构说白了就是三件事:马达动起来、驱动控得住、算法算得准。VCM 适合手机,步进电机适合安防,压电马达适合高端。驱动 IC 选 I²C 还是 SPI,看你的速率和引脚预算。算法流水线从采集到执行,闭环反馈是关键。