昨天的文章中分享了一個(gè)小技巧:
設(shè)計(jì)小技巧:如何用MCU或FPGA的一個(gè)數(shù)字IO測(cè)量2個(gè)電位計(jì)的阻值變化?
實(shí)際上是利用了我們常用的PWM功能的一個(gè)逆向思維應(yīng)用。
今天再分享一個(gè)小技巧 - 如何使用一個(gè)MCU的模擬輸入端口連接多個(gè)旋轉(zhuǎn)編碼器?
作為一種輸入控制器件,旋轉(zhuǎn)編碼器被大量使用,尤其在測(cè)試測(cè)量領(lǐng)域,有的設(shè)備上會(huì)有多個(gè)旋轉(zhuǎn)編碼器用于調(diào)節(jié)多個(gè)參量。
一般來(lái)講,旋轉(zhuǎn)編碼器需要至少2根微控制器的輸入管腳,如果有內(nèi)置的按鍵,還需要第三根。如果連接2個(gè)旋轉(zhuǎn)編碼器那就要消耗掉6根輸入管腳,連接3個(gè)旋轉(zhuǎn)編碼器需要9根,以此類(lèi)推。。。
常用的旋轉(zhuǎn)編碼器的外形
旋轉(zhuǎn)編碼器的典型檢測(cè)電路
然而,如果你用的MCU有ADC的功能,其實(shí)只需要一根模擬輸入管腳就可以搞定多個(gè)旋轉(zhuǎn)編碼器的連接。
硬禾學(xué)堂的STM32 DIY示波器板用一個(gè)旋轉(zhuǎn)編碼器和2個(gè)按鍵作為輸入
聽(tīng)起來(lái)不可思議?
我們先看一下旋轉(zhuǎn)編碼器是如何使用的。
確定旋轉(zhuǎn)方向:
編碼器在旋轉(zhuǎn)的時(shí)候會(huì)同時(shí)在其”A“和”B“管腳輸出一串脈沖,從這兩串脈沖的相位關(guān)系上就可以確定編碼器的旋轉(zhuǎn)方向 - 將一路脈沖延遲”一步“并將2個(gè)脈沖進(jìn)行異或操作。
比如:
假設(shè)管腳 'A'的輸出為:'00110011...' ,管腳'B'的輸出為 '01100110...', 將 'A'的信號(hào)延遲一步,得到'01100110...'., 將延遲后的'A'同'B'異或,將得到'00000000...'. ,向另外要給方向旋轉(zhuǎn),管腳'A'的輸出變?yōu)?11001100...' ('B'不變), 這樣'A' 延遲一步編程'10011001...'.再跟'B'信號(hào)異或,就給出結(jié)果'11111111...'.
用模擬的方式來(lái)實(shí)現(xiàn):
我們可以把'A'和'B'輸出的信號(hào)一起看,當(dāng)成是一個(gè)2bit的并行總線(xiàn),能夠有4種組合的輸出: 0b00, 0b01, 0b10 and 0b11 (格雷碼).多個(gè)位數(shù)的二進(jìn)制值可以轉(zhuǎn)換成一個(gè)模擬電壓信號(hào),這本質(zhì)上就是一個(gè)數(shù)模轉(zhuǎn)換器.
R-2R電阻網(wǎng)絡(luò)
有一種非常簡(jiǎn)單實(shí)現(xiàn)的DAC是R-2R電阻網(wǎng)絡(luò),這種方法只使用兩個(gè)電阻值R和2R就可以構(gòu)成一個(gè)網(wǎng)絡(luò),每增加一個(gè)位數(shù),只需要增加兩個(gè)電阻。一個(gè)2根管腳的旋轉(zhuǎn)編碼器只需要4個(gè)電阻,如下圖:
這個(gè)電路可以產(chǎn)生4個(gè)不同電壓值的信號(hào),這個(gè)信號(hào)用單片機(jī)的ADC進(jìn)行量化解碼,即可解碼得到管腳”A“和”B“的值。一般旋轉(zhuǎn)編碼器還有一個(gè)按鍵,考慮到按鍵的輸入檢測(cè),電路可以變成下面這樣:
一個(gè)實(shí)際的實(shí)現(xiàn)
兩個(gè)旋轉(zhuǎn)編碼器再加上內(nèi)置的按鍵,共需要一個(gè)6位的DAC.一般MCU內(nèi)置的ADC為10位,可以非常輕松地解碼由此生成的模擬信號(hào),并且每1位相當(dāng)于還有4bit的分辨率余量,因此我們可以使用5%精度的電阻 (當(dāng)然1% 會(huì)更好).
R-2R的阻值相對(duì)于上拉電阻要足夠大,以避免引起R-2R的比值失衡,同時(shí)上拉電阻也不能太小,否則流過(guò)開(kāi)關(guān)觸點(diǎn)的電流會(huì)太大。
2R電阻可以簡(jiǎn)單地將兩個(gè)R阻值的電阻串聯(lián)起來(lái),還可以節(jié)省一種阻值的電阻.
為防止觸點(diǎn)的抖動(dòng)需要加一個(gè)0.01uF的電容,否則會(huì)引起兩個(gè)編碼器之間的干擾。
觸點(diǎn)抖動(dòng)噪聲
通過(guò)電容濾除掉觸點(diǎn)抖動(dòng)噪聲
是不是又Get到一個(gè)新技能?
繼續(xù)關(guān)注電子森林,會(huì)有更多設(shè)計(jì)技巧分享給大家。
原文標(biāo)題:逆向思維: 如何用一根MCU的模擬輸入檢測(cè)多個(gè)旋轉(zhuǎn)編碼器?
文章出處:【微信公眾號(hào):電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1620文章
21510瀏覽量
598930 -
mcu
+關(guān)注
關(guān)注
146文章
16667瀏覽量
347786 -
旋轉(zhuǎn)編碼器
+關(guān)注
關(guān)注
5文章
156瀏覽量
25887
原文標(biāo)題:逆向思維: 如何用一根MCU的模擬輸入檢測(cè)多個(gè)旋轉(zhuǎn)編碼器?
文章出處:【微信號(hào):xiaojiaoyafpga,微信公眾號(hào):電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論