SMS(同步多表面光学设计)

阅读: 评论:0

SMS(同步多表面光学设计)

SMS(同步多表面光学设计)

设计准备:

实验工具

MATLAB 2021b ; solidworks 2021 ; TracePro;

设计要求

同步设计一个透镜,使得光源的光经过透镜能够在接受面形成光斑。

设计原理

矢量形式的反射定律

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2QhXmeE-1652974515500)(imgs/示意图.png)]{#fig:
width=“0.8linewidth”}

设 A 0 A_0 A0​, A ′ A' A′和 N N N分别为沿着入射光线、折射光线和法线的单位矢量。根据折射定律有
n ′ ( A 0 ′ × N ) = n ( A 0 × N ) n ' ( A ' _ { 0 } times N ) = n ( A _ { 0 } times N ) n′(A0′​×N)=n(A0​×N)

将 A A A记为 n A 0 nA_0 nA0​, A ′ A^{'} A′记为 n A 0 ′ nA_0^{'} nA0′​,则可得 A ′ × N = A × N ( A ′ − A ) × N = 0 begin{array}{l} A^{prime} times N=A times N \ left(A^{prime}-Aright) times N=0 end{array} A′×N=A×N(A′−A)×N=0​ 故可得

A ′ − A = p N A ' - A = p N A′−A=pN
则根据此公式可以利用折射光线,入射光线的光学动量求解出法线的向量。

P = N ⋅ A ′ − N ⋅ A = n ′ cos ⁡ I ′ − n c o s I P=N cdot A^{prime}-N cdot A=n^{prime} cos I^{prime}-n c o s I P=N⋅A′−N⋅A=n′cosI′−ncosI

P = N ⋅ A ′ − N ⋅ A = n ′ cos ⁡ I ′ − n cos ⁡ I P = N cdot A ' - N cdot A = n ' cos I ' - n cos I P=N⋅A′−N⋅A=n′cosI′−ncosI

P = n ′ 2 − n 2 + n 2 cos ⁡ 2 I − n cos ⁡ I = n ′ 2 − n 2 + ( N ∙ A ) 2 − N ∙ A P = sqrt { n ^ {' 2 } - n ^ { 2 } + n ^ { 2 } cos ^ { 2 } I } - n cos I =sqrt { n ^ { '2 } - n ^ { 2 } + ( N bullet A ) ^ { 2 } } - N bullet A P=n′2−n2+n2cos2I ​−ncosI=n′2−n2+(N∙A)2 ​−N∙A

A ′ = A + p N A^{'}=A+pN A′=A+pN 故可以根据入射光线和法线可以求解折射光线。

多表面同步

根据透镜的上顶点,以及光线经上顶点后在透镜的路程,根据折射定律可以确定光线在透镜下表面的折射点以及法线方向。

再根据等光程的原则,从接受面的另一侧为光线的起点,透镜下表面的折射点为折射点,可以求解出透镜上表面的另一个点。不断反复上述的操作,可以确定几个透镜的关键节点。

透镜的生成需要更多的数据,所以需要根据这些节点生成更多的透镜表面的点。常见的方法有多项式拟合(不过效果不好);根据法线方向以及节点的位置NURBS
方法来拟合透镜的表面;
根据透镜下表面的第一个点的位置即法线方向,采用圆弧来作为透镜下表面,跟这些点,再根据等光程计算出采用和关键节点一样的方法计算出透镜的表面。

本文采用了第三种方法。

等光程

在确定光线从透镜上顶点经过透镜,再经折射射到接受面的边缘,可以计算出整个过程的光程。sms的一个重要原则就是等光程,后面光线的计算,如光线在透镜中的光程,光线的在另一个表面的折射点等都需要经过等光程来计算。

O P L = [ B P 0 ] + n [ P 0 Q 1 ] + Q 1 E ] = [ F Q ] + n [ Q 1 ] + [ P i A ] = [ B P 1 ] + n [ P P 0 ] + [ Q . t ] begin{aligned} O P L &=[B P_0]+nleft[P_{0 } Q_1right]+Q_1 E] \ &=[F Q]+n left[Q_{1}right]+left[P_{i A}right] \ &=left[B P_{1}right]+nleft[P P_{0}right]+[Q . t] end{aligned} OPL​=[BP0​]+n[P0​Q1​]+Q1​E]=[FQ]+n[Q1​]+[PiA​]=[BP1​]+n[PP0​]+[Q.t]​

操作步骤:

本实验的操作步骤如下:

1 、根据sms的基本原理, 利用设计方法生成几个关键的节点。

2、
根据关键节点,在对下表面进行圆弧拟合,再利用圆弧上的点,根据等光程原则,继续计算其他点,得到更多的透镜节点。

3 、利用MATLAB编程求解反射面的光学母线数据。

4、将上一步所得到的光学母线导入到solidworks中,进行三维建模得到反射面。将三维模型保存为sat文件。

5 、将sat文件导入到TracePro,添加 0.5mm 乘以05
mm大小的LED光源(光源类型为朗伯型),接收面。

6、进行光学仿真

7、优化分析,根据合理的方法确定透镜上表面顶点位置,以及光线在该点折射后在透镜的光程这两个参数。可以采用智能算法来求解。

::: appendix

主程序

%sms主程序
%利用智能算法找出最优的初值
clc;
clear ;
close all;a=250;
b=500;
H=1000;
% p0=[0,-H*(1-0.7653)];
p0=[0,-H*0.2447];
len=H*0.18;
% p0=[0,-H*0.2547];
% len=H*0.18;
[m_total,site_all_p,N_all_p,optical_path]=principal_dot(a,b,H,p0,len);
plot(site_all_p(1:2:end-1,1),site_all_p(1:2:end-1,2))
hold on
plot(site_all_p(2:2:end-1,1),site_all_p(2:2:end-1,2))

子程序:principal_dot.m

%已知第一个折射点,法线方向
%根据sms 确定所有的关键节点
%p0 :表示入射光在上表面所在的点
%Len:表示光线在透镜的长度%h:透镜上顶点到光源的距离
%H:透镜到接受面的距离
%a:表示光源的半径
%b:接受面的半径
%该函数以竖直向上为y轴正方向
%以水平向右为x轴正方向
%该光线均在x轴下%输出参数
%m_total:记录所寻找到的点的总个数
%site_all:透镜表面所有点的坐标
%N_all:透镜表面所有点的法向量
function [m_total,site_all,N_all,optical_path]=principal_dot(a,b,H,p0,len)
%%空气与介质的折射率n=1;
n_prime=1.5;
site_a_l=[-b,-H];
%% 光线入射透镜的上表面的中点的折射
%(折射定律的矢量形式(公式见工程光学(郁道银、谈恒英)第一章))
%A_prime 表示折射光线(长度为n'的矢量)
%A:表示入射光线的向量(长度为n 的矢量)
%:N:表示法矢量
N=[0,-1];
%入射光线的矢量形式
A=p0-[a,0];%[a,0]光源右边缘的点
A=A/norm(A)*n;
P=sqrt(n_prime^2-n^2+(N*A')^2) -N*A';
%A_u_prime 上表面折射光线的单位矢量
A_u_prime=A+P*N;%% 根据长度计算下表面的折射光线,以及折射的法矢量
%计算下表面的折射点
%q1:下表面的折射点
q1=p0+A_u_prime*len/n_prime;%由于光线的矢量的模(即长度)
% 为折射率,所以需除以折射率%A_d_prime下表面折射光线的矢量形式
A_d_prime=(site_a_l-q1);%接受面左边的点
A_d_prime=A_d_prime/norm(A_d_prime)*n;%计算q1的法矢量,法矢量的计算公式见工程光学(郁道银、谈恒英)第一章)
%
N_q1=-(A_d_prime-A_u_prime);%上表面的折射光线,即为下表面的入射光线
N_q1=N_q1/norm(N_q1);%归一化%记录透镜上表面的点集合
Site_p=p0;
%记录透镜下表面点的集合
Site_q=q1;%计算光程
optical_path=norm(q1-site_a_l)*n+len*n_prime +n*norm(p0-[a,0]);%% 根据等光程,求解其余的点
%光源,接受面的边缘点坐标矩阵Site
%为了方便,按接受面右边界的点,光源右边界的点
% ,光源左边界的点,接受面左边界的点  排序
Site=[b,-H;-a,0;a,0;-b,-H;];
%N_s_all:随后计算的所有点的法向量
%site_s_all:随后计算的所有点的坐标
[N_s_all,site_s_all] = subsequent_dot(Site,q1,N_q1,optical_path);[m,~]=size(N_s_all);
m_total=m+1;
%N_all:所有点的法向量
%site_all :所有点的坐标
N_all=[[0,-1];N_q1;N_s_all];
site_all=[p0;q1;site_s_all];
return

子程序:subsequent_dot.m

%已知光程,折射点,及其法向量,计算所有的点
%根据等光程,求解其余的点
%光源,接受面的边缘点坐标矩阵Site
%Site 按照一定的顺序排列
%site_p1 折射点(光线引出点发生的第一次折射所在的点为p1_temp)坐标
% N_p1:折射点的法线方向
%m 迭代次数function [N_all,site_all]=subsequent_dot(Site,site_p1,N_p1 ,optical_path,m)
if nargin==4Iteration_num=50;
elseIteration_num=m;
end
%透镜和空气的折射率
n_prime=1.5;
n=1;% %Criteria:判断是否循环是否继续
% Criteria =1;
N1_temp=-N_p1;%因为每次光线入射时,入射光线的方向会变化
%p_temp :每次循环第一个折射点
p1_temp=site_p1;
% ,所以相较于前一次,法向量的方向相反
%k:site涉及到点的选取
k=0;
%记录坐标,法向量的矩阵初始化
site_all=[];
N_all=[];while 1%(折射定律的矢量形式(公式见工程光学(郁道银、谈恒英)第一章))%A_temp_f 表示折射光线(长度为n'的矢量),即光学动量%A_temp:表示入射光线的向量(长度为n 的矢量),即光学动量% A_temp_s 表示第二次折射光线的向量(长度为n 的矢量),即光学动量%光线结束的起始点p_startp_start=Site(k*2+1,:);%光线结束的终点p_endp_end=Site(k*2+2,:);%入射光线的矢量形式A_temp=p1_temp-p_start;%A_temp=A_temp/norm(A_temp)*n;P=sqrt(n_prime^2-n^2+(N1_temp*A_temp')^2) -N1_temp*A_temp';%A_temp_f 光线在第一次折射时,折射光线的单位矢量A_temp_f=A_temp+P*N1_temp;%% 根据等光程求解第二次折射的折射方向,在透镜中的路程%% 用A_temp_f,p1_temp,N1_temp,optical_path%求解下一个折射点p2_temp,N2_temp% 判断是否有解,如有解则继续,反之,推出循环%len p2_temp到p1_temp的长度,即光在透镜的传播距离%A_temp_f 的长度即为折射率,所以该向量乘以光在透镜中的传播长度% 的向量的模长就等价于光程eqn =@(len) norm(len*A_temp_f)+ norm(p1_temp-p_start)+...norm(p_end-(p1_temp+len*A_temp_f/n_prime) ) -optical_path;[s_len,~,exitflag] = fsolve(eqn,200);%%m_temp 读取点的个数[m_temp,~]=size(site_all);%判断是否有实数解if (exitflag <=0 || m_temp >Iteration_num )breakend%% 计算法向量%p2_temp 第二个折射点的求解p2_temp= A_temp_f*s_len/n_prime+p1_temp;%第二次折射的折射光的光学动量A_temp_s=p_end-p2_temp;%归一化,并计算光学动量%空气的折射率为1,所以n可以不乘A_temp_s=A_temp_s/norm(A_temp_s)*n ;%根据矢量形式的折射定律,求解法矢量N2_temp=-(A_temp_s-A_temp_f);%归一化N2_temp=N2_temp/norm(N2_temp);%% 法向量,折射点坐标记录site_all=[site_all;p2_temp];N_all=[N_all;N2_temp];%% 更新下次循环的折射点,法线方向p1_temp=p2_temp;N1_temp=-N2_temp; %光线方向不同,每次法线方向需改变方向%% k取反,使得取另一个起点,终点k=~k;end

:::
_s=A_temp_s/norm(A_temp_s)*n ;
%根据矢量形式的折射定律,求解法矢量
N2_temp=-(A_temp_s-A_temp_f);
%归一化
N2_temp=N2_temp/norm(N2_temp);
%% 法向量,折射点坐标记录
site_all=[site_all;p2_temp];
N_all=[N_all;N2_temp];

%% 更新下次循环的折射点,法线方向
p1_temp=p2_temp;
N1_temp=-N2_temp; %光线方向不同,每次法线方向需改变方向
%% k取反,使得取另一个起点,终点
k=~k;

end

:::

本文发布于:2024-01-31 21:35:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670814731512.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:光学   表面   SMS
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23