3. 图像传感器与驱动:从光子到精准对焦

自动对焦系统里,传感器和驱动器件就是执行层面的「手和脚」。你算法算得再准,最后也得靠马达把镜头推到指定位置,靠传感器告诉你「现在到底清不清晰」。这一章,我把这三块核心硬件的底细给你讲透。

3.1 CMOS传感器工作原理

CMOS传感器,说白了就是把光信号转成电信号,再量化成数字值。每个像素点就是一个光电二极管加一个放大器。

工作流程大致分三步:

  1. 曝光(Integration):光子打到光电二极管上,产生电子-空穴对,积累电荷。
  2. 读出(Readout):行选通信号打开,电荷通过列总线传输到ADC。
  3. 量化(Quantization):模拟电压转成数字值,输出RAW数据。

这里有个关键参数——满阱容量(Full Well Capacity)。它决定了像素能存多少电子。我做过一个项目,传感器满阱只有8000e⁻,强光下动不动就饱和,对焦评价函数直接失效。后来换了满阱20000e⁻的传感器,问题才解决。

对焦算法工程师必须关注的传感器参数:

  • 帧率(FPS):决定对焦响应速度,至少30fps以上才够用。
  • 读出噪声:影响低照度下的对焦精度。
  • 动态范围:高动态场景下,过曝或欠曝区域的对焦评价会失真。
  • 像素尺寸:越大灵敏度越高,但分辨率会下降。

3.2 VCM马达与步进电机

镜头驱动,主流就两种方案:VCM(音圈马达)和步进电机。

特性 VCM马达 步进电机
工作原理 电磁力驱动,类似扬声器 脉冲信号控制步进角
行程 短(通常0.3-1mm) 长(可达数厘米)
精度 高(亚微米级) 中等(取决于步进角)
功耗 低 较高
成本 低 中等
典型应用 手机摄像头、微型模组 监控摄像头、工业相机

VCM马达,我习惯叫它「弹簧上的线圈」。通电后线圈在磁场里受力,推动镜头移动。断电后靠机械弹簧复位。优点是响应快、精度高,缺点是有磁滞效应——同一个电流值,正行程和反行程的位置不一样。

步进电机就不一样了。它靠脉冲信号一步步转,开环控制就能定位。但有个坑:失步。负载突然变大,电机可能丢步,位置就偏了。我曾经在低温环境下遇到过,步进电机启动扭矩不够,镜头卡住不动,对焦算法还在那傻等。

避坑指南:

VCM马达不要长时间通大电流,线圈会发热,热漂移会让对焦位置偏移。我曾经有个项目,连续对焦10分钟后画面开始模糊,排查半天才发现是马达发热导致镜头位置变了。

3.3 PWM与DAC驱动控制

控制马达,本质上就是控制电流或电压。两种主流方式:PWM和DAC。

PWM(脉冲宽度调制):通过占空比调节等效电压。优点是电路简单、效率高,缺点是纹波大,可能引入噪声。

DAC(数模转换器):直接输出模拟电压。精度高、纹波小,但成本高、功耗大。

实际项目中怎么选?我一般这么判断:

  • 手机摄像头:PWM驱动VCM,因为空间有限、成本敏感。
  • 高端工业相机:DAC驱动步进电机,因为需要平滑运动和低噪声。

下面是一个典型的PWM驱动VCM代码片段:

// 设置PWM占空比控制VCM位置
// duty_cycle: 0-1000, 对应0%-100%
void vcm_set_position(uint16_t duty_cycle) {
    // 限幅保护
    if (duty_cycle > 1000) duty_cycle = 1000;
    
    // 设置PWM寄存器
    TIM1->CCR1 = duty_cycle;
    
    // 等待稳定(VCM响应时间约1-2ms)
    delay_ms(2);
}

经验之谈:

PWM频率选多少?我建议20-50kHz。太低会有可闻噪声,太高开关损耗大。另外,PWM驱动VCM时,最好加一个RC低通滤波,把高频分量滤掉,否则镜头会微振。

3.4 霍尔传感器反馈

开环控制有个问题——你不知道镜头到底在哪。霍尔传感器就是来解决这个的。

霍尔传感器利用霍尔效应:磁场变化时,霍尔元件输出电压变化。把磁铁贴在镜头载体上,霍尔元件固定在基座上,镜头移动时磁场变化,霍尔输出就跟着变。

这样就能实现闭环控制:

  1. 算法算出目标位置。
  2. 驱动马达移动。
  3. 霍尔传感器实时反馈当前位置。
  4. PID控制器修正误差。

霍尔反馈的精度取决于几个因素:

  • 磁铁质量:磁场均匀性直接影响线性度。
  • 安装公差:霍尔元件和磁铁的间距必须严格控制。
  • 温度漂移:霍尔输出随温度变化,需要补偿。

我记得有个量产项目,霍尔反馈的线性度只有±5%,闭环控制后定位误差还是很大。后来发现是磁铁充磁不均匀,换了高精度磁铁后线性度提升到±1%,问题才解决。

霍尔反馈校准流程:

  1. 记录全行程的霍尔ADC值(从0到最大行程)。
  2. 拟合位置-ADC曲线(通常用线性或二次多项式)。
  3. 存储校准参数到EEPROM。
  4. 运行时根据ADC值反算当前位置。

3.5 知识体系总览

下面这张图把本章的核心关系串起来了:

图像传感器与驱动知识体系 图像传感器与驱动知识体系 自动对焦算法 CMOS传感器 驱动马达 霍尔反馈 曝光控制 读出电路 VCM马达 步进电机 位置检测 温度补偿 PWM驱动 DAC驱动 闭环控制(PID + 霍尔反馈) 核心链路:传感器采集 → 算法计算目标位置 → 驱动马达 → 霍尔反馈闭环修正

这张图把本章的知识点串成了一个完整链路。你从算法层往下看,传感器提供图像数据,驱动马达执行移动指令,霍尔反馈告诉算法「你推过头了,往回拉一点」。三者配合好了,自动对焦才能又快又准。

我的建议:

刚开始做对焦系统时,别急着上复杂算法。先把传感器、马达、霍尔这三块的硬件特性摸透。拿示波器量一下PWM波形,用串口打印霍尔ADC值,手动推镜头看看线性度。硬件底子打好了,算法才能在上面跳舞。