stm32f103单片机—编码器测速
一、涉及資源
stm32f103ZET6開發(fā)板(非指定)
MG513P3012V型號(hào)電機(jī)(帶霍爾編碼器)(非指定)
二、涉及概念
1、單片機(jī)資源要求
此種測(cè)速方法要求單片機(jī)的定時(shí)器具有編碼器模式,對(duì)于stm32f1系列,具備編碼器模式的定時(shí)器有TIM1/2/3/4/5/8,定時(shí)器使用通道1、2來(lái)實(shí)現(xiàn)編碼器功能,接線時(shí)注意把A/B相接到定時(shí)器通道1/2的引腳。
2、減速比
電機(jī)結(jié)構(gòu)
減速結(jié)構(gòu)
減速比為1:30通俗地講就是當(dāng)電機(jī)外伸軸轉(zhuǎn)1圈時(shí)實(shí)際軸轉(zhuǎn)30圈,外伸軸我們一般接上輪胎等實(shí)際作用物體,而實(shí)際軸是電機(jī)自身的轉(zhuǎn)子,霍爾編碼器的檢測(cè)對(duì)象是實(shí)際軸
3、測(cè)速原理
霍爾編碼器工作方式
霍爾編碼器是一種通過(guò)磁電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器。霍爾編碼器是由霍爾碼盤和霍爾元件組成。霍爾碼盤是在一 定直徑的圓板上等分地布置有不同的磁極。電機(jī)旋轉(zhuǎn)一圈霍爾元件發(fā)出特定數(shù)目的脈沖信號(hào)。,用時(shí)間間隔內(nèi)接收的總的脈沖數(shù)目除以轉(zhuǎn)一圈發(fā)出的脈沖數(shù)目即可得到轉(zhuǎn)軸轉(zhuǎn)的圈數(shù),再除以時(shí)間間隔就能得到轉(zhuǎn)速。 為判斷轉(zhuǎn)向,一般輸出兩組存在一定相位差的方波信號(hào)。
定時(shí)器判斷電機(jī)正反轉(zhuǎn)的依據(jù)
定時(shí)器通道1、通道2接收A相和B相的脈沖信號(hào),轉(zhuǎn)一圈A相和B相發(fā)出的脈沖數(shù)目是一樣的,但是發(fā)送有先后之分。
定時(shí)器針對(duì)正反轉(zhuǎn)的兩種計(jì)數(shù)方式
定時(shí)器在編碼器模式下有兩種計(jì)數(shù)方式,正轉(zhuǎn)時(shí)是從重載值開始向下減數(shù),反轉(zhuǎn)時(shí)是從零開始向上加數(shù)(正反是相對(duì)而言的)。例如,如果我設(shè)定定時(shí)器的重載值為0x7fff,那么當(dāng)定時(shí)器接收到10個(gè)正轉(zhuǎn)的脈沖時(shí),計(jì)數(shù)值變?yōu)?x7ff3,當(dāng)定時(shí)器接收到的是反轉(zhuǎn)的脈沖時(shí),定時(shí)器的計(jì)數(shù)值變?yōu)?x000A。
定時(shí)器編碼器模式1、2、3
TI1和TI2分別為定時(shí)器的通道1和通道2
編碼器模式3即為四倍頻模式,這個(gè)模式下對(duì)于A和B相發(fā)過(guò)來(lái)的一組脈沖會(huì)有四次計(jì)數(shù)(四個(gè)跳變沿),這樣就能將檢測(cè)精度提到四倍。
4、M法測(cè)速
三、編碼器與單片機(jī)的接線
注:這里以stm32f1系列的定時(shí)器4為例,若使用其他定時(shí)器進(jìn)行測(cè)速需要更換對(duì)應(yīng)的引腳資源,編碼器A/B相需接到定時(shí)器的通道1和通道2
1、霍爾編碼器實(shí)物圖
接線
編碼器A相和B相接PB6和PB7引腳(無(wú)對(duì)應(yīng)要求)
四、單片機(jī)引腳和定時(shí)器的初始化
1、代碼示例
引腳選擇PB6和PB7
定時(shí)器選擇TIM4,使用編碼器模式3
五、讀定時(shí)器的計(jì)數(shù)值
定時(shí)器的計(jì)數(shù)值即為編碼器發(fā)出的脈沖數(shù)目*4(定時(shí)器的編碼器模式3)
/***************************************************** *@Func: 讀取定時(shí)器計(jì)數(shù)值 ****** *@para: ****** *@desc: ******************************************************/ void Read_EncoderA(void) {if(TIM4->CNT > 0x7fff){EncoderA = TIM4->CNT - 0xffff; // 反轉(zhuǎn)}else{EncoderA = TIM4->CNT; // 正轉(zhuǎn)}TIM4->CNT = 0xffff; }六、由定時(shí)器計(jì)數(shù)值得到轉(zhuǎn)速
1、計(jì)算公式
使用M法測(cè)速,計(jì)算公式為:
轉(zhuǎn)速n = 總脈沖數(shù)/四倍頻/單圈脈沖數(shù)/減速比/時(shí)間間隔
2、代碼示例
電機(jī)轉(zhuǎn)一圈本款霍爾編碼器發(fā)出13個(gè)脈沖,本款電機(jī)的減速比為1:30
/***************************************************** *@Func: 獲取電機(jī)A的速度 ****** *@para: ****** *@desc: 返回的是電機(jī)的轉(zhuǎn)速 n圈/s ****** 轉(zhuǎn)速n = 總脈沖數(shù)/四倍頻/單圈脈沖數(shù)/減速比/時(shí)間 ******************************************************/ void Get_MotorA_Speed(void) {Read_EncoderA(); // 獲取編碼器產(chǎn)生的脈沖數(shù)MotorASpeed = (float)EncoderA / 4 / PulseNum / ReRate / DecodeGapTime * 1000; }總結(jié)
以上是生活随笔為你收集整理的stm32f103单片机—编码器测速的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机内外存储器论文,计算机组成原理探讨
- 下一篇: ccs船用计算机检验标准,CCS 船用铸