Zemax学习笔记(14)- ZEMAX 的DMD设计

  • 1.设计概述
  • 2.实现过程
    • 2.1 基础设置
    • 2.2 DMD(MEMS)设置
    • 2.3 设置演示
    • 2.4 完善结果
  • 3.总结

1.设计概述

起因是看到了一篇文章(Coded-aperture broadband light field imaging usingdigital micromirror devices),里边有两个DMD合在一起用,并使用4f透镜组消除色散,想复刻一下这个系统。系统如下图所示。文章只给出了透镜组是用的这个文件,可以到网上下载(https://www.thorlabs.com/_sd.cfm?fileName=20529-S03.zmx&partNumber=AC254-100-A )经过测量,每个元件间的距离大约都是略小于100mm,应该是透镜组的焦距97.068,光路的夹角应该是24°,与DMD的偏转角12°相吻合。

2.实现过程

2.1 基础设置

整体选用序列模式,先在透镜组AC254-100-A的基础上,添加5个视场,设置光谱范围400-700nm。


之后,在镜头数据编辑其中添加与原透镜组相同但方向相反的另一组透镜,如下图所示,并在第4面前插入新的第4面,一会儿设置为MEMS表面。如下所示

2.2 DMD(MEMS)设置

在ZEMAX中,有两种设置DMD的方式,一种是非序列模式,添加物体MEMS,并进行设置(可参考网址);一种是在序列模式中,选中某一表面,设置为用户定义-us_mems.dll,如下图。两者的参数设置是一样的,仅介绍序列模式,也可以在帮助文档里边搜索mems,阅读其参数设置方法。

参数设置方法:

参数 含义
1 x方向上的像素数
2 y方向上的像素数
3 x方向的总长度
4 y方向上的总长度
5-7 angle 0 1 2的度数,对应于DMD三个状态,比如-12°, 0°, 12 °
8 rot angle 围绕Z轴旋转的角度,像素将围绕Z轴旋转。如果Z轴面向页面外/朝向观察者,旋转在X-Y平面是逆时针的。
9 0 1 2 分别代表,对DMD按照行,列和单像素控制,具体控制方法见下文。
10- 10之后是对DMD的控制命令,一个命令可以控制DMD的15个单元(行 列 或单像素)

例子,比如我们设置像素数量是15×15,行和列的总宽度都是15mm,那么每个像素就是1mm×1mm,如果设置angle 0 1 2的度数就是-12°, 0°, 12 °,那么三个角度状态0 1 2就对应-12°, 0°, 12 °。

MEMS对象中的元素从左下角(在MEMS对象的局部坐标系的(-X, -Y)象限)开始编号,像素为# 1。像素首先沿着列的+X方向增加,然后沿着行的+Y方向增加。

如果设置参数9,flag=0,就是对DMD按照行控制,那么这15行就可以通过参数10输入一个命令数字来控制,比如,我们想要这15行都是0状态,那么一个三进制数00000 00000 00000(左到右是 行 从高到低),将这个三进制数转化为10进制数(=0)输入到参数10里边,那么1-15行都会偏转-12度。

如果设置参数9,flag=2,就是对DMD按照单像素控制,共15×15个单像素,参数10只能控制15个像素,就是第一行的15个单像素,第2行的15个单像素由参数11控制,依次类推。

DMD是沿着对角线偏转的,这时候只需要将参数8设置为45°即可,就是沿着对角线偏转。

zemax的控制数量是有限的,大约在3750个,也就是不论行、列还是单像素,ZEMAX最多只能控制这么多个微镜。

2.3 设置演示

将新插入的第4面设置为反射镜,x偏转-24°;接着设置DMD参数为15×15 像素,每个微镜面积为1mm×1mm。angle 0 1 2的度数就是-12°, 0°, 12 °,先设置flag=0(按行控制)。参数10为,7174453(行控制,所有行为0°),如果参数10设置为0或者14348906可能会找不到符合条件的像高,把视场里边的像高改为近轴像高即可,也可能是因为物体在焦点出,平行光而反射镜面积太小了,可以将物面距离设置成无限,ZEMAX中无限是I。如图:

接着设置参数10设置为0或者14348906,可以看到DMD很好地调制了反射的光线的方向。

2.4 完善结果

当设置反射镜反射角度为-24度,且所有微镜偏转-12度时,光路与元件并不重合,能不能像论文中的那样将反射镜保持竖直而仅偏转微镜呢?这个时候就可以用到倾斜和偏心的知识了(可参考网址),打开分析>报告>分类数据报告,参考面数据进行调整。

但是这里比较简单,我们只用把反射边上边的那个间断面删除,并将下边的间断面改为-24度即可。这时可能看起来比较奇怪,好像反射面上入射角不等于反射角,但正式因为DMD微镜偏转了-12°才会导致这样奇怪的现象,本质上入射角与反射角还是相等的。

如果将rot angle设置为45度,可以看到成像光路偏转了,这与DMD按照对角线偏转是吻合的,不过实际中,我们可以不这样做,因为DMD自己可以旋转45°保证光路不偏转。所以在本次仿真中就不将rot angle 偏转45°了。

3.总结

做到这里,论文中的光路基本就可以像模像样的画出来了。不过要注意的是,ZEMAX应该先将整体的光路在一个光轴上设计出来,再插入反射镜,而不是按照顺序插入反射镜,否则会麻烦很多。接下来我们可以把整个光路设计出来,还要考虑DMD衍射仿真问题,看看这个问题如何解决。

Zemax学习笔记(14)- ZEMAX 的DMD设计相关推荐

  1. Zemax学习笔记——实战案例之单镜头设计

    单镜头参数: F#:F/4 焦距:100mm wavelength:808 nm 材料:BK7 第一步:设置初始参数 F# = f/d 得到入瞳d为25mm 单镜头焦距为100,所以初始结构设定为: ...

  2. Zemax学习笔记(11) - 变焦镜头设计实例

    Zemax学习笔记(11) - 变焦镜头设计实例 1.概述 2.设计 2.1设计要求 2.2 设计过程 2.3 变焦镜头的优化设置 3. 总结 1.概述 成像镜头包括定焦镜头和变焦镜头,我们在日常生活 ...

  3. Zemax学习笔记 (8)- 光学系统各种像差 及其 Zemax模拟

    光学系统各种像差 及其 [Zemax模拟] 1. 概述 像差从字面意思上看,就是成像的误差.光学系统并不是理想的,实际上成像不会完美地在像面上形成一个成像点,任何光学系统都只能尽可能地接近理想状态,那 ...

  4. Zemax学习笔记(15)- ZEMAX设计光谱仪

    Zemax学习笔记(15)- ZEMAX设计光谱仪 1.简介 2.设置 3.验证 4.光谱分辨率和衍射极限 1.简介 光谱仪(Spectrometer)是一种测量光强随波长分布的仪器,用途十分广泛.本 ...

  5. Zemax学习笔记(12)- 扫描系统实例

    Zemax学习笔记(12)- 扫描系统实例 1. 概述 2.设计过程 2.1 先设计一个单透镜代替整个扫描镜头组. 2.2 添加反射镜 2.3 多重结构下的扫描角度设置 3. 总结 1. 概述 在成像 ...

  6. Zemax学习笔记(9)- 双胶合透镜消除色差的实例

    Zemax学习笔记(9)- 双胶合透镜消除色差的实例 1.概述 2.设计优化 2.1 参数要求 2.2 设计优化过程 3.总结 1.概述 这一章虽然也是双胶合透镜,但是讲到了如何利用ZEMAX替换材料 ...

  7. Zemax学习笔记(10)- 牛顿望远镜实例

    Zemax学习笔记(10)- 牛顿望远镜实例 1.概述 2.设计牛顿望远镜 2.1抛物面反射设计 2.2 平面反射设计 2.3 添加遮拦孔径 3.总结 1.概述 在光学系统设计中,除了透镜折射成像之外 ...

  8. Zemax学习笔记(3)- Zemax中的序列模式和非序列模式

    Zemax学习笔记(3)- Zemax中的序列模式和非序列模式 序列模式与非序列模式 序列模式 窗口浮动或者固定 主要分析 非序列模式 混合模式 光源建模 创建复杂的几何体 CAD 导入 布尔命令 光 ...

  9. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

最新文章

  1. 计算机组成考试题及答案,计算机组成测试题一参考答案
  2. 亿级PV,常见性能优化策略总结与真实案例
  3. 如何在Go中编写多行字符串?
  4. Android NDK开发之旅14 JNI 缓存策略
  5. 数据库里账号的密码,这样存放最安全!
  6. 【CV】YOLOv4最全复现代码合集(含PyTorch/TF/Keras和Caffe等)
  7. Centos7 install firefox-china
  8. Java基础篇:方法重载
  9. linux没有浏览器如何卸载,在Ubuntu系统中安装Opera浏览器及卸载的方法
  10. java程序员中英文简历_Java程序员英文简历范文
  11. 1047: 对数表 C语言
  12. linux 下安装小度wifi,Fedora/Ubuntu如何安装小度/360随身WIFI驱动
  13. php私有云盘,教你搭建个人/企业私有云盘-kodexplorer
  14. C语言实现Dijkstra算法(求解两点之间最短路径问题)
  15. (云)服务器硬件性能测试
  16. 怎么理解预训练模型?
  17. 一张小名片引发的地球大危机
  18. 洛谷P2357 守墓人
  19. 高中信息技术python及答案_高中信息技术《Python语言》模块试卷
  20. Kaptcha-验证码使用及扩展

热门文章

  1. SQL Server设置周一为每周第一天
  2. Python自定义排序规则:functools.cmp_to_key()
  3. 网站服务器防火墙关闭吗,网站防火墙怎么关
  4. Hi3556v200配置RTL8189FS
  5. Subsonic学习
  6. 带式运输机传动装置二级同轴式圆柱齿轮减速器课程设计(说明书+ CAD图纸)
  7. 2021年线下“领航杯” MISC-《whatis.zip》解题WP
  8. NT5.X/NT6.0双启动的故障解决
  9. 树莓派安装Python-OpenCV
  10. 今日头条推荐算法原理全文详解之四