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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM 的漿果采摘機(jī)械手運(yùn)動(dòng)控制研究

          基于ARM 的漿果采摘機(jī)械手運(yùn)動(dòng)控制研究

          作者: 時(shí)間:2009-10-15 來(lái)源:網(wǎng)絡(luò) 收藏

            2.3 反饋模塊設(shè)計(jì)

            本系統(tǒng)的電機(jī)使用光電編碼器進(jìn)行測(cè)速。光電編碼器具有低慣量、低噪聲、高分辨率和高精度等特點(diǎn),適合于直流電機(jī)。將編碼器產(chǎn)生的脈沖信號(hào)經(jīng)變換得到電動(dòng)機(jī)速度用于速度反饋形成速度閉環(huán),同時(shí)可以對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù)和運(yùn)算,從而得到機(jī)器手的位置和速度。

            3 系統(tǒng)軟件設(shè)計(jì)

            系統(tǒng)中控制任務(wù)的實(shí)現(xiàn)由應(yīng)用程序來(lái)完成,應(yīng)用程序設(shè)計(jì)的好壞將直接決定整個(gè)系統(tǒng)的控制質(zhì)量和控制效率。為了更好地進(jìn)行系統(tǒng)調(diào)試以及功能擴(kuò)展,控制系統(tǒng)軟件也采用了模塊化結(jié)構(gòu)設(shè)計(jì)。系統(tǒng)主程序主要分為初始化模塊和運(yùn)行模塊兩大部分。

            3.1 初始化模塊

            初始化模塊需要完成的工作是:異常向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷系統(tǒng)初始化、I/O 初始化和外圍初始化等操作。

            3.2 運(yùn)行模塊

            運(yùn)行模塊通過(guò)中斷形式進(jìn)行,包括測(cè)速模塊、PID控制模塊和PWM 波輸出模塊。主要工作流程為:首先判斷是否有新的速度指令,若有,則判斷出速度大小和方向,并將其轉(zhuǎn)換成程序中規(guī)定的統(tǒng)一形式,以方便進(jìn)行PID 控制;然后判斷是否有新的傳感器反饋值,若有,則計(jì)算出電機(jī)的速度大小,并執(zhí)行電機(jī)的PID 控制程序,接著調(diào)用電機(jī)驅(qū)動(dòng)程序,改變PWM 占空比,輸出PWM 波,實(shí)現(xiàn)電機(jī)的速度控制。測(cè)速模塊每隔一定采樣時(shí)間對(duì)光電編碼器脈沖進(jìn)行采樣,以得到速度反饋值,運(yùn)行模塊的主要流程如圖4 所示。

            4 結(jié)束語(yǔ)

            控制系統(tǒng)是漿果機(jī)器人系統(tǒng)的一個(gè)重要組成部分。 微處理器性能好、功耗低、體積小、移植性較好。以 微處理器為核心的控制系統(tǒng)可以通過(guò)硬件平臺(tái)的改進(jìn)和升級(jí)、軟件算法的再生和模塊化使整個(gè)控制系統(tǒng)具備可移植性,具有一定應(yīng)用價(jià)值。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();