久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

單片機(jī)的增量編碼器正交解碼

增量式編碼器增量式編碼器也成為正交編碼器,是通過兩個(gè)信號(hào)線的脈沖輸出來進(jìn)行數(shù)據(jù)處理,一個(gè)輸出脈沖信號(hào)就對(duì)應(yīng)于一個(gè)增量位移,編碼器每轉(zhuǎn)動(dòng)固定的位移,就會(huì)產(chǎn)生一個(gè)脈沖信號(hào)  通過讀取單位時(shí)間脈沖信號(hào)的數(shù)量,便可以達(dá)到測(cè)速的效果(v=s/t),通過對(duì)脈沖信號(hào)的累加,和編碼器的碼盤的周長(zhǎng)(轉(zhuǎn)一圈對(duì)應(yīng)距離)  便可以達(dá)到計(jì)算行走距離的效果(s=n*d)

看一下我用過的一種編碼器

編碼器信號(hào): A 脈沖輸出 B 脈沖輸出 Z 零點(diǎn)信號(hào) 當(dāng)編碼器旋轉(zhuǎn)到零點(diǎn)時(shí),Z信號(hào)會(huì)發(fā)出一個(gè)脈沖表示現(xiàn)在是零位置 表示編碼器轉(zhuǎn)了1圈,可用來記錄編碼器轉(zhuǎn)了多少圈,從而知道運(yùn)行距離VCC 電源線GND 地線

編碼器線數(shù):編碼器的線數(shù) ,是說編碼器轉(zhuǎn)一圈輸出多少個(gè)脈沖,,,如果一個(gè)編碼器是500線,說明這個(gè)編碼器轉(zhuǎn)一圈對(duì)應(yīng)的信號(hào)線會(huì)輸出500個(gè)脈沖, A B兩相轉(zhuǎn)一圈發(fā)出的脈沖數(shù)一樣的,不過存在90°相位差

線數(shù)越高代表編碼器能夠反應(yīng)的位置精度越高

編碼器原理:增量式編碼器有兩個(gè)脈沖輸出,A相和B相,并且兩個(gè)相位永遠(yuǎn)存在90°相位差。 如果兩個(gè)信號(hào)相位差為90度,則這兩個(gè)信號(hào)稱為正交。由于兩個(gè)信號(hào)相差90度,因此可以根據(jù)兩個(gè)信號(hào)哪個(gè)先哪個(gè)后來判斷方向、并且可以根據(jù)AB相脈沖信號(hào)數(shù)量測(cè)得速度,位移等,

編碼器正反轉(zhuǎn):

正轉(zhuǎn)的時(shí)候信號(hào)線A先輸出信號(hào),信號(hào)線B后輸出  A相超前B相90度  證明是正轉(zhuǎn)

反轉(zhuǎn)的時(shí)候信號(hào)線B先輸出信號(hào),信號(hào)線A后輸出 B相超前A相90度 證明是反轉(zhuǎn)

STM32定時(shí)器編碼器模式

   

STM32的編碼器模式共有三種:

 僅在TL1計(jì)數(shù)(A相) 僅在TL2計(jì)數(shù)(B相) 在TL1和TL2都計(jì)數(shù)(A相和B相都計(jì)數(shù)) 

僅在TL1計(jì)數(shù)(A相)                  

TI2(B相)為高電平時(shí):

1時(shí)刻: TI1(A相)下降沿,  則向上計(jì)數(shù)(正轉(zhuǎn))。

2時(shí)刻:TI1(A相)上升沿,   則向下計(jì)數(shù)(反轉(zhuǎn))

TI2(B相)為低電平時(shí):

3時(shí)刻: TI1(A相)上升沿,  則向上計(jì)數(shù)(正轉(zhuǎn))。

4時(shí)刻:TI1(A相)下降沿,   則向下計(jì)數(shù)(反轉(zhuǎn))

僅在TL2計(jì)數(shù)(B相)

TI1(A相)為高電平時(shí):

1時(shí)刻: TI2(B相)上升沿,  則向上計(jì)數(shù)(正轉(zhuǎn))。

2時(shí)刻:TI2(B相)下降沿,   則向下計(jì)數(shù)(反轉(zhuǎn))

TI2(B相)為低電平時(shí):

3時(shí)刻: TI2(B相)下降沿,  則向上計(jì)數(shù)(正轉(zhuǎn))。

4時(shí)刻:TI2(B相)上升沿,   則向下計(jì)數(shù)(反轉(zhuǎn))

在TL1和TL2都計(jì)數(shù)(A相和B相都計(jì)數(shù))

一個(gè)脈沖信號(hào)周期完成4次跳變。精度提高

1時(shí)刻:TI2為低電平,TI1上升沿跳變,計(jì)數(shù)器向上計(jì)數(shù);

2時(shí)刻:TI1為高電平,TI2上升沿跳變,計(jì)數(shù)器仍然向上計(jì)數(shù);

3時(shí)刻:TI2為高電平,TI1下降沿跳變,計(jì)數(shù)器仍然向上計(jì)數(shù);

4時(shí)刻:TI1為低電平,TI2下降沿跳變,計(jì)數(shù)器仍然向上計(jì)數(shù)。 

毛刺:只有一個(gè)相位脈沖   過濾掉 編碼器轉(zhuǎn)動(dòng)過程中可能產(chǎn)生的毛刺過濾掉

計(jì)數(shù)器向下計(jì)數(shù)原理相同   看圖即可很好理解。

計(jì)數(shù)器向下計(jì)數(shù):

A下降沿,B低電平B下降沿,A高電平B上升沿,A低電平A上升沿,B高電平

上升沿與下降沿參看 《外部中斷----高低電平觸發(fā),(邊沿觸發(fā))上升沿觸發(fā)和下降沿觸發(fā)區(qū)別》

注意事項(xiàng):需要增加測(cè)量的精度時(shí),可以采用4倍頻方式,即分別在A、B相波形的上升沿和下降沿計(jì)數(shù),分辨率可以提高4倍,如果只是測(cè)速,不要求方向,那么只需要用單片機(jī)隨意選擇一個(gè)信號(hào)線就行了,,然后定時(shí)器邊沿觸發(fā),檢測(cè)脈沖計(jì)數(shù)即可一般是定時(shí)器的通道1和2才能作為編碼器輸入口,對(duì)應(yīng)編碼器輸出的兩相。GPIO配置為配置為上拉輸入模式一個(gè)定時(shí)器做一種工作,如果你配置了編碼器模式,那么剩下的通道就不能配置其他模式兩相計(jì)數(shù)模式下,  讀出來數(shù)需要/4          一個(gè)脈沖信號(hào)對(duì)應(yīng)四次計(jì)數(shù)  

編碼器配置標(biāo)準(zhǔn)外設(shè)庫

TIM_EncoderInterfaceConfig,它就是編碼器接口的配置函數(shù)。簡(jiǎn)單的只需要配置該函數(shù),使能TIM,即可實(shí)現(xiàn)采集編碼器上面的信息

void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,                                uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity)

TIMx參數(shù)就是使用哪個(gè)定時(shí)器作為編碼器接口的捕捉定時(shí)器。

TIM_EncoderMode參數(shù)是模式,是單相計(jì)數(shù)(僅在TL1計(jì)數(shù)或僅在TL2計(jì)數(shù))還是兩相計(jì)數(shù)(在TL1和TL2都計(jì)數(shù))。

TIM_IC1Polarity和TIM_IC2Polarity參數(shù)就是通道1、2的捕捉極性。

如果計(jì)數(shù)器只在TI2的邊沿計(jì)數(shù),則置TIMx_SMCR寄存器中的SMS=001;如果只在TI1邊沿計(jì)數(shù),則置SMS=010;如果計(jì)數(shù)器同時(shí)在TI1和TI2邊沿計(jì)數(shù),則置SMS=011 

編碼器模式功能:  stm32f407中定時(shí)器1、2、3、4、5、8提供編碼器接口模式   可以對(duì)輸入信號(hào)TI1,TI2進(jìn)行濾波處理,數(shù)字濾波器由事件器組成,每N個(gè)事件才視為一個(gè)有效邊沿,可以在TIMx_CCMR1、TIMx_CCMR2中的IC1F位域設(shè)置      也就是可以設(shè)置每產(chǎn)生幾次脈沖才視為1次有效  各個(gè)值的計(jì)算:轉(zhuǎn)速計(jì)算方法:用捕獲值(一秒內(nèi)輸出的脈沖數(shù))/編碼器線數(shù)(轉(zhuǎn)速一圈輸出脈沖數(shù))/電機(jī)減數(shù)比(內(nèi)部電機(jī)轉(zhuǎn)動(dòng)圈數(shù)與電機(jī)輸出軸轉(zhuǎn)動(dòng)圈數(shù)比,即減速齒輪比    沒有則不用除)

運(yùn)動(dòng)距離計(jì)算:輸出的總脈沖數(shù) / 編碼器線數(shù)*編碼器齒輪周長(zhǎng)

所轉(zhuǎn)角度計(jì)算:    輸出的總脈沖數(shù) / 編碼器線數(shù) *360     或    溢出中斷次數(shù)*360+當(dāng)前計(jì)數(shù)值 

轉(zhuǎn)動(dòng)方向: 方向在定時(shí)器CR1的DIR位里   dir=(TIMX->CR1 & 0x0010)>>4;     //取方向標(biāo)志位if(dir > 0)  //向下計(jì)數(shù)     else     //向上計(jì)數(shù)

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關(guān)注 212
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧