干貨|從數學角度揭開步進電機調速算法



今天想分享一種超級實用的步進電機調速算法,這種算法在步進電機調速方案中可以說是一種非常優異的方案。

梯形調速算法

為啥需要設計一個調速算法呢?步進電機不是給多少脈沖就動多少步嗎?但是帶上負載了就可能失步,所謂失步,簡單理解就是實際電機軸轉過的度數,沒有輸入脈沖對應度數多。為什么會這樣呢?電機的扭矩有可能無法驅動負載。一般會做一個啟動加速控制過程,停止的時候做一個減速控制,中間做一個勻速控制。這就是比較常見的梯形調速控制算法。

干貨|從數學角度揭開步進電機調速算法的圖1

這樣一個梯形調速算法,相當于步進電機的運動過程包含三個階段:

  • ①加速過程
  • ②勻速過程
  • ③減速過程

①加速過程所用到的加速度為:

一般加速過程與減速過程所用的加速度絕對值是相同的,減速過程相當于加速度為-a.

所以總的行程圖中速度曲線下陰影部分三個過程的面積:

干貨|從數學角度揭開步進電機調速算法的圖2

由于加速過程與減速過程所用到的加速度絕對值相等,所以 ,所以

干貨|從數學角度揭開步進電機調速算法的圖3

梯形速度調速算法很簡單,比較容易實現,但是這個算法卻有缺陷。

干貨|從數學角度揭開步進電機調速算法的圖4

圖中紅色圓圈的位置,加速度從a突變為0,或從0突變為-a,這些突變點會帶來什么后果呢?來看看其加速度曲線:

干貨|從數學角度揭開步進電機調速算法的圖5

電機帶著負載運動,比如常見的絲桿將電機的旋轉運動,轉化直線運動,又或者齒輪或滾珠結構,帶動負載進行旋轉運動。具有一定的質量的負載,在加速度突變情況下,很有可能會造成機械振動。

比較專業一點的術語稱為急動(Jerk),其實就是考察加速度的變化率的,也可以稱為加加速度,我們知道速度的變化率就是加速度,而加速度的變化率就是加加速度。

如果用數學語言來裝下逼,就是速度函數對時間的一階導數就是加速度,而對加速度曲線的一階導數就是加加速度。因此上圖中加速度在 時刻突變,意味著加加速度為無窮大。

對于給定的負載,加加速度越大,產生的不需要的振動能量就越大,振動能量的頻譜也就越寬。這意味著加速度變化越快,振動就越強大,激發的振動模式數量也就越多。由于振動能量被系統機械吸收,如果振動頻率與機械和控制系統中的共振相匹配,則可能會導致穩定時間增加或精度降低。

這樣一說,好像就有思路了,我們如果能做到加速度的變化率是連續的,是否這種變化就會變得平滑呢?運動是不是就更柔性?所謂變化率連續,是不是就是相對于加速度函數的導數曲線是連續的就可以了?

S-曲線調速算法

假定來歸一化速度曲線為從0加速到1,假設能做出如下調速曲線:

干貨|從數學角度揭開步進電機調速算法的圖6

這樣來看看這些拐點:

干貨|從數學角度揭開步進電機調速算法的圖7

看速度曲線先是比較緩慢的增加,然后再比較快速的增加,然后在慢慢第逼近到期望的設定速度,因此這是一個變加速過程。再來做一個進一步的假設,把加速度過程的時間也做一個歸一化:

干貨|從數學角度揭開步進電機調速算法的圖8

對于 函數,可以看出:

前面說 ,那么 ,意味著在0、1時刻,加速度為0。

假設速度曲線函數為:

則其一階導數為:

這樣就可以得出下面的方程組了:

解出a和b:

因此,調速曲線就得到了:

其加速度曲線為:

整個過程的加速度曲線長這樣:

干貨|從數學角度揭開步進電機調速算法的圖9

這樣一來,加速度就是連續變化的,沒有突變點。解決了之前提到的急動的問題。由于加速、減速過程完全對稱,因此我們關心的運動距離控制,則很容易用下圖中綠色區域的面積計算得到:

干貨|從數學角度揭開步進電機調速算法的圖10

有了這樣的數學模型,編碼實現就是水到渠成的事情了。

總結一下

電機速度控制,一般盡量做到柔性調速,本文分享的步進電機的S-曲線調速數學算法模型,是一個非常棒的算法模型。速度一開始緩慢增加到快速增加,再回到緩慢增加直到速度達到設定期望速度。從設計上,兼顧了快速啟停,又能盡最大程度降低加速度突變這一對矛盾。希望對有興趣的朋友有所幫助。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP