“Microduino 自动导星经纬仪/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==概述== *项目名称:Microduino自动导星经纬仪 *目的:本教程将教大家如何使用Microduino通过连接stellarium软件获...") |
(→自制牛顿反射式天文望远镜) |
||
(未显示同一用户的2个中间版本) | |||
第298行: | 第298行: | ||
找到后,选择一个天体,按住组合键Ctrl+1,此时OLED上会显示此颗天体的赤道坐标和对应的地平线坐标。 | 找到后,选择一个天体,按住组合键Ctrl+1,此时OLED上会显示此颗天体的赤道坐标和对应的地平线坐标。 | ||
− | [[File:OLEDShowAltAz0. | + | [[File:OLEDShowAltAz0.jpg|600px|center|thumb]] |
− | [[File:OLEDShowAltAz1. | + | [[File:OLEDShowAltAz1.jpg|600px|center|thumb]] |
步骤三:按照原理图连接两个步进电机,控制方位的步进电机初始位置指向北,可以用一个指北针来参照。 | 步骤三:按照原理图连接两个步进电机,控制方位的步进电机初始位置指向北,可以用一个指北针来参照。 | ||
第360行: | 第360行: | ||
全部材料摆在一起: | 全部材料摆在一起: | ||
− | [[File:TelscopeDIY1. | + | [[File:TelscopeDIY1.jpg|600px|center|thumb]] |
首先把主镜固定在110口径PVC伸缩节排水管中,注意不要给主镜施加太大的压力 | 首先把主镜固定在110口径PVC伸缩节排水管中,注意不要给主镜施加太大的压力 | ||
− | [[File:TelscopeDIY2. | + | [[File:TelscopeDIY2.jpg|400px|center|thumb]] |
天文望远镜主镜对精密度要求很高,哪怕重力对主镜变形都会有影响 | 天文望远镜主镜对精密度要求很高,哪怕重力对主镜变形都会有影响 | ||
− | [[File:TelscopeDIY3. | + | [[File:TelscopeDIY3.jpg|400px|center|thumb]] |
主镜和副镜 | 主镜和副镜 | ||
− | [[File:TelscopeDIY3_1. | + | [[File:TelscopeDIY3_1.jpg|400px|center|thumb]] |
把110口径PVC排水管锯成合适长度的管子,使得主镜和副镜之间的距离在500mm。 | 把110口径PVC排水管锯成合适长度的管子,使得主镜和副镜之间的距离在500mm。 | ||
− | [[File:TelscopeDIY4. | + | [[File:TelscopeDIY4.jpg|600px|center|thumb]] |
安装上排水管异径三通,锯下来的排水管和目镜从镜筒里往里看是这个样子的 | 安装上排水管异径三通,锯下来的排水管和目镜从镜筒里往里看是这个样子的 | ||
− | [[File:TelscopeDIY5. | + | [[File:TelscopeDIY5.jpg|600px|center|thumb]] |
安装副镜和支架: | 安装副镜和支架: | ||
− | [[File:TelscopeDIY6. | + | [[File:TelscopeDIY6.jpg|600px|center|thumb]] |
调焦: | 调焦: |
2019年3月18日 (一) 10:20的最新版本
目录概述
材料清单
由于使用的Core+作为核心板,所以Microduino-GPS模块需要改跳线,具体修改方法见:
stellarium软件使用简介: Stellarium 是一款免费开源的GPL(自由软件基金会GNU通用公共许可证)软件,它使用openGL技术对星空进行实时渲染。软件可以真实地表现通过肉眼、双筒望远镜和小型天文望远镜所看到的天空。Stellarium还被应用于天象馆中。不同编译版本的 Stellarium 可以在不同的操作系统下运行,目前支持的操作系统包括:Linux/Unix、Windows 和 MacOS X。 总的来说Stellarium可以模拟天上的星星的运行轨迹,星表中 99% 的恒星数据来源于 NOMAD (美国海军天文台整理的天体测量数据集第一版)星表,而常见的较亮恒星的资料则来源于 Tycho2 和 Hipparcos(它也是0.8版中的主要数据来源)星表,它们包含有120000颗恒星,通过扩展星表甚至可以将显示星数提升到了2.1亿。可以用作学习夜空知识的教具,还可以作为天文爱好者星空观测的辅助工具,或者仅仅是满足一下好奇心。由于其高质量的画质,一些天象馆将 Stellarium 用在了实际的天象放映中。有些天文爱好者还使用 Stellarium 绘制他们文章中用到的星图。 打开Stellarium,会显示默认地址的星空,如果如果默认地址当地时间是白天,是看不到什么星星的,你可以选择去掉大气层。 选择星座连线或者星座标示,会看到星座连线和名称 如果你想看当前所在地平线一下的星空可以选择去掉地面 也可以选择夜视选项看看效果 天文常识概念经纬度: 在地球上如果我们要确定一个位置,我们需要知道经纬度,这个GPS可以告诉我们一个大致的经纬度,然后如果我们要在宇宙中定位,我们就需要知道天球坐标系。 天球坐标系有五种:
这些坐标系的详细说明网上可以找到,这里就不多说了,这有个参考地址: 实现步骤说明:许多初级天文爱好者更偏向于使用经纬仪,而且Microduino控制两个步进电机,机械结构是一个垂直夹角相对赤道仪要容易一些。 所以,我们用Microduino控制步进电机实现的是一个经纬仪。 具体操作是一个天文爱好者用Stellarium观看星空,他发现一个恒星,比如天空中最亮的那颗 天狼星,用鼠标点了一下天狼星,此时屏幕左上角会出现天狼星的信息,如下图: 此时你按下Ctrl+1组合键,Stellarium会把天狼星的赤经(RA),赤纬(DEC)通过LX200协议发送给Microduino。 Microduino接收到RA,DEC数据后需要转换成地平线坐标系的方位(Alt),高度(Az),从而控制步进电机。(目前,Stellarium只能发送RA,DEC到Microduino,虽然屏幕左上角已经精确的显示了方位,高度值了:-)) 从赤道坐标系(RA, DEC)转换为地平线坐标系(Alt, Az)是一项比较复杂的算法,下面会一步步的解释此算法,如果你有赤道仪就不用进行转换了,但是现在我们实现的是经纬仪,所以请看下面: 首先转换算法我是参照:[Converting RA and DEC to ALT and AZ] 来实现的 此算法不仅仅用来转换坐标系,还可以体验星空的过去和未来,因为天体的赤道坐标系是相对固定的,你如果知道了一个天体的赤道坐标系通过此算法可以知道什么时间,什么位置你头上的哪个方向是什么星星。 比如:天体M13的RA 和 DEC 是: RA = 16 h 41.7 min DEC = 36 d 28 min 你就可以知道比如1998年8月10日23点10分6秒,和2020年4月18日9点20分54秒,天体M13在你头上的什么位置,是不是很有意思! 具体算法是这样的: void convert_RA_DEC_to_AZ_Alt() { getCurrentGPS(); getRADECDegree(); getDaysBeforeJ2000(); getLST(); getHA(); caculateAltAz(); } 代码里可以体现基本步骤:
北纬为正数,南纬为负数,东经为正数,西经为负数,北京的经纬度大概是东经116. 3”北纬39.9”,所以都是正的。
void getRADECDegree() { //get RA Degrees which is hours *15, one hour=15 degrees RADegree=(atof(RAHH)+(atof(RAMM)/60)+(atof(RASS)/3600))*15; //getDEC Degree DECDegree=atof(DECDeg)+(atof(DECMM)/60)+(atof(DECSS)/3600); if(DECSign[0]=='-') { DECDegree=0-DECDegree; } }
J2000.0纪元在天文学上使用。前缀"J"代表这是一个儒略纪元法 首先计算此时的格林威治时间,并判断今年是否是闰年,然后通过下表来计算另外两个参数: 表A:计算当下月份的第一天与儒略纪元的天数差值
表B:计算当下年的第一天与儒略纪元的天数差值
d=UTHoursPercentage+tableADays+day+tableBDays; 最后得出需要的值,代码中用变量d表示。
LST(Local Siderial Time) 公式:LST = 100.46 + (0.985647 * d) + Longitude + (15*UT);//UT是格林威治时间
HA = LST - RADegree; //时角=当地恒星时-赤经度数
最复杂的一部分需要用到咱们高中学的三角函数:
Alt=rad2deg(asin(sin(deg2rad(DECDegree))*sin(deg2rad(Latitude))+cos(deg2rad(DECDegree))*cos(deg2rad(Latitude))*cos(deg2rad(HA)))); Az=rad2deg(acos((sin(deg2rad(DECDegree)) - (sin(deg2rad(Alt))*sin(deg2rad(Latitude))))/(cos(deg2rad(Alt)) * cos(deg2rad(Latitude))))); 最后: //if sin(HA) is positive, the angle AZ is 360 - AZ if (rad2deg(sin(deg2rad(HA))) > 0) { Az= 360 - Az; } 如果sin(HA)是正数,AZ=360-Az 最终算出了方位和高度值。 原理图
程序调试步骤一:如何与Microduino建立通讯连接 首先Stellarium可以连接上你买的赤道仪,赤道仪通过Stellarium传过来的天体赤道坐标系坐标来沿着赤经和赤纬旋转指向你想要观测的天体,Stellarium和赤道仪可以通过像[LX2000]这样的通讯协议来通讯。 赤道仪一般都很贵的,如下图的样子: Microduino也是可以通过LX200协议与Stellarium通讯的,以下是Stellarium与Microduino连接的配置步骤: 首先,鼠标移到左侧会显示功能选项: 先改一下你的所在地,右上角你可以选择任何国家的城市,左下角会显示经纬度信息,如果你想选的更加精确可以直接改经纬度,右下角给经纬度取个名字就成了。 接下来连接你的Microduino,选择设定会出现下图对话框,选择望远镜控制->插件->勾选 启动时加载。重启Stellarium后进入同样的对话框就可以点击 配置 选项了。 在接下来的对话框中选择添加,进入配置望远镜对话框,按照下图所示勾选: 确定后会出现类似下图所示,此时用USB连接上你的Microduino,重启Stellarium Microduino通过USB数据线连接电脑,如果显示已连接,说明连接成功:
如果你此时此刻是白天干这件事,可能会看不到microduino指向天狼星,是应为在中国白天,天狼星是在地球背面,你可以设置去掉地面和大气层,鼠标拖拽在整个天球宇宙中找找,应该能找到。 找到后,选择一个天体,按住组合键Ctrl+1,此时OLED上会显示此颗天体的赤道坐标和对应的地平线坐标。 步骤三:按照原理图连接两个步进电机,控制方位的步进电机初始位置指向北,可以用一个指北针来参照。 再找一颗地平线上的星星,按住Ctrl+1看看是否经纬仪指向了你要找的那颗星星。 可以从OLED中看到Alt,Az的值跟Stellarium的左上角显示的值基本一致(Stellarium其实已经有了转换功能,但是只能传送赤道坐标,很气人) 自制牛顿反射式天文望远镜望远镜原理和分类:
本例实现第二种,牛顿反射式天文望远镜:
首先确定你要做的望远镜的口径和反射焦距,此例中是114mm口径,反射焦距是500mm的牛反式天文望远镜。 如果你要定制更大口径的望远镜,有一款mynewton的软件可以帮你计算所需物料的尺寸。
全部材料摆在一起: 首先把主镜固定在110口径PVC伸缩节排水管中,注意不要给主镜施加太大的压力 天文望远镜主镜对精密度要求很高,哪怕重力对主镜变形都会有影响 主镜和副镜 把110口径PVC排水管锯成合适长度的管子,使得主镜和副镜之间的距离在500mm。 安装上排水管异径三通,锯下来的排水管和目镜从镜筒里往里看是这个样子的 安装副镜和支架: 调焦: 关于如何星点校准光轴:这里有个网上参考资料[星点校准光轴] 调好焦距后,用胶水把PVC的各个部分固定牢靠。 为了避免镜筒壁内反光可以贴上植绒皮。 整体看起来像这样: 最后,本例唯一没有做的就是自动导星仪的骨架轮廓使其足够牢固可以支撑住牛反望远镜,那就留给大家发挥吧。 结果Microduino可以通过Stellarium传来的星星赤道经纬坐标来控制步进电机实现自动导星功能。 注意问题控制方位的步进电机原点指向北 经纬仪的机械结构要牢固 主镜和脆弱,尽量不要给主镜受力 视频 |