前文的补充说明
有光学设计师的朋友,跟我说把那个程序抄完后运行,什么也得不到。
这是因为缺乏一个文件名字叫做“zoomlensdata.txt"
他的内容就是上一篇的那份代码之后的第七到第十二行的内容。
然后我对这个程序进行了注释:
def structdata(word:str):
"""
提取数据
"""
return re.split(r':',word)[1].strip()
def getimg(p,f,pf):
"""
p:物点
f:像方焦距
pf:镜片的位置
return:像点,垂轴放大率
"""
def createp(initobj,f1,f2,pf1,pf2,step):
"""
initobj: 初始物点坐标
f1:变倍组焦距
f2:补偿组焦距
pf1:变倍组初始位置
pf2:补偿组初始位置
step:步长
return:一个包含有各个视场变倍/补偿绝对位置和相应变倍比的列表
"""
设计师仅仅只需要调整冒号后面的数值就能得到一系列与之相对应的结构参数。
正文 精细的设计
1,检查其他视场,打开6个视场对后续的几个视场的后面两个厚度设置变量,然后将所有TOTR设置为与第一个结构相同。然后发现在第三个结构两片透镜距离太近。这样只有添加约束
这样整个评价函数为(注意仅仅第一和最后结构添加了effl约束,其他视场没有添加,仅仅设置作为观察用)
这时我们可以检查各个面的波前,比如检查第八个面的波前然后调整一下这个面的非球面系数
——波前图在进行细致优化的时候是非常有用的,反复手动调整4,6,8三个面的非球面系数,每调整一次锤型一次。
值得注意的是
1.约束条件的变动。
由于确认变倍补偿路径的参数一共有5个,所以总约束数也应当是5个
前期我们可以将变倍,补偿,前组的光焦度进行约束,但是当我们设定了数个视场的结构,就可以解除部分约束。到后期的时候一般我仅仅约束前组,变倍焦距,以及长焦焦距,而其他视场焦距不做约束。
这是因为在机械中有一种说法叫做过定位,即两个自由度被限制了会引起构件的变形。
这里我们可以发现一个有意思的现象,那就是当我们将约束取消到一定的程度时,zemax的优化就变成了方程的求解,当多重结构参数固定下来后,如果改变这几个关键参数(变倍,补偿,前组的焦距)那么其他的参数经过优化之后,依然能够符合程序运算出来的结果。而一旦我们重新加上这些约束,就会产生类似于结构设计时的“过定位效果”,从而对像质产生不良影响。给优化增加困难。
就这样,扫个尾花了之前1.5倍的时间后,优化也就差不多了
标准点列图
注意:有些艾里斑看上去像个椭圆是因为渐晕。
用如下的按钮添加反射镜
在第十三以及第二十个面插入一个45°反射镜后如下
当然反射镜的位置可以根据具体需求进行调整
公差分析
在一般情况下,根据国内的制造工艺水平,元件或者表面的偏心一般可以在0.02至0.05mm的范围内。
元件的倾斜公差一般跟元件的大小相关,端面的跳动也是0.02至0.05,这样根据简单的几何关系比较大的镜片倾斜公差会更加严格,而比较小的镜片倾斜应当更加宽松。比如一个5mm口径的镜片。要求倾斜1′与一个口径200mm的镜片倾斜1′是两个完全不同的概念,很多初出茅庐的设计师将所有的镜片都设计成同样的公差,这是对产品极端不负责任的行为。
以下是武汉宇熠熠教学视频中的一段内容:
题外话:有些时候生产人员抱怨设计师,公差比较紧,并不是设计师的错。因为光线总是最终会从不同角度的平行光被调制到汇聚到像面上的某个点。其总的弯折量是一定的。为了维持一些镜头的基本功能,往往有些光学组件需要特定的光焦度。这些光焦度在设计时改动的范围是有限的 ,因此决定光学系统的公差的最大因素往往是1:镜筒的总长度;2:变倍比3:其他的外形结构尺寸。4:镜片的数量
当这些都被要求的时候,光学设计师对于公差所能做出的努力是相当有限的;当然很多外行就会认为公差紧是设计师的错。