编码器测速原理与实现
目錄:
- 一、測(cè)速原理
- 二、CubeMX配置編碼器模式
- 三、利用外部中斷采集脈沖
一、測(cè)速原理
通常情況下編碼器旋轉(zhuǎn)一周會(huì)輸出固定的脈沖數(shù),即編碼器的分辨率,通過測(cè)量固定時(shí)間T內(nèi)編碼器輸出的脈沖數(shù)即可求得電機(jī)的轉(zhuǎn)速。
假設(shè)編碼器的分辨率為P,T時(shí)間內(nèi)測(cè)得脈沖數(shù)m個(gè),則單倍頻(編碼器轉(zhuǎn)動(dòng)一圈輸出的脈沖數(shù)與分辨率相同)情況下電機(jī)轉(zhuǎn)速為:
(其中m/p為編碼器轉(zhuǎn)過的圈數(shù),再除以時(shí)間即為轉(zhuǎn)速)
編碼器AB相輸出兩列相位差為90°的方波,當(dāng)A相超前于B相90°時(shí)為正轉(zhuǎn),相反,B相超前于A相90°時(shí)為反轉(zhuǎn)
為了提高采樣精度,利用軟件實(shí)現(xiàn)四倍頻,即將編碼器的分辨率提高4倍。原理圖如上,一個(gè)小周期內(nèi)AB兩相分別各有一個(gè)上升沿和下降沿,只需要在AB兩相的每個(gè)上升沿、下降沿進(jìn)行采集,這樣就實(shí)現(xiàn)了四倍頻技術(shù),即如果編碼器分辨率為p,則現(xiàn)在編碼器轉(zhuǎn)動(dòng)一圈就可以采集到4p個(gè)脈沖
二、CubeMX配置編碼器模式
stm32的部分定時(shí)器有編碼器模式,可以直接利用該功能采集編碼器脈沖數(shù)
先配置串口,方便后期打印采集的數(shù)據(jù)
我這里采用定時(shí)器4做測(cè)速,選擇編碼器模式,Encoder Mode選擇Encoder Mode T1 and T2,這個(gè)模式下將在AB相的上升沿和下降沿進(jìn)行脈沖技術(shù),即四倍頻
配置一定時(shí)器用于定時(shí)讀取和清空脈沖數(shù),此處設(shè)置每500ms讀取一次
打開定時(shí)器全局中斷
配置時(shí)鐘
打開創(chuàng)建好的工程,在主函數(shù)中啟動(dòng)編碼器脈沖采集和定時(shí)器中斷
重定向
定時(shí)器中斷服務(wù)函數(shù)中讀取采集到的脈沖數(shù),TIM2的計(jì)數(shù)值為0-65535,采用short int類型對(duì)其強(qiáng)制類型轉(zhuǎn)換,若TIM2計(jì)數(shù)器值為0 ~ 32767,則強(qiáng)制轉(zhuǎn)化后的值仍為0 ~ 32767,電機(jī)正轉(zhuǎn);
若TIM2計(jì)數(shù)器值為32768 ~ 65535,則強(qiáng)制轉(zhuǎn)化后的值仍為-32768 ~ -1,電機(jī)反轉(zhuǎn);使用一階濾波減小誤差,每次采集的脈沖數(shù)保存至new_capturenumber,編碼器轉(zhuǎn)動(dòng)一圈輸出4096個(gè)脈沖,則new_capturenumber/4096為編碼器轉(zhuǎn)動(dòng)的圈數(shù),最后除以采集時(shí)間500ms就得到了電機(jī)轉(zhuǎn)速(r/s)
三、利用外部中斷采集脈沖
有些單片機(jī)沒有編碼器功能,如esp32,我們可以利用外部中斷對(duì)編碼器輸出脈沖進(jìn)行計(jì)數(shù)
設(shè)置PE11 PE14的外部中斷,上升沿、下降沿均觸發(fā)
打開全局中斷
配置一定時(shí)器每500ms讀取一次脈沖值
打開定時(shí)器全局中斷
編碼器正反轉(zhuǎn)時(shí),脈沖波形如上圖所示,我們可以先定義pulse_num來對(duì)脈沖進(jìn)行計(jì)數(shù)
當(dāng)A相下降沿時(shí),若B相為低電平則為反轉(zhuǎn),pulse_num減一,若B相為高電平則為正轉(zhuǎn),pulse_num加一
當(dāng)A相上升沿時(shí),若B相為低電平則為正轉(zhuǎn),pulse_num加一,若B相為高電平則為反轉(zhuǎn),pulse_num減一
當(dāng)B相下降沿時(shí),若A相為低電平則為正轉(zhuǎn),pulse_num加一,若A相為高電平則為反轉(zhuǎn),pulse_num減一
當(dāng)B相上升沿時(shí),若A相為低電平則為反轉(zhuǎn),pulse_num減一,若A相為高電平則為正轉(zhuǎn),pulse_num加一
即:
最后在定時(shí)器中斷函數(shù)中對(duì)采集到的脈沖個(gè)數(shù)處理,注意需要手動(dòng)清空pulse_num
總結(jié)
以上是生活随笔為你收集整理的编码器测速原理与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式分享合集140
- 下一篇: FastJson漏洞工具