找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4416|回復: 1
打印 上一主題 下一主題
收起左側

stm32單片機實現高速控制步進電機S曲線加減速運動程序源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:889154 發(fā)表于 2021-3-7 12:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

使用單片機做步進電機控制的時候,經常碰到一些非常傷腦筋的問題,一是寫步進電機控制時許確實很麻煩,正轉反轉,加速減速,得研究很長時間數學公式,特別是S加減速運動;二是單片機的計算速度不行,要求脈沖速度快的話,加減速需要計算變化的脈沖頻率,計算不過來,特別是兩個或多個電機要聯(lián)動控制或者插補基本上就不行了,兩個電機運動會出現明顯的偏差。
所以能不能有其他簡單快速的方案了?
經過很長時間研究后,我發(fā)現常規(guī)的運動控制完全可以使用單片機+一個專用運動控制芯片HMC80xx來實現,這樣的話,復雜的加減速控制程序,多個步進高精度聯(lián)動都由專用運動芯片來完成,單片機只需要通過通信接口寫入控制命令就可以了。
話不多說,我們來看看具體的實現方案:






由上述的系統(tǒng)框圖和單片機與運動控制專用芯片接線圖可以看出,使用一個stm32或者C51等單片機+運動芯片控制步進或伺服電機,只要使用單片機的IO口連接運動芯片的總線,然后通過IO寫入指令就可以。芯片本身提供了單片機可以直接調用的API函數,實現基本的定長加減速運動,多軸直線插補,圓弧插補運動的函數,單片機程序只要按說明直接調用函數,指定參數值就可以了。


比如定長加減速運動控制函數:
q  定長運動
功能:指定一個運動軸及曲線類型、運動方向、脈沖輸出模式、初始速度、運行速度、定長運動距離、開始減速位置、加速時間、減速時間,以初始速度開始加速,在指定的加速時間到時加速到運行速度恒速運行,直到脈沖輸出個數大于等于減速位置設定的個數時,開始減速,在指定的減速時間到達時減速到初始速度,并在完成運動距離時停止,如果SD減速開關從OFF->ON 轉換并且沒有到達設定的減速位置,并且SD_EN使能,將立即開始減速,然后以低速運行完成運動距離后停止。
函數:int  DeltMov(int dev,unsigned int Axs,unsigned intcurve,unsigned int Dir,unsigned char Outmod,unsigned int Vo,unsigned intVt,unsigned int Length,unsigned int StartDec,unsigned long Acctime,unsignedlong Dectime,unsigned int SD_EN,unsigned int WaitSYNC);


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:710888 發(fā)表于 2021-3-14 10:24 | 只看該作者
是否可以提供下運動控制芯片datasheet 的官網鏈接
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表