4. 机电主动式无热化:自动对焦原理、电机选型与控制算法入门

前面聊了那么多被动无热化,说白了就是靠材料自己“扛”。但有些场景,比如高变倍连续变焦镜头、或者对温度范围要求特别宽的系统,被动方案就有点吃力了。这时候就得请出机电主动式无热化——让电机带着镜片动,实时补偿温度带来的焦移。

我最早接触这个方案,是在一个机载红外吊舱项目里。温度从-40℃跑到+60℃,被动方案怎么都调不好。最后上了主动对焦,问题才解决。今天咱们就把这块的核心技术拆开揉碎。

4.1 自动对焦原理:温度补偿的本质

主动无热化的核心逻辑其实很简单:温度变了 → 焦面跑了 → 测出偏移量 → 电机推镜片回去。

但具体怎么实现?主要有两条路:

  • 查表法(开环):事先标定好不同温度下的补偿位置,存进EEPROM。工作时读温度传感器,直接查表给电机发指令。优点是简单、响应快;缺点是对标定精度要求高,而且镜头老化后可能不准。
  • 闭环法(带反馈):用位置传感器(霍尔、光栅等)实时检测镜片位置,和目标位置做比较,形成闭环控制。精度高、抗干扰强,但成本也上去了。

关键指标:主动无热化的补偿精度,通常要求控制在焦深的1/3以内。对于F数为2的红外镜头,焦深大约在几十微米量级,所以电机+控制系统的定位精度至少要达到±10μm。

我个人习惯,在项目初期先用查表法快速验证光学方案,等定型了再上闭环。这样能省不少调试时间。

4.2 步进电机 vs 音圈电机:怎么选?

这是主动无热化里最让人纠结的选择。我见过不少工程师在这上面栽跟头。咱们直接上对比:

对比项 步进电机 音圈电机
工作原理 电磁脉冲驱动,步进式转动(需丝杠变直线) 洛伦兹力直接驱动,直线运动
定位精度 开环可达几十微米(取决于丝杠导程) 闭环轻松到微米级
响应速度 较慢,存在加减速过程 极快,毫秒级响应
保持力 断电自锁,无需额外刹车 断电即失力,需弹簧或刹车机构
成本 低(几十元级别) 高(几百到上千元)
适用场景 慢速、大行程、对成本敏感 快速、高精度、小行程

我的选型建议:

  • 如果镜头补偿行程超过5mm,且对速度要求不高(比如1秒内完成补偿),步进电机是性价比之王。
  • 如果行程在1-3mm,且要求几十毫秒内到位(比如连续变焦中的实时补偿),音圈电机是唯一选择。

我曾经在一个项目中,为了省钱选了步进电机配细丝杠,结果低温下润滑油变稠,电机丢步了。后来换成音圈电机加光栅尺闭环,问题才解决。嗯,这里要注意:步进电机在极端温度下容易丢步,如果你做的是宽温域产品,一定要留足力矩余量,或者直接上闭环。

4.3 控制算法入门:从PID到前馈

控制算法是主动无热化的灵魂。算法写得好,镜片指哪打哪;写得不好,来回震荡甚至啸叫。咱们从最经典的PID说起。

4.3.1 位置式PID

这是最基础的形式。说白了就是:当前误差 × 比例系数 + 误差累积 × 积分系数 + 误差变化率 × 微分系数。

// 位置式PID伪代码
float pid_control(float target_pos, float current_pos) {
    float error = target_pos - current_pos;
    integral += error * dt;
    float derivative = (error - last_error) / dt;
    float output = Kp * error + Ki * integral + Kd * derivative;
    last_error = error;
    return output;
}

实际调参时,我有个习惯:先调Kp让系统动起来,再加Kd抑制超调,最后加Ki消除静差。千万别三个参数一起调,会把自己搞疯。

避坑指南:我曾经在调试音圈电机时,积分项Ki设得太大,结果温度变化时积分饱和,镜片直接撞到机械限位。后来加了积分限幅和抗饱和处理才解决。记住:积分项一定要限幅。

4.3.2 前馈控制:让系统“预判”

纯PID有个问题:它总是等误差出现了才去纠正。对于温度变化这种缓慢但持续的扰动,我们可以加一个前馈项,提前给出补偿量。

// 带前馈的PID
float pid_with_feedforward(float target_pos, float current_pos, float temperature) {
    float ff_output = feedforward_lut(temperature);  // 查表得到前馈量
    float fb_output = pid_control(target_pos, current_pos);  // 反馈量
    return ff_output + fb_output;
}

前馈+反馈的组合,是我在项目中用得最多的方案。前馈负责“粗调”,反馈负责“精修”,两者配合,既快又准。

4.4 知识体系总览

下面这张图,把主动无热化的核心脉络串起来了。你可以把它当作设计时的检查清单。

机电主动式无热化知识体系 温度变化 ΔT 焦面偏移(需补偿) 查表法(开环) 闭环反馈法 前馈+反馈法 步进电机 + 丝杠 音圈电机 音圈电机 + 光栅尺 开环控制(无算法) PID控制 PID + 前馈 设计要点 ① 查表法适合慢变、低成本场景 ② 闭环法精度高,但需注意积分饱和

4.5 实战中的几个关键点

最后,分享几个我在项目中踩过的坑,希望能帮你少走弯路:

  1. 温度传感器的位置:别把传感器贴在电机上,电机发热会误导读数。我习惯把传感器贴在镜筒外侧,靠近光学元件的位置。
  2. 机械间隙的回差:步进电机+丝杠方案,正反转之间会有间隙。可以在控制里加一个“单向逼近”策略,每次都从同一个方向到位。
  3. 音圈电机的散热:音圈电机连续工作时发热很厉害。如果镜头本身对热敏感,记得加散热片或者限制占空比。
  4. 控制周期:温度变化很慢,控制周期没必要设得太短。我一般用10-20Hz的更新率,既省电又稳定。

一个小技巧:调试PID时,先用一个恒温箱模拟温度变化,把镜片位置和温度数据同时录下来。回头分析数据,比现场瞎调高效得多。