楊立宏,袁夫全
(中山火炬職業技術學院,廣東中山,528436)
由于無刷電機具有高效率,低能耗等優點,在電動領域有取代傳統電機的趨勢,而無刷電機的核心部件無刷電機控制器產量也在不斷增長。無刷電機控制器的出廠檢測是其生產中的重要環節,目前,控制器檢測仍處于半自動化狀態,通過人工操作儀器對線路板的部分功能進行檢測,以確認是否達到出廠標準。針對當前電機控制器檢測自動化程度低,功能單一等問題,本文提出一種基于LabVIEW虛擬儀器和STM32嵌入式微控制器的自動化檢測平臺,STM32對無刷電機控制器的輸入電壓、電流、輸出相電壓、相電流、發熱元件溫度進行采集,LabVIEW開發的上位機實時顯示無刷電機控制器的性能參數,檢測人員只需觀察上位機顯示的參數即可完成控制器的全部檢測,大大增加了自動化程度,提高了檢測效率。
本文研究的檢測平臺主要針對100W以下的無刷電機控制器進行檢測。無刷電機控制器檢測平臺主要包括被測控制器和無刷電機、電流、電壓傳感器、溫度傳感器、STM32采集板和LabVIEW上位機軟件等。STM32采集板和探針轉接板被安裝在測試夾具上,測試時,將被測控制器放置在夾具固定座上,夾具上的探針轉接板通過探針和被測控制器接觸。測試平臺的整體結構如圖1所示。

圖1 檢測平臺整體結構方案圖
整個測試平臺通過24V直流電源供電,供電電源通過STM32采集板的電壓和電流傳感器采集輸入電壓和電流,并通過探針轉接板將電源輸入給被測控制器。探針轉接板將被測控制器的溫度傳感器采集的溫度、電壓傳感器采集的相電壓、電流傳感器采集的相電流傳送給STM32采集板。STM32采集板將傳送過來的傳感器數據進行AD轉換、數據處理后,通過串口發送到電腦端的LabVIEW上位機進行顯示。針對不同物理形狀的無刷電機控制器,需要設計相對應的探針轉接板將STM32采集板和被測控制器進行無縫對接,這樣可適應不同類型的無刷電機控制器。
本檢測系統主要針對功率在100W以下的無刷電機,因此電源的輸出電流一般在5A以下,這里輸入電流和相電流采集選用線性電流傳感器ACS712ELCTR-05B,該傳感器具有低噪聲模擬信號通路,80kHz帶寬,25°C時總輸出誤差1.5%,內部導體電阻僅1.2mΩ,5V單電源操作,簡化了供電電路設計,輸出靈敏度為185mV/A,其典型應用電路如圖2所示。

圖2 ACS712典型應用電路
依據芯片資料,ACS712傳感器的輸出電壓VOUT與輸入直流或者交流電流IP成比例,在5V電源供電條件下,其關系式為VOUT=2.5+0.185×IP,通過STM32的AD轉換器得到VOUT,即可計算出輸入電流IP。
本設計為了保證采集通道數的可擴展性,選擇STM32F103C8T6作為主控制器,該控制器具有16個外部模擬輸入通道,12位AD轉換分辨率,AD轉換時間僅為1.17μs。輸入/輸出電壓、電流和溫度采集部分的電路設計如圖3所示。電壓的采集直接采用精密電阻分壓的方式實現,輸入電源電壓VIN計算公式為VIN=ADC_IN_V×(R21+R22)/R21,在24V電源輸入的情況下,要將電壓分壓到3.3V以下以便于輸入到STM32的AD輸入端口,這里接地電阻R21選擇10kΩ,1%精度,接24V電阻R22選擇75kΩ,1%精度。被測直流電流經ACS712ELCTR-05B的IP+流入,IP-流出,輸入電流大小由芯片7腳VIOUT計算得到,該傳感器輸出靈敏度為185mV/A,假設輸入電流為5A,根據計算公式VIOUT=2.5+0.185×IP,則VIOUT電壓值會超過STM32F103C8T6所規定的3.3V輸入電壓,因此在電路中,需要將輸出VIOUT進行分壓后輸入到STM32的AD轉換器,分壓依然采用精密電阻串聯分壓實現,電阻R19選擇20kΩ,1%精度,電阻R20選擇10kΩ,1%精度。VIOUT=ADC_IN_A×(R19+R20)/R19,從而可以計算出輸入電流IP=(ADC_IN_A×(R19+R20)/R19-2.5)/0.185。相電壓、相電流的采集采用圖3同樣的電路。被測控制器發熱部位的溫度采用NTC熱敏電阻測量,圖3中R24為10kΩ熱敏電阻,該熱敏電阻和10kΩ的電阻串聯,抽頭接入到STM32的AD轉換接口,串聯電阻分壓抽頭電壓值數字量ADC_IN7=(4096×R23)/(R24+R23),再通過查表法得到溫度值。

圖3 電壓、電流和溫度采集原理圖
在本設計中,STM32主要完成1路輸入電壓和電流,3路相電壓和相電流以及4路溫度共12路數據采集并通過串口傳輸到上位機。由于所需采集的模擬信號較多,AD轉換程序設計采用了多通道掃描,DMA傳輸轉換結果的方式,程序設計流程圖如圖4所示。

圖4 STM32程序設計流程圖
初始化部分主要包含了ADC時鐘、GPIO端口及AD轉換配置、DMA配置、中斷優先級和USART的初始化以及啟動AD轉換。AD轉換啟動后,每個通道轉換完的數據會通過DMA傳輸到開辟的數據緩沖區,當緩沖區數據滿后,DMA產生中斷。在DMA中斷服務程序中先關閉AD轉換和DMA中斷,然后將各個通道的數據取出并進行平滑濾波,程序設計中對每通道連續20次采樣的結果進行算數平均濾波,以濾除隨機干擾。在DMA中斷服務程序中各通道數據提取及濾波代碼如下:

將濾波后的電壓值數字量進行數據運算轉換成模擬量,代入到2節的VIN和IP公式中,計算得到最終的VIN和IP值。而對于NTC熱敏電阻測量溫度值,由于熱敏電阻阻值和溫度并非線性關系,本程序中采用二分法查表實現溫度的測量,二分法查表實現函數如下:

通過二分法查表法得到當前的溫度值,對于溫度精度要求較高的情況,對查表得到的溫度值通過線性插值得到更高精度的溫度值。由于LabVIEW上位機發送和接收都是ASCII碼格式的字符,在STM32的串口發送程序中也將得到電壓、電流和溫度數據轉換成ASCII碼發送。
上位機系統采用LabVIEW軟件編寫,該軟件為用戶提供了便利的API接口、數據處理算法及顯示控件,可以方便快速完成上位機系統的搭建。本設計中上位機主要完成傳感器數據的接收、處理及顯示。為了便于甄別不同幀的數據,STM32上傳的一幀數據以回車符結束,因此在LabVIEW上位機,當接收到回車符時表示一幀數據接收結束。LabVIEW上位機數據的接收及顯示程序框圖如圖5所示。

圖5 LabVIEW數據接收及顯示程序框圖
為了便于展示,本程序框圖中只列出輸入電壓、輸入電流、A相電壓和相電流、1個溫度傳感器數據的處理及顯示,如果有更多數據處理,只需在后面添加即可。程序中通過一個“開始接收”按鈕啟動數據的接收,當有數據需要接收并且已經啟動數據接收的情況下,數據被送入到VISA讀取函數,接收到的數據通過反饋節點和連接字符串函數連接成一個字符串,通過搜索替換字符串函數搜索是否接收到回車符,如果收到回車符,說明一幀數據接收完成,則將接收到的這一幀字符串數據使用掃描值函數按照格式字符串的格式將各傳感器數據取出顯示到波形圖表。前面板得到的實時測試數據波形如圖6所示。

圖6 前面板數據波形
圖6 中顯示的波形是無刷電機控制器在控制無刷電機加減速過程中輸入電壓、輸入電流、A相電壓、A相電流以及一個MOS管的表面溫度曲線。將下載好驗證程序的無刷電機控制器放置到夾具下,啟動測試,即可快速檢測控制器是否符合出廠標準。
本文針對無刷電機控制器出廠檢測的自動化程度不高,設計了一種無刷電機控制器自動檢測平臺。采用STM32微控制器采集控制器的各項參數,并通過串口發送到上位機,上位機采用LabVIEW軟件設計,能夠實時顯示無刷電機控制器當前運行情況,使得檢測人員能夠快速完成控制器的檢測,大大提高了檢測效率,降低了檢測人員勞動強度。