蔡永東,竺春祥,吉嘉偉,丁哲錸,鄭逸鑒,張珂,錢嘉程
(中國計量大學 工程訓練中心,浙江杭州,310000)
本文設計了基于FPGA的電機測試系統。FPGA與MCU通過FSMC通訊,同時滿足高速加載和高速處理。FPGA的高速數據處理優勢在電機測試過程中體現在系統對信號的測量誤差小,響應快、精度高等方面,并且該系統易于小型化、可操作性強、集成度高。
圖1為電機測試系統總體結構圖。系統硬件部分主要由STM32、FPGA、ADC模塊和DDS模塊組成。STM32主要包括以太網通信電路、SDRAM數據緩存電路等。FPGA包括脈沖輸出電路(CO模塊)、轉速/轉矩測量輸入模塊(CI模塊)、高速DDS模擬量輸出模塊ACM9767、高速 ADC模擬量輸入模塊ACM7606、低通濾波電路。裝置主要工作流程:系統與FPGA 的硬件連接初始化,FreeRTOS初始化,與此同時,FPGA各路控制線程啟動。當接收到STM32的測試波形指令時,FPGA測量相應的峰峰值、頻率值;當接收到STM32的輸出波形指令時,輸出相應波形的信號。

圖1 電機測試系統總體結構圖
FPGA主控采用Cy-clone IV系列的芯片,型號為EP4CE40F23C8N,擁有 8個 I/O Bank,532個用戶 I/O,適合多通道同步數據采集與處理場景。STM32主控芯片采用STM32H743ZIT6,單核480MHz及豐富的資源,適用于工業場景同時滿足高性能及顯示要求的應用。使用EDA技術設計電路板,完成產品設計,設計制作嵌入式最小系統電路、電機控制電路、接口電路。
硬件電路組成如圖2所示,主要包括:1.LCD顯示,2.雙通 道 DDS(ACM9767)AO輸 出,3.FPGA,4.STM32,5.網 線RJ45接口,6.邏輯電平輸出(DO-3.3V),7.脈沖輸出電路(CO),8.AI-8通道ADC模塊、ACM7606,9.上位機操作軟件,10.方波輸入頻率測量(CI)。

圖2 硬件電路實物
軟件程序設計總體結構如圖3所示。包括上位機軟件開發,嵌入式軟件開發和硬件編程語言設計。如圖4所示,上位機軟件使用QChart繪圖庫在Qt開發環境下,通過TCP/IP協議,建立與下位機的通信連接,實現電機系統實時的參數測量、數據存儲及可視化。嵌入式STM32使用Visual Studio及其插件Visual GDB在線調試,實時接收FPGA傳送的數據,合理管理各個線程,將數據通TCP/IP協議傳送。FPGA使用Quartus Prime設計并制作測量控制電路系統,進行時序設計和檢驗,實現ADC采集、DDS輸出和FSMC協議通信等功能。

圖3 軟件整體結構

圖4 上位機操作界面
該電機測試系統可以測量1-100KHz的脈沖輸入信號,精度控制在0.2%以內,滿足電機實際轉矩轉速的脈沖頻率測量。高速ADC可以快速測量5-300Hz 的電機電壓的實際輸出量,通過FSMC與網口迅速傳給上位機實現實時控制。DO輸出3.3V電壓穩定,可控制電機的開啟關閉等狀態CO輸出1-100KHz的PWM波(上位機默認占空比設定為50%),頻率輸出穩定,可作為直流電機的控制信號。在10-10KHz部分,AO 輸出波形的峰峰值穩定,頻率輸出的相對誤差整體小于0.2%,可以作為電機其他轉矩動態測量所需的信號。綜上測試結果顯示,該FPGA與MCU的異構系統具有較快的響應速度與較高的測量精度滿足電機實時動態加載控制。如圖5,設計的CI和AI功能分別測量電機輸出的脈沖方波的頻率以及實時的波形圖。根據AI功能的實際測試,AI測量頻率范圍為5-300Hz,AI測量幅度范圍為-7V至7V,AI測量精度為1%-3%。

圖5 方波輸入頻率的相對誤差
如圖6,DO功能輸出3.35-3.48V的高電平到電機。如圖7,CO功能為自動輸出頻率為1529Hz-3MHz的方波脈沖或者輸出處于頻率范圍中設定好脈沖次數的方波,脈沖次數滿時停止輸出。CO脈沖計數輸出設定脈沖輸出計數值與實際脈沖輸出值一致。圖8中方波(為綠色)加了0.005的下偏移量,正弦波(為藍色)加了0.01的下偏移量,測試輸出不同波形信號時產生的頻率誤差。

圖6 直流偏置DO輸出的相對誤差

圖7 方波輸出頻率CO的相對誤差

圖8 AO輸出頻率的相對誤差
下圖中電壓峰峰值相對誤差的單位為%,Vpp峰峰值單位為V,頻率單位為Hz。LogFreq為原頻率取log10。
本文針對傳統電機測試系統中步驟繁瑣,效率較低等問題,設計了基于FPGA的電機測控系統,以STM32+FPGA為核心構成電機測試系統的主控單元,以及采用FSMC總線通信和數據乒乓處理算法對雙核心進行控制和數據流不間斷傳輸。通過實物設計和制作對系統可行性進行了驗證。實現了電機參數的測試及數據的處理和儲存,并能夠在上位機里實時顯示出來,響應快并運行穩定。

圖9 AO輸出峰峰值(峰峰值5V設定)

圖10 正弦波輸出峰峰值相對誤差