單片機(jī)在赤道式天文望遠(yuǎn)鏡控制系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一 前言
縱觀當(dāng)前國內(nèi)的望遠(yuǎn)鏡市場,大大小小的望遠(yuǎn)鏡都配上了電腦,實(shí)現(xiàn)PC機(jī)控制,這樣無形之中就增加了產(chǎn)品的生產(chǎn)成本,使一些原本不必要配電腦的中小型望遠(yuǎn)鏡也必須得配一臺電腦,脫離了電腦,就只能進(jìn)行一些簡單的手動(dòng)操作,令人苦不堪言,本人主要就這一方面作了一些粗陋的研究,用單片機(jī)的匯編語言編制了望遠(yuǎn)鏡自動(dòng)找星的程序,實(shí)現(xiàn)了把手盒自動(dòng)找星的功能。
二 系統(tǒng)硬件概述
本控制系統(tǒng)的核心部分是采用雙串口的CPU(W77E58芯片),可以同時(shí)和上位機(jī)及把手盒通信,也可以單獨(dú)和他們通信,一片XC95108-84負(fù)責(zé)計(jì)數(shù)分頻等工作,一片MC146818時(shí)鐘芯片,用來產(chǎn)生恒星時(shí),附加一些外圍接口電路,具體詳情見(圖一),因?yàn)楸疚闹亟榻B的是算法部分,因此硬件部分不再細(xì)述。
下位機(jī)系統(tǒng)方框原理圖(圖一)
三 軟件部分
具體地講,軟件總的可以分為四大部分:PC機(jī)(工控機(jī))部分,把手盒部分,下位機(jī)部分以及功放模塊部分。其中PC機(jī)和把手盒分別與下位機(jī)的主電腦CPU(W77E58)通信,由串行電纜連接,實(shí)現(xiàn)通信,功放模塊(驅(qū)動(dòng)部分)與下位機(jī)連體,由數(shù)據(jù)線直接連接,下面我們主要介紹下位機(jī)軟件的設(shè)計(jì)流程及算法思路:
1、 設(shè)計(jì)思路
我們應(yīng)該明確該設(shè)計(jì)的目的,即實(shí)現(xiàn)望遠(yuǎn)鏡自動(dòng)找星的功能,具體地說,首先得給望遠(yuǎn)鏡進(jìn)行位置的準(zhǔn)確標(biāo)定,即選中天空中的某一顆已知星,由把手盒手動(dòng)操作,把它找進(jìn)望遠(yuǎn)鏡視場的正中央,放在主鏡的十字線的中心,此時(shí)把這顆星的坐標(biāo)位置由把手盒輸入進(jìn)去,定標(biāo)替換望遠(yuǎn)鏡原來的位置,然后以這顆星為基本點(diǎn),根據(jù)時(shí)角和赤緯去找尋天空中的任意一顆未知的星,由于系統(tǒng)在程序中做進(jìn)了掉電保護(hù)模塊,因此,對望遠(yuǎn)鏡而言,調(diào)試完畢之后只需要標(biāo)定一次,以后每次關(guān)機(jī)之前系統(tǒng)都會(huì)自動(dòng)保存望遠(yuǎn)鏡當(dāng)前的實(shí)時(shí)位置,給用戶帶來了極大的方便,自動(dòng)找星時(shí),我們給望遠(yuǎn)鏡輸入天空星體的天文坐標(biāo)(α,δ)之后,望遠(yuǎn)鏡根據(jù)當(dāng)前自身指向的天區(qū)位置以及待尋目標(biāo)星所處的天區(qū)位置選擇一條合適的路徑,驅(qū)動(dòng)赤經(jīng)、赤緯電機(jī)轉(zhuǎn)動(dòng)使其指向目標(biāo)星,讓目標(biāo)星體落入望遠(yuǎn)鏡視場,找星結(jié)束后自動(dòng)轉(zhuǎn)入跟蹤,望遠(yuǎn)鏡的指向與天體的坐標(biāo)是通過恒星時(shí)聯(lián)系起來的,因此我們需要知道恒星時(shí),每次觀測之前要先校正一下恒星時(shí),恒星時(shí)由程序配合手動(dòng)校正,并顯示于面板上。由公式 t+α=s①
其中t是星體的時(shí)角位置
α 是星體的赤經(jīng)值
s 是當(dāng)?shù)氐牡胤胶阈菚r(shí)
顯然我們可以把望遠(yuǎn)鏡的時(shí)角和星體的時(shí)角對應(yīng)起來,在跟蹤狀態(tài)時(shí),為了克服地球自轉(zhuǎn)的影響,時(shí)角在以每時(shí)秒15個(gè)角秒的速度沿著反地球自轉(zhuǎn)方向勻速運(yùn)動(dòng),因此在赤經(jīng)方面主要是實(shí)時(shí)地采集當(dāng)?shù)氐牡胤胶阈菚r(shí),不停的刷新顯示,計(jì)算目標(biāo)星的時(shí)角,最終讓望遠(yuǎn)鏡的動(dòng)態(tài)時(shí)角值等于目標(biāo)星的時(shí)角,這樣赤經(jīng)找星完畢;在赤緯方面,因?yàn)楹阈堑某嗑暿遣蛔兊?,所以我們只需要將望遠(yuǎn)鏡的動(dòng)態(tài)赤緯顯示值不斷的靠近目標(biāo)星的赤緯值,不過對赤道式望遠(yuǎn)鏡而言,得需要考慮望遠(yuǎn)鏡的所處天區(qū)的位置以及目標(biāo)星的位置,選擇合適的找星路徑,確保望遠(yuǎn)鏡的鏡筒的姿勢正確,至于限位部分,可以根據(jù)客戶要求自行設(shè)定。
2 、下位機(jī)軟件流程圖
3、子程序部分
(1)鍵盤輸入及顯示部分
在該系統(tǒng)中,我們選用了8279芯片,在程序中查詢鍵值,送入固定單元,如果無鍵按下,則送#0FFH入固定單元,然后查詢此單元,如果為#0FFH,則返回,否則根據(jù)單元的鍵值內(nèi)容轉(zhuǎn)入相應(yīng)的功能子程序;而顯示部分主要把待顯示的數(shù)據(jù)經(jīng)過拆分成7位(本系統(tǒng)采用7位數(shù)碼管顯示),分別送給顯示緩沖區(qū),由查表的方式從表中取出7個(gè)相應(yīng)的字型,送到8279數(shù)據(jù)口實(shí)現(xiàn)動(dòng)態(tài)顯示,8279的鍵盤掃描及顯示方式是通過初始化編程來實(shí)現(xiàn)的,8279初始化部分程序如下:
MOV DPTR, #7FF0H; 8279芯片的狀態(tài)地址
MOV A, #0D1H; 清除命令
MOV @DPTR, A; 命令字送入
LL: MOV A, @DPTR; 讀8279狀態(tài)字
JB ACC.7, LL ; 清除等待
MOV A, #08H; 顯示器左邊輸入外部譯碼,雙鍵互鎖方式
MOV @DPTR, A; 命令字送入
MOV A, #2AH; 時(shí)鐘編程命令
MOV @DPTR,A; 命令字送入
RET; 返回
(2)MC146818時(shí)鐘部分
MC146818芯片是摩托羅拉公司生產(chǎn)的一種可編程的時(shí)鐘芯片,該系統(tǒng)中用它來讀寫恒星時(shí),其中一些主要的操作就是芯片的初始化,讀時(shí)間操作,寫時(shí)間操作幾大部分,在使用該芯片進(jìn)行執(zhí)行讀/寫時(shí)間操作時(shí),必須得注意,要首先查詢它的狀態(tài)看它是否正在刷新數(shù)據(jù),如果是,必須等刷新數(shù)據(jù)動(dòng)作完成之后再對芯片進(jìn)行讀/寫操作,否則容易出錯(cuò),MC146818的初始化部分程序如下:
MOV DPTR,#0BFCAH; A寄存器口地址
MOV A,#26H; 命令字
MOVX @DPTR,A
INC DPL; B寄存器口地址
MOV A,#1AH; 命令字
MOVX @DPTR,A
RET; 返回
讀時(shí)間子程序:
MOV DPTR, #0BFCAH
AA: MOVX A, @DPTR; 讀取狀態(tài)字
ANL A, #80H
JNZ AA; 芯片是否正在刷新?否,讀取數(shù)據(jù)
MOV DPTR, #0BFC0H;讀秒單元
MOVX A, @DPTR
MOV @R1, A
INC R1
MOV DPL, #0C2H; 讀分單元
MOVX A, @DPTR
MOV @R1,A
INC R1
MOV DPL, #0C4H; 讀時(shí)單元
MOVX A, @DPTR
MOV @R1, A
RET; 返回
寫時(shí)間的子程序同上類似,不再多述。
(3)串行通信子程序
W77E58實(shí)現(xiàn)雙串口通信,初始化完畢后進(jìn)入主流程,逐個(gè)查詢串口是否有通信數(shù)據(jù)請求,如果有則進(jìn)入通信子程序執(zhí)行并返回,否則程序直接往下執(zhí)行,把下位機(jī)的數(shù)據(jù)分別發(fā)送給把手盒和工控機(jī),等待接收控制命令。具體的初始化程序如下:
MOV TCON,#50H; 定時(shí)器/計(jì)數(shù)器狀態(tài)設(shè)置
MOV TMOD,#21H; 定時(shí)器/計(jì)數(shù)器方式設(shè)置
MOV PCON,#00H; 電源控制器設(shè)置
MOV SCON,#53H; 串行口0工作方式設(shè)置
MOV TL1,#0FDH; 計(jì)數(shù)常數(shù)設(shè)置
MOV TH1,#0FDH
MOV SCON1,#53H; 串行口1工作方式設(shè)置
MOV TH0,#3CH; 計(jì)數(shù)常數(shù)設(shè)置
MOV TL0,#0B0H
RET; 返回
?。?)標(biāo)定子程序流圖
(5)自動(dòng)找星子程序
首先根據(jù)輸入的目標(biāo)星的赤經(jīng)值,取出當(dāng)?shù)氐牡胤胶阈菚r(shí)S,通過計(jì)算,換算成目標(biāo)星的時(shí)角值to,然后讀取望遠(yuǎn)鏡此時(shí)的實(shí)時(shí)位置值tt,根據(jù)他們赤經(jīng)時(shí)角所處的天區(qū)差異來選擇不同的找星路徑,具體情況可以分為以下幾種:
1) 如果望遠(yuǎn)鏡與目標(biāo)星的時(shí)角處于同一天區(qū)(以望遠(yuǎn)鏡的中柱為軸線,分為東西兩大天區(qū),人為設(shè)定),則先驅(qū)動(dòng)赤緯軸,再驅(qū)動(dòng)赤經(jīng)軸,直到找到目標(biāo)星,進(jìn)入跟蹤。
2) 如果望遠(yuǎn)鏡與目標(biāo)星的時(shí)角處于不同天區(qū),即跨天區(qū)找星,則先驅(qū)動(dòng)赤緯軸,讓赤緯指向北極,再驅(qū)動(dòng)赤經(jīng)軸,然后再驅(qū)動(dòng)赤緯軸,直到找到目標(biāo)星,進(jìn)入跟蹤。
另外,由于我們的位置反饋信息是來自增量式圓光柵編碼器,而赤緯的度數(shù)始終在(-90,90)區(qū)間,因此還需要進(jìn)行一下特殊處理。
剩下的就是典型的追擊問題,以赤經(jīng)為例,具體流程圖如下:
四 結(jié)束語
經(jīng)過一個(gè)多月的實(shí)際使用觀測,望遠(yuǎn)鏡系統(tǒng)運(yùn)行良好,平穩(wěn)無噪音,找星定位準(zhǔn)確,精度高,能適用于各種大中小型的望遠(yuǎn)鏡。