非球面稜鏡

小淼部落格發表於2021-09-07

Aspheric Coefficients

  R k A4 A6 A8 A10 A12 A14 A16
S1 PLANO - - - - - - - -
S2 2.68415 -0.517612 -5.980307E-5 1.527613E-5 3.647708E-6 -1.381275E-7 4.485638E-8 - -

Aspheric Lens Equation

Aspheric Surface Structure

2. 2D Geometry Analysis

    

3. Equation

此處使用了非球面稜鏡中最基本的面型之一(冪級數),對於非球面稜鏡的球面方程,主要分為兩個部分組成,前部分為基本的圓錐曲面部分,後部分一般為多項式部分(Polynomials-多項式方程: Power冪級數、Zernike多項式、Qcon多項式等), 基本形式如下所示:

  • Power Series

         

  • Zernike polynomials

       

  • Qcon polynomials

       

  • Q polynomials

        

    對於上述各型別的多項式部分,其隨著非球面高度位置的變化情況如下:
Basic Parameter of Lens  
  •    MATERIAL: D-ZK3  
  •    REFRACTIVE INDEX: 1.583 ±0.002  
  •    DESIGN WAVELENGTH: 655 nm  
  •    CLEAR APERTURE: (S1) 3.38 mm  (S2) 4.80 mm  
  •    EFFECTIVE FOCAL LENGTH: 4.6 mm±1%  
  •    NUMERICAL APERTURE: 0.5  
  •    DIAMETER TOLERANCE: ±0.015 mm  
  •    CENTER THICKNESS TOLERANCE: ±0.020 mm  
  •    SURFACE QUALITY: 40-20 SCRATCH-DIG (INCLUDES ENTIRE BULK MATERIAL)  
  •    RMS WFE: ≤ DIFFRACTION LIMITED  
  •    COATING(S1&S2): BBAR Ravg<0.5% FROM 350-700 nm, 0 AOI  
Light Line Trace Simulation with MATLAB(基於MATLAB的光線追跡)
 1 clc;
 2 clear;
 3 
 4 % Here the Aspheric function parameter.
 5 R = 2.684150;
 6 k = -0.517612;
 7 A4 = -5.980307E-5;
 8 A6 = 1.527613E-5;
 9 A8 = 3.647708E-6; 
10 A10 = -1.381275E-7;
11 A12 = 4.485638E-8;
12 
13 Lens_Aspheric_hRange = 5.1; % This the Aspheric h Range.
14 
15 Slice = 100; % Data Slice number.
16 
17 y = linspace(0,Lens_Aspheric_hRange/2,Slice); % h direction linspace data slice.
18 z=y.^2./R./(1+sqrt(1-(1+k)*y.^2./R^2)) + A4*y.^4 + A6*y.^6 + A8*y.^8 + A10*y.^10 +A12*y.^12; % Caculate the z direction axis value.
19 plot(y,z)
20 axis equal
21 
22 syms Aspheric_Func(x)
23 Aspheric_Func(x) = x^2/R/(1+sqrt(1-(1+k)*x^2/R^2)) + A4*x^4 + A6*x^6 + A8*x^8 + A10*x^10 +A12*x^12; % Aspheric surface description function.
24 diff_Aspheric = diff(Aspheric_Func,x); % The Slope function of the Aspheric surface description function.
25 plot(y,Aspheric_Func(y))
26 hold on
27 
28 Lens_Square_thickness = 1.743; % Square Zone thickness value.
29 Lens_thickness = 3.135; % Totally Lens thickness value.
30 Lens_Aspheric_thickness = Lens_thickness - Lens_Square_thickness; % Aspheric zone thickness.
31 max(double(Aspheric_Func(y)));
32 
33 syms PLANO_Func(x)
34 PLANO_Func(x) = Lens_thickness; % First Seperate 
35 plot(y,PLANO_Func(y))
36 light_O = [0,4.41]; % 5.41 is the Focus position
37 plot(light_O(1),light_O(2),'*') % Plot the Laser Light Point O.
38 
39 light_line_S1_K = (light_O(2) - PLANO_Func(y))./(light_O(1) - y); % Draw the Laser Light line from Point to PLANO.
40 Line_YRange = linspace(light_O(2),Lens_thickness,Slice); % The YRange data slice.
41 Line_Step = 5; % Set the Light Line simulation number.
42 syms x
43 for i=1:Line_Step:Slice
44     Line_XRange = (Line_YRange - light_O(2)) / light_line_S1_K(i); % Calculate the XRange data.
45     % fprintf('%d\n',i)
46     plot(Line_XRange,Line_YRange) % Draw the Light line.
47 end
48 % axis equal
49 Light_iU = pi/2 - abs(double(atan(light_line_S1_K))); % Calculate the First input light theta angle.
50 n1 = 1.0; % The Refractive index of the Air.
51 n2 = 1.583; % The Refractive index of the Lens with the material D-ZK3.
52 theta_out = asin(sin(Light_iU)*n1./n2); % Caculate the First output
53 light_line_S2_K = -cot(theta_out); % Caculate the Slope of the Output Light Line.
54 
55 cross_Point = zeros(2,Slice); % Create the Aspheric and Line Cross-Point Buff array.
56 syms Light_S2_Func(x)
57 for i=1:Line_Step:Slice
58     x_s = (Lens_thickness - light_O(2)) / light_line_S1_K(i); % Calculate the Start Point of the Light on PLANO.
59     Light_S2_Func(x) = (light_line_S2_K(i)*(x-x_s) + Lens_thickness); % Define the Light Line Func.
60     for xt = x_s:0.01:(x_s-Lens_thickness/light_line_S2_K(i)+0.02)
61         % temp = abs(Aspheric_Func(xt) - Light_S2_Func(xt))
62         if abs(Aspheric_Func(xt) - Light_S2_Func(xt)) < 0.1 % Calculate the Cross-Point Value.
63             cross_Point(:,i) = [xt,Aspheric_Func(xt)];
64             x_r = linspace(x_s,xt,100);
65             plot(x_r,Light_S2_Func(x_r)) % Draw the Light-Line Graph.
66             break
67         end
68     end
69 end
70 
71 light_line_S3_K_Reg = zeros(1,Slice); % Alloc a Buffer for Storage the Slope of the Output Light Line.
72 
73 for i=1:Line_Step:Slice
74     slope = diff_Aspheric(cross_Point(1,i)); % Calculate the Slope of the Aspheric surface.
75     % normal_alpha = atan(slope)+pi/2; % 法線角度(Units:rad)
76     Light_iU_S2 = atan(slope) - theta_out(i); % Calculate the input angle on the Aspheric surface.
77     Light_oU_S2 = asin(sin(Light_iU_S2)*n2./n1); % Calculate the output angle of the Aspheric surface.
78     light_line_S3_K_Reg(1,i) = tan(pi/2 - abs(Light_oU_S2) + atan(slope)); % Generate the Output Light line function.
79     y_res = linspace(cross_Point(2,i),-10);
80     x_res = (y_res - cross_Point(2,i)) / light_line_S3_K_Reg(1,i) + cross_Point(1,i);
81     plot(x_res,y_res) % Draw the Output Light Line.
82 end
83 axis equal
84 % plot(y,diff_Aspheric(y))

模擬追跡的結果如下:

如果需要模擬不同位置點光源的發散匯聚的情況,只需要修改 `light_O = [0,4.41];` 部分即可調整Laser鐳射的出射位置,從而對光線進行追跡模擬,需要升入考慮的是光線在透鏡中時,與非球面部分的交點計算採用了數值點代入驗算的方式,效率較低,後期還需要對該方程的零解進行分析求解。
注:
1. 從上述模擬結果可以看出,當光線在非球面稜鏡的邊緣位置時,光線追跡的結果法線出射光線明顯與其他部分的光線有交疊,因此非球面稜鏡有一定的工作範圍,需要嚴格注意。
2. 一定需要注意的是,在推導非球面稜鏡的曲面方程時,需要注意不是圓錐曲線的方程推導,而是專屬的非球面曲線構成的。
3. 對於非對稱的非球面方程以及平移不變方程等特殊的方程型別,請參考《Description_of_aspheric_surfaces》

相關文章