因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据,结合开始时候初始化得到的望远镜指向数据,就能计算得到步进电机需要转过去的角度,再根据减速比等硬件参数就能知道需要给步进电机多少脉冲.......。你也可以问问xwxwwx同学,他写过一个。 夜光蜗牛 发表于 2012-12-26 13:24 static/image/common/back.gif
额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据, ...
哦 你们都是 直接从并口 来输出的, 能不能帮我解释一下S 的数组 需要翻译成什么 样子 的数据呢? 或者说 我如何来利用你写的那些代码最后翻译出来的 数据? 夜光蜗牛 发表于 2012-12-26 13:24
额,前辈不敢当......。
因为我是直接用C通过并口控制步进电机的,所以很容易利用从stellarium获取的数据, ...
关键点疑问 ra dec 要转换成 方位角 和 高度角 ,赤道仪根据 高度角和 方位角 调整自己的姿态? 本帖最后由 角落里的烟嘴 于 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: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-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:20 static/image/common/back.gif
原来答案早就有了
for(i=1;i
那是内存处理数据的方法,你去问IEEE去吧......
夜光蜗牛 发表于 2012-12-27 14:57 static/image/common/back.gif
那是内存处理数据的方法,你去问IEEE去吧......
S 出来的数据 是 十六进制的你的翻译代码 是把 这十六进制翻译成 了 十进制了 ?
这两句是什么另外的意思吧 ?
Ra=Ra/49710;
De=De/3314;
角落里的烟嘴 发表于 2012-12-27 15:25 static/image/common/back.gif
S 出来的数据 是 十六进制的你的翻译代码 是把 这十六进制翻译成 了 十进制了 ?
这两句是什么另外的 ...
翻译出来是整数,例如10,10可以代表10角秒,也可能0.01角秒。协议告诉我们,49710=1角秒。
夜光蜗牛 发表于 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!
对于菜鸟来说,又一个问题解决了
原来 S 发出的数据包 比如说数据包中是 AD 44 24 3F 实际上 RA值是 3f2444ad 还是程序没看懂吧,其实@夜光蜗牛里的代码都写出来了 - -!
一个菜鸟如何自制一个通过stellarium来控制赤道仪--记录帖
继续 下一个问题 看看 参考点 和目标点之间的联系图示中标注了RA 和 DEC 的坐标线 找了两个星星 DEC差的不多,主要是为了方便我辨别 哪条是 DEC 0 0#菜鸟嘛 不熟悉天体运动的知识。
当赤道仪极轴对准之后,的赤道仪的 RA轴和 DEC轴 按照两个星星的 差值进行运动,就能运动到另外一个目标啦,
但是需要保证的是,赤道仪跟天体的坐标体系一直对准的,而且这样处理是不是参考点一直是变动的,这样误差也会小。如果那原始的参考点,作为参考的话,应该误差会更加大吧?
所以接下去就是要将差值转换成步进电机的运动,运动多少角度, 还有需要考虑到 天体的1x的运动速率。
@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
而緯軸的話, 可能也最好盡量用同一個方向貼近目標會好些, 例如固定用北移
做了一道题目 举一个最简单的例子来看看,应该怎么移动到目标点
参考点 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 步
不知道我这样对不对? 角落里的烟嘴 发表于 2012-12-31 17:57
举一个最简单的例子来看看,应该怎么移动到目标点
参考点 RA23h=24h 目标RA' 为 22h
差值 ra=1h= 1 ...
应该是v+v' 吧? 上面计算是不对的, 起码 速度是+ 的 不是减的。
在goto的时间 S 中, 目标星是 1X速度运动的 速度是V‘的, 距离是 S*V'
则goto的总距离是 ra’+s*V' = S*V, S=( ra’+s*V')/V 参考点 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
抄袭 @wolfbeard 前辈的VB 程序 数据抓出来啦!! 帖子:用Stellarium GOTO U架虽然基本上都是抄写了一遍,但是原理啊 什么的至少我懂了哇,还有VB里面的 TCP S/C的怎么用的。
下一步看把抓到的数据处理成参考星的位置,固定死,然后抓目标星,求差值,然后计算step。
http://ww2.sinaimg.cn/bmiddle/4aa3805djw1e0j4bpdkvpj.jpg