先介绍一下这个经纬仪电跟的功能吧: 它内建数据库,包含有全部梅西耶天体,部分容易观测的NGC,IC目标,一些重点恒星一共443条数据,通过编码器旋钮可以很方便的选择目标进行跟踪,也可以输入自定义目标,观测位置通过GPS自动获得,时间还是需要手动输入的,不过输入一次即可,它通过计算目标在前后两个时间点的位置差,来驱动步进电机,带着经纬仪两轴实现跟踪功能。 由于系统随时都在计算位置差,在切换目标的时候也是如此,所以这套系统其实自带了goto,只不过没有变速的话,这样goto起来非常耗时,所以我让它默认忽略掉了切换目标之后产生的位置差,等于把一个goto阉割成了电跟哈哈哈。。。 然后再来看看外观,在这个光秃秃的面板上,左下角是信息显示屏,它上面那个圆球是自定义目标切换开关,右边那个旋钮是个编码器,可以转动也可以按下,作为一个开关使用。右侧有两个RJ11接口,链接高度角和方位角步进电机。盒子上方那面有个GPS天线和电源接口,左边那面有一个电源开关。 在第一次开机之后,会搜寻卫星信号,可能要等几分钟,当GPS正常工作后,首先要长按编码器按钮,输入当前的年月日时间,这个只需要输入一次,系统默认是对M1进行跟踪,不需要任何操作跟踪就已经开始了,除非你双击编码器按钮,此时跟踪暂停,进入目标选择界面,这个时候你需要对照一个表格,输入你想要跟踪目标前面的序号,然后它就开始跟踪了,或者按一下屏幕上边的按钮,进入自定义目标输入界面,输入天球坐标,它就能跟踪任意你输入的目标了,这就保证了系统的自由度,不只局限于内存中的那几百个目标。所有的输入,在切换到最后一位之后即代表确认,单击编码器按钮可以切换输入的项目。 显示界面方面,系统第一行显示当前日期和时间,第二行显示当前位置的经纬度,环境温度,第三行显示目标的高度角,方位角,方框里面,最左边是目标名称,中间是差值跟踪的次数,右边分别是高度角方位角电机每次差值后折合运行的步数。
其实这套系统在5月我就已经做好了,进行了十多次精度测试,3次外出观测测试,配合之前做好的DSC,效果非常好,只是同步带和齿轮配合不太牢固,会有些误差。
白天用M101做测试,跟踪29分钟,经纬仪两轴误差分别为10'58.8"和7'12",没有出uw6在125倍下的视野。其实对于经纬仪低倍率目视来说,这样的误差还可以接受,只要目标不跑出视场就OK啦。 最初没有外壳的时候,这些电子设备的光污染还是对观测有很大影响的,后来装进了3D打印的外壳,就好了很多。虽然依旧很丑吧,而且现在我的经纬仪被各种零件包裹,搬运的时候也要比之前小心得多。。。 实际使用起来,是这样的: 1.摆好三脚架的腿,调整好高度 2.用水平泡调整脚架水平度 3.安装经纬仪上半部分 4.安装望远镜 5.装上激光目镜调整双筒两边光轴 6.换上目镜随便找个天区对焦,调合圆(合像) 7.连接两根电源和两根电机线 8.打开DSC,手机开启skysafari并连接,进行一星校准 9.打开电跟系统,搜星直到开始跟踪默认目标M1 10.在电跟系统里输入要观测的目标,开始跟踪 11.在skysafari里找到这个目标,并把望远镜指向它,锁紧经纬仪两轴
至此就可以正式开始观测了,变换目标之前也是先在电跟里切换目标,松开经纬仪两轴,然后再在手机里找到目标,把望远镜推过去,锁紧。。。
从到达观测地,到正式开始观测,一般需要15分钟来做前面这些准备工作,调脚架水平是最慢的,因为我那木头架子不是很好调节,要反复的试
上上次观测,多亏了这套电跟,我在10分钟里,三次看到飞机穿越木星星系,看到飞机发动机热气流把木星和它的卫星扭曲的样子,特别壮观,而观测木星的几次间隙里,我还可以用小双筒巡天,而不用担心在牛双目镜里丢失木星。之后的观测,我要重拾画笔,继续练习天体手绘,电跟的作用就能发挥出来了,它可以解放我的双手,让我专心于绘画。
上次带老婆去看满月。。。月光把地面照得很亮,uw6自身的光衰减加上中灰滤镜,让观测满月舒服了很多,而且相当壮观
==================================================================================
本项目源自我关于电子寻星的设想——push to 最初我想做成类似于手机星图软件里,有个箭头引导去寻星的效果,但要求不依赖手机,想想有些复杂,后来就简化成了用电子陀螺仪显示望远镜的俯仰角,方向角,就如下图所示:
这样,我只要知道目标的方位角,高度角,推动望远镜到目标角度即可,这个数据在很多软件里是很容易查到的。 但我做出成品之后,试用了几次,效果都不好,误差有时高达2度,而且校准起来也不容易,要先保证水平,再拿着外壳转几圈。。。我觉得这种精度,用在无人机上,还能接受,但对寻星来说,就是自找麻烦。
后来我们的牛双大佬,老张@zhangshihan 提出DSC (digital setting circles )方案,就是用编码器作为传感器,直连经纬仪或者赤道仪的两个轴,通过无线连接到手机软件(skysafari ),在软件里可以把经纬仪或者赤道仪旋转的角度转换成准星的移动,因此,如果校准得当,准星在软件里指向的目标,就是目镜中心看到的目标。编码器把一个360 度的圆周分成了8000 多等分格,这样编码器每移动一格,就相当于转动了360 (度)*60 (分)*60 (秒)÷8000=16.2 角秒,这也是编码器的精度,我最高倍数的目镜是uw6 ,视场66 度,对于小黑主镜,放大倍率是125 倍,那么搭配起来后的实际视场就是66 ÷125=0.528 度,相当于1928 角秒,远高于编码器分辨率,所以在这种情况下,用DSC 方案,理论上是没有问题的。 好在我全都在arduino上编程,各种传感器,模块,都有案例可以学习,编码器的上手也很快,三下两下就搞定了,如下图:
其实DSC电路很简单,一个arduino一个蓝牙模块,两个编码器,一个开关。反而是安装方式需要费点心思,对于我这种经纬仪,不好把编码器装到里面去,就只能装在外面,用皮带带动经纬仪主体和编码器转盘,要计算一下这两个圆的直径比例,如果是DOB就简单多了。
经过几次观测的检验,证明这DSC还是非常好用滴!只要经纬仪足够水平,进行1星校准就成了,校准超级方便,但是怎么看经纬仪是不是水平呢?我买了个神器如下图:
这个水泡精度相当高,DSC在没有水平校准之前,距离校准星方位角90度以上的目标就会有误差,水平校准之后,可以保证距离校准星方位角180度内的目标可以准确的被找到,其实在观测中,我经常用较亮的星进行校准,可以保证目镜中心的目标与星图中的目标始终保持精准对应。 本来我以为做到这样就可以了,没想到老张说,如果能加上电跟,那就更好了,所以我就又开始琢磨,这经纬仪的电跟要怎么做呀,肯定不像赤道仪那么简单吧,会有场旋,这就够让人头疼的,其实我买个手柄,可能也能解决这个问题,但谁让咱喜欢折腾呢,我开始构思软件功能,如果skysafari可以通过协议把所选择目标的高度角,方位角传输出来,就很简单了,也许goto模式能做到,但在pushto模式下,貌似没法实现这样的功能,于是我决定电跟系统与手机软件分离开来,在手机里选择目标之后,再去电跟系统里输入要跟踪的目标,于是就有了下面这个流程图:
这还是最初的设想,后来有了一些改动,就没有更新流程图了,但大体是这个意思,因为我也不知道厂制的经纬仪电跟用的是什么原理,于是我先假设了这种计算两个时间点前后位置差的方式来实现跟踪,一开始我也不知道效果会怎么样。 同时,我还预想了这个系统里应该包含的硬件,如下图:
对于买零件我是很兴奋的,设想好之后就把东西给买了,其实后来我根本就没用到TF卡模块,系统内建的数据库非常的精炼,arduino我用的是国产的DUE,ram和rom都很奢侈,于是就省去了TF卡。 到此为止,我只是觉得可能高度角那个轴做差值跟踪,方位角用普通电跟就可以了,这是长期关注南天所产生的错觉,后来在验证天球坐标转换地平坐标的公式时,我才意识到,目标在不同天区,其高度角和方位角,都有着不一样的变化趋势。 后来,我断断续续用了一个月的时间,寻找坐标转换公式,数据库里只会给出天球坐标,我需要把它转换成地平坐标,我搜了百度文库,有一篇pdf解释了这类公式的各种细节(https://wenku.baidu.com/view/fb26c2b4a1116c175f0e7cd184254b35effd1a64.html),但作者写得不够详细,有各种坑等着我去跳,其实不光是我,估计你们看到那堆公式也会头疼,变量还那么多,公式里面套公式是最烦的了,所以我很没耐心,拿来就去验证,结果却相差甚远,于是我给了他个差评,就去搜国外的网站:
http://www.stargazing.net/kepler/altaz.html#twig09 https://ww2.mathworks.cn/matlabcentral/fileexchange/27071-conversion-from-right-ascension-declination-to-altitude-azimuth-in-matlab 进去后点击“functions”
这两个网站上给出的计算公式,跟百度里的粗看下来有很大差别,我琢磨了好几天之后才能心平气和的看明白它们分别都是干嘛用的,国外网站公式中的参数单位与百度那个不一样,而且有些系数没有计算过程,直接给的结果,但是计算出来的结果还需要进一步的判断,而百度这篇文章里对结果的判断写得不是很明白。后面我会把傻瓜式的公式摆出来,避开各种大坑的那种哈哈。
搞明白了坐标转换,我就开始着手准备软件方面的素材了,把硬件全部罗列出来有一个好处,就是你可以逐一攻破,即使整个系统看起来很复杂,但把它拆解成一个个独立模块后,还是很简单的。我根据这些周边硬件,设计了一系列的实验,如下图:
一开始我没设计这么多,比如实验2里,限定编码器滚动数字的范围,实验3,两个I2C模块共同运行的问题,实验9,实验10,都是在实践过程中出现了问题,或者有了新想法之后扩展出来的。完成一个实验,就把项目文件的名字写在后面,从1到10到最终完成,我又用了1个月的时间。
编程方面,尤其是对字符串的编辑,我反复学习了老外的项目经验,很受启发,如下图:
我的极简练的星表数据库也来自于这个项目,这位大牛人自制触屏无线goto,代码很复杂,我估计是没那个耐心做他这玩意儿。。。虽然他完全开源了
给你们看看我学习时做的笔记:
我只挑对这个项目有用的部分学习,其它模块的案例也是这样,所以虽然我做了看似很复杂的一套系统,其实我并不完全掌握arduino编程,好在arduino很容易上手,它费半天劲把复杂的代码黑盒化,看似绕了一个大圈,却能让更多像我这样,懂一点编程,又不愿意从头到尾学一遍的人,开心的玩上arduino,这就是它最牛的地方。
============================================================================
下面是天球坐标转换地平坐标的公式,我只对变量进行说明,整个公式或者专业名词的含义,还请查阅资料,推荐看看《球面天文学》这是我接下来要攻读的一本书。
公式1: t=100/15+n*24/365.2422+T-(sj-j)/15-RA t=天体的时角,单位为小时 n=当天在全年中的日序 闰年2月29天,平年2月28天 T=观测时间 例如21.5h,就是21点30分 sj=观测地时区经度,北京是+120度 j=观测地经度,我的是116.397度 RA=目标的赤经(J2000),例如天狼星就是6.75225h(单位小时) **除15的项都是要把角度单位转换成小时单位,因为t的单位是小时 **t既然单位是小时,就要小于24,所以计算出来的t如果大于等于24,就要进行这样的计算t=t-24,一直减到t<24为止。
公式2: ALT=asin(sin(LAT)*sin(DEC)+cos(LAT)*cos(DEC)*cos(t*15)) ALT=目标高度角 LAT=观测地的维度,计算的时候要把分秒都换算成度数 DEC=目标赤纬 **单位都为度 **但是计算机的三角函数计算,用的都是弧度,所以在程序里,比如要计算正弦,你得这样写:sin(LAT*PI/180),把角度转换成弧度,当然你要事先定义一下PI是什么,在excel里就不用单独定义PI了。 **最后别忘了反正弦的计算要*180/PI,把弧度转换回角度。
公式3: AZ=acos((sin(DEC) -sin(ALT)*sin(LAT))/cos(ALT)*cos(LAT)) AZ=目标方位角 **如果sin(t*15)是负数,AZ就是目标的方位角,如果是正数,目标的方位角为:AZ=360-AZ **上面这些公式可以顺利的应用在北半球,东经区域内,南半球,西经,需要更改一些变量的符号。
|