一種傳感器采集處理方法
【專利摘要】本發(fā)明公開了一種傳感器采集處理方法,讀取編碼器的數(shù)值;判斷編碼器是否在運(yùn)動中,靜態(tài)的時候不需要該算法的處理,動態(tài)時再去執(zhí)行該算法;判斷運(yùn)動的趨勢,只有明確運(yùn)動趨勢就可以加入預(yù)測的環(huán)節(jié);處理讀取數(shù)值和預(yù)測數(shù)值的關(guān)系;是否有出入,有出入則按照預(yù)測數(shù)據(jù)判定出錯的位置,判定出錯的位置基于格雷碼的特性決定的;處理讀取的數(shù)值,返回準(zhǔn)確的數(shù)據(jù)。本發(fā)明根據(jù)數(shù)據(jù)的連續(xù)性,加入預(yù)測環(huán)節(jié),可以檢驗(yàn)數(shù)據(jù)的正確性,對錯誤的數(shù)據(jù)進(jìn)行糾正,提高旋轉(zhuǎn)編碼器使用的可靠性。
【專利說明】一種傳感器采集處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種傳感器采集處理方法,具體地說,它是一種基于格雷碼的旋轉(zhuǎn)編 碼器糾錯算法的傳感器采集處理方法。
【背景技術(shù)】
[0002] 格雷碼是一種比較特殊的編碼格式,在數(shù)據(jù)傳輸中有其獨(dú)特的特征,格雷碼在遞 增或遞減,若將任意兩個連續(xù)的數(shù)值轉(zhuǎn)換為二進(jìn)制時,其中只有一位發(fā)生改變,在信號傳輸 中,相鄰的信號差異小,可以提高其傳輸?shù)目煽啃浴K愿窭状a在旋轉(zhuǎn)編碼器上具有廣泛的 應(yīng)用。
[0003] 格雷碼旋轉(zhuǎn)編碼器在使用中,如果編碼器的16位中的某一位因?yàn)槲锢碓驅(qū)е?該狀態(tài)位出錯,按照傳統(tǒng)的采集方式,設(shè)備直接讀取旋轉(zhuǎn)編碼器的位置數(shù)值,然后將其作為 真實(shí)的數(shù)據(jù)參與設(shè)備的運(yùn)算,會導(dǎo)致使用設(shè)備的錯誤計(jì)算。
【發(fā)明內(nèi)容】
[0004] 為了避免發(fā)生錯誤,提高編碼器的使用壽命,增加產(chǎn)品的容錯性,降低維護(hù)成本, 本發(fā)明的目的是提供一種傳感器采集處理方法,采用該方法可以保證編碼器在出現(xiàn)錯誤 時,對錯誤的數(shù)據(jù)進(jìn)行糾正,實(shí)現(xiàn)正常的使用,不影響其他部件的運(yùn)行。
[0005] 本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的: 一種傳感器采集處理方法,其特征在于該方法包括以下步驟: 步驟1,讀取編碼器的數(shù)值:通過SPI的方式讀取旋轉(zhuǎn)編碼器的16位格雷碼,然后將格 雷碼轉(zhuǎn)換為正常的自然數(shù),作為被測位置的絕對位置值,該絕對位置值是旋轉(zhuǎn)編碼器齒輪 組的位置狀態(tài); 步驟2,判斷編碼器是否在運(yùn)動中:如果采集前后數(shù)值相同,認(rèn)為位置沒有發(fā)生變化, 終止算法,進(jìn)入步驟6 ;如果前后的數(shù)據(jù)不等,則認(rèn)為編碼器發(fā)生了旋轉(zhuǎn)動作,判定為在運(yùn) 動,進(jìn)入下一步驟; 步驟3,判斷運(yùn)動的趨勢:根據(jù)執(zhí)行機(jī)構(gòu)的開、關(guān)動作命令和設(shè)定的運(yùn)動方向,判定編 碼器數(shù)值的運(yùn)行方式是上升還是下降,判定方法如下: 31)執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)轫槙r針,執(zhí)行機(jī)構(gòu)動作命令為開時,則編碼器數(shù)值運(yùn)動趨勢為 上升; 32)執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)轫槙r針,執(zhí)行機(jī)構(gòu)動作命令為關(guān)時,則編碼器數(shù)值運(yùn)動趨勢為 下降; 33)執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)槟鏁r針,執(zhí)行機(jī)構(gòu)動作命令為開時,則編碼器數(shù)值運(yùn)動趨勢為 下降; 34)執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)槟鏁r針,執(zhí)行機(jī)構(gòu)動作命令為關(guān)時,則編碼器數(shù)值運(yùn)動趨勢為 上升; 步驟4,根據(jù)運(yùn)動趨勢預(yù)測數(shù)值;設(shè)定編碼器最小值發(fā)生變化的最短時間為T(秒), T=60/ (編碼器轉(zhuǎn)速(rpm)X單圈編碼值(整數(shù)));判定單片機(jī)的采集周期和處理周期總和 與T的關(guān)系; 當(dāng)大于等于T,終止算法,進(jìn)入步驟6 ; 當(dāng)小于T,如果編碼器數(shù)值運(yùn)動趨勢為上升,預(yù)測數(shù)值為上次編碼器正確數(shù)值加1 ;如 果編碼器數(shù)值運(yùn)動趨勢為下降,預(yù)測數(shù)值為上次編碼器正確數(shù)值減1 ; 步驟5,讀取數(shù)值和預(yù)測數(shù)值比較和糾錯處理:編碼器在正常的情況下,讀取數(shù)值和預(yù) 測數(shù)值是完全一樣的,不需要進(jìn)行糾錯處理;如果讀取的數(shù)值和預(yù)測的數(shù)值不等,則判定編 碼器讀取有問題,需要糾錯處理,處理方法為:將預(yù)測數(shù)值轉(zhuǎn)換成16位二進(jìn)制格雷碼,和實(shí) 際讀取到的16位二進(jìn)制格雷碼進(jìn)行比較,由于連續(xù)的兩個格雷碼,其16位二進(jìn)制只有一位 是不同的,不一樣的那一位就是編碼器的出問題的那一位,同時反饋編碼器的故障信息給 設(shè)備故障記錄單元; 步驟6,未進(jìn)行步驟五糾錯處理的當(dāng)前編碼器讀取數(shù)值或進(jìn)行步驟五糾錯處理后的預(yù) 測數(shù)值作為編碼器正確數(shù)值,參與下一輪的計(jì)算。
[0006] 本發(fā)明中,處理錯誤的二進(jìn)制位數(shù)時,不考慮二進(jìn)制16位中的低三位。
[0007] 本發(fā)明優(yōu)點(diǎn)在于: 1.根據(jù)編碼器在運(yùn)動的時候,產(chǎn)生的是連續(xù)的一組數(shù)據(jù),根據(jù)數(shù)據(jù)的連續(xù)性,加入預(yù)測 環(huán)節(jié),可以檢驗(yàn)數(shù)據(jù)的正確性,對錯誤的數(shù)據(jù)進(jìn)行糾正,提高編碼器的使用壽命和可靠性, 提高容錯率。
[0008] 2.本算法可以準(zhǔn)確判別格雷碼旋轉(zhuǎn)編碼器16位中不大于2個位,包含2個位出現(xiàn) 問題時,還可以繼續(xù)正常使用。
【專利附圖】
【附圖說明】
[0009] 圖1是本發(fā)明的方法流程圖。
【具體實(shí)施方式】
[0010] 一種傳感器采集處理方法,如附圖1所示,分為以下幾個步驟: 步驟1,讀取編碼器的數(shù)值:通過SPI的方式讀取旋轉(zhuǎn)編碼器的16位格雷碼,然后將格 雷碼轉(zhuǎn)換為正常的自然數(shù),作為被測位置的絕對位置值,該絕對位置值是旋轉(zhuǎn)編碼器齒輪 組的位置狀態(tài)。
[0011] 步驟2,判斷編碼器是否在運(yùn)動中:如果采集前后數(shù)值相同,認(rèn)為位置沒有發(fā)生變 化,終止算法,進(jìn)入步驟6 ;如果前后的數(shù)據(jù)不等,則認(rèn)為編碼器發(fā)生了旋轉(zhuǎn)動作,判定為在 運(yùn)動,進(jìn)入下一步驟。
[0012] 步驟3,判斷運(yùn)動的趨勢:根據(jù)執(zhí)行機(jī)構(gòu)的開、關(guān)動作命令和設(shè)定的運(yùn)動方向,判 定編碼器數(shù)值的運(yùn)行方式是上升還是下降,輸出結(jié)果如下表:
【權(quán)利要求】
1. 一種傳感器采集處理方法,其特征在于該方法包括以下步驟: 步驟1,讀取編碼器的數(shù)值:通過SPI的方式讀取旋轉(zhuǎn)編碼器的16位格雷碼,然后將格 雷碼轉(zhuǎn)換為正常的自然數(shù),作為被測位置的絕對位置值,該絕對位置值是旋轉(zhuǎn)編碼器齒輪 組的位置狀態(tài); 步驟2,判斷編碼器是否在運(yùn)動中:如果采集前后數(shù)值相同,認(rèn)為位置沒有發(fā)生變化, 終止算法,進(jìn)入步驟6 ;如果前后的數(shù)據(jù)不等,則認(rèn)為編碼器發(fā)生了旋轉(zhuǎn)動作,判定為在運(yùn) 動,進(jìn)入下一步驟; 步驟3,判斷運(yùn)動的趨勢:根據(jù)執(zhí)行機(jī)構(gòu)的開、關(guān)動作命令和設(shè)定的運(yùn)動方向,判定編 碼器數(shù)值的運(yùn)行方式是上升還是下降,判定方法如下: 31) 執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)轫槙r針,執(zhí)行機(jī)構(gòu)動作命令為開時,則編碼器數(shù)值運(yùn)動趨勢為 上升; 32) 執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)轫槙r針,執(zhí)行機(jī)構(gòu)動作命令為關(guān)時,則編碼器數(shù)值運(yùn)動趨勢為 下降; 33) 執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)槟鏁r針,執(zhí)行機(jī)構(gòu)動作命令為開時,則編碼器數(shù)值運(yùn)動趨勢為 下降; 34) 執(zhí)行機(jī)構(gòu)設(shè)定方向?yàn)槟鏁r針,執(zhí)行機(jī)構(gòu)動作命令為關(guān)時,則編碼器數(shù)值運(yùn)動趨勢為 上升; 步驟4,根據(jù)運(yùn)動趨勢預(yù)測數(shù)值;設(shè)定編碼器最小值發(fā)生變化的最短時間為1^4',T=60/ (編碼器轉(zhuǎn)速X單圈編碼值),其中,編碼器轉(zhuǎn)速單位為rpm,單圈編碼值為整數(shù)
;判定單片機(jī)的采集周期和處理周期總和與T 的關(guān)系; 當(dāng)大于等于T,終止算法,進(jìn)入步驟6 ; 當(dāng)小于T,如果編碼器數(shù)值運(yùn)動趨勢為上升,預(yù)測數(shù)值為上次編碼器正確數(shù)值加1 ;如 果編碼器數(shù)值運(yùn)動趨勢為下降,預(yù)測數(shù)值為上次編碼器正確數(shù)值減1 ; 步驟5,讀取數(shù)值和預(yù)測數(shù)值比較和糾錯處理:編碼器在正常的情況下,讀取數(shù)值和預(yù) 測數(shù)值是完全一樣的,不需要進(jìn)行糾錯處理;如果讀取的數(shù)值和預(yù)測的數(shù)值不等,則判定編 碼器讀取有問題,需要糾錯處理,處理方法為:將預(yù)測數(shù)值轉(zhuǎn)換成16位二進(jìn)制格雷碼,和實(shí) 際讀取到的16位二進(jìn)制格雷碼進(jìn)行比較,由于連續(xù)的兩個格雷碼,其16位二進(jìn)制只有一位 是不同的,不一樣的那一位就是編碼器的出問題的那一位,同時反饋編碼器的故障信息給 設(shè)備故障記錄單元; 步驟6,未進(jìn)行步驟五糾錯處理的當(dāng)前編碼器讀取數(shù)值或進(jìn)行步驟五糾錯處理后的預(yù) 測數(shù)值作為編碼器正確數(shù)值,參與下一輪的計(jì)算。
2. 根據(jù)權(quán)利要求1所述的傳感器采集處理方法,其特征在于:處理錯誤的二進(jìn)制位數(shù) 時,不考慮二進(jìn)制16位中的低三位。
【文檔編號】G01D5/00GK104482946SQ201410785788
【公開日】2015年4月1日 申請日期:2014年12月18日 優(yōu)先權(quán)日:2014年12月18日
【發(fā)明者】胡歙眉, 徐艷超, 王成 申請人:南京科遠(yuǎn)自動化集團(tuán)股份有限公司