AVR單片機在無線自動報靶系統(tǒng)中的應(yīng)用
目前,在野外射擊訓(xùn)練考核中,大部分還是通過人工報靶的方法,帶有很多人為因素(如報靶人員的主觀性、情緒等),影響報靶的結(jié)果,使得射手不能正確了解自己的成績,不利于打靶水平的提高。雖然現(xiàn)在市面上出現(xiàn)了一些自動報靶產(chǎn)品,但這些產(chǎn)品的成本高、系統(tǒng)比較復(fù)雜,并且占用場地。因此,本文根據(jù)實際訓(xùn)練需要,研制出了集輕武器射擊訓(xùn)練所需的所有功能于一體的、基于AVR單片機的一種無線自動報靶系統(tǒng)。該系統(tǒng)包括精確和非精確報靶,射擊成績的自動實時顯示、統(tǒng)計和打印,可以滿足多種武器和多種射擊模式的訓(xùn)練需求,對目標(biāo)的隱顯時機、次數(shù)、間隔等均按訓(xùn)練大綱要求由電腦自動控制,既可同時監(jiān)控多個(25個)靶位的射擊情況,也可單獨監(jiān)控一個靶位的射擊情況。
1 系統(tǒng)組成
無線自動報靶系統(tǒng)由傳感器(特制頭靶、胸靶、身靶等)、數(shù)據(jù)采集、無線傳輸、數(shù)據(jù)處理、顯示和打印機等構(gòu)成。報靶傳感器為特制的靶子,其兩面各有一層導(dǎo)電橡膠(或其他導(dǎo)電軟材料),反面導(dǎo)電橡膠接地線,正面按胸環(huán)靶樣式用絕緣材料分隔成不同環(huán)位和方位區(qū)域,不同區(qū)域分別引出信號線。當(dāng)子彈穿越靶子,射擊目標(biāo)的報靶可以精確到5~10環(huán)(以胸環(huán)靶為例),彈著點的顯示可以精確到圓周的1/8,即將每一環(huán)分為8個區(qū)域,報靶信息即為射擊的環(huán)數(shù)和所處的區(qū)域。圖1為紙上對環(huán)和區(qū)域的劃分情況。
當(dāng)子彈穿過目標(biāo)時,在瞬間會連通其中的一個環(huán)和一個區(qū)域,完成數(shù)據(jù)采集,單片機由此確定報靶信息,編碼后由收發(fā)模塊調(diào)制發(fā)出,完成射擊成績的報靶。子彈擊中目標(biāo)的情況如圖2所示。
2 單片機控制電路設(shè)計
在本系統(tǒng)中,單片機采用Atmel公司的AVR單片機Atmega32。在如圖3所示的單片機控制電路圖中,PB端口和PC端口用于檢測靶的環(huán)和區(qū)的信號,當(dāng)有子彈穿過靶時,會將連接在PB和PC端口對應(yīng)的環(huán)和區(qū)引腳導(dǎo)通,通過讀取PB和PC端口的引腳電平狀態(tài),即可分析出子彈擊中了靶中哪個環(huán)和區(qū)。
圖3中,PA0引腳的ADC用于將采樣電機過載電流信號傳送給MCU,PD4~PD7用于驅(qū)動全橋電路的4個臂端,以保證電機正常運轉(zhuǎn)。K1、K2按鍵的功能是手動啟動電機將靶拉起或放倒。PD0、PD1引腳是串行通信接口的RXD和TXD,這兩個引腳與無線發(fā)射/接收模塊的TXD和RXD相連接,當(dāng)ATmega32單片機檢測到子彈擊中靶子時,將計算出來的環(huán)和區(qū)的信號通過RXD和TXD引腳發(fā)射出去,傳送到計算機軟件系統(tǒng)。
由于子彈的速度很快(達(dá)到1 000 m/s),靶的內(nèi)部鋁層厚度為5 mm,使穿透鋁層最小時間只需5 μs。而在這5 μs時間之內(nèi),Atmega32單片機必須通過PB和PC端口完成實時的采樣,并同時計算出子彈是穿透哪個環(huán)和區(qū)。因此,必須為Atmega32配置高速的時鐘源。由于Atmega32單片機頻率最高可以達(dá)到25 MHz,但同時還要滿足串行通信的波特率要求,因此,Atmega32采用18.432 MHz的時鐘源,為整個系統(tǒng)高速運算提供保證。
在實際測試中,Atmega32單片機從檢測到子彈開始發(fā)射到子彈穿透鋁層,并確定子彈穿透的是哪個環(huán)和區(qū),不到2 μs就可以完成采樣。
3 單片機軟件設(shè)計
單片機軟件主要功能:(1)實時檢測是否有子彈穿透訓(xùn)練靶,若檢測到有子彈穿過,程序獲取靶被擊中的環(huán)和區(qū),并將該靶的環(huán)和區(qū)信息通過串口發(fā)送出去。由于這部分程序?qū)r間要求極為苛刻,因此將這部分內(nèi)容由INT0外部中斷服務(wù)程序來完成。(2)單片機串口實時監(jiān)測是否有控制中心發(fā)來的數(shù)據(jù)幀,若有,則讀取數(shù)據(jù)幀內(nèi)容,并分析是否為合法數(shù)據(jù)幀,若是非法幀,則丟棄該幀;若是合法數(shù)據(jù)幀,則分析該幀的內(nèi)容,并置接收幀成功標(biāo)志。由于控制中心可能隨時會發(fā)送數(shù)據(jù)幀過來,這部分內(nèi)容交給串口的中斷服務(wù)程序來完成。(3)主程序中,除了完成相關(guān)初始化內(nèi)容之外,主要判斷按鍵K1和K2是否按下,若有則執(zhí)行電機驅(qū)動的拉起和放倒動作;同時,還檢測接收到的數(shù)據(jù)幀標(biāo)志是否成功,若成功,則根據(jù)數(shù)據(jù)幀的命令字來分析夜間指示燈的開或關(guān)閉、啟動電機作拉起或放倒動作等。
評論