<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的步進(jìn)電機控制器研究和實現(xiàn)

          基于FPGA的步進(jìn)電機控制器研究和實現(xiàn)

          作者: 時間:2011-04-02 來源:網(wǎng)絡(luò) 收藏

          DEC2為無細(xì)分時的電機控制模塊,控制雙四拍時的正反轉(zhuǎn)。
          的正、反轉(zhuǎn)控制可通過改變各繞組的通電順序來改變轉(zhuǎn)向,當(dāng)四相雙四拍的通電順為AB→BC→CD→DA→AB…時,電機正轉(zhuǎn);當(dāng)其繞組按AD→DC→CB→BA→AD…的順序通電時,電機反轉(zhuǎn)。因此,利用case語句編程來改變輸出脈沖的順序,以此改變步進(jìn)電機繞組的通電順序。用‘1’表示該繞組加電;用‘0’表示該繞組斷電。
          4.JPG
          圖4為DEC2反轉(zhuǎn)時的仿真波形。

          本文引用地址:http://www.ex-cimer.com/article/191259.htm

          5.JPG


          2.2 利用VHDL文件生成元器件
          工程創(chuàng)建好以后,就可以用設(shè)計好的VHDL語言文件生成工程模塊。首先打開CNT8.vhd文件,點擊菜單中File→Create/Update→Crea-te Symbol Files forCurrent File命令,以生成圖5所示CNT8模塊。

          7.JPG


          按照同樣的方法生成CNT24和DEC2模塊。將這些模塊包裝為一個symbol,以備總模塊調(diào)用,如圖5所示。
          2.3 原理圖輸入設(shè)計
          2.3.1 PWM_1.mif文件的設(shè)計
          在設(shè)計前,必須首先完成存放PWM波形的ROM存儲器設(shè)計,而在此之前還必須定制LPM_ROM初始化數(shù)據(jù)文件,如圖6所示。

          8.JPG


          2.3.2 ROM存儲器的設(shè)計
          mif文件建好以后就可以進(jìn)入ROM存儲器的設(shè)計。
          設(shè)計好的rom3模塊如圖7所示。

          9.JPG


          2.3.3 定制模塊
          調(diào)用LPM庫中的模塊,定制BUSMUX(參數(shù)化多路數(shù)據(jù)選擇器)元件和lpm_compare0元件。
          如圖8所示,數(shù)據(jù)選擇器通過模式選擇信號,再根據(jù)不同的模式功能選擇該功能模塊的信號輸出。該模塊的輸入信號有模式選擇信號sel[0],即非細(xì)分控制和模式選擇信號sel[1],即細(xì)分控制。當(dāng)sel為“0”時,對應(yīng)的為非細(xì)分控制輸出,即由DEC2輸出,此時步進(jìn)電機按照雙四拍模式運行;當(dāng)sel為“1”時,對應(yīng)的為細(xì)分控制輸出,即由比較器CMP3輸出,此時步進(jìn)電機按照細(xì)分8拍模式運行。



          關(guān)鍵詞: FPGA 步進(jìn)電機 控制器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();