atlanta 发表于 2012-12-26 12:54

這個好……好也再改我的70/900……架子做好了……還差電機驅動和單片機了…………

夜光蜗牛 发表于 2012-12-26 13:24

额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据,结合开始时候初始化得到的望远镜指向数据,就能计算得到步进电机需要转过去的角度,再根据减速比等硬件参数就能知道需要给步进电机多少脉冲.......。你也可以问问xwxwwx同学,他写过一个。

角落里的烟嘴 发表于 2012-12-26 14:32

夜光蜗牛 发表于 2012-12-26 13:24 static/image/common/back.gif
额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据, ...

哦 你们都是 直接从并口 来输出的, 能不能帮我解释一下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.466667degs
   Time = 2310 hrs          = 23 + 10/60   = 23.166667hrs
   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|   20103651.5
Feb      31       31   |1999   -366.5|   20114016.5
Mar      59       60   |2000   -1.5|   20124381.5
Apr      90       91   |2001    364.5|   20134747.5
May   120      121   |2002    729.5|   20145112.5   
Jun   151      152   |2003   1094.5|   20155477.5
Jul   181      182   |2004   1459.5|   20165842.5
Aug   212      213   |2005   1825.5|   20176208.5
Sep   243      244   |2006   2190.5|   20186573.5
Oct   273      274   |2007   2555.5|   20196938.5
Nov   304      305   |2008   2920.5|   20207303.5
Dec   334      335   |2009   3286.5|   20217669.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.5943550cos(DEC) = 0.8042028
sin(LAT) = 0.7933533cos(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@夜光蜗牛

角落里的烟嘴 发表于 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 1hdec 4d

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

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


角落里的烟嘴 发表于 2012-12-27 14:20

夜光蜗牛 发表于 2012-12-25 19:30 static/image/common/back.gif
这是我以前写的翻译的源码,由于时间有点久....我也不太记得当时怎么写的了.....但能获取数据。
其实更简便 ...

原来答案早就有了

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


取数据

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



夜光蜗牛 发表于 2012-12-27 14:57

角落里的烟嘴 发表于 2012-12-27 14:20 static/image/common/back.gif
原来答案早就有了

for(i=1;i

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

角落里的烟嘴 发表于 2012-12-27 15:25

夜光蜗牛 发表于 2012-12-27 14:57 static/image/common/back.gif
那是内存处理数据的方法,你去问IEEE去吧......

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

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


夜光蜗牛 发表于 2012-12-27 16:01

角落里的烟嘴 发表于 2012-12-27 15:25 static/image/common/back.gif
S 出来的数据 是 十六进制的你的翻译代码 是把 这十六进制翻译成 了 十进制了 ?

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

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

角落里的烟嘴 发表于 2012-12-27 17:54

夜光蜗牛 发表于 2012-12-27 16:01 http://www.astronomy.com.cn/bbs/static/image/common/back.gif
翻译出来是整数,例如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=429496729624H 0h

0x80000000=21474836484320012h
49710.269631s


2、实例
以这个为例 :    RA/DEC5h55m10.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#菜鸟嘛 不熟悉天体运动的知识。

当赤道仪极轴对准之后,的赤道仪的 RA轴和 DEC轴 按照两个星星的 差值进行运动,就能运动到另外一个目标啦,
但是需要保证的是,赤道仪跟天体的坐标体系一直对准的,而且这样处理是不是参考点一直是变动的,这样误差也会小。如果那原始的参考点,作为参考的话,应该误差会更加大吧?

所以接下去就是要将差值转换成步进电机的运动,运动多少角度, 还有需要考虑到 天体的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
而緯軸的話, 可能也最好盡量用同一個方向貼近目標會好些, 例如固定用北移

角落里的烟嘴 发表于 2012-12-31 17:33

做了一道题目

角落里的烟嘴 发表于 2012-12-31 17:57

举一个最简单的例子来看看,应该怎么移动到目标点
参考点 RA23h=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 步

不知道我这样对不对?

角落里的烟嘴 发表于 2013-1-2 13:12

角落里的烟嘴 发表于 2012-12-31 17:57
举一个最简单的例子来看看,应该怎么移动到目标点
参考点 RA23h=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。
http://ww2.sinaimg.cn/bmiddle/4aa3805djw1e0j4bpdkvpj.jpg

页: 1 [2] 3 4 5
查看完整版本: 菜鸟如何自制通过stellarium来控制赤道仪goto--基本功能完成