牧夫天文网

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

QQ登录

只需一步,快速开始

[自制DIY] 菜鸟如何自制通过stellarium来控制赤道仪goto--基本功能完成

  [复制链接]
atlanta 发表于 2012-12-26 12:54 | 显示全部楼层 来自: 广东省广州市番禺区 电信
這個好……好也再改我的70/900……架子做好了……還差電機驅動和單片機了…………
回复 支持 反对

使用道具 举报

夜光蜗牛 发表于 2012-12-26 13:24 | 显示全部楼层 来自: 中国 科技网
额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据,结合开始时候初始化得到的望远镜指向数据,就能计算得到步进电机需要转过去的角度,再根据减速比等硬件参数就能知道需要给步进电机多少脉冲.......。你也可以问问xwxwwx同学,他写过一个。

点评

关键点疑问 ra dec 要转换成 方位角 和 高度角 ,赤道仪根据 高度角和 方位角 调整自己的姿态?  详情 回复 发表于 2012-12-26 15:05
哦 你们都是 直接从并口 来输出的, 能不能帮我解释一下 S 的数组 需要翻译成什么 样子 的数据呢? 或者说 我如何来利用你写的那些代码最后翻译出来的 数据?  详情 回复 发表于 2012-12-26 14:32
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-26 14:32 | 显示全部楼层 来自: 江苏省苏州市 联通

哦 你们都是 直接从并口 来输出的, 能不能帮我解释一下  S 的数组 需要翻译成什么 样子 的数据呢? 或者说 我如何来利用你写的那些代码最后翻译出来的 数据?
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-26 15:05 来自手机 | 显示全部楼层 来自: 江苏省南京市 联通
夜光蜗牛 发表于 2012-12-26 13:24
额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据, ...

关键点疑问 ra dec 要转换成 方位角 和 高度角 ,赤道仪根据 高度角和 方位角 调整自己的姿态?
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-26 17:51 | 显示全部楼层 来自: 江苏省苏州市 联通
本帖最后由 角落里的烟嘴 于 2012-12-31 17:41 编辑

如何通过RA DEC计算出 ALT、AZ  
只有知道ALT AZ 才能让赤道仪摆出姿势
原文地址:http://www.stargazing.net/kepler/altaz.html

例子: 计算   梅西耶 M13 在 1998年8月10号在23点10分的 ALT 和AZ ,地点是 UT,英国伯明翰。M13的 RA 和 DEC 是:
           
            RA  = 16 h 41.7 min
            DEC = 36 d 28   min


一、准备工作
           英国伯明翰的经度和纬度作为;
  
            LAT = 52 d 30 min North
            LONG = 1 d 55 min West
    转换成十进制
     RA   = 16 h 41.7 min     = 16 + 41.7/60 = 16.695     hrs
     DEC  = 36 d 28   min     = 36 + 28/60   = 36.466667  degs
     Time = 2310 hrs          = 23 + 10/60   = 23.166667  hrs
     LAT  = 52 d 30 min North = 52 + 30/60   = 52.5       degs
     LONG =  1 d 55 min West  = -(1 + 55/60) = -1.9166667 degs
一直保留小数点后面的数字,直至计算完成。 经纬度的 西方为负,东为正。 再把RA换算成度,
     24H 转360度, 1h 等于15°
     RA  = 16.695 * 15 = 250.425 degrees     

2、 J2000.0
   计算LST 需要 知道J2000。。。。。。。。。。这估计是天体运动学里一个标准 ?

Table A                |  Table B
Days to beginning of   |  Days since J2000 to
month                  |  beginning of each year
                       |
Month   Normal   Leap  |  Year   Days    |  Year   Days
        year     year  |                 |
                       |                 |
Jan       0        0   |  1998   -731.5  |   2010  3651.5
Feb      31       31   |  1999   -366.5  |   2011  4016.5
Mar      59       60   |  2000     -1.5  |   2012  4381.5
Apr      90       91   |  2001    364.5  |   2013  4747.5
May     120      121   |  2002    729.5  |   2014  5112.5   
Jun     151      152   |  2003   1094.5  |   2015  5477.5
Jul     181      182   |  2004   1459.5  |   2016  5842.5
Aug     212      213   |  2005   1825.5  |   2017  6208.5
Sep     243      244   |  2006   2190.5  |   2018  6573.5
Oct     273      274   |  2007   2555.5  |   2019  6938.5
Nov     304      305   |  2008   2920.5  |   2020  7303.5
Dec     334      335   |  2009   3286.5  |   2021  7669.5


   距离计算  1998年 8月10号  23点10分 的LST    J2000
1.  
    将10分钟 换成小时单位, 10/60=0.1666667
   
2.  
     将10分钟加到小时中,并换算成多少天
       23.166667/24 = 0.9652778
   
3.
     需要查询一个表格 ,查的 8月开始 已经有212天了
   
4. write down the day number within the month, here 10 above
      
      8月10号,则等于 212+10
5.
    查表,1998到2000年还有 -731.5天
   
6.  
   全部加起来
   
    23点10分   8月   10号  J2000
   0.9652778 + 212 + 10 - 731.5  = -508.53472 days   
保留负号

一个近似版本的公式;

LST = 100.46 + 0.985647 * d + long + 15*UT
      d     J2000的天数
      UT    时间 小时为单位
      long is your longitude in decimal degrees, East positive.
      
Add or subtract multiples of 360 to bring LST in range 0 to 360
longitude 1 degree 55 minutes west).
举例 1998年8月10号 23点10分  Birmingham UK
I know that UT = 23.166667
             d = -508.53472  
          long = -1.9166667  (西方为负数)
so
LST = 100.46 + 0.985647 * d + long + 15*UT
    = 100.46 + 0.985647 * -508.53472 - 1.9166667 + 15 * 23.166667
    = -55.192383 degrees
    = 304.80762 degrees

    LST 最后是值需要再0-360范围内,需要看看情况加一个360 或减

3、时角  HA
HA = LST - RA
  例子
    RA = 250.425 degs
    LST = 304.80762

     HA = LST - RA
        = 304.80762 - 250.425
        = 54.382617 degs
   
4、HA、DEC 计算出ALT、AZ
公式:
sin(ALT) = sin(DEC)*sin(LAT)+cos(DEC)*cos(LAT)*cos(HA)
ALT = asin(ALT)
               sin(DEC) - sin(ALT)*sin(LAT)
cos(A)   =   ---------------------------------
                   cos(ALT)*cos(LAT)
A = acos(A)
If sin(HA) is negative, then AZ = A, otherwise
AZ = 360 - A

举例
HA  =  54.382617
DEC =  36.466667 degrees
LAT =  52.5 degrees (North, so positive)
sin(DEC) = 0.5943550  cos(DEC) = 0.8042028
sin(LAT) = 0.7933533  cos(LAT) = 0.6087614
计算
sin(ALT) = sin(DEC)*sin(LAT)+cos(DEC)*cos(LAT)*cos(HA)
sin(ALT) = 0.5943550 * 0.7933533 + 0.8042028 * 0.6087614 * 0.5823696
         = 0.4715335 + 0.2851093
         = 0.7566428

ALT = 49.169122 degrees
cos(ALT) = 0.6538285
             sin(DEC) - sin(ALT)*sin(LAT)
cos(A)   = ---------------------------------
                  cos(ALT)*cos(LAT)
            0.5943550 - 0.7566428 * 0.7933533
cos(A)   = ----------------------------------
                   0.6538285 * 0.6087614
           -0.0059301
         = -----------
            0.3980256
         = -0.0148987
         
    A    = 90.853664

应为sin(HA) 是正数,所以AZ等于 360-A
  AZ = 360 - 90.853664 degrees
     = 269.14634 degs


从 RA DEC  ---->LST 、HA---> ALT AZ

我大致明白了


问题来了  S输出的 20位数据中  时间的含义 这是LST吗 ?   说明是说 从1970 年1月1号开始的
那是不是 LST= (2000年-1970年)- 2012年12月25号
        TIME   (8 bytes,integer): current time on the client computer in microseconds
                                               since 1970.01.01 UT. Currently unused.



@wolfbeard@xwxwwx@夜光蜗牛[/url]

回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 10:32 | 显示全部楼层 来自: 江苏省苏州市 联通
本帖最后由 角落里的烟嘴 于 2012-12-27 10:37 编辑

@Wah!
@夜光蜗牛
@wolfbeard
@xwxwwx

   
几位前辈下面所述的是不是正确啊

赤道仪对准极轴之后保持1X速度
  

  
如果是这样的话, 其实可以不用让赤道仪真正的对准,而是可以用参考点来做 参考 目标的ra dec 换算成 相对值
比如 参考点是      RA  = 16 h 41.7 min
                             DEC = 36 d 28   min

  
而目标是                 RA  = 17 h 41.7 min
                               DEC = 40 d 28   min

相对值就是 ra 1h  dec 4d

赤道仪保持1x的速度时,只要 ra 转1h dec转 4d 就可以,当然需要把转动过程中的时间造成的误差要去掉。

这样就不要计算 AZ 和 ALT了, 这样我就可以直接使用S发出的数据了   


回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 14:20 | 显示全部楼层 来自: 江苏省苏州市 联通
夜光蜗牛 发表于 2012-12-25 19:30
这是我以前写的翻译的源码,由于时间有点久....我也不太记得当时怎么写的了.....但能获取数据。
其实更简便 ...

原来答案早就有了

  for(i=1;i<=4;i++)
                        {
                                Ra=Ra+data[i+11]*pow(16,2*(i-1));
                                De=De+data[i+15]*pow(16,2*(i-1));
                        }


取数据

                        Ra=Ra/49710;
                        De=De/3314;
这里是为什么 ?@夜光蜗牛



点评

那是内存处理数据的方法,你去问IEEE去吧......  详情 回复 发表于 2012-12-27 14:57
回复 支持 反对

使用道具 举报

夜光蜗牛 发表于 2012-12-27 14:57 | 显示全部楼层 来自: 中国 科技网
角落里的烟嘴 发表于 2012-12-27 14:20
原来答案早就有了

  for(i=1;i

那是内存处理数据的方法,你去问IEEE去吧......

点评

S 出来的数据 是 十六进制的 你的翻译代码 是把 这十六进制翻译成 了 十进制了 ? 这两句是什么另外的意思吧 ? Ra=Ra/49710; De=De/3314;  详情 回复 发表于 2012-12-27 15:25
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 15:25 | 显示全部楼层 来自: 江苏省苏州市 联通
夜光蜗牛 发表于 2012-12-27 14:57
那是内存处理数据的方法,你去问IEEE去吧......

S 出来的数据 是 十六进制的  你的翻译代码 是把 这十六进制翻译成 了 十进制了 ?

这两句是什么另外的意思吧 ?
Ra=Ra/49710;
De=De/3314;


点评

翻译出来是整数,例如10,10可以代表10角秒,也可能0.01角秒。协议告诉我们,49710=1角秒。  详情 回复 发表于 2012-12-27 16:01
回复 支持 反对

使用道具 举报

夜光蜗牛 发表于 2012-12-27 16:01 | 显示全部楼层 来自: 中国 科技网
角落里的烟嘴 发表于 2012-12-27 15:25
S 出来的数据 是 十六进制的  你的翻译代码 是把 这十六进制翻译成 了 十进制了 ?

这两句是什么另外的 ...

翻译出来是整数,例如10,10可以代表10角秒,也可能0.01角秒。协议告诉我们,49710=1角秒。

点评

1、协议说明是这样的 RA (4 bytes,unsigned integer): right ascension of the telescope (J2000) a value of 0x100000000 = 0x0 means 24h=0h, a value of 0x80000000 means 12h 一秒等  详情 回复 发表于 2012-12-27 17:54
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 17:54 | 显示全部楼层 来自: 江苏省苏州市 联通
夜光蜗牛 发表于 2012-12-27 16:01
翻译出来是整数,例如10,10可以代表10角秒,也可能0.01角秒。协议告诉我们,49710=1角秒。
...


1、协议说明是这样的
RA     (4 bytes,unsigned integer): right ascension of the telescope (J2000)
           a value of 0x100000000 = 0x0 means 24h=0h,
           a value of 0x80000000 means 12h

一秒等于=49710.26963                     

16进制
十进制
等于
0x100000000
=
4294967296
24H 0h
0x80000000
=
2147483648
43200
12h
49710.26963
1s


2、实例
以这个为例 :    RA/DEC  5h55m10.3s /+7°24′25.5″
抓到goto的数据是   AD 44 24 3F    /  B9 6A 44 05      
RA的数据:
ad44243f(十六进制) = 2906924095(十进制)
                                = 2906924095/49710.26963(单位是时间秒)  
                                = 58477.3350986952  (单位是时间秒)
                                = 974.62225164492    单位是分钟
                                = 16.2437  单位是小时
                                = 16小时 14分钟 37.335秒           
算出来咋不对呢? 星图上是  5h55m10.3s
RA的值 不是   AD 44 24 3F?
我倒过来算
                       小时                     分钟                  秒
5h55m10.3s = 5.919527778= 355.1716667= 21310.3

然后                                         十进制            16进制
21310.3*49710.26963= 1059340759= 3F2441D7   

  难道这是反过来的 ?   再算
AD 44 24 3F   
RA=0X3F2444AD
     =1059341485
     =21310.314606716406981596973486382    单位是秒
     =355.17191011194011635994955810636    单位是分钟
     =5.9195318351990019393324926351061    单位是小时
    = 5小时 55分钟    10.3 秒

done!  
对于菜鸟来说,又一个问题解决了
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 17:59 | 显示全部楼层 来自: 江苏省苏州市 联通
原来 S 发出的数据包 比如说  数据包中是 AD 44 24 3F      实际上 RA值是 3f2444ad 还是程序没看懂吧,其实@夜光蜗牛里的代码都写出来了 - -!
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-27 18:23 | 显示全部楼层 来自: 江苏省苏州市 联通

一个菜鸟如何自制一个通过stellarium来控制赤道仪--记录帖

继续 下一个问题   看看 参考点 和目标点之间的联系
图示中标注了RA 和 DEC 的坐标线 找了两个星星 DEC差的不多,主要是为了方便我辨别 哪条是 DEC 0 0#  菜鸟嘛 不熟悉天体运动的知识。
11111.JPG
当赤道仪极轴对准之后,  的赤道仪的 RA轴和 DEC轴 按照两个星星的 差值进行运动,就能运动到另外一个目标啦,
但是需要保证的是,赤道仪跟天体的坐标体系一直对准的,而且这样处理是不是参考点一直是变动的,这样误差也会小。如果那原始的参考点,作为参考的话,应该误差会更加大吧?
2222222222.jpg
所以接下去就是要将差值转换成步进电机的运动,运动多少角度, 还有需要考虑到 天体的1x的运动速率。
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-28 09:55 | 显示全部楼层 来自: 江苏省苏州市 联通
@Wah!  华哥一直在知道 我这个天文盲  - -!

Wah!  09:25:08
赤道儀還要考慮過了中天之後, 東西方向變反了的情況
Wah!  09:26:14
更細的就還要考慮東西指向時, 重心變化造成的指向變化
Wah!  09:38:18
還有就是如果考慮GOTO不去地面線以下的天體, 那就要計算經緯座標了
如果用戶不亂點, 也可省下這個麻煩的計算
Wah!  09:39:19
GOTO時需要能夠中斷/取消
Wah!  09:40:19
GOTO時也要考慮齒輪空程的方向, 一般會用沒空程的那一邊到達天體
對於極軸來說, 就是要用和1X同向的方向去到天體.
Wah!  09:42:07
而緯軸的話, 可能也最好盡量用同一個方向貼近目標會好些, 例如固定用北移
a.jpg aaaaaa.jpg aaa.jpg aa.jpg abc.jpg
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-31 17:33 | 显示全部楼层 来自: 江苏省苏州市 联通
做了一道题目
新图像.JPG
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2012-12-31 17:57 | 显示全部楼层 来自: 江苏省苏州市 联通
举一个最简单的例子来看看,应该怎么移动到目标点
参考点 RA  23h=24h   目标RA' 为 22h  
差值 ra=1h  = 1*15°  等于赤道仪 RA轴要转动 15° , 当然 1x 的恒星速保持

1X 恒星速度
恒星日是23时56分4秒
V'=360/23h56m4s= 360/(4+3360+82800)=360/86164=0.0041780790121164291351376444918992   度/每秒

参考点A  目标点B 的运动速度为 V'
goto的速度如果为V=15v'

S= L/(V-V')=15/14V'=15/(14*0.004178079)=256.44047619047619047619047624567 s

这就是说 驱动RA轴的电机 转动 S 秒 就ok了, 之前我做的单片机电跟系统,步进电机延迟时间是S'=37400.26596ms= 0.03740026596
则步进电机需要转动的步数为 step=S/S'=256.44047619047619047619047624567/0.03740026596=6857 步

不知道我这样对不对?

点评

应该是v+v' 吧?  详情 回复 发表于 2013-1-2 13:12
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-1-2 13:12 来自手机 | 显示全部楼层 来自: 江苏省南京市 联通
角落里的烟嘴 发表于 2012-12-31 17:57
举一个最简单的例子来看看,应该怎么移动到目标点
参考点 RA  23h=24h   目标RA' 为 22h  
差值 ra=1h  = 1 ...

应该是v+v' 吧?
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-1-3 13:46 | 显示全部楼层 来自: 江苏省苏州市 联通
上面计算是不对的, 起码 速度是+ 的 不是减的。

在goto的时间 S 中, 目标星是 1X速度运动的 速度是V‘的, 距离是 S*V'
则goto的总距离是 ra’+s*V' = S*V  , S=( ra’+s*V')/V
回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-1-4 17:37 | 显示全部楼层 来自: 江苏省苏州市 联通
参考点 RA= 1h  目标点位 RA= 0h(或者是24h)
则 RA'=1h=15°
即赤道仪需要进行相对转动 15°
而应为恒星日 23时56分4秒=23.93444444 ,即星星们相对于地球的转动
360/86164=0.004178079    度每秒

所谓如果赤道仪RA轴只转动15°的话,其实是不够的,需要做转动一个角度。
如果RA轴转动的总计时间为S(单位秒),则目标星星在RA值上多转动了 RA''=S*0.004178079
实际 赤道仪RA需要转动  RA'+RA''=15+S*0.004178079
我的单片机+步进电机+赤道仪的情况 :每一个步距角会使赤道仪RA轴转动的角度为:
    7.5           12                1
-------------- *----------------*-----------------   =0.075*12/40/144=0.00015625°
   50*2            40               144
步距角为7.5度  传动齿轮组  赤道仪的
自带减速比50    的减速比     涡轮蜗杆
8拍 再要除以2                       减速比

如果现在 goto的时候每37.40026596us 运动一个步距角(电跟的速度是只需要37400us,这里先不考虑37.4us步进电机能不能反映的过来)。
则每37.4us 赤道仪RA轴转动0.00015625°
公式列为  
15+S*0.004178079                          =    (S/0.0000374)*0.00015625°
15为天体坐标系中的RA差值                     表示为goto总花费时间是S中步进电机转了多少角度              
S是goto的所花的时间
S*0.004178079代表的是
在goto过程中目标星再RA轴上的移动   

//系统再对好极轴之后一直保持1x的跟踪速度,忽略在1x的速度变换成goto的工作模式, goto的速度是100x

S =3.5939942277994716996197177719061 秒

演算一下
步进电机驱动赤道仪在S时间内,RA轴转动
0.00015625°*S/0.0000374=15.015015991809290188919275450811  °
目标星星运动了
15+S*0.004178079   =  15.015015991809290188919275450808727

两者相似度0.999999999999999

如果
公式为

RA+S*0.004178079                          =    (S/0.0000374)*0.00015625
S=RA/4.1736294076310160427807486631016
RA=37
S=8.8651857619053635257286371707017    秒
赤道仪转动 37.037039446462915799334212778667
目标星动了 37.037039446462915799334212778661525














回复 支持 反对

使用道具 举报

 楼主| 角落里的烟嘴 发表于 2013-1-5 23:50 | 显示全部楼层 来自: 江苏省苏州市 电信
抄袭 @wolfbeard 前辈的  VB 程序 数据抓出来啦!!   帖子:用Stellarium GOTO U架虽然基本上都是抄写了一遍,但是原理啊 什么的至少我懂了哇,还有VB里面的 TCP S/C的怎么用的。
下一步看把抓到的数据处理成参考星的位置,固定死,然后抓目标星,求差值,然后计算step。

                               
登录/注册后可看大图


回复 支持 反对

使用道具 举报

本版积分规则

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