坐进观天 发表于 2020-4-2 11:31

我DIY了一个EQ SDK(赤道仪开发小工具)——记一次GOTO DIY历程

本帖最后由 坐进观天 于 2020-4-4 14:59 编辑

我对天文的这点爱好完全源自小学的“自然”课本,以至数十年还留着这本书。上面的“星空”让我挺着迷。上中学时第一次网购是买了台迷你的所谓“天文”望远镜,那时好像还没淘宝,是在“易贝”买的!收到货时那个激动啊!记得买了后就阴雨霏霏,连月不开。后来才知道这是所谓的开光定律。不过还好能看到到月球上的坑洼状,当时已觉得很神奇了。
上大学那会儿,当时3721网搞了个软件大赛,那时我正学习编程,饶有兴趣地将小学课本上的这个星图软件编了出来,可以让小朋友用来观星找星座,奖自然没得到,但后来用这个软件参加面试竟然得到了一个码农的工作。


前几年重拾兴趣买了套小黑,人肉跟踪真的太累,就寻思弄个自动寻星和自动跟踪的玩意儿了。于是,到处找资料积累经验。正好当时为一个客户开发一个运动控制器及其Windows下的SDK(Software Development Kit),于是乎冒出一个想法,干脆顺便开发一个EQ SDK套件,此套件以一个运动控制器(取名 SPARROW)为硬件平台,提供一套拓展的天文控制API(取名SkyAPI),并在此API上编写一个可以直接用于GOTO、导星等操作的控制程序(取名XIE),这样不仅我自己的要求满足了,还留来许多的应用余地可方便地使用和拓展。
    其实,基本功能两年前就完成了,经过实测,挺成功!好几晚在楼顶哈哈哈笑。    后来给控制器做了贴膜,搞了个外壳,再后来就搁置了很长的时间,一直没整理。前段时间宅宅宅宅在家里,资料整理出来,现请容将此EQ SDK介绍一下。一、控制器
此为3+1轴运动控制器,大小正好一手掌控,适合手持控制。基本特点如下:    1、3轴可用于控制赤纬、时角、调焦轴运行,另有一拓展轴可供用户拓展到其他DIY功能(如:控制天文顶棚,甚至可配置成PWM方式控制制冷…)。    2、可选择闭环、开环方式控制电机。(可选)    3、各轴可外接编码器进行位置反馈。(可选)    4、可配置成脉冲+方向方式用于控制步进电机、伺服电机,也可配置成PWM方式控制直流电机。且各轴电机类型单独可调。    5、闭环控制的PID参数灵活可调。    6、提供4个通用Input接口和4个Output接口供用户拓展使用,可用于获取一些外部开关的信号以及控制一些点动的外部设备。    7、可联机和脱机运行。    8、可选择RS232和无线蓝牙两种联机方式。    9、提供接口函数(API)方便用户进行二次开发。                           在此运动控制器的基础上,我拓展了它的API,这个拓展的API(SkyAPI)不仅能执行普通的运动控制功能,还附带天文运算,因此能应用到天文望远镜的控制上。而当你不用它来控制你的赤道仪时,完全可以用在其他的DIY场合,想像空间和可玩指数就提高了。    10、电机驱动器。    可配一个4轴的微电机驱动器来驱动EQ电机以及调焦电机,此驱动器接口与控制器接口完全兼容。驱动器有直流型和步进型两个版本。二、控制软件    在SkyAPI的基础上,开发了一套运行于Windows 环境下的控制软件(XIE)。XIE通过RS232或者蓝牙与控制器进行连接。有了此应用程序,就可以直接通过它控制和调试你的赤道仪。    此控制软件包含LX200协议,可与星图软件(Stellarium)、导星软件(GuiderMaster)对接,从而执行GOTO和导星操作,GOTO和导星速度可灵活设置。    可进行1~3星校准,提高GOTO精度。    各种配置参数(如减速比、PID参数)灵活可调。    XIE提供一开放接口,方便用户的其他程序与XIE通信,拓展XIE的功能。    APP概况如下。
1、启动界面    在启动界面中可设置控制端口、寻星端口、导星端口的端口号以及串口通讯参数。    其中,控制端口即XIE与SPARROW控制器的通讯串口;寻星端口即XIE与星图软件Stellarium的通讯端口;导星端口即XIE与导星软件GuiderMaster的通讯端口。    同时,用户可在启动界面设置星图软件和导星软件的自启动方式,并设置相应程序的执行文件路径,这样,在启动XIE控制软件时,相应的软件也同时启动。
2、联机/断开、退出、调试
    联机/断开按钮:如启动时没有联机,可在此处联机。此处联机串口号和波特率在“com”页面中指定(与“启动”页面中的端口设置等效)。    退出按钮:断开与控制器连接并退出程序。    调试展开/折叠按钮:点击按钮“>>>>”,则控制器的调试页面展开。点击按钮“<<<<”,则展开的调试页面折叠。    可通过展开的调试页面查看和设置SPARROW控制器的硬件参数。在本赤道仪控制系统中,X轴连接的是赤纬控制电机,Y轴连接的是时角控制电机,Z轴连接的是调焦控制电机。    各参数根据用户实际情况灵活修改。比如:    BaudRate:控制器与上位机通信的波特率。    CTYPE:轴电机类型和位置反馈方式。    RS:位置反馈系数。根据实际情况(减速比、电机细分数等)设置赤道仪运行1角秒对应的脉冲数。    VR:档位系数,即速度按钮1(1X)所对应于的移动速度。在本系统中VR=15(15角秒/秒)。    P:控制参数P。    I:控制参数I。    D:控制参数D。    MO:最大输出。3、数据显示

    实时显示各轴的数据和运行状态。    坐标说明:系统把从SPARROW控制器得到的位置脉冲数转换成赤道仪坐标(用赤纬、时角标识,即EQDC/HA),再把赤道仪的坐标转换成星体坐标(用赤纬、赤经标识,即StarDC/RA)。与星图软件通讯时,发送的是星体坐标。    赤道仪坐标置数:可以通过“SET”按钮将赤道仪坐标手动置数。赤纬数据置数时,选中“W”复选框用来指示所设置的这个赤纬数据属于已过中天星体,否则指示所设置的这个数据属于未过中天星体。(一般仅调试时手动将赤道仪坐标置数。实际应用时,在GOTO框中输入星体坐标的赤纬、赤经值后直接点击“SetStar”按钮即可设置赤道仪指向某一星体。)    调焦轴数据显示    显示调焦轴(Z轴)的位置,和运行状态。可通过“Z0”按钮,将调焦轴数据清零。4、运行控制面板
    XIE控制软件的各轴运行速度和GOTO速度通过运行控制面板中各轴的速度按钮设置。调试控制器时,可在控制面板中设定其他运行参数和速度,直接控制各轴以指定的速度和方式运行。5、系统参数调整和应用
(1)串口(com)参数设置   联机前需要设置各端口的串口号和波特率等参数。    控制端口:即XIE控制软件与SPARROW控制器联机的端口。    寻星端口:即XIE控制软件软件与星图软件(Stellarium)的通讯端口。    导星端口:即XIE控制软件与导师软件(Guider Master)的通讯端口。    由于XIE控制软件、星图软件、导星软件通常同时运行于同一PC上。因此,一般用虚拟的串口对来实现控制软件与星图、导星软件的连接即可,无需物理串口的连接。
(2)位置与时间参数设置   用户需要设置观测地的地理经纬度和时区,日期和时间自动从Windows系统读取填入。    经度:以时、分、秒计,东经为+,西经为-;    纬度:以度、分、秒计,北纬为+,南纬为-;    时区:东区为+,西区-。(3)校准参数设置    导星速率:设置用于导星的速率,以恒星速(15角秒/秒)为1X速率。    校准阶数:数值越大则校准精度越高,但所需的计算时间越长,一般设置为10即可    校准计算:进行校准时,星体的理论位置、实际位置数据将被自动记录并自动完成计算,无需用户干预。(4)命令流显示    实时显示与星图软件、导星软件的LX200通讯信息流。(5)GOTO、SetStar、校准操作    GOTO    在赤纬、赤经编辑框中输入星体坐标,点击“GOTO”按钮即可控制赤道仪GOTO到指定的星体。点击“STOP”按钮停止GOTO动作。    在赤纬、赤经编辑框中输入星体的坐标,点击“Star Set”按钮,即可将系统当前的星体坐标设置成所输入的坐标(赤道仪坐标也相应被设置),即为SetStar置星。   当控制软件与星图软件(Stellarium)连接后,在星图软件中下达了GOTO命令后,指定的坐标数据会自动填入赤纬、赤经编辑框中,并自动下达GOTO指令,从而实现直接在星图软件中控制赤道仪GOTO到指定星体的目的。    校准    选准星:系统可进行1~3星校准,校准前将所选取的用于校准的星体(以下简称准星)的坐标数据填入S1~S3的赤纬、赤经编辑框中。    进行校准:准星数据填入后,选中“进行校准”复选框,并设置校准星数(1~3)后开始进行校准。
6、视频查看
    在视频设备页面,系统可用的视频设备和可选的格式在列表中显示出来。用户可在这里选择用于天文实时视频查看的视频设备。7、一些有用的操作    (1)关于脱机操作,SPARROW控制器可脱离上位机独立运行。在这种情况下,控制器可作为双跟+电调焦系统来使用。通SPARROW面板上的按键来设置各轴的速度,驱动各轴运行,从而进行赤道仪的调整,跟踪和调焦。    (2)为了不妨碍用户通过星图软件、导星软件进行GOTO或者导星,XIE控制软件设计成顶部磁吸式,将XIE控制软件拖到屏幕顶部时,软件自动收缩隐藏在后台执行,当鼠标指针触及XIE控制软件所在的顶部位置时,控制软件重新展开。(像QQ那样)    (3)控制器上拓展功能键F1~F6的使用,为了方便用户的调整、校准和使用,SPARROW控制器上的拓展键F1~F6被设置成软件上某些功能按钮的快捷键。    当进行GoTo操作时,F1~F6的功能定义如下:    当进行校准操作时,F1~F6的功能定义如下: 三、API 以及二次开发    这里有多种选项。    1、什么也不做,直接使用XIE控制你的赤道仪。    2、使用控制器的SkyAPI开发自己的基于Windows的APP。    3、XIE控制软件提供了一个开放接口,你的应用程序可以使用这个接口和XIE进行通信,获取并补充XIE的功能。    4、直接使用控制器提供的接口协议开发自己的APP。由于这个接口协议是基于RS232的,因此可以做是跨平台开发。    软件调用层次如下图:THE END附:goto测试视频:https://v.youku.com/v_show/id_XMzAyNTI4OTM2NA==.html?spm=a2hcb.playlsit.page.1goto+导星视频:https://v.youku.com/v_show/id_XNDYxMjM4MzcxMg==.html?spm=a2hzp.8253869.0.0

小武生 发表于 2020-4-2 11:52

直接放出下载地址吧,除了牛找不到其他词来形容

蝶梦 发表于 2020-4-2 14:27

我以前基于STM32自己画的板子做过类似的东西。

坐进观天 发表于 2020-4-2 14:54

小武生 发表于 2020-4-2 11:52
直接放出下载地址吧,除了牛找不到其他词来形容

☺不是单靠软件,软件基于控制器平台的。

坐进观天 发表于 2020-4-2 15:10

蝶梦 发表于 2020-4-2 14:27
我以前基于STM32自己画的板子做过类似的东西。

我原先底层也用单片机控制直流电机goto。后来才搞这个控制器,步进、直流可以切换。

鬼星团 发表于 2020-4-2 15:23

这个要顶!{:3_202:}
要分享就分享pcb 电路图和软件{:3_212:}
哈哈

蝶梦 发表于 2020-4-2 15:29

坐进观天 发表于 2020-4-2 15:10
我原先底层也用单片机控制直流电机goto。后来才搞这个控制器,步进、直流可以切换。 ...

我做的没你那么完善,只是步进电机。不过我做的有一个能显示中文的屏幕,字库直接用我写的代码生成器编码进单片机程序。

坐进观天 发表于 2020-4-2 18:02

蝶梦 发表于 2020-4-2 15:29
我做的没你那么完善,只是步进电机。不过我做的有一个能显示中文的屏幕,字库直接用我写的代码生成器编码 ...

中文我们也这么弄,灵活。反正也就那么几个字。要是字很多就得用字库芯片。

wait4love 发表于 2020-4-2 21:38

我也是因为小学自然课本的四季星空图入的坑,看着熟悉的图一言难尽{:5_302:}

坐进观天 发表于 2020-4-3 10:50

wait4love 发表于 2020-4-2 21:38
我也是因为小学自然课本的四季星空图入的坑,看着熟悉的图一言难尽 ...

真巧呀

水手 发表于 2020-4-14 21:27

wait4love 发表于 2020-4-2 21:38
我也是因为小学自然课本的四季星空图入的坑,看着熟悉的图一言难尽 ...

我也是因为小学自然,春季星空。我第一个认出的星座是狮子座。一言难尽。
页: [1]
查看完整版本: 我DIY了一个EQ SDK(赤道仪开发小工具)——记一次GOTO DIY历程