本文提供了一个抛物面牛顿光学系统反射式望远镜尺寸设计的Matlab小程序,读者可以通过测量或者设计下述指定位置的尺寸,即可运行该程序,准确计算得到调焦座安装的位置,以及副镜安装的偏距等信息。(由于圆锥曲线的性质,利用一个平面即副镜去切割主镜的几何光锥后,得到的平面也是一个椭圆,但是其中心不在主镜轴线上,会偏移一些,因此副镜为了不漏光,也应当偏心安装,该程序即可计算这个偏移的最佳距离,如下图所示)
这里要强调的是,本程序基于下述这种特殊结构(自制)的反射式望远镜,但笔者认为,大部分反射式望远镜均是按照此种结构设计制造的。为了便于下文的说明,这里规定:镜筒的顶部为靠经副镜的一侧的镜筒端面;镜筒底部为靠近主镜的一侧的镜筒端面。
由于图像过大,以下将图中所需的参数放于表格中:
参数名称(符号) | 测量方法 |
主镜弹簧长度(L1) | 与主镜直接接触的主镜架靠近镜筒底部一侧底面与没有和主镜直接接触的主镜座靠近镜筒顶部一侧的面直接的距离 |
副镜弹簧长度(L2) | 与副镜直接接触的45°倾角形状的副镜架靠近镜筒顶部一侧平面与没有和副镜直接接触的副镜座靠近镜筒底部一侧的平面之间的距离 |
镜筒长度(L3) | 镜筒顶部和底部的距离 |
主镜直径(d1) | 主镜有效光学口径(例如小黑:d1 = 150mm) |
副镜直径(d2) | 副镜椭圆短轴的长度 |
镜筒直径(d0) | 镜筒的外径 |
主镜焦距(f) | 抛物面主镜的焦距 |
主镜面边缘到主镜架底部距离(A) | 主镜面抛物面一侧距离镜筒顶部的最近点与直接与主镜接触的主镜架靠近镜筒底部一侧平面的垂直距离 |
主镜座高度(B) | 没有与主镜直接接触的主镜座靠近镜筒顶部一侧平面与靠近镜筒底部一侧平面之间的垂直距离 |
主镜座底部与镜筒底部间隙(E) | 没有与主镜直接接触的主镜座靠近镜筒底部一侧平面与镜筒底部的垂直距离 |
副镜厚度(k) | 副镜片的厚度 |
副镜座顶部与镜筒顶部间隙(F) | 没有与副镜直接接触的副镜座靠近镜筒顶部一侧平面与镜筒顶部的垂直距离 |
副镜座高度(D) | 没有与副镜直接接触的副镜座的高度 |
副镜架椭圆平面与副镜架顶部距离(C) | 与副镜直接接触的副镜架椭圆平面中心点距离副镜架底部平面间的垂直距离 |
所有尺寸都会最后影响望远镜的外形以及遮挡率。得到这些参数后,应当按照以下的格式将上述数据填写入Excel表格中。注意这个表格应当与下表严格一致!
而后将该表保存在某个位置,将其路径复制下来,放入下列的Matlab代码中:
clc
clear
%!!!!!!!!!!!!这里放置文件路径
file_name = 'E:\Shixuan Liu\资料文本类文件\150mm反射式望远镜设计\尺寸设计MATLAB\参数表.xlsx';
[num,~,~] = xlsread(file_name);
%------------------------------------------------------------------
%输入数据部分
%变量--------------------------------------------
L1 = num(1,1);%主镜弹簧长度
L2 = num(2,1);%副镜弹簧长度
L3 = num(3,1);%镜筒长度
%常量--------------------------------------------
%主镜光学参数
d1 = num(4,1);%主镜直径
d2 = num(5,1);%副镜直径
d0 = num(6,1);%镜筒直径
f = num(7,1);%主镜焦距
%主镜参数
A = num(8,1) - d1^2/(16*f);%主镜面中心点到主镜架底部的距离
B = num(9,1);%主镜座高度
F = num(10,1);%主镜座底部与镜筒底部的间隙
%副镜结构参数
k = num(11,1);%副镜厚度
E = num(12,1);%副镜座顶部与镜筒顶部的间隙
D = num(13,1);%副镜座高度
C = num(14,1) + sqrt(2) * k;%副镜平面与光轴焦点和副镜架之间的距离
%------------------------------------------------------------------
%计算部分
%关键点
P1 = [-f ; 0];
P2 = [-d1^2/(16*f) ; 0.5*d1];
P3 = [-d1^2/(16*f) ; -0.5*d1];
P4 = [-(L3 - A - L1 - B - F - E - D - L2 - C) ; 0];
M = f - (L3 - A - L1 - B - F - E - D - L2 - C);%焦点折断线伸出长度
k_P1_P2 = (P2(2,1) - P1(2,1))/(P2(1,1) - P1(1,1));
k_P1_P3 = -k_P1_P2;
N1 = [-k_P1_P2 1;1 1] \ [-k_P1_P2 * P1(1,1);P4(1,1)];
N2 = [-k_P1_P3 1;1 1] \ [-k_P1_P3 * P1(1,1);P4(1,1)];
d_d2_ = abs(N1(2,1) - N2(2,1));%光锥副镜截面短轴长度,需要小于副镜长轴
d_d2_long = sqrt(2) * d_d2_;%光锥副镜截面长轴长度
L_t = -P4(1,1) + A + L1 + B + F;%镜筒底部到调焦座轴线的距离
mid_N = 0.5 * (N2(1,1) + N1(1,1));
mid_N_y = 0.5 * (N2(2,1) + N1(2,1)) * sqrt(2);
d_d2_short = 2 * k_P1_P2 * (mid_N - P1(1,1));
long_index = d_d2_long / (d2 * sqrt(2));
short_index = d_d2_short / d2;
disp('参数计算完毕!');
if(0.5 * (long_index + short_index) * 100< 100)
str_ = ['副镜(椭圆短轴长度:' num2str(d2) ' mm)' '通光面利用率:' num2str(0.5 * (long_index + short_index) * 100) ' %'];
disp(str_);
else
str_ = ['副镜(短轴长度' num2str(d2) ' mm)' '通光面利用率:' num2str(100) ' %;损失:' num2str(0.5 * (long_index + short_index) * 100 - 100) ' %'];
disp(str_);
end
if(mid_N_y < 0)
str_ = ['副镜安装理论偏心距:' num2str(abs(mid_N_y)) ' mm'];
disp(str_);
else
str_ = ['副镜安装偏距:' num2str(abs(mid_N_y)) ' mm'];
disp(str_);
end
str_ = ['主镜面(有效抛物反射面直径:' num2str(d1) ' mm)' '理论有效通光面积:' num2str(pi*d1^2/4 - pi*d2^2/4) ' mm^2'];
disp(str_);
str_ = ['主镜面通光面积损失:' num2str(100*(pi*d2^2/4)/(pi*d1^2/4)) ' %'];
disp(str_);
str_ = ['调焦座轴线与镜筒底部距离:' num2str(L_t) ' mm'];
disp(str_);
str_ = ['焦点远离镜筒外边缘长度:' num2str(M - 0.5*d0) ' mm'];
disp(str_);
点击运行即可:
由该程序计算得到的参数可以减少副镜的损失。