增量式編碼器定時器配置和速度計算的處理方法


MCU定時器的CNT寄存器一般是16位的,使用定時器的編碼器正交接口功能,計數周期有兩種配置方法:
1、計數周期與編碼器脈沖數相等

TIM_TimeBaseStructure.TIM_Period = (uint16_t)(PulseNumber) - 1u; 

好處就是轉子電角度獲取不用做處理,由當前CNT計數值可以很方便對應到轉子電角度。

缺點則是圈數計數溢出時,位置計數沒有達到有符號2進制的溢出但被強制處理,也就是說位置計數不能在數據格式里完成連續循環,這樣在溢出點前后數據就不連貫。如果使用位置信息計算轉速,在溢出點前后的兩次位置數據相減就會得到錯誤的速度,這樣為保證測速的連貫性,就需要對位置信息做移位處理,這樣就限制了編碼器脈沖數必須為2的次數,或者速度計算不采用位置數據,記錄兩次的圈數和脈沖,分開相減后再處理,這樣就避免溢出點的問題了。但即使這樣正確處理了速度計算,編碼器最大支持脈沖仍不能大於65535。

2、計數周期等於65535

TIM_TimeBaseStructure.TIM_Period = 65535; 

好處很明顯,這樣可以保證位置信息的連貫性,速度計算也不需要特殊處理,直接使用位置信息計算就可以,並且對編碼器脈沖數也沒有限制,可以支持很高精度的編碼器。

缺點則是無法從CNT中直接得到當前的轉子電角度,需要從位置信息中處理得到,不過處理也不復雜,可以說方法2適應性更好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM