Ⅰ 關(guān)于編碼器
編碼器的種類有很多,什么增量式編碼器、絕對(duì)值編碼器,有軸或者無軸編碼器,電壓輸出、推拉輸出、集電極開路輸出等等。但不管什么類型的編碼器,其目的都類似,得到轉(zhuǎn)動(dòng)的角度,角速度、位移等。
本文講述常見的增量式編碼器,增量式編碼器也可以叫正交編碼器,也就是說可以通過其A、B的相位知道編碼器是正轉(zhuǎn),還是反轉(zhuǎn),還可以根據(jù)編碼器參數(shù)得出旋轉(zhuǎn)了多少角度等。
常見的增量式編碼器A、B、Z三根線代表什么意思呢?使用過編碼器的人不難理解,這里簡(jiǎn)單給初學(xué)者講述一下:
A、B兩線提供相位相差90度的脈沖信號(hào),用其來計(jì)算旋轉(zhuǎn)的角度;Z線為過零點(diǎn)線,也就是說每轉(zhuǎn)一轉(zhuǎn),經(jīng)過某一點(diǎn)都會(huì)輸出一個(gè)脈沖信號(hào),主要用于“過零校正”,三線的信號(hào)大致如下圖(左邊):
有些編碼器出來的線有一個(gè)對(duì)應(yīng)的“非”信號(hào)線(如上圖右邊),其實(shí)主要用于抗干擾的。
更多關(guān)于編碼器的描述,請(qǐng)網(wǎng)上搜索相關(guān)的知識(shí)進(jìn)行了解,本文不再講述。
在STM32芯片中,都有這么一個(gè)定時(shí)器,叫通用定時(shí)器“General-purpose timers”,定時(shí)器里面存在這么一個(gè)模式,叫編碼器接口模式“Encoder interface mode”。當(dāng)然,具體是哪一個(gè)TIM,可參看芯片對(duì)應(yīng)的數(shù)據(jù)手冊(cè),可以一目了然。
STM32提供的編碼器接口模式主要針對(duì)的就是“正交編碼器”,它可以利用定時(shí)器的“計(jì)數(shù)”功能,得出編碼器計(jì)了多少個(gè)脈沖;同時(shí),它可以根據(jù)編碼器AB的相位得出編碼器是正轉(zhuǎn),還是反轉(zhuǎn)。
(圖片來自STM32參考手冊(cè))
1.計(jì)算脈沖個(gè)數(shù)
有點(diǎn)類似TIM的捕獲功能,捕獲A相、B相的脈沖信號(hào);只是編碼器模式是捕獲A(TI1)、B(TI2)相的邊沿信號(hào)(如上圖),相當(dāng)于一個(gè)周期內(nèi),計(jì)4個(gè)脈沖信號(hào)的值。
2.計(jì)數(shù)器的增減(方向)
STM32的計(jì)數(shù)器會(huì)根據(jù)方向(+ 或者 -)來進(jìn)行計(jì)數(shù),TI1和TI2相位相差90,4個(gè)階段的邊沿,對(duì)應(yīng)TI1和TI2不同電平信號(hào),從這個(gè)不同的信號(hào),硬件自身可以判斷出其方向。在編碼器模式下,有個(gè)寄存器(TIMx_CR1)中有一個(gè)方向位(DIR),會(huì)隨著編碼器旋轉(zhuǎn)方向的改變而改變,我們可以通過讀取該位來判斷編碼器的正轉(zhuǎn),還是反轉(zhuǎn)。
3.TIM時(shí)基
STM32編碼器接口模式,其實(shí)是通過利用AB相位TIM時(shí)基提供時(shí)鐘信號(hào),使其計(jì)數(shù)。
Ⅲ 應(yīng)用編程
相信看了上面的一些描述,大家應(yīng)該對(duì)編碼器有所理解了。其實(shí),在STM32中,可以通過配置編碼器模式對(duì)應(yīng)的函數(shù),就能實(shí)現(xiàn)獲取編碼器傳感器上面的信息了。
使用STM32提供的標(biāo)準(zhǔn)外設(shè)庫,或者使用STM32CubeMX工具很容易將TIM配置成編碼器模式。
1.標(biāo)準(zhǔn)外設(shè)庫配置編碼器
TIM_EncoderInterfaceConfig,它就是編碼器接口的配置函數(shù)。簡(jiǎn)單的只需要配置該函數(shù),使能TIM,即可實(shí)現(xiàn)采集編碼器上面的信息。(當(dāng)然,需要復(fù)雜的操作,還需要做其他相應(yīng)的配置)
void ENCODER_Configuration(void){ TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); TIM_Cmd(TIM3, ENABLE);}
2.STM32CubeMX配置
STM32CubeMX是一套快速開發(fā)的工具,讓很多不了解STM32底層的朋友可以快速的在STM32上編寫應(yīng)用程序。
本文說的配置編碼器接口,在某些TIM上存在一個(gè)“Combined Channel”配置,可以理解為“連接通道”,也算是TIM的一種復(fù)用模式。選擇里面的“Encoder Mode”即可。
Ⅳ 實(shí)例代碼
本文提供的代碼為一個(gè)使用標(biāo)準(zhǔn)外設(shè)庫編寫的簡(jiǎn)單Demo工程,其中里面附帶一個(gè)工程(用于模擬編碼器AB相波形的工程),如下如:
該工程主要配置TIM的編碼器模式,通過定時(shí)讀取編碼器的方向(DIR),和計(jì)數(shù)(CNT),并通過串口打印出來。
下載地址:
百度網(wǎng)盤:
鏈接:https://pan.baidu.com/s/1jH8yOqM
密碼:t4kx
GitHub:
https://github.com/EmbeddDeveloper/STM32F4_TIM_Encoder
CSDN:
http://download.csdn.net/download/ybhuangfugui/10165086
-
編碼器
+關(guān)注
關(guān)注
45文章
3815瀏覽量
138259 -
接口
+關(guān)注
關(guān)注
33文章
9019瀏覽量
153833 -
STM32
+關(guān)注
關(guān)注
2295文章
11033瀏覽量
365526
發(fā)布評(píng)論請(qǐng)先 登錄
增量型編碼器與絕對(duì)值型編碼器怎么選擇?
軸編碼器與無軸承編碼器,到底如何選擇?

伺服電機(jī)編碼器怎么選型

DISCOAA編碼器性質(zhì)特點(diǎn)
DISCOAA編碼器類型功能
磁編碼器工作原理解析 磁編碼器與光編碼器的比較
編碼器種類大觀:探索技術(shù)前沿與應(yīng)用創(chuàng)新
增量編碼器與絕對(duì)值編碼器的區(qū)別

二進(jìn)制編碼器與絕對(duì)編碼器的區(qū)別
二進(jìn)制編碼器應(yīng)用場(chǎng)景 二進(jìn)制編碼器與模擬編碼器比較
增量編碼器和絕對(duì)值編碼器是什么

磁電編碼器和光電編碼器的區(qū)別
Unit-Scroll|滾輪旋轉(zhuǎn)編碼器拓展單元

評(píng)論