摘 要: 介紹了Atmel公司生產(chǎn)的AVR單片機Atmega32在野外無線自動報靶系統(tǒng)中的應用,。該系統(tǒng)集輕武器射擊訓練所需的各種功能于一身,包括精確和非精確報靶,、射擊成績的自動實時顯示,、統(tǒng)計和打印,可滿足多種武器和多種射擊模式的訓練需求,,解決了實彈射擊的報靶問題,。
關(guān)鍵詞: 傳感器;數(shù)據(jù)采集,;控制電路,;射擊模式
目前,在野外射擊訓練考核中,,大部分還是通過人工報靶的方法,,帶有很多人為因素(如報靶人員的主觀性、情緒等),,影響報靶的結(jié)果,,使得射手不能正確了解自己的成績,,不利于打靶水平的提高。雖然現(xiàn)在市面上出現(xiàn)了一些自動報靶產(chǎn)品,,但這些產(chǎn)品的成本高,、系統(tǒng)比較復雜,并且占用場地,。因此,,本文根據(jù)實際訓練需要,研制出了集輕武器射擊訓練所需的所有功能于一體的,、基于AVR單片機的一種無線自動報靶系統(tǒng)。該系統(tǒng)包括精確和非精確報靶,,射擊成績的自動實時顯示,、統(tǒng)計和打印,可以滿足多種武器和多種射擊模式的訓練需求,,對目標的隱顯時機,、次數(shù)、間隔等均按訓練大綱要求由電腦自動控制,,既可同時監(jiān)控多個(25個)靶位的射擊情況,,也可單獨監(jiān)控一個靶位的射擊情況。
1 系統(tǒng)組成
無線自動報靶系統(tǒng)由傳感器(特制頭靶,、胸靶,、身靶等)、數(shù)據(jù)采集,、無線傳輸,、數(shù)據(jù)處理、顯示和打印機等構(gòu)成,。報靶傳感器為特制的靶子,,其兩面各有一層導電橡膠(或其他導電軟材料),反面導電橡膠接地線,,正面按胸環(huán)靶樣式用絕緣材料分隔成不同環(huán)位和方位區(qū)域,,不同區(qū)域分別引出信號線。當子彈穿越靶子,,射擊目標的報靶可以精確到5~10環(huán)(以胸環(huán)靶為例),,彈著點的顯示可以精確到圓周的1/8,即將每一環(huán)分為8個區(qū)域,,報靶信息即為射擊的環(huán)數(shù)和所處的區(qū)域,。圖1為紙上對環(huán)和區(qū)域的劃分情況。
當子彈穿過目標時,,在瞬間會連通其中的一個環(huán)和一個區(qū)域,,完成數(shù)據(jù)采集,單片機由此確定報靶信息,編碼后由收發(fā)模塊調(diào)制發(fā)出,,完成射擊成績的報靶,。子彈擊中目標的情況如圖2所示。
2 單片機控制電路設計
在本系統(tǒng)中,,單片機采用Atmel公司的AVR單片機Atmega32,。在如圖3所示的單片機控制電路圖中,PB端口和PC端口用于檢測靶的環(huán)和區(qū)的信號,,當有子彈穿過靶時,,會將連接在PB和PC端口對應的環(huán)和區(qū)引腳導通,通過讀取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相連接,,當ATmega32單片機檢測到子彈擊中靶子時,將計算出來的環(huán)和區(qū)的信號通過RXD和TXD引腳發(fā)射出去,,傳送到計算機軟件系統(tǒng),。
由于子彈的速度很快(達到1 000 m/s),靶的內(nèi)部鋁層厚度為5 mm,,使穿透鋁層最小時間只需5 μs,。而在這5 μs時間之內(nèi),Atmega32單片機必須通過PB和PC端口完成實時的采樣,,并同時計算出子彈是穿透哪個環(huán)和區(qū),。因此,必須為Atmega32配置高速的時鐘源,。由于Atmega32單片機頻率最高可以達到25 MHz,,但同時還要滿足串行通信的波特率要求,因此,,Atmega32采用18.432 MHz的時鐘源,,為整個系統(tǒng)高速運算提供保證。
在實際測試中,,Atmega32單片機從檢測到子彈開始發(fā)射到子彈穿透鋁層,,并確定子彈穿透的是哪個環(huán)和區(qū),,不到2 μs就可以完成采樣。
3 單片機軟件設計
單片機軟件主要功能:(1)實時檢測是否有子彈穿透訓練靶,,若檢測到有子彈穿過,,程序獲取靶被擊中的環(huán)和區(qū),并將該靶的環(huán)和區(qū)信息通過串口發(fā)送出去,。由于這部分程序?qū)r間要求極為苛刻,,因此將這部分內(nèi)容由INT0外部中斷服務程序來完成。(2)單片機串口實時監(jiān)測是否有控制中心發(fā)來的數(shù)據(jù)幀,,若有,,則讀取數(shù)據(jù)幀內(nèi)容,并分析是否為合法數(shù)據(jù)幀,,若是非法幀,,則丟棄該幀;若是合法數(shù)據(jù)幀,,則分析該幀的內(nèi)容,并置接收幀成功標志,。由于控制中心可能隨時會發(fā)送數(shù)據(jù)幀過來,,這部分內(nèi)容交給串口的中斷服務程序來完成。(3)主程序中,,除了完成相關(guān)初始化內(nèi)容之外,,主要判斷按鍵K1和K2是否按下,若有則執(zhí)行電機驅(qū)動的拉起和放倒動作,;同時,,還檢測接收到的數(shù)據(jù)幀標志是否成功,若成功,,則根據(jù)數(shù)據(jù)幀的命令字來分析夜間指示燈的開或關(guān)閉,、啟動電機作拉起或放倒動作等。
主程序流程圖如圖4所示,。
信號采集檢測直接利用AVR單片機芯片內(nèi)置的10 bitA/D轉(zhuǎn)換器,,采樣PA0端口的輸入模擬電壓。將該模擬電壓轉(zhuǎn)換成數(shù)字電壓,,首先要對A/D轉(zhuǎn)換器進行初始化,,具體程序如下:
void AVR_ADC_Init(void)
{
ADMUX = 0x00; //選擇參考電壓源為+5 V,,
//左對齊方式,,并選擇模擬通道ADC0
ADCSRA = 0xCF;//使能ADC模塊,,
//并啟動ADC轉(zhuǎn)換開始,,配置預分頻比1:128
}
為了提高實時采樣保護電機,,過流檢測分析程序段放在A/D轉(zhuǎn)換的中斷服務程序中完成。A/D轉(zhuǎn)換中斷服務程序如下:
#pragma vector=ADC_INT
__interrupt void ADC_vect_isr(void)
{
if(ADCH>200)MotorBreak(),; //若檢測到電流
//超過20 A,,則讓電機停止
}
在進行電機驅(qū)動程序設計時,利用AVR單片機內(nèi)置的PWM模塊來實現(xiàn),。該模塊具有如下特征:(1)支持快速PWM產(chǎn)生模式,;(2)支持相位修正的PWM產(chǎn)生模式;(3)支持相位與頻率修正的PWM產(chǎn)生模式,。這些模式都能夠很好地產(chǎn)生所需的PWM信號,,利用PWM信號可很容易實現(xiàn)對電機速度的調(diào)節(jié)。利用PWM模塊的特點,,設計的電機驅(qū)動函數(shù)為MotorStartRun(unsigned char direction,,unsigned int speed)。在該函數(shù)中,,參數(shù)direction用于控制電機轉(zhuǎn)換方向,,參數(shù)speed用于調(diào)節(jié)電機運行速度。電機驅(qū)動程序流程圖如圖5所示,。
該報靶系統(tǒng)實現(xiàn)了射擊環(huán)數(shù)和方位在靶區(qū)域的實時顯示以及PC機監(jiān)控終端的實時監(jiān)控,,射擊中可統(tǒng)計個人及單位的單發(fā)成績和總體成績。經(jīng)大量實驗證明,,其分析原理正確,、設計指標先進、攜帶方便,、報靶準確,,適用于各式槍械的報靶;抗干擾強,,適合野外使用?,F(xiàn)已在現(xiàn)場使用,并取得了良好的效益,。
參考文獻
[1] 黃勝.自動報靶機的設計與實現(xiàn)[J].毅據(jù)采集與處理,,1997,12(2):155-156.
[2] Atmel Corporation. ATmega32(L)datasheet. 200l.