平衡小车—编码器使用教程与测速原理
文章目錄
- 1.編碼器概述
- 2.編碼器原理
- 3.編碼器接線說(shuō)明
- 4.編碼器軟件四倍頻技術(shù)
- 5.單片機(jī)如何采集編碼器數(shù)據(jù)
- 6.獲取方式
來(lái)自平衡小車之家,與大家一起學(xué)習(xí)編碼器使用與測(cè)速原理。
1.編碼器概述
??編碼器是一種將角位移或者角速度轉(zhuǎn)換成一連串電數(shù)字脈沖的旋轉(zhuǎn)式傳感器,我們可以通過編碼器測(cè)量到底位移或者速度信息。編碼器從輸出數(shù)據(jù)類型上分,可以分為增量式編碼器和絕對(duì)式編碼器。
??從編碼器檢測(cè)原理上來(lái)分,還可以分為光學(xué)式、磁式、感應(yīng)式、電容式。常見的是光電編碼器(光學(xué)式)和霍爾編碼器(磁式)。
2.編碼器原理
??光電編碼器是一種通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器。光電編碼器是由光碼盤和光電檢測(cè)裝置組成。光碼盤是在一定直徑的圓板上等分地開通若干個(gè)長(zhǎng)方形孔。由于光電碼盤與電動(dòng)機(jī)同軸,電動(dòng)機(jī)旋轉(zhuǎn)時(shí),檢測(cè)裝置檢測(cè)輸出若干脈沖信號(hào),為判斷轉(zhuǎn)向,一般輸出兩組存在一定相位差的方波信號(hào)。
??霍爾編碼器是一種通過磁電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器。霍爾編碼器是由霍爾碼盤和霍爾元件組成。霍爾碼盤是在一定直徑的圓板上等分地布置有不同的磁極。霍爾碼盤與電動(dòng)機(jī)同軸,電動(dòng)機(jī)旋轉(zhuǎn)時(shí),霍爾元件檢測(cè)輸出若干脈沖信號(hào),為判斷轉(zhuǎn)向,一般輸出兩組存在一定相位差的方波信號(hào)。
??可以看到兩種原理的編碼器目的都是獲取AB相輸出的方波信號(hào),其使用方法也是一樣,下面是一個(gè)簡(jiǎn)單的示意圖。
講下增量型旋轉(zhuǎn)編碼器的工作原理,再拆開一個(gè)編碼器看看內(nèi)部構(gòu)造
3.編碼器接線說(shuō)明
??具體到我們的編碼器電機(jī),我們可以看看電機(jī)編碼器的實(shí)物。
??這是一款增量式輸出的霍爾編碼器。編碼器有AB相輸出,所以不僅可以測(cè)速,還可以辨別轉(zhuǎn)向。根據(jù)上圖的接線說(shuō)明可以看到,我們只需給編碼器電源5V供電,在電機(jī)轉(zhuǎn)動(dòng)的時(shí)候即可通過AB相輸出方波信號(hào)。編碼器自帶了上拉電阻,所以無(wú)需外部上拉,可以直接連接到單片機(jī)IO讀取。
4.編碼器軟件四倍頻技術(shù)
??下面我們說(shuō)一下編碼器倍頻的原理。為了提高大家下面學(xué)習(xí)的興趣,我們先明確,這是一項(xiàng)實(shí)用的技術(shù),可以真正地把編碼器的精度提升4倍。作用可類比于單反相機(jī)的光學(xué)變焦,而并非犧牲清晰度來(lái)放大圖像的數(shù)碼變焦。
??0K,先看看下面編碼器輸出的波形圖。
??這里,我們是通過軟件的方法實(shí)現(xiàn)四倍頻。首先可以看到上圖編碼器輸出的AB相波形,正常情況下我們使用M法測(cè)速的時(shí)候,會(huì)通過測(cè)量單位時(shí)間內(nèi)A相輸出的脈沖數(shù)來(lái)得到速度信息。常規(guī)的方法,我們只測(cè)量A相(或B相)的上升沿或者下降沿,也就是上圖中對(duì)應(yīng)的數(shù)字1234中的某一個(gè),這樣就只能計(jì)數(shù)3次。而四倍頻的方法是測(cè)量A相和B相編碼器的上升沿和下降沿。這樣在同樣的時(shí)間內(nèi),可以計(jì)數(shù)12次(3個(gè)1234的循環(huán))。這就是軟件四倍頻的原理。
5.單片機(jī)如何采集編碼器數(shù)據(jù)
??因?yàn)榫幋a器輸出的是標(biāo)準(zhǔn)的方波,所以我們可以使用單片機(jī)(STM32\STM851等)直接讀取。在軟件中的處理方法是分兩種,自帶編碼器接口的單片機(jī)如STM32,可以直接使用硬件計(jì)數(shù)。而沒有編碼器接口的單片機(jī)如51單片機(jī),可以通過外部中斷讀取,比如把編碼器A相輸出接到單片機(jī)的外部中斷輸入口,這樣就可通過跳變沿觸發(fā)中斷,然后在對(duì)應(yīng)的外部中斷服務(wù)函數(shù)里面,通過B相的電平來(lái)確定正反轉(zhuǎn)。如當(dāng)A相來(lái)一個(gè)跳變沿的時(shí)候,如果B相是高電平就認(rèn)為是正轉(zhuǎn),低電平就認(rèn)為是反轉(zhuǎn)。
/************************************************************************** 函數(shù)功能:單位時(shí)間讀取編碼器計(jì)數(shù) 入口參數(shù):定時(shí)器 返回 值:速度值 **************************************************************************/ int Read_Encoder(u8 TIMX) {int Encoder_TIM; switch(TIMX){case 2: Encoder_TIM= (short)TIM2 -> CNT; TIM2 -> CNT=0;break;case 3: Encoder_TIM= (short)TIM3 -> CNT; TIM3 -> CNT=0;break; case 4: Encoder_TIM= (short)TIM4 -> CNT; TIM4 -> CNT=0;break; default: Encoder_TIM=0;}return Encoder_TIM; } /************************************************************************** 函數(shù)功能:TIM4中斷服務(wù)函數(shù) 入口參數(shù):無(wú) 返回 值:無(wú) **************************************************************************/ void TIM4_IRQHandler(void) { if(TIM4->SR&0X0001)//溢出中斷{ } TIM4->SR&=~(1<<0);//清除中斷標(biāo)志位 } /************************************************************************** 函數(shù)功能:TIM2中斷服務(wù)函數(shù) 入口參數(shù):無(wú) 返回 值:無(wú) **************************************************************************/ void TIM2_IRQHandler(void) { if(TIM2->SR&0X0001)//溢出中斷{ } TIM2->SR&=~(1<<0);//清除中斷標(biāo)志位 }6.獲取方式
??測(cè)試編碼器代碼獲取方式,關(guān)注微信公眾號(hào):果果小師弟,后套回復(fù):編碼器。即可獲取STM32測(cè)試編碼器代碼。
總結(jié)
以上是生活随笔為你收集整理的平衡小车—编码器使用教程与测速原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会议上的录音怎么转文字
- 下一篇: wince 快速挂载SD卡及U盘