找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4587|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+旋轉(zhuǎn)編碼器的使用問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  買了一個(gè)旋轉(zhuǎn)編碼器模塊,之前單片機(jī)也是小白,但想學(xué)會(huì)使用編碼器,以后可以做應(yīng)用玩。對(duì)自己編程邏輯思維沒(méi)有信心,所以在論壇上找了很多例程,有3,4段,編碼器的基本原理和編程思想也有點(diǎn)看明白了,但每個(gè)程序改來(lái)改去都用不了,好幾天都沒(méi)有進(jìn)展。。崩潰。直到自己換了一個(gè)拆機(jī)的3線編碼器,發(fā)現(xiàn)有數(shù)值變化,才證明不是程序?qū)戝e(cuò)了。。這個(gè)編碼器有用過(guò)的嗎?是模塊設(shè)計(jì)的有問(wèn)題嗎?直接從編碼器引線是可以用的,短接掉RC濾波器的R也能用。是什么原因造成的呢?和51單片機(jī)兼容不行?解決辦法可以把R1,R4換成小電阻嗎?

IMG_20210114_223337.jpg (725.42 KB, 下載次數(shù): 89)

IMG_20210114_223337.jpg

IMG_20210114_223416.jpg (920.7 KB, 下載次數(shù): 74)

IMG_20210114_223416.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2021-1-15 08:51 | 只看該作者
編碼開(kāi)關(guān)不需要電阻的,中間一根線接地,兩邊兩根線隨便接兩個(gè)IO就可以了,如果想要放心一點(diǎn),那就加分別加一個(gè)上拉電阻就可以了
你測(cè)量阻值是沒(méi)有意義的,編碼開(kāi)關(guān)實(shí)際上是通過(guò)檢測(cè)哪個(gè)引腳先導(dǎo)通來(lái)區(qū)分順時(shí)針還是逆時(shí)針轉(zhuǎn)動(dòng)的
編碼開(kāi)關(guān)是分好幾種的,你一定要先這個(gè)開(kāi)關(guān)的資料,再根據(jù)這個(gè)開(kāi)關(guān)的時(shí)序圖來(lái)寫程序,不同的開(kāi)關(guān)有不同的程序

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:517951 發(fā)表于 2021-1-15 09:17 | 只看該作者
我用At89C52 接5線旋轉(zhuǎn)編碼器才用查詢法調(diào)試, 右旋調(diào)大,左旋調(diào)小,就是不能快速旋轉(zhuǎn)會(huì)反應(yīng)不過(guò)來(lái).偶爾會(huì)有左旋反而調(diào)大,右旋反而調(diào)小發(fā)生, 總體可用.  線路上只有10k上拉電阻, MPU和編碼器之間沒(méi)有串10K電阻.

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:387856 發(fā)表于 2021-1-15 09:24 | 只看該作者
就用你自己畫的那個(gè)原理圖,同上電,旋轉(zhuǎn)開(kāi)關(guān),看一下輸出端的波形,你就明白了。要學(xué)會(huì)用示波器去分析電路

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:390416 發(fā)表于 2021-1-15 11:23 | 只看該作者
用《人人學(xué)會(huì)單片機(jī)》視頻教程的代碼,直接IO口接上就行了。如果P0需要上拉。不需要電容 更不需要串聯(lián)電阻。主函數(shù)高速循環(huán)不斷的調(diào)用以下掃描函數(shù)就行了。
以下代碼的A和B分別代表兩個(gè)普通IO口。
void ROTARY_ROTARY_Scan_Drive(void)
{
        static xdata u8 count=0,Rotary_Flag=0;
        if(count>30)
        {
                count=0;
                if((ROTARY_B==0)&&(Rotary_Flag==0))                        //如果按鍵B按下,且flag是0       
                {
                        Rotary_Flag=1;
                        Rotary_Read_Data_Rotary++;                                //按鍵值增加1               
                }
                if((ROTARY_A==0)&&(Rotary_Flag==0))                        //如果按鍵A按下,且flag是0       
                {
                        Rotary_Flag=1;
                        Rotary_Read_Data_Rotary--;                                //按鍵值減少1
                }
                if((ROTARY_B!=0)&&(ROTARY_A!=0))                        //按鍵必須釋放,下次按鍵才有效
                {
                        Rotary_Flag=0;
                }
        }
        count++;
}

回復(fù)

使用道具 舉報(bào)

6#
ID:261025 發(fā)表于 2021-1-15 13:34 | 只看該作者
編碼器直接和單片機(jī)相連 中間沒(méi)有任何器件  如果接在P0口就要接上拉電阻  判斷旋轉(zhuǎn)方向就是先判斷哪個(gè)腳先接地     比如三個(gè)腳分別是A左 B右  G地    向左轉(zhuǎn)是A先接地 然后B在接地  向右轉(zhuǎn)是B先接地 A后接地  只要判斷出AB哪個(gè)先接地就可以判斷出旋轉(zhuǎn)方向  然后在延時(shí)等待下一次AB哪個(gè)按鍵先接地  延時(shí)時(shí)間慢慢調(diào) 確?鞌Q不會(huì)丟失對(duì)AB每一次接地的檢測(cè) 也確保擰一下不會(huì)相當(dāng)于擰了N多下  

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:267932 發(fā)表于 2021-1-15 16:15 | 只看該作者
沒(méi)有絕對(duì)的誰(shuí)對(duì)誰(shuí)錯(cuò), 第一步先檢查編碼器,抓去在旋轉(zhuǎn)編碼器的兩個(gè)腳是否發(fā)生變化,一般有變化編碼器都是正常的, 如果編碼器輸出信號(hào)對(duì),那第二步就要看程序抓取信號(hào)對(duì)不對(duì)了。

編碼器的類型不同輸出的信號(hào)順序是不一樣的。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:390416 發(fā)表于 2021-1-15 16:54 | 只看該作者
liuhailan5757 發(fā)表于 2021-1-15 09:24
就用你自己畫的那個(gè)原理圖,同上電,旋轉(zhuǎn)開(kāi)關(guān),看一下輸出端的波形,你就明白了。要學(xué)會(huì)用示波器去分析電路

肯定是沒(méi)得示波器唄
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表