邢化友,張 路,邊寧濤,司馬斌,韓彥龍,楊 洋
(西安輕工業(yè)鐘表研究所有限公司,陜西 西安710061)
軸承摩擦力矩是軸承領(lǐng)域用來衡量軸承特性的重要技術(shù)指標(biāo)之一,軸承摩擦力矩的準(zhǔn)確測定在許多工業(yè)和科學(xué)研究領(lǐng)域中都有重要意義。本文對軸承摩擦力矩的測量主要應(yīng)用復(fù)擺能量守恒的原理,推導(dǎo)出軸承摩擦力矩與擺角的關(guān)系式,并將關(guān)系式編寫入上位機(jī)軟件中,最終根據(jù)擺角的測量計算出軸承的摩擦力矩。系統(tǒng)中為了減少外界軸承啟動摩擦力的介入,使用非接觸式圓光柵對復(fù)擺擺動角度進(jìn)行實(shí)時測量,圓光柵編碼器有著非接觸、精度高等特點(diǎn),可提供準(zhǔn)確可靠的動態(tài)角度數(shù)據(jù)。本文利用高精度非接觸式圓光柵編碼器開發(fā)一套基于Visual C++與STM32的檢測軟件,實(shí)現(xiàn)了軸承摩擦力矩的自動化測量。
測量系統(tǒng)的測試原理如圖1所示。將軸承裝入軸承安裝部件內(nèi),擺桿連接部件掛由10 kg負(fù)載,軸承安裝部件以小角度(10°)范圍內(nèi)進(jìn)行擺動,同時安裝在軸承安裝部件上的碼盤也隨之進(jìn)行轉(zhuǎn)動,測頭實(shí)時對碼盤旋轉(zhuǎn)的脈沖進(jìn)行輸出傳送給STM32,為了精確進(jìn)行角度的測量對輸出的脈沖進(jìn)行了400倍細(xì)分,并通過光耦將脈沖信號傳遞給STM32,使用STM32的TIM3編碼器模式來對輸入的脈沖進(jìn)行計數(shù),選用雷尼紹的圓光柵編碼器一圈7200個脈沖,經(jīng)過400倍的細(xì)分后一圈288000脈沖,STM32計一個脈沖周期的方波表示碼盤轉(zhuǎn)了0.000 125°,最后將角度信息通過RS232發(fā)送給上位機(jī)軟件利用推到出的關(guān)系式進(jìn)行軸承摩擦力矩的計算。
圖1 測量原理框圖
下位機(jī)系統(tǒng)主要由STM32F407IGT6核心控制器、圓光柵碼盤、碼盤測頭,放大器,高速光耦模塊,數(shù)字通訊等組成。系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 下位機(jī)系統(tǒng)結(jié)構(gòu)框圖
當(dāng)復(fù)擺擺動時,圓光柵碼盤與復(fù)擺儀器做往復(fù)運(yùn)動,碼盤測頭隨即讀出脈沖個數(shù),經(jīng)由DB15放大器輸出A、B相,A相為順時針擺動時的脈沖,B相為逆時針擺動時的脈沖。高速光耦模塊將A、B相的5 V脈沖信號轉(zhuǎn)變?yōu)?.3 V脈沖輸入給STM32控制器。STM32控制器使用TIM1編碼器模式完成對A、B相脈沖信號進(jìn)行脈沖數(shù)據(jù)處理,最后轉(zhuǎn)變成角度數(shù)據(jù)通過RS232發(fā)送到上位機(jī)。RS232數(shù)字通訊提供了一個下位機(jī)與上位機(jī)系統(tǒng)的連接接口。
上位軟件的設(shè)計主要考慮到了軟件系統(tǒng)安全可靠,可移植性,基于當(dāng)下Windows平臺運(yùn)行及修改方便等因素。因此使用Visual C++2017分別開發(fā)了串口通訊程序,角度信息控制程序,曲線顯示等程序。其中的角度信息控制程序采用的是摩擦力矩與實(shí)時擺角的關(guān)系進(jìn)行設(shè)計,各部分通過動態(tài)鏈接庫組合成一個整體,其軟件結(jié)構(gòu)框圖如圖3所示。
圖3 上位機(jī)軟件結(jié)構(gòu)框圖
串口通信使用的是基于Visual C++2017開發(fā)平臺,與STM32控制器通信采用CMscomm類來實(shí)現(xiàn)。CMscomm是第三方提供的控件,使用它可以方便地在Visual C++里實(shí)現(xiàn)串口通信[1]。串口通信設(shè)計的部分代碼如下:
CMscomm m_ctrlComm;//創(chuàng)建 CMscomm 類的對象m_ctrlComm
codeNM=m_ctrlComm.get_CommEvent();//獲取串口事件碼
myVar.Attach(m_ctrlComm.get_Input());//讀 取接收數(shù)據(jù)
safarray_inp=myVar;
len=safarray_inp.GetOneDimSize();//得到有效數(shù)據(jù)長度
strtemp.Format(_T("%ld"),RX_count+=len);//接收字節(jié)數(shù)的累計
strtemp=_T("RX:")+strtemp;
m_ctrlRXCount.SetWindowText(strtemp);//顯 示接收數(shù)據(jù)的累計字節(jié)數(shù)
上位軟件角度信息的處理是通過讀取串口接收到的脈沖信息,一方面完成角度的換算,本文中用到的圓光柵碼盤為7 200線,360°產(chǎn)生7 200個脈沖,每個脈沖對應(yīng)0.05°以此進(jìn)行角度換算并顯示;另一方面完成軸承摩擦力矩的計算,計算公式如下:
其中,M為軸承摩擦力矩,m為徑向加載的重量,l為軸承回轉(zhuǎn)中心到整個單擺質(zhì)心的距離,q為一定周期內(nèi)單擺擺動到左側(cè)最大角度的減幅系數(shù),n為第n個周期,g為重力加速度。部分代碼如下:
GetDlgItem(IDC_EDIT_FUZAI_Z)->GetWindow-Text(strv2);//負(fù)載
GetDlgItem (IDC_EDIT_NeiQuan_R)->GetWindowText(strv1);//內(nèi)圈半徑
GetDlgItem (IDC_EDIT_DANBAI_L)->GetWindowText(strv);//單擺長
fenzi=(youj-zuoj)*m_dy3*m_dyy*10*2;
fenmu1=2*m_dy4*k_hd;
fenmu2=(m_dy4-1)*(t_hd-k_hd);
fuzaiz.Format(_T("%.5f"),mochal1);
GetDlgItem(IDC_EDIT_MCLiju)->SetWindowText(fuzaiz1);//摩擦力矩
上位軟件中使用TeeChart控件進(jìn)行實(shí)時擺角曲線的顯示,此控件具有界面美觀友好,開發(fā)便捷大大縮短程序的開發(fā)周期,并且具有高速的繪圖速度,利用TeeChart控件提供的接口函數(shù)進(jìn)行實(shí)時擺角顯示。部分代碼如下:
CSeries chart_T=(CSeries)m_Chart.Series(0);
chart_T.Clear();
m_pLineSerie->ClearSerie();
LeftMoveArray (m_TeeChartArray, m_c_arrayLength,randf(0,10));
數(shù)據(jù)庫的的設(shè)計是為了便于對檢測產(chǎn)品的測試數(shù)據(jù)的存儲,此系統(tǒng)設(shè)計了將待測試產(chǎn)品的相關(guān)信息保存到Excal功能,需要保存的產(chǎn)品信息如圖4所示。
圖4 測試產(chǎn)品信息存儲表格結(jié)構(gòu)
在Visual C++2017 MFC中使用ADO數(shù)據(jù)庫進(jìn)行Excal操作可以方便的將需要導(dǎo)出的信息保存,當(dāng)前各種主流數(shù)據(jù)庫有很多,包括Oracle,MS SQL Server,Sybase,Informix,MySQL MS ACCESS 等。ADO數(shù)據(jù)庫的訪問流程跟其他數(shù)據(jù)庫類似,此處不再詳細(xì)冗述,下面是使用Visual C++2017中開發(fā)ADO數(shù)據(jù)庫的步驟:
a)導(dǎo)入ADO動態(tài)鏈接庫
#import "c:programfilescommonfilessystemadomsado15.dll"no_namespace ename("EOF","adoEOF")
b)初始化OLE/COM庫環(huán)境
BOOL CExpApp::InitInstance()
{
AfxEnableControlContainer();
//初始化OLE DLLs
if(!AfxOleInit())
{
AfxMessageBox("初始化 OLE DLL 失敗!");
Return FALSE;
}
......
}
c)利用Connection對象鏈接數(shù)據(jù)源
_ConnectionPtr m_pConnection;
d)執(zhí)行SQL命令并取得結(jié)果記錄集
_RecordsetPtr m_pRecordset;
e)e)記錄集遍歷和更新
if(vID.vt!=VT_NULL&&vUsername.vt!=VT_NULL&&vOld.vt!=VT_NULL&&vBirthday.vt
!=VT_NULL)
TRACE("id:%d,日期:%s,產(chǎn)品編號:%d,摩擦力矩:%d",摩擦系數(shù):%d",
vID.lVal,
(LPCTSTR)(_bstr_t)vUsername,
vOld.lVal,
(LPCTSTR)(_bstr_t)vBirthday);
m_pRecordset->MoveNext();///移到下一條記錄
形成如圖4所示表單。
選取同一個軸承測量10次,分別徑向加載10 kg的條件下使用專用測量裝置對軸承摩擦力矩進(jìn)行測量,結(jié)果如下表1[2]所示。
表1 10 kg負(fù)載下測試數(shù)據(jù)
由測試數(shù)據(jù)表1[2]可以看出測試結(jié)果與計算得出的結(jié)果基本吻合,測試數(shù)據(jù)中存在的誤差是由測試的原理誤差和測試裝置的加工制造誤差組成,由于每個軸承加工的精度存在差異,同一個批次的軸承的摩擦力矩之間同樣存在差異,但是整體的相對誤差很小,同一批次的軸承的摩擦力矩不存在較大波動[2]。如圖 5、圖 6.
圖5 軸承摩擦力矩測試系統(tǒng)
圖6 上位機(jī)軟件界面
使用上述方案進(jìn)行設(shè)計的軸承摩擦力矩檢測系統(tǒng),測量的自動化程度高,上位機(jī)軟件可適用于基于Windows平臺的系統(tǒng),通用性強(qiáng)、畫面顯示直觀清晰且實(shí)時性較好。