采用FPGA/MCU技術(shù)的光電式滾轉(zhuǎn)角測量儀的解決方案
本文設(shè)計基于FPGA/MCU的光電式滾轉(zhuǎn)角測量儀,安裝于實(shí)驗(yàn)轉(zhuǎn)臺上,實(shí)時輸出滾轉(zhuǎn)角度值,為彈體的滾轉(zhuǎn)角測量提供對照基準(zhǔn),并可與上位機(jī)進(jìn)行通信,將數(shù)據(jù)傳送到主機(jī)中進(jìn)行后續(xù)處理。
系統(tǒng)整體方案
滾轉(zhuǎn)角測量儀物理架構(gòu)如圖1、2所示。a為滾轉(zhuǎn)體,可沿軸向做360度旋轉(zhuǎn),在滾轉(zhuǎn)體上某固定位置安裝紅外發(fā)光二極管k,光束方向沿截面徑向朝外;b為側(cè)支架,為了減少環(huán)境光線的干擾,采用封閉式設(shè)計,沿支架周向均勻安裝n個光敏接收電路gl-gn,n值視所需測量精度而定;當(dāng)滾轉(zhuǎn)體旋轉(zhuǎn)到某角度時,延徑向發(fā)射紅外光,側(cè)支架上的光敏三極管對其進(jìn)行接收,把光信號轉(zhuǎn)換為電壓信號,經(jīng)過處理之后送給主控板,主控板通過判斷是哪個光敏三極管接收到了信號來確定滾轉(zhuǎn)角度,滾轉(zhuǎn)體也可能會剛好旋轉(zhuǎn)到兩個光敏三極管之間,導(dǎo)致二者同時接收到光信號,此時可對信號進(jìn)行AD轉(zhuǎn)換,然后通過相應(yīng)算法對轉(zhuǎn)換值進(jìn)行處理,從而解算出滾轉(zhuǎn)角。
系統(tǒng)硬件設(shè)計
滾轉(zhuǎn)角測量儀的硬件框圖如圖3所示,包括紅外光發(fā)射模塊、光敏接收模塊、FPGA/MCU信息處理模塊、電源模塊、LED顯示模塊等,以下分別進(jìn)行具體介紹。
紅外光發(fā)射模塊選用方向性較強(qiáng)的窄角度紅外發(fā)光二極管PH303,波長0.94mm,通過510Ω限流電阻與彈上的陀螺儀或者磁探測模塊相連接,當(dāng)滾轉(zhuǎn)體轉(zhuǎn)到某角度時由單片機(jī)控制其持續(xù)發(fā)光。由于發(fā)光二極管與光敏接收模塊之間的距離較短,僅有3~4cm,因此采用小功率直射方式便可滿足要求。
光敏接收模塊采用UNI公司的NPN光敏三極管MID-32A22,接收光波長也為0.94mm。接收模塊電路如圖4所示,實(shí)物如圖5所示,Q1為光敏三極管,LM358D為雙通道集成運(yùn)算放大器。在Q1上施加9V的偏置電壓,保證集電結(jié)處于反向偏置,發(fā)射結(jié)處于正向偏置。室溫條件下,當(dāng)受到紅外光照射時,發(fā)射集的輸出電流與入射光強(qiáng)度呈線性關(guān)系,范圍在1.5~2mA之間,R4取值為330Ω,則LM358D的引腳5輸入電壓在0.5~0.66V之間。前級運(yùn)放搭建成同相比例放大器,取R1=1kW,R2=5kW,放大倍數(shù)為(1+5/1)=6倍,則引腳7的輸出電壓在以上。后級運(yùn)放搭建成一階低通有源濾波器,取R3=15.8kW,C1=0.1mF,截止頻率為100Hz。Ax(x=1-n)為經(jīng)過光電轉(zhuǎn)換及信號調(diào)理之后的輸出信號,本系統(tǒng)中n取值為37,即在側(cè)支架上沿周向均勻安裝37個光敏接收模塊。當(dāng)Q1接收到足夠強(qiáng)度的入射紅外光時Ax輸出為高電平,沒有受到入射光照射時保持為低電平,信號直接送至FPGA/MCU信息處理模塊的相應(yīng)引腳。
FPGA/MCU信息處理模塊:FPGA作為主處理器,兩片MCU作為協(xié)處理器,F(xiàn)PGA與MCU及上位機(jī)之間均使用串口通信方式。
FPGA采用Altera公司的EP1C3T144,具有2910個邏輯單元,可用IO引腳達(dá)104個,集成1個PLL模塊,使用與1.5V聯(lián)合供電,上電次序可任意配置,可靈活選擇使用主動串行方式或者JTAG方式進(jìn)行調(diào)試,外接50MHz有源晶振為芯片提供基準(zhǔn)頻率。
MCU選用Cygnal公司的C8051F310,工作電壓2.7V~3.6V,最高工作頻率可達(dá)25MHz,提供1280字節(jié)RAM和16Kb FLASH,29個耐5V電壓的可配置IO引腳,片內(nèi)集成21路10位200KSPS ADC及硬件增強(qiáng)型UART,可使用Silicon lab2線調(diào)試方式。
[!--empirenews.page--]
FPGA與MCU的硬件連接如圖6所示,光敏接收模塊的輸出信號A1-A37依次送至FPGA各引腳及MCU的ADC輸入引腳,由于每片C8051F310最多只允許21路ADC輸入,因此使用兩片MCU,MCU A采集A1-A20,MCU B采集A18-A37,其中A18、A19、A20被重疊采集。如果兩片MCU采集的信號互不重疊,比如MCU A采集A1-A18,MCU B采集A19-A37,當(dāng)滾轉(zhuǎn)體轉(zhuǎn)至g18與g19之間時,二者都受到一定強(qiáng)度的紅外光照射,輸出信號A18、A19同時為高電平,則需要將A18的值從MCU A送至MCU B進(jìn)行集中處理,增加編程工作量,而且由于不是同一芯片的ADC采集到的數(shù)據(jù),不排除存在系統(tǒng)誤差的可能性,從而影響滾轉(zhuǎn)角判斷結(jié)果,但采集信號重疊之后,則僅使用MCU A或者M(jìn)CU B就可單獨(dú)進(jìn)行處理,重疊信號越多處理范圍越廣。FPGA的TXi、RXi(i=0,1)引腳分別與兩片MCU的自帶的硬件增強(qiáng)型UART相連接,實(shí)現(xiàn)串口通信。
此外FPGA的UARTTX、UARTRX引腳與MAX3232CSE相連,將TTL電平轉(zhuǎn)換成232電平,使用異步串口與上位機(jī)進(jìn)行通信,電路連接如圖7所示。
LED顯示模塊:由于滾轉(zhuǎn)角度值范圍在0度-360度之間,因此使用三位八段數(shù)碼管可滿足使用要求,選用力達(dá)公司的LDS-2381共陽數(shù)碼管,其封裝如圖8所示。FPGA的八個引腳通過限流電阻與LED的A-G、DP引腳相連,由于LED消耗電流較大,而FPGA的引腳驅(qū)動能力不足,因此另外三個片選引腳分別先連接到NPN管的基集,NPN管的發(fā)射集再與LED的8、9、12引腳相連,從而提高電流驅(qū)動能力。FPGA采用動態(tài)掃描方式,通過控制片選引腳使數(shù)碼管輪流顯示個位、十位、百位的數(shù)字,每一位的持續(xù)時間為8ms,但在人眼看來可產(chǎn)生同時顯示的效果。
電源模塊:光敏三極管偏置電壓為9V,F(xiàn)PGA需要3.3V與1.5V聯(lián)合供電,MCU、FPGA外接有源晶振、LM318D等均為3.3V供電。系統(tǒng)輸入電源采用9V直流供電,因此還需使用電源轉(zhuǎn)換模塊降至3.3V與1.5V,如圖9所示,選取TI公司的TPS76801與TPS76733兩種低壓差穩(wěn)壓器。TPS76801是單路可調(diào)LDO,最大壓降僅為230mV,容限為2%,紋波小,適合為FPGA內(nèi)核供電,通過在OUT引腳、FB引腳與GND之間連接不同阻值的電阻,可靈活設(shè)置TPS76801的輸出電壓為1.5V,阻值計算公式,式中Vref=1.1834V,R24=30.1kΩ,R23=8kΩ。TPS76733也是單路固定輸出LDO,輸出電壓為3.3V,典型壓差350mV,每個LM318D僅需消耗1mA左右的電流,EP1C3T144、C8051F310、有源晶振也都是低功耗器件,TPS76733輸出電流最大值可達(dá)1000mA,能滿足系統(tǒng)需求。通過在低壓差穩(wěn)壓器的輸入端連接0.1mF陶瓷去耦電容改善噪聲特性,在輸出電壓引腳與GND之間連接10mF鉭電容穩(wěn)定芯片內(nèi)部控制回路,此外在PG或者引腳連接上拉電阻防止芯片自動復(fù)位。
FPGA/MCU信息處理模塊、電源模塊、LED顯示模塊都集中布置在主控板上,其實(shí)物如圖10所示,主控板與各個光敏接收模塊之間通過導(dǎo)線連接,傳輸采集到的模擬信號并進(jìn)行供電。
[!--empirenews.page--]
系統(tǒng)軟件設(shè)計
基于FPGA/MCU的光電式滾轉(zhuǎn)角測量儀軟件流程如圖11所示。光敏接收模塊g1-g37接收到紅外光信號,經(jīng)過光電轉(zhuǎn)換及信號調(diào)理之后將高電平送至FPGA上各相關(guān)引腳,F(xiàn)PGA以固定頻率對A1-A37各引腳進(jìn)行掃描,掃描頻率通過對有源晶振的輸入頻率進(jìn)行分頻得到,如果掃描到僅有一個引腳是高電平,則說明只有該引腳對應(yīng)的光敏接收模塊收到光信號,滾轉(zhuǎn)體此時剛好旋轉(zhuǎn)到某已知角度,通過FPGA控制LED顯示模塊輸出該角度,并通過串口將滾轉(zhuǎn)角度值傳送給上位機(jī)。但如果有兩路引腳都為高電平,那么FPGA首先判斷該由哪片MCU對這些信號進(jìn)行處理,隨后通知該MCU進(jìn)行AD轉(zhuǎn)換并確定滾轉(zhuǎn)角度,比如A5、A6均為高電平,則FPGA以串口通訊方式通知MCU A對A5、A6進(jìn)行AD轉(zhuǎn)換,轉(zhuǎn)換結(jié)果A5的信號幅值為2.50V,A6的信號幅值為3V,已知A5對應(yīng)的滾轉(zhuǎn)角為40度,A6對應(yīng)的滾轉(zhuǎn)角為50度,則此時的滾轉(zhuǎn)角度為40+[2.5/(2.5+3.0)](50-40)=44.55度,MCU再通過串口把信息反饋給FPGA。還有可能出現(xiàn)3路或者3路以上的引腳為高電平的情況,此時應(yīng)調(diào)節(jié)光敏接收模塊的初級運(yùn)放信號放大倍數(shù),盡量減少M(fèi)CU處理的模擬信號數(shù)量,然后通過比較將幅值較小的信號忽略,僅保留最大的兩路信號,隨后處理方式同上。
FPGA采用VHDL語言進(jìn)行編程,其串口程序包括串口發(fā)送、串口接收與時鐘分頻三個模塊,分別與上位機(jī)及兩片MCU進(jìn)行通信,通信波特率為標(biāo)準(zhǔn)的9600b/s,數(shù)據(jù)位為8位,不帶校驗(yàn)位。MCU采用匯編語言編程,C8051F310可通過修改相關(guān)寄存器值非常靈活的對片內(nèi)ADC模塊、串口模塊進(jìn)行操作,ADC采用單端輸入方式,以MCU供電電壓為參考電壓,通過向AD0BUSY位寫1啟動AD轉(zhuǎn)換。
結(jié)語
本文設(shè)計的基于FPGA/MCU的光電式滾轉(zhuǎn)角測量儀實(shí)際運(yùn)行情況良好,在實(shí)驗(yàn)室環(huán)境中能較為準(zhǔn)確的測量出彈體滾轉(zhuǎn)角度,達(dá)到預(yù)定要求,此外還可通過增加光敏接收模塊或采用紅外激光器來進(jìn)一步提高測量精度。