单片机在赤道式天文望远镜控制系统中的应用
一 前言
纵观当前国内的望远镜市场,大大小小的望远镜都配上了电脑,实现PC机控制,这样无形之中就增加了产品的生产成本,使一些原本不必要配电脑的中小型望远镜也必须得配一台电脑,脱离了电脑,就只能进行一些简单的手动操作,令人苦不堪言,本人主要就这一方面作了一些粗陋的研究,用单片机的汇编语言编制了望远镜自动找星的程序,实现了把手盒自动找星的功能。
二 系统硬件概述
本控制系统的核心部分是采用双串口的CPU(W77E58芯片),可以同时和上位机及把手盒通信,也可以单独和他们通信,一片XC95108-84负责计数分频等工作,一片MC146818时钟芯片,用来产生恒星时,附加一些外围接口电路,具体详情见(图一),因为本文着重介绍的是算法部分,因此硬件部分不再细述。
下位机系统方框原理图(图一)
三 软件部分
具体地讲,软件总的可以分为四大部分:PC机(工控机)部分,把手盒部分,下位机部分以及功放模块部分。其中PC机和把手盒分别与下位机的主电脑CPU(W77E58)通信,由串行电缆连接,实现通信,功放模块(驱动部分)与下位机连体,由数据线直接连接,下面我们主要介绍下位机软件的设计流程及算法思路:
1、设计思路
我们应该明确该设计的目的,即实现望远镜自动找星的功能,具体地说,首先得给望远镜进行位置的准确标定,即选中天空中的某一颗已知星,由把手盒手动操作,把它找进望远镜视场的正中央,放在主镜的十字线的中心,此时把这颗星的坐标位置由把手盒输入进去,定标替换望远镜原来的位置,然后以这颗星为基本点,根据时角和赤纬去找寻天空中的任意一颗未知的星,由于系统在程序中做进了掉电保护模块,因此,对望远镜而言,调试完毕之后只需要标定一次,以后每次关机之前系统都会自动保存望远镜当前的实时位置,给用户带来了极大的方便,自动找星时,我们给望远镜输入天空星体的天文坐标(α,δ)之后,望远镜根据当前自身指向的天区位置以及待寻目标星所处的天区位置选择一条合适的路径,驱动赤经、赤纬电机转动使其指向目标星,让目标星体落入望远镜视场,找星结束后自动转入跟踪,望远镜的指向与天体的坐标是通过恒星时联系起来的,因此我们需要知道恒星时,每次观测之前要先校正一下恒星时,恒星时由程序配合手动校正,并显示于面板上。由公式 t+α=s①
其中t是星体的时角位置,α 是星体的赤经值,s 是当地的地方恒星时
显然我们可以把望远镜的时角和星体的时角对应起来,在跟踪状态时,为了克服地球自转的影响,时角在以每时秒15个角秒的速度沿着反地球自转方向匀速运动,因此在赤经方面主要是实时地采集当地的地方恒星时,不停的刷新显示,计算目标星的时角,最终让望远镜的动态时角值等于目标星的时角,这样赤经找星完毕;在赤纬方面,因为恒星的赤纬是不变的,所以我们只需要将望远镜的动态赤纬显示值不断的靠近目标星的赤纬值,不过对赤道式望远镜而言,得需要考虑望远镜的所处天区的位置以及目标星的位置,选择合适的找星路径,确保望远镜的镜筒的姿势正确,至于限位部分,可以根据客户要求自行设定。
2 、下位机软件流程图
3、子程序部分
(1)键盘输入及显示部分
在该系统中,我们选用了8279芯片,在程序中查询键值,送入固定单元,如果无键按下,则送#0FFH入固定单元,然后查询此单元,如果为#0FFH,则返回,否则根据单元的键值内容转入相应的功能子程序;而显示部分主要把待显示的数据经过拆分成7位(本系统采用7位数码管显示),分别送给显示缓冲区,由查表的方式从表中取出7个相应的字型,送到8279数据口实现动态显示,8279的键盘扫描及显示方式是通过初始化编程来实现的,8279初始化部分程序如下:
(2)MC146818时钟部分
MC146818芯片是摩托罗拉公司生产的一种可编程的时钟芯片,该系统中用它来读写恒星时,其中一些主要的操作就是芯片的初始化,读时间操作,写时间操作几大部分,在使用该芯片进行执行读/写时间操作时,必须得注意,要首先查询它的状态看它是否正在刷新数据,如果是,必须等刷新数据动作完成之后再对芯片进行读/写操作,否则容易出错,MC146818的初始化部分程序如下:
读时间子程序:
写时间的子程序同上类似,不再多述。
(3)串行通信子程序
W77E58实现双串口通信,初始化完毕后进入主流程,逐个查询串口是否有通信数据请求,如果有则进入通信子程序执行并返回,否则程序直接往下执行,把下位机的数据分别发送给把手盒和工控机,等待接收控制命令。具体的初始化程序如下:
- 天文望远镜赤道仪的机械性能(03-05)
- 自学单片机心得体会(06-17)
- 基于霍尔传感器的直流电机转速测量系统设计(11-14)
- 基于8051F单片机的数字音频信号源的幅度控制(12-01)
- 动态参数检测与虚拟仪器综合系统设计(11-26)
- 基于C8051F005单片机的小电阻测试仪(01-05)