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