牧夫天文网

 找回密码
 加入牧夫(请注明天文爱好者,否则无法通过审核)

QQ登录

只需一步,快速开始

[DIY咨询] 探索基于LX200制作goto和导星--GM导星大师 ok!

  [复制链接]
角落里的烟嘴 发表于 2013-3-2 15:27 | 显示全部楼层 |阅读模式 来自: 江苏省苏州市 联通

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?加入牧夫(请注明天文爱好者,否则无法通过审核)

x
本帖最后由 角落里的烟嘴 于 2013-5-31 21:05 编辑

还是挖坟无数贴,参考学习前辈们的经验,当然论坛里是已有DDR大神制作完成的goto,还有单独的导星,此贴立下,希望能给想自己动手制作但是没有基础的同好们一个参考,这里记录的东西都会经过我自己的理解加以解释,因为我自己也是摸石头过河的,当然抄袭是必须的,但是我会根据我的理解加以解释,方便你我理解。

写在前面,LX200串口协议是上位机通过串口向下位机发送   字符串 格式的命令,下位机只要按照协议正确回复上位机的命令就可以。LX200串口协议是大多数软件所支持的,只要按照LX200协议制作好下位机,适用的的上位机软件就非常之多了,基本所有的星图软件、导星软件、都支持,直接串口相连就能用起来了。 成功案例很多的,本坛里一艘就出来。
PS:之前做的VB外挂基于TCP协议的,不是直接通过星图软件从COM控跟下位机通信,而且VB外挂程序从TCP协议接收到数据处理,之后再从com口控制下位机。 所以通用性是不高的。所以才会想着看看LX200是咋回事。

第一步、虚拟环境准备

1、星图软件 软件 stellarium
2、虚拟串口软件 Virtual Serial Ports Emulator
3、串口监控软件  “串口监控器”
4、 LX200串口协议   谷歌文库  
      http://wenku.baidu.com/view/3e8dda3231126edb6f1a1080.html

第二部、 建立虚拟串口通道
      1、 虚拟串口软件   Virtual Serial Ports Emulator
      2、 新建一个虚拟串口通道 类型选择为 Pair ,这样会生成两个相互已建立好的com 口。
      3、 配置星图软件stellarium 使用 comA
      4、 配置 串口监控器 使用comB
      comA  comB 是已建立好相互通信的,在A发B就收到,在B发A就自动能收到

第三步、抓取通信过程中的命令
          1、 stellarium 在没有任何操作的时候会不停的发送         
                #:GR#   (询问现在望远镜指向的RA值)
          2、  当正确回复 stellarium时,会发送
              #:GD#  (询问现在望远镜指向的DEC值)
          3、 当正确回复 GD时,stellarium中会出现一个黄色圆圈
          4、 当没有正确回复 GD时, stellarium 重复发送 GR# 来询问

           以上 1-4 是 不停止的, 回复 GR GD 是需要按照一定格式进行回复的,参看LX200串口协议
          1-4的功能,我的理解是stellarium问下位机,你现在的位置是什么,你告诉我,我好在星图中给你显示出来(黄色圆圈),如果你不告诉我的话,我是不会显示的哦。。。亲。。。如果你一直在动,我会一直给你更新的哦。。。随便你怎么动哦。。。亲。。。。比如你手动控制你的望远镜指向,我就能在星图上帮你显示,你现在在看什么哦。。。亲,好人性化哦。。。。。。。。@@%……&%……& 我瞎扯的

        
           5、当在stellarium 中按下 crtl+1 或者slew , 则向下位机发送
                 ##:Sr 04:06:12#                发送目标RA值
                 回复1,则再发送                       回复1 ,表示ok
                 # :Sd +76:24:55#                  发送目标DEC值
                 回复1,则在发送                       回复1 ,表示ok
                 MS#                                           MS# 命令发送就是告诉下位机,你可以move了 ,应该这是叫 move scope

            6、在   move scope 的时候, stellarium还是不辞幸劳的 重复 “1、2、3、4、” ,实时更新星图里的黄色圈圈

          抓一个stellarium的运行log上来给大家参考一下 ,另外回复stellarium的时候 不能带“\n”,就是回车或者叫换行发送,就是"#" 不能带 回车,但是能带“0” 的, 就是不能换行。
                 
询问 RA DEC 的日志
15765, 09:27:09.609375Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GR#
15765, 09:27:10.171875Z: Connection::performReading: readNonblocking returned 9; 02:31:45#
15765, 09:27:10.171875Z: Lx200CommandGetRa::readAnswerFromBuffer: RA = 02:31:45
15765, 09:27:10.171875Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetDec): queued
15765, 09:27:10.234375Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GD#
15765, 09:27:10.984375Z: Connection::performReading: readNonblocking returned 7; +89*15#
15765, 09:27:10.984375Z: Lx200CommandGetDec::readAnswerFromBuffer: error: degree sign expected
15765, 09:27:10.984375Z: Lx200CommandGetDec::readAnswerFromBuffer: Dec = +89:15:00


slew goto 的时候好像有问题。。。。。。。日志如下  红色部分 不明所以


15765, 09:28:29.687500Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GR#
15765, 09:28:29.718750Z: Lx200Connection::sendCommand(Lx200CommandStopSlew)
15765, 09:28:29.718750Z: Lx200Connection::sendCommand(Lx200CommandSetSelectedRa(4:6:12))
15765, 09:28:29.718750Z: Lx200Connection::sendCommand(Lx200CommandSetSelectedDec(+76:24:55))
15765, 09:28:29.718750Z: Lx200Connection::sendCommand(Lx200CommandGotoSelected)
15765, 09:28:31.406250Z: Connection::performReading: readNonblocking returned 9; 02:31:45#
15765, 09:28:31.406250Z: Lx200CommandGetRa::readAnswerFromBuffer: RA = 02:31:45
15765, 09:28:31.406250Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGetDec): queued
15765, 09:28:31.500000Z: Connection::performWriting: writeNonblocking(5) returned 5; #:GD#
15765, 09:28:32.015625Z: Connection::performReading: readNonblocking returned 7; +89*15#
15765, 09:28:32.015625Z: Lx200CommandGetDec::readAnswerFromBuffer: error: degree sign expected
15765, 09:28:32.015625Z: Lx200CommandGetDec::readAnswerFromBuffer: Dec = +89:15:00
15765, 09:28:32.015625Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandStopSlew): queued
15765, 09:28:32.015625Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandSetSelectedRa(4:6:12)): queued
15765, 09:28:32.031250Z: Lx200Connection::sendCommand(Lx200CommandGetRa)
15765, 09:28:32.031250Z: Lx200Connection::sendCommand(Lx200CommandGetDec)
15765, 09:28:32.109375Z: Connection::performWriting: writeNonblocking(17) returned 17; ##:Sr 04:06:12#
15765, 09:28:36.234375Z: Connection::performReading: readNonblocking returned 1; 1
15765, 09:28:36.234375Z: Lx200CommandSetSelectedRa::readAnswerFromBuffer:ra valid
15765, 09:28:36.234375Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandSetSelectedDec(+76:24:55)): queued
15765, 09:28:36.328125Z: Connection::performWriting: writeNonblocking(14) returned 14; :Sd +76?24:55#
15765, 09:28:38.109375Z: Connection::performReading: readNonblocking returned 1; 1
15765, 09:28:38.109375Z: Lx200CommandSetSelectedDec::readAnswerFromBuffer:dec valid
15765, 09:28:38.109375Z: Lx200Connection::writeFrontCommandToBuffer(Lx200CommandGotoSelected): queued
15765, 09:28:38.171875Z: Connection::performWriting: writeNonblocking(4) returned 4; :MS#

                 
                  


    刚才测试了一下 按下面格式正确回复 GR GD  stellarium里的黄色圈圈就工作正常了,昨天好像 DEC的格式没弄对
回复 GR GD 的格式
RA         02:08:45#     in hour
DEC      +80*19#       in degree

           
第四步, 下位机的设计
        1、能识别上位机发送过来的 命令是啥 比如  GR#  GD# MS# ,所以前提是我的下位机他知道他现在自己的指向的目标的RA DEC是多少,所以需要一星校准、三星校准。这样就行了吧?
        2、得到上位机的 目标星参数 ,控制步进电机相应运动
        3、返回当前 指向的RA DEC

醒悟人生 发表于 2013-3-2 15:39 | 显示全部楼层 来自: 河南省许昌市 联通
  沙发  哈哈    先坐下  
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 15:41 | 显示全部楼层 来自: 江苏省苏州市 联通
本帖最后由 角落里的烟嘴 于 2013-3-2 15:42 编辑

板凳自己坐
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 15:49 | 显示全部楼层 来自: 江苏省苏州市 联通
为什么 我电机 slew 之后 stellarium 会先询问一下 GR 和 GD ,而且是有延迟,命令不是立即发出来的
回复 支持 反对

使用道具 举报

astroperson 发表于 2013-3-2 16:05 | 显示全部楼层 来自: 北京市 联通
你是自已在做赤道仪吗?如果是的话,建议还是支持ASCOM比较好,貌似LX200的协议比较OLD。何况ASCOM貌似协议是开放的,也不需要通过截包,做反向工程去猜测协议属性。

点评

lx200 也是开放的 上面有协议文档  详情 回复 发表于 2013-3-2 16:26
自己在捣鼓 goto 啊 什么的 我还是喜欢 stellarium 直接控制 赤道仪的 目前看来 lx200 好像还是简单一点吧 ascom的开源资料 还没找过 ,况且 lx200 有前辈的经验在,玩起来就参考 也有人问问。。。我是这么想的  详情 回复 发表于 2013-3-2 16:16
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 16:16 | 显示全部楼层 来自: 江苏省苏州市 联通

自己在捣鼓 goto 啊 什么的 我还是喜欢 stellarium 直接控制 赤道仪的  目前看来 lx200 好像还是简单一点吧  ascom的开源资料 还没找过 ,况且 lx200 有前辈的经验在,玩起来就参考 也有人问问。。。我是这么想的

点评

ascom 也可以被stellarium控制啊。大部分用HEQ5,NEQ6的兄弟都用的是ASCOM吧?  详情 回复 发表于 2013-3-2 18:17
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 16:26 来自手机 | 显示全部楼层 来自: 江苏省南京市 联通
astroperson 发表于 2013-3-2 16:05
你是自已在做赤道仪吗?如果是的话,建议还是支持ASCOM比较好,貌似LX200的协议比较OLD。何况ASCOM貌似协议 ...

lx200 也是开放的 上面有协议文档
回复 支持 反对

使用道具 举报

kingkey 发表于 2013-3-2 16:30 | 显示全部楼层 来自: 河北省石家庄市 电信
LZ很强大!帮顶!
回复 支持 反对

使用道具 举报

醒悟人生 发表于 2013-3-2 16:50 | 显示全部楼层 来自: 河南省许昌市 联通
我也喜欢喜欢 stellarium 直接控制 赤道仪
回复 支持 反对

使用道具 举报

tbb1 发表于 2013-3-2 16:54 | 显示全部楼层 来自: 上海市浦东新区 电信
楼主啊,你不把源代码发出来,我们大伙怎么跟你讨论,帮你提高啊。。。。。

点评

一个字母都没写呢 vb的程序 有个大BUG  详情 回复 发表于 2013-3-2 18:03
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 18:03 来自手机 | 显示全部楼层 来自: 江苏省南京市 联通
tbb1 发表于 2013-3-2 16:54
楼主啊,你不把源代码发出来,我们大伙怎么跟你讨论,帮你提高啊。。。。。 ...

一个字母都没写呢
vb的程序 有个大BUG
回复 支持 反对

使用道具 举报

astroperson 发表于 2013-3-2 18:17 | 显示全部楼层 来自: 北京市海淀区 联通
角落里的烟嘴 发表于 2013-3-2 16:16
自己在捣鼓 goto 啊 什么的 我还是喜欢 stellarium 直接控制 赤道仪的  目前看来 lx200 好像还是简单一点 ...

ascom 也可以被stellarium控制啊。大部分用HEQ5,NEQ6的兄弟都用的是ASCOM吧?

点评

但是还是一个外挂一样的东西吧? 我没有 厂制的双轴点跟 或者 goto 赤道仪, 电机都是自己弄 ,不需要这种外挂程序。 ascom 是把不同的软件和不同的赤道仪连接起来的作用,我是这么理解的,而且 我是要做下位机,上  详情 回复 发表于 2013-3-2 19:18
回复 支持 反对

使用道具 举报

无毒 发表于 2013-3-2 18:44 | 显示全部楼层 来自: 陕西省西安市 电信
哇 这么厉害的。
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 19:18 来自手机 | 显示全部楼层 来自: 江苏省南京市 联通
astroperson 发表于 2013-3-2 18:17
ascom 也可以被stellarium控制啊。大部分用HEQ5,NEQ6的兄弟都用的是ASCOM吧?

...

但是还是一个外挂一样的东西吧? 我没有 厂制的双轴点跟 或者 goto 赤道仪, 电机都是自己弄 ,不需要这种外挂程序。 ascom 是把不同的软件和不同的赤道仪连接起来的作用,我是这么理解的,而且 我是要做下位机,上位机所用的协议只要是lx200协议,我的下位机就都不需要改变什么 直接能连接起来了

点评

嗯。也对,你支持了LX200以后,就可以用ASCOM里LX200的驱动了。  详情 回复 发表于 2013-3-2 19:27
回复 支持 反对

使用道具 举报

astroperson 发表于 2013-3-2 19:27 | 显示全部楼层 来自: 北京市海淀区 联通
角落里的烟嘴 发表于 2013-3-2 19:18
但是还是一个外挂一样的东西吧? 我没有 厂制的双轴点跟 或者 goto 赤道仪, 电机都是自己弄 ,不需要这 ...

嗯。也对,你支持了LX200以后,就可以用ASCOM里LX200的驱动了。

点评

是的,ASCOM是个转换平台,但是我是没有厂制的设备,所以我做个符合LX200标准的下位机 实用度就高了  详情 回复 发表于 2013-3-2 19:46
回复 支持 反对

使用道具 举报

zhzhjzh101 发表于 2013-3-2 19:40 | 显示全部楼层 来自: 北京市 联通
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-2 19:46 | 显示全部楼层 来自: 江苏省苏州市 联通
astroperson 发表于 2013-3-2 19:27
嗯。也对,你支持了LX200以后,就可以用ASCOM里LX200的驱动了。

是的,ASCOM是个转换平台,但是我是没有厂制的设备,所以我做个符合LX200标准的下位机 实用度就高了
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-3 14:54 | 显示全部楼层 来自: 江苏省苏州市 联通
isis 虚拟一个 单片机 一个串口
模拟.PNG
写好的单片机程序直接放入就可以进行模拟啦,先把串口通信的程序写入单片机,保证能正确获得上位机的命令,并且回复 RA DEC

点评

单片机编程。。。好!  详情 回复 发表于 2013-3-3 20:45
回复 支持 反对

使用道具 举报

zhzhjzh101 发表于 2013-3-3 20:45 | 显示全部楼层 来自: 北京市 联通
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-3-4 17:13 | 显示全部楼层 来自: 江苏省苏州市 联通
不知道为什么 串口调试的时候能正确返回 RA DEC  但是 用stellarium 试的时候,stellarium就不认 返回的数据了
回复 支持 反对

使用道具 举报

本版积分规则

快速回复 返回顶部 返回列表