找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4630|回復: 7
打印 上一主題 下一主題
收起左側

單片機+旋轉編碼器的使用問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:725922 發(fā)表于 2021-1-14 23:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  買了一個旋轉編碼器模塊,之前單片機也是小白,但想學會使用編碼器,以后可以做應用玩。對自己編程邏輯思維沒有信心,所以在論壇上找了很多例程,有3,4段,編碼器的基本原理和編程思想也有點看明白了,但每個程序改來改去都用不了,好幾天都沒有進展。。崩潰。直到自己換了一個拆機的3線編碼器,發(fā)現(xiàn)有數(shù)值變化,才證明不是程序寫錯了。。這個編碼器有用過的嗎?是模塊設計的有問題嗎?直接從編碼器引線是可以用的,短接掉RC濾波器的R也能用。是什么原因造成的呢?和51單片機兼容不行?解決辦法可以把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ā)
ID:401564 發(fā)表于 2021-1-15 08:51 | 只看該作者
編碼開關不需要電阻的,中間一根線接地,兩邊兩根線隨便接兩個IO就可以了,如果想要放心一點,那就加分別加一個上拉電阻就可以了
你測量阻值是沒有意義的,編碼開關實際上是通過檢測哪個引腳先導通來區(qū)分順時針還是逆時針轉動的
編碼開關是分好幾種的,你一定要先這個開關的資料,再根據(jù)這個開關的時序圖來寫程序,不同的開關有不同的程序

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

5#
ID:390416 發(fā)表于 2021-1-15 11:23 | 只看該作者
用《人人學會單片機》視頻教程的代碼,直接IO口接上就行了。如果P0需要上拉。不需要電容 更不需要串聯(lián)電阻。主函數(shù)高速循環(huán)不斷的調(diào)用以下掃描函數(shù)就行了。
以下代碼的A和B分別代表兩個普通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++;
}

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

編碼器的類型不同輸出的信號順序是不一樣的。

評分

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

查看全部評分

回復

使用道具 舉報

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

肯定是沒得示波器唄
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表