欢迎使用OpenATS天线追踪系统(Open Antenna Tracking System)
需要的硬件: 电脑一台,用来运行WXtrack卫星跟踪软件。 Arduino,山寨或者正版都可以,正版可以购买Genuino,分Nano和Mega等版本,建议Mega,拥有更多的接口和内存,并且以后扩展好。国内正版版本大概140元左右。Nano大概80左右,山寨30-50左右。山寨也正常,我的实验平台就是在山寨上运行的 步进电机2个,最好用57步进电机,扭距选择大一些的,2.0Nm以上最好,当然还可以通过减速机来增大扭矩。还可以使用闭环步进,确保角度准确,不丢步。 步进电机驱动器2个,分别控制步进电机的。1套驱动器配1个步进电机,57步进套装在200-300左右,当然可以淘二手的。 24V开关电源一个,工业上用的即可,淘宝很多,具体功率要根据你两个步进电机的功率之和来决定。如果选57大功率的步进电机的话,就要选择最少10A以上的电源 。 再一个不起眼但很重要的,XY轴可以旋转的支架。这个不好购买,可以自己制作,成本不太好估计。 如果不算支架的话,仅需要几百块钱就可以完成所实现的功能,加上支架成本,不到2k应该足够了。具体看你用没用减速机还有支架配件等等,有的配件,我们身边都有。
搭建过程:
所有程序和代码,已经分享到我的百度网盘,链接:https://pan.baidu.com/s/1sliIPJJ 密码:pdx2 链接:https://pan.baidu.com/s/1dZcN3S 密码:7sxy https://pan.baidu.com/s/1nvtFfTJ 解压密码:1024
1,把Arduino驱动程序arduino-1.6.8-windows.exe和虚拟串口软件驱动CH341SER.EXE下载安装,把AccelStepper库下载解压缩,解压缩后的整个AccelStepper文件夹拷贝到安装后Arduino程序的libraries文件夹下 将追踪天线代码上传到Arduino板子中。
2,搭建硬件,具体硬件接线图,可以看图片。简单就是用Arduino的PWM接口,来发送脉冲。AZ方位角的控制接口是5,dir方向控制是6,EL仰角的控制接口是9,dir方向控制是10。采用共阴接法或者共阳接法都可以。
AZ方位角的CLK+(有的驱动器上也叫PUL+)接到Arduino的数字接口5,CW+(有的也叫DIR+)接到数字口6,EL仰角的CLK+接到9,CW+接到10上 AZ方位角驱动器上的CLK-,CW-接到一起,再接到arduino的一个GND接口。EL仰角驱动器的CLK-,CW-接到一起,再接到Arduino的另一个GND接口。 剩余的EN+(有的也叫ENA+)还有EN-我们都不接。
3,步进电机与驱动器的接线,步进电机比如常见的2相四线电机,分A+,A-,B+,B-接线,在驱动器上都有标识,自行按照自己步进电机的线颜色定义接上即可。驱动器上的电源接开关电源的输出即可,开关电源给两个驱动器供电24V电压。 注意正负极。
使用说明:
(一)自动追踪
自动追踪,电脑下载运行WXtrack软件,更新星历,星历更新会提示联不上网或者更新失败,我们手动去下载星历文件放到程序的文件夹下面即可。 电脑运行WXtrack软件,找到顶部菜单,Tracker--Options..然后打开设置天线追踪器界面,然后我们点击选中EasyComm I COM port, 下面的窗口,pass start可以设置1,意思是1分钟之前就唤醒天线。Pass end就是追踪完成后发送什么指令,我们输入我们天线的复位指令:“S”, Parking意思是停止天线,我们选中Park antenna,其余不用改。再切换到Port setup菜单,选中你的arduino对应的COM口,比如COM4,速率选中程序中设置的9600 然后是进入Tracker-specific options菜单,将EasyComm precision(精确度控制)设置为2,这样程序输出的串口数据会保留小数点2位,否则是整数,整个系统精确度很低。 电脑软件我们就设置完成了。调试好角度后,就可以自动追踪啦!
(二)手动控制
如果手动控制,请打开Arduino的IDE自带的串口监视器或者用别的可以发送串口数据的软件(各种串口调试工具都可以),用来做手动控制
设置你的Arduino对应的串口编号,然后设置波特率9600。 在发送角度命令时,按照如下格式:方位角 仰角(AZ EL),中间为空格,数据为浮点数或者整数,比如发送:20 40,则天线方位角转到20度,仰角到40度。 等同于:20.0 40.0 可以输入小数点儿,细分大的话,程序的识别能力可以精确到0.1度。 如果仅仅输入一位数字,则只调动方位角,仰角便为0.比如:20则天线默认将方位角转到20度,仰角为0度。输入R或者0都可以将天线复位,即方位角仰角都为0度。
校准功能 在长时间运转后,天线可能会由于电机的丢步,造成的精度不准,这时候可以输入命令来进行校准。为了简单明了来调整天线,AZ跟EL分开调整。 调整方位角的命令为:X 23 就是大写字母A后面紧跟一个数字,可以是浮点数也可以是整数。就是把天线当前的角度调整为23度。 调整仰角的命令便为:Y 56 原理同上。
V2.0更新
新的OpenATS改的地方很多,添加了W(wake up)唤醒,S(sleep)睡眠,L(lock)锁定功能,新的系统中,发送L命令后,天线保持当前角度,直接将步进电机的电源切断,而LNA的电源继续开启。这样在操作者想接收静止卫星的时候,关闭步进电机来达到省电的目的。发送W命令,天线解除锁定。如果发送S命后,天线将归零,延时一些时间后,继电器关闭,继电器可以接到天线的24V电源上。也就是说,输入S后,天线在一定时间内(几十秒)后,将会自动切断步进电机的电源,从而达到省电的目的。由于步进电机在静止时,也会有较大的电能损耗,这方面在设计OpenATS之初是没有想到的,静止的步进电机依然保持着静止扭矩。而这个耗电量虽然不如运转时耗电多 ,但由于静止时间太长,所以耗电量比运行天线都多出好几倍。所以添加了一个双路继电器模块,Arduino接收到睡眠命令时,控制继电器关闭,切断天线电机和LNA(如果你愿意)的电源,这样整个天线系统中,待机电流只有Arduino这一微小的设备了(也可能天线有自己的计算机有耗电),这样设计才能长久运行监控卫星。当发送唤醒命令时,Arduino会控制继电器模块打开天线供电电源,再进行卫星的追踪。程序中含有部分没有使用的ProtoThreads代码,为以后的OpenATS研发更多的功能来预留的。 改进的地方还有追踪角度的切换,之前的OpenATS代码中存在漏洞,在一定条件下,卫星经过0度线(正北方向),天线会反转,新的版本修正了此问题。 还改变了步进电机控制阵脚,将5、6;9、10阵脚用来控制步进电机(因为Arduino数字接口的3、5、6、9、10、11支持原生pwn),而mega的外部中断接口有2、3...所以将3接口预留了出来,为以后天线改进预留了外部中断接口。 如果手动控制,控制反馈界面也改变了很多,变得更实用。发送角度后,新的角度会显示出来,好让你看到上次发送的历史记录。如果S命令切断电源,软件会告诉你天线电源切断,并且不再接受新的控制命令,一直到你发送W命令唤醒后再继续。
还有一个更大的改变,控制软件的改变。这部分需要详细说明一下,如果不感兴趣的可以跳过此部分。 新的OpenATS分了两个版本,一个版本为原来的使用WXtrack软件的Easycomm协议来追踪,成熟稳定,但缺点是由于WXtrack作者对软件输出做出了时间限制,最快也是1秒发送一次角度数据,这就造成了天线自动追踪时的缺点,运行并不流畅,当角度变化大的时候,信号会减弱。而WXtrack的作者David tylor 设计了一款简单的应用,名字叫做FastWXtrack,这款软件的作用是读取注册表中的WXtrack的参数,包括你的坐标以及卫星的轨道和频率参数,来进行快速的计算卫星的下行频率,设计了DDE的服务端,这样著名的SDRsharp软件的DDE追踪插件,便可以连接上此软件来进行更快的频率追踪,保持频率居中。而我发现此程序输出的角度值,却是整数,没有输出小数。在联系了作者,跟作者说了很多,作者将软件更新了新的版本。新的版本为9月29日更新的1.1.2.15,更新说明是:为了JL30LW更新了更高精度的DDE参数,而我就是假冒JL30LW跟他谈判的人,因为谈判的前提是购买了WXtrack的许可,而我谷歌查到此日本一科学家购买过,所以假冒了他。这也是David tylor愿意为我更新软件的原因。虽然行为不太光荣,但我还是做到了,让FastWXtrack输出更快的角度信息,来用到我的OpenATS系统中,作为新的OpenATS控制软件。然后用了一个DDE转串口输出软件来将FastWXtrack角度信息传送给OpenATS。传送速度是每秒20次,非常快,Arduino经常由于通信较快偶尔出现串口无法通信的掉包现象,但不影响使用。我实在没脸让作者再修改修改了...然后我做的是将原来16细分的设置,改为了8细分,这样pwm输出频率降低一些,追踪速度也会快一些,但跟使用WXtrack作为控制软件的方案没法比速度,目前追踪如果超过一秒一度的速度卫星,会造成天线追踪跟不上卫星的情况,但此情况少见,多见于国际空间站那种飞行速度较快的卫星,或者是天线以高仰角经过上空,这样方位角变化角度飞快,但虽然追踪不上卫星,由于高仰角的方位角重要性会减弱,所以影响不大。可能很多人看不懂,以后自己在研究的时候会明白的。 无论哪个版本,都有自己的优点和缺点。 WXtrack的Easycomm协议作为控制软件的话,那么请将Arduino上传WXtrack版本的OpenATS。优点:软件成熟,可以实现完全自动化,设置卫星优先级等高级设置。缺点:追踪频率1秒一次,比较低。由于HRPT需要采用DDE协议,所以只能一个计算机控制天线,一个计算机用来控制解码器。 如果使用WXtrack+FastWXtrack+DDE client作为控制软件的话,请上传FastWXtrack版本的程序。优点:省掉一个计算机,可以采用树莓派、香蕉派(千兆网络推荐)等小计算机来进行网络IQ数据传输,HRPT解码器和控制天线都采用一个软件。追踪频率快,天线运行流畅。缺点:由于串口数据频率过快导致发送脉冲频率过快,天线运行慢。追踪快速卫星会悲剧。并且无法自动追踪多颗卫星。 如果要求不高,请选择WXtrack版本,无论哪个控制软件,OpenATS都很好的支持协议,并且都带有自动断电功能。
更新内容: 1、解决了之前版本的角度校正功能 校正功能使用方法: 输入:X 10 则设置方位角的10度为方位角的0度。 输入:Y 8.5 则设置仰角8.5度为仰角的0度。 后面数值可以为浮点数 仰角、方位角需要单独设置,不能一起设置,比如下面是错误的:X10 Y8.5
2、添加了追踪结束自动断电、发送S命令自动断电,W命令开启电源等实用功能,需要添加外部继电器模块。
3、步进电机针脚由原来AZ:3(PUL+)/5(DIR+) ;EL:6(PUL+)/9(DIR+) 改为现在的:AZ:5(PUL+)/6(DIR+) EL:9(PUL+)/10(DIR+) Arduino的支持pwm接口为:3,5,6,9,11
支持外部中断的接口为:
型号 int.0 int.1 int.2 int.3 int.4 int.5 UNO\Ethernet 2 3 Mega2560 2 3 21 20 19 18 Leonardo 3 2 0 1
Due 所有IO口均可
将2、3接口预留出来用于将来升级功能使用。
4、添加外部继电器模块,接口为4(天线步进电机电源控制继电器)、8(LNA电源控制继电器)。注意:继电器触发为高电平触发。
5、改进串口终端显示,手动控制发送角度后会显示到串口终端,方便观察上次发送角度。更直观的分隔符。
后续:
本人水平有限,非程序员,只是个普通工人,工作繁忙。Arduino的代码也没有仔细学,只是为了达到我的目的而去补的知识 代码如果不好,请见谅。公开代码就是让大家都能自己制作自己的追踪系统,不必花那么多钱买商业的成品。代码中已经注释的非常详细。
73