采用FPGA/MCU技術的光電式滾轉角測量儀的解決方案
本文引用地址:http://cafeforensic.com/article/151256.htm
系統(tǒng)軟件設計
基于FPGA/MCU的光電式滾轉角測量儀軟件流程如圖11所示。光敏接收模塊g1-g37接收到紅外光信號,經過光電轉換及信號調理之后將高電平送至FPGA上各相關引腳,F(xiàn)PGA以固定頻率對A1-A37各引腳進行掃描,掃描頻率通過對有源晶振的輸入頻率進行分頻得到,如果掃描到僅有一個引腳是高電平,則說明只有該引腳對應的光敏接收模塊收到光信號,滾轉體此時剛好旋轉到某已知角度,通過FPGA控制LED顯示模塊輸出該角度,并通過串口將滾轉角度值傳送給上位機。但如果有兩路引腳都為高電平,那么FPGA首先判斷該由哪片MCU對這些信號進行處理,隨后通知該MCU進行AD轉換并確定滾轉角度,比如A5、A6均為高電平,則FPGA以串口通訊方式通知MCU A對A5、A6進行AD轉換,轉換結果A5的信號幅值為2.50V,A6的信號幅值為3V,已知A5對應的滾轉角為40度,A6對應的滾轉角為50度,則此時的滾轉角度為40+[2.5/(2.5+3.0)](50-40)=44.55度,MCU再通過串口把信息反饋給FPGA。還有可能出現(xiàn)3路或者3路以上的引腳為高電平的情況,此時應調節(jié)光敏接收模塊的初級運放信號放大倍數(shù),盡量減少MCU處理的模擬信號數(shù)量,然后通過比較將幅值較小的信號忽略,僅保留最大的兩路信號,隨后處理方式同上。
FPGA采用VHDL語言進行編程,其串口程序包括串口發(fā)送、串口接收與時鐘分頻三個模塊,分別與上位機及兩片MCU進行通信,通信波特率為標準的9600b/s,數(shù)據(jù)位為8位,不帶校驗位。MCU采用匯編語言編程,C8051F310可通過修改相關寄存器值非常靈活的對片內ADC模塊、串口模塊進行操作,ADC采用單端輸入方式,以MCU供電電壓為參考電壓,通過向AD0BUSY位寫1啟動AD轉換。
結語
本文設計的基于FPGA/MCU的光電式滾轉角測量儀實際運行情況良好,在實驗室環(huán)境中能較為準確的測量出彈體滾轉角度,達到預定要求,此外還可通過增加光敏接收模塊或采用紅外激光器來進一步提高測量精度。
評論