900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Matlab - 抛物面牛顿光学系统反射式望远镜尺寸设计

Matlab - 抛物面牛顿光学系统反射式望远镜尺寸设计

时间:2024-04-05 10:33:40

相关推荐

Matlab - 抛物面牛顿光学系统反射式望远镜尺寸设计

本文提供了一个抛物面牛顿光学系统反射式望远镜尺寸设计的Matlab小程序,读者可以通过测量或者设计下述指定位置的尺寸,即可运行该程序,准确计算得到调焦座安装的位置,以及副镜安装的偏距等信息。(由于圆锥曲线的性质,利用一个平面即副镜去切割主镜的几何光锥后,得到的平面也是一个椭圆,但是其中心不在主镜轴线上,会偏移一些,因此副镜为了不漏光,也应当偏心安装,该程序即可计算这个偏移的最佳距离,如下图所示)

这里要强调的是,本程序基于下述这种特殊结构(自制)的反射式望远镜,但笔者认为,大部分反射式望远镜均是按照此种结构设计制造的。为了便于下文的说明,这里规定:镜筒的顶部为靠经副镜的一侧的镜筒端面;镜筒底部为靠近主镜的一侧的镜筒端面。

由于图像过大,以下将图中所需的参数放于表格中:

所有尺寸都会最后影响望远镜的外形以及遮挡率。得到这些参数后,应当按照以下的格式将上述数据填写入Excel表格中。注意这个表格应当与下表严格一致!

而后将该表保存在某个位置,将其路径复制下来,放入下列的Matlab代码中:

clcclear%!!!!!!!!!!!!这里放置文件路径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_);elsestr_ = ['副镜(短轴长度' num2str(d2) ' mm)' '通光面利用率:' num2str(100) ' %;损失:' num2str(0.5 * (long_index + short_index) * 100 - 100) ' %'];disp(str_);endif(mid_N_y < 0)str_ = ['副镜安装理论偏心距:' num2str(abs(mid_N_y)) ' mm'];disp(str_);elsestr_ = ['副镜安装偏距:' num2str(abs(mid_N_y)) ' mm'];disp(str_);endstr_ = ['主镜面(有效抛物反射面直径:' 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_);

点击运行即可:

由该程序计算得到的参数可以减少副镜的损失。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。