<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 基礎(chǔ)入門 >> 伺服電機(jī)步進(jìn)電機(jī)與控制 >> 正文

      編碼器簡單理解_編碼器觸發(fā)_編碼器原理

      作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2023/10/3

      今天在修復(fù)離職同事遺留下來關(guān)于編碼器的bug,我之前也沒接觸過這玩意,前輩的做法是在定時器中查詢AB相的電平狀態(tài),來判斷當(dāng)前是正傳還是反正。他搞了個定時器1溢出中斷,將32M時鐘進(jìn)行了64000分頻,131s,信號都漏掉了,我將其改為了1600分頻,16位溢出也就是400ms,正常運行(IAR 8.20)。

      這個問題在最新的IAR(IAR 9.30)不會復(fù)現(xiàn),并且不管哪種分頻在最新的IAR可以正常運行。也許還有地方的邏輯沒有看明白,最終還是沒有去改他的分頻。

      接下來我們直接來看關(guān)于編碼器的圖:

      編碼器的圖 

      編碼器工作原理及如何實現(xiàn)定位控制,秒懂!www.zhimadaxue.com/Article/MEMS/5738.html

      控制:

      a. 以上連接是大概原理,我們不看z相,直接看關(guān)于AB相正反轉(zhuǎn)的的控制:

      1. 順時針:A相觸發(fā)上升沿,那么接下來B也觸發(fā)上升沿;A相觸發(fā)下降沿,B相也觸發(fā)下降沿

      2. 逆時針:A相觸發(fā)上升沿,那么接下來B觸發(fā)下降沿; A相觸發(fā)下降沿,B相觸發(fā)上升沿

      b. 這樣我就需要設(shè)置雙邊沿觸發(fā)中斷,但是對于一些低端的單片機(jī)來講,可能無法做到,這個時候就需要用定時器和讀IO的電平狀態(tài)來做(前同事之前的做法是將coderScan()放到定時器中斷函數(shù)中,為了處理幾個和時間有關(guān)的任務(wù),開了4個定時器,我們完全可以使用時間片的方式做)

      1.順時針: 如果A相前一刻的電平和當(dāng)前電平不一樣,并且當(dāng)前電平為低,B相為低,則順時針旋轉(zhuǎn); 如果B相前一刻的電平和當(dāng)前電平不一樣,并且當(dāng)前電平為高,A相為低。

      2. 逆時針: 如果A相前一刻的電平和當(dāng)前電平不一樣,并且當(dāng)前電平為低,B相為高,則逆時針旋轉(zhuǎn);如果B相前一刻的電平和當(dāng)前電平不一樣,并且當(dāng)前電平為高,A相為高。

      void coderScan() 
      { 
          u8 i;
          u8 aPin, bPin; 
          
          for(i=0; i<CODER_NUM; i++)       //從編碼器1 到 編碼器n輪詢檢測
          {
              aPin = GPIO_ReadInputDataBit(CODER_IO_ARRAY[i].aPin.group, CODER_IO_ARRAY[i].aPin.pin);
              bPin = GPIO_ReadInputDataBit(CODER_IO_ARRAY[i].bPin.group, CODER_IO_ARRAY[i].bPin.pin);
              
              if((_coder[i].aPin != aPin) && (aPin  ==  0x00)) /* 讀取到的值為低電平 */   
              {       
                  if(bPin)    // 電壓下降有效
                  {                  
                      coderCCW(i);//逆時針旋轉(zhuǎn)
                  }
                  else
                  {
                      coderCW(i);//順時針旋轉(zhuǎn)
                  }
              }
              else if((_coder[i].bPin != bPin) && (bPin == 0x01))
              {            
                  if(aPin)    // 電壓上升有效
                  {
                      coderCCW(i);//逆時針旋轉(zhuǎn)
                  }
                  else
                  {
                      coderCW(i);//順時針旋轉(zhuǎn)
                  }
              }
              _coder[i].aPin = aPin;
              _coder[i].bPin = bPin;
          }
       }

      一般,編碼器旋轉(zhuǎn)一圈有1024個脈沖,而編碼器是有格數(shù)的(每次咔吧一聲轉(zhuǎn)動了一格),我數(shù)了一下我手上的有30格,因此想要正確表示旋轉(zhuǎn),我們不僅要通過電平變化知道方向,還要根據(jù)脈沖格數(shù)來判斷,也就是大概一格34個脈沖,如果按90%計算脈沖個數(shù),也就檢測到30個脈沖觸發(fā)一次。

      Tags:編碼器,編碼器原理,增量式  
      責(zé)任編輯:admin
    4. 上一個文章:
    5. 下一個文章: 沒有了
    6. 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網(wǎng)友評論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲人成依人成综合网| 国产成人亚洲综合| 亚洲欧洲日韩国产综合在线二区| 香蕉综合在线视频91| 综合激情区视频一区视频二区| 久久伊人久久亚洲综合| 97se亚洲国产综合自在线| 国产成人综合久久精品下载| 伊人久久大香线蕉综合电影| 六月婷婷国产精品综合| 激情综合色综合久久综合| 亚洲欧洲国产综合AV无码久久| 一本色道久久88综合日韩精品| 国产色婷婷五月精品综合在线| 亚洲精品欧美综合四区| 久久久久AV综合网成人| 中文字幕久久综合| 国产精品亚洲综合| 国精产品自偷自偷综合下载| 亚洲五月综合缴情婷婷| 久久久久青草大香线综合精品 | 伊人久久综合热线大杳蕉下载| 狠狠色狠狠色综合系列| 亚洲狠狠婷婷综合久久久久| 卡通动漫第一页综合专区| 一本久道综合在线无码人妻 | 国产成人久久精品77777综合| 久久综合琪琪狠狠天天| 狠狠色婷婷久久综合频道日韩| 香蕉99久久国产综合精品宅男自| 日韩亚洲人成在线综合| 色婷婷五月综合丁香中文字幕| 亚洲sss综合天堂久久久| 婷婷五月综合缴情在线视频| 伊人丁香狠狠色综合久久| 亚洲国产亚洲综合在线尤物| 色综合天天综合给合国产| 五月婷婷综合在线| 日日狠狠久久偷偷色综合96蜜桃| 一本一本久久a久久精品综合麻豆| 加勒比色综合久久久久久久久|