4. 变焦曲线与凸轮设计

变焦镜头设计里,最核心的机械实现就是凸轮。说白了,凸轮曲线就是变焦组的运动轨迹。你光学算得再好,凸轮曲线没弄好,镜头装出来要么卡死,要么变焦不顺畅。我早年吃过这个亏,后面会细说。

4.1 变焦曲线的基本概念

变焦曲线描述的是:随着变焦倍率变化,每个运动组元的位置变化关系。通常横轴是焦距或变焦倍率,纵轴是组元相对于某个参考面的轴向位移。

在 Code V 里,我们通过多重组态(Multi-Configuration)来定义不同焦距下的组元位置。每个组态对应一个焦距点,组态之间的位置变化就构成了变焦曲线。

关键点:变焦曲线不是随便画的。它必须满足三个基本要求:
  • 像面稳定——变焦过程中像面位置不变或微变
  • 平滑连续——曲线一阶导数连续,不能有拐点
  • 无干涉——组元之间在任何位置都不碰撞

我习惯把变焦曲线分成两类:

类型 特点 适用场景
光学补偿式 组元运动简单,像面有微小漂移 低倍率、低成本镜头
机械补偿式 组元运动复杂,像面严格稳定 高倍率、专业级镜头

大多数专业变焦镜头都用机械补偿式。你想想看,像面漂移哪怕 0.01mm,在传感器上就是好几个像素的模糊。

4.2 凸轮曲线的生成与优化

凸轮曲线生成,在 Code V 里其实有套路。我一般分三步走:

  1. 定义组态——在变焦范围内取 5~11 个焦距点
  2. 优化组元位置——每个组态单独优化,保证像质
  3. 拟合曲线——把离散位置点拟合成连续曲线

Code V 里可以用 CAM 命令来生成凸轮数据。举个例子:

! 定义变焦组态
CFG 1
THC S1 2.0
THC S3 15.0
CFG 2
THC S1 5.0
THC S3 12.0
CFG 3
THC S1 8.0
THC S3 9.0

! 生成凸轮曲线
CAM
MCF 1 2 3
THC S1
THC S3
GO

这里 CAM 命令会根据三个组态的位置数据,自动生成 S1 和 S3 的凸轮曲线。输出结果包括每个组态的凸轮角度和对应的位移量。

我的习惯:组态数量不要少于 5 个。太少的话,曲线拟合会失真。我一般取 7 个,宽变焦比取 11 个。多了计算慢,少了精度不够。

优化凸轮曲线时,我重点关注两个指标:

  • 曲线斜率变化率——斜率变化太陡,凸轮加工困难,运动也不顺
  • 残余像面漂移——拟合后的曲线与原始优化位置之间的偏差

我曾经遇到一个项目,凸轮曲线斜率在某个位置突然变陡,结果样机装出来变焦到那个位置时,马达明显吃力,还伴有异响。后来重新优化曲线,把斜率变化率控制在 0.5 以内,问题就解决了。

4.3 平滑变焦的实现方法

平滑变焦,说白了就是让变焦过程中像质不抖动、像面不漂移、手感不卡顿。实现方法有三个方面:

4.3.1 光学层面的平滑

在优化时,不能只看单个组态的像质。我习惯把相邻组态放在一起做差分优化。具体做法是:

  • 在优化函数里加入组态间的像差变化约束
  • 控制像面位置在组态间的变化量小于 0.005mm
  • 监控 MTF 在变焦过程中的波动,波动幅度不超过 0.1

4.3.2 机械层面的平滑

凸轮曲线本身要满足:

  • 二阶连续——加速度不能突变
  • 压力角合理——凸轮压力角一般控制在 30° 以内
  • 升程均匀——避免某一段升程过大或过小
避坑指南:我曾经设计过一个 20 倍变焦镜头,凸轮曲线在长焦端压力角达到了 45°。结果加工出来的凸轮,运动到那个位置时卡死了。后来把曲线重新设计,压力角降到 28°,问题解决。压力角超过 35° 就要警惕。

4.3.3 仿真验证

Code V 里可以用 ZOO 命令做变焦仿真,检查整个变焦过程中的像质变化。我一般会:

  1. 在变焦范围内取 20~30 个中间位置
  2. 计算每个位置的 MTF 和像面位置
  3. 绘制 MTF 随变焦位置的变化曲线
  4. 检查曲线是否平滑,有没有突变点

嗯,这里要注意:仿真时一定要考虑公差。我曾经有个项目,仿真时 MTF 很平滑,但实际装出来变焦到某个位置像质突然下降。后来一查,是凸轮槽的公差和镜片偏心公差叠加导致的。从那以后,我都在仿真里加入公差分析。

变焦曲线与凸轮设计流程 定义变焦组态 优化组元位置 生成凸轮曲线 优化曲线平滑度 变焦仿真验证 输出凸轮数据 组态数量建议 低倍率:5~7 个组态 高倍率:9~11 个组态 组态均匀分布 平滑度检查指标 斜率变化率 < 0.5 压力角 < 30° 像面漂移 < 0.005mm 输出文件 凸轮角度-位移表 变焦曲线图

最后说一句,凸轮设计不是一锤子买卖。我每次做完凸轮曲线,都会和机械工程师一起过一遍,确认加工工艺能不能实现。有些曲线理论上很完美,但加工中心做不出来,那就白搭。设计要落地,才是真本事。