找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數(shù): 4589 | 評論數(shù): 7 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2021-1-14 23:14

正文摘要:

  買了一個(gè)旋轉(zhuǎn)編碼器模塊,之前單片機(jī)也是小白,但想學(xué)會使用編碼器,以后可以做應(yīng)用玩。對自己編程邏輯思維沒有信心,所以在論壇上找了很多例程,有3,4段,編碼器的基本原理和編程思想也有點(diǎn)看明白了, ...

回復(fù)

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

肯定是沒得示波器唄
ID:267932 發(fā)表于 2021-1-15 16:15
沒有絕對的誰對誰錯(cuò), 第一步先檢查編碼器,抓去在旋轉(zhuǎn)編碼器的兩個(gè)腳是否發(fā)生變化,一般有變化編碼器都是正常的, 如果編碼器輸出信號對,那第二步就要看程序抓取信號對不對了。

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

評分

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

查看全部評分

ID:261025 發(fā)表于 2021-1-15 13:34
編碼器直接和單片機(jī)相連 中間沒有任何器件  如果接在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不會丟失對AB每一次接地的檢測 也確保擰一下不會相當(dāng)于擰了N多下  

評分

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

查看全部評分

ID:390416 發(fā)表于 2021-1-15 11:23
用《人人學(xué)會單片機(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++;
}

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

評分

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

查看全部評分

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

評分

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

查看全部評分

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

評分

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

查看全部評分

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

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

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