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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)

          在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)

          作者: 時間:2013-11-09 來源:網(wǎng)絡 收藏

          4. 基于的步進電機控制架構(gòu)及優(yōu)勢

          片內(nèi)集成有兩個電流數(shù)模轉(zhuǎn)換器 (IDAC),分別為最大7位和8位精度。均取為7為精度,因此可以產(chǎn)生最大為128細分的階梯狀正弦波。圖5表示由IDAC產(chǎn)生的兩路16細分基準正弦波。

          在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)
          圖5:16細分基準正弦波

          圖6為基于的步進電機控制架構(gòu)框圖。

          在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)
          圖6:步進電機控制框圖

          對電機的兩相電流分別進行采樣,經(jīng)放大和高頻濾波后與IDAC產(chǎn)生的電流基準由PSoC4的內(nèi)部比較器 進行比較,當實際相電流超過基準值時,將由PSoC4關(guān)閉驅(qū)動電機的PWM輸出一個周期,這樣就可以迫使電機的實際相電流跟蹤IDAC產(chǎn)生的電流基準,實現(xiàn)正弦波細分驅(qū)動。

          對比PSoC4控制架構(gòu)于前述的商用方案可以發(fā)現(xiàn),由于PSoC4內(nèi)部集成了IDAC、可編程的CPLD(UDB)和比較器,因此具備CPLD方案的所有性能與優(yōu)勢,同時其內(nèi)部的高性能核又使其可以完成MCU的控制功能,并具有其低成本的特點。因此,基于PSoC4的步進電機控制方案在性價比上有很大的提高。

          5. 基于PSoC4 的步進電機控制設計實例

          ①控制原理圖設計

          圖7為PSoC Creator環(huán)境下的步進電機控制原理圖,虛線框內(nèi)的部分即為依據(jù)圖4構(gòu)建的電機相電流細分驅(qū)動電路。兩路電流獨立控制,相位相差90。。內(nèi)部低功耗比較器的同向端接電機向電流經(jīng)采樣、放大和濾波后的電壓信號;反向端節(jié)內(nèi)部IDAC輸出的細分正弦信號。比較器輸出高電平將關(guān)閉TCPWM一個周期,迫使電機相電流跟蹤IDAC的電流基準波形,實現(xiàn)步進電機的細分驅(qū)動控制。

          圖中的定時器用于設計細分步長,通過在軟件中修改其周期值可以實時改變電機的轉(zhuǎn)速。圖中的ADC可以讀入模擬的速度輸入信號,作為電機的給定轉(zhuǎn)速。

          在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)
          圖7:步進電機控制原理圖

          ②控制系統(tǒng)軟件設計


          1)主程序設計

          控制主程序首先初始化和配置PSoC4的內(nèi)部資源,在主循環(huán)中檢測用戶的起停命令和速度給定,決定運行或鎖定步進電機。圖8為控制主程序的流程圖。

          在PSoC4平臺上開發(fā)步進電機控制系統(tǒng)
          圖8:主程序流程圖



          評論


          相關(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); })();