性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

lihui710884923
認(rèn)證:VIP會員
作者動態(tài)
物聯(lián)網(wǎng)專題之NB-IoT項(xiàng)目框架(二)
2024-07-25 11:53
物聯(lián)網(wǎng)專題之介紹(一)
2024-07-11 18:37
單片機(jī)RTC的中斷剖析
2024-03-09 15:28
串口通訊的來龍去脈
2024-02-14 17:32
stm32單片機(jī)的USB燒錄程序
2023-09-08 22:48

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

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

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

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

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

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

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

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

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

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

STM32定時器編碼器模式

   

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

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

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

TI2(B相)為高電平時:

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

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

TI2(B相)為低電平時:

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

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

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

TI1(A相)為高電平時:

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

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

TI2(B相)為低電平時:

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

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

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

一個脈沖信號周期完成4次跳變。精度提高

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

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

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

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

毛刺:只有一個相位脈沖   過濾掉 編碼器轉(zhuǎn)動過程中可能產(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):需要增加測量的精度時,可以采用4倍頻方式,即分別在A、B相波形的上升沿和下降沿計(jì)數(shù),分辨率可以提高4倍,如果只是測速,不要求方向,那么只需要用單片機(jī)隨意選擇一個信號線就行了,,然后定時器邊沿觸發(fā),檢測脈沖計(jì)數(shù)即可一般是定時器的通道1和2才能作為編碼器輸入口,對應(yīng)編碼器輸出的兩相。GPIO配置為配置為上拉輸入模式一個定時器做一種工作,如果你配置了編碼器模式,那么剩下的通道就不能配置其他模式兩相計(jì)數(shù)模式下,  讀出來數(shù)需要/4          一個脈沖信號對應(yīng)四次計(jì)數(shù)  

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

TIM_EncoderInterfaceConfig,它就是編碼器接口的配置函數(shù)。簡單的只需要配置該函數(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ù)就是使用哪個定時器作為編碼器接口的捕捉定時器。

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ù)器同時在TI1和TI2邊沿計(jì)數(shù),則置SMS=011 

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

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

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

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

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