前凸后翘的步进电机调速算法~
[導(dǎo)讀] 大家好,我是逸珺。
今天想分享一種超級(jí)實(shí)用的步進(jìn)電機(jī)調(diào)速算法,這種算法在步進(jìn)電機(jī)調(diào)速方案中可以說(shuō)是一種非常優(yōu)異的方案。
梯形調(diào)速算法
為啥需要設(shè)計(jì)一個(gè)調(diào)速算法呢?步進(jìn)電機(jī)不是給多少脈沖就動(dòng)多少步嗎?但是帶上負(fù)載了就可能失步,所謂失步,簡(jiǎn)單理解就是實(shí)際電機(jī)軸轉(zhuǎn)過(guò)的度數(shù),沒(méi)有輸入脈沖對(duì)應(yīng)度數(shù)多。為什么會(huì)這樣呢?電機(jī)的扭矩有可能無(wú)法驅(qū)動(dòng)負(fù)載。一般會(huì)做一個(gè)啟動(dòng)加速控制過(guò)程,停止的時(shí)候做一個(gè)減速控制,中間做一個(gè)勻速控制。這就是比較常見(jiàn)的梯形調(diào)速控制算法。
這樣一個(gè)梯形調(diào)速算法,相當(dāng)于步進(jìn)電機(jī)的運(yùn)動(dòng)過(guò)程包含三個(gè)階段:
①加速過(guò)程
②勻速過(guò)程
③減速過(guò)程
①加速過(guò)程所用到的加速度為:
一般加速過(guò)程與減速過(guò)程所用的加速度絕對(duì)值是相同的,減速過(guò)程相當(dāng)于加速度為-a.
所以總的行程圖中速度曲線下陰影部分三個(gè)過(guò)程的面積:
由于加速過(guò)程與減速過(guò)程所用到的加速度絕對(duì)值相等,所以,所以
梯形速度調(diào)速算法很簡(jiǎn)單,比較容易實(shí)現(xiàn),但是這個(gè)算法卻有缺陷。
圖中紅色圓圈的位置,加速度從a突變?yōu)?,或從0突變?yōu)?a,這些突變點(diǎn)會(huì)帶來(lái)什么后果呢?來(lái)看看其加速度曲線:
電機(jī)帶著負(fù)載運(yùn)動(dòng),比如常見(jiàn)的絲桿將電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng),轉(zhuǎn)化直線運(yùn)動(dòng),又或者齒輪或滾珠結(jié)構(gòu),帶動(dòng)負(fù)載進(jìn)行旋轉(zhuǎn)運(yùn)動(dòng)。具有一定的質(zhì)量的負(fù)載,在加速度突變情況下,很有可能會(huì)造成機(jī)械振動(dòng)。
比較專(zhuān)業(yè)一點(diǎn)的術(shù)語(yǔ)稱(chēng)為急動(dòng)(Jerk),其實(shí)就是考察加速度的變化率的,也可以稱(chēng)為加加速度,我們知道速度的變化率就是加速度,而加速度的變化率就是加加速度。
如果用數(shù)學(xué)語(yǔ)言來(lái)裝下逼,就是速度函數(shù)對(duì)時(shí)間的一階導(dǎo)數(shù)就是加速度,而對(duì)加速度曲線的一階導(dǎo)數(shù)就是加加速度。因此上圖中加速度在時(shí)刻突變,意味著加加速度為無(wú)窮大。
對(duì)于給定的負(fù)載,加加速度越大,產(chǎn)生的不需要的振動(dòng)能量就越大,振動(dòng)能量的頻譜也就越寬。這意味著加速度變化越快,振動(dòng)就越強(qiáng)大,激發(fā)的振動(dòng)模式數(shù)量也就越多。由于振動(dòng)能量被系統(tǒng)機(jī)械吸收,如果振動(dòng)頻率與機(jī)械和控制系統(tǒng)中的共振相匹配,則可能會(huì)導(dǎo)致穩(wěn)定時(shí)間增加或精度降低。
這樣一說(shuō),好像就有思路了,我們?nèi)绻茏龅郊铀俣鹊淖兓适沁B續(xù)的,是否這種變化就會(huì)變得平滑呢?運(yùn)動(dòng)是不是就更柔性?所謂變化率連續(xù),是不是就是相對(duì)于加速度函數(shù)的導(dǎo)數(shù)曲線是連續(xù)的就可以了?
S-曲線調(diào)速算法
假定來(lái)歸一化速度曲線為從0加速到1,假設(shè)能做出如下調(diào)速曲線:
這樣來(lái)看看這些拐點(diǎn):
看速度曲線先是比較緩慢的增加,然后再比較快速的增加,然后在慢慢第逼近到期望的設(shè)定速度,因此這是一個(gè)變加速過(guò)程。再來(lái)做一個(gè)進(jìn)一步的假設(shè),把加速度過(guò)程的時(shí)間也做一個(gè)歸一化:
對(duì)于函數(shù),可以看出:
前面說(shuō),那么,意味著在0、1時(shí)刻,加速度為0。
假設(shè)速度曲線函數(shù)為:
則其一階導(dǎo)數(shù)為:
這樣就可以得出下面的方程組了:
解出a和b:
因此,調(diào)速曲線就得到了:
其加速度曲線為:
整個(gè)過(guò)程的加速度曲線長(zhǎng)這樣:
這樣一來(lái),加速度就是連續(xù)變化的,沒(méi)有突變點(diǎn)。解決了之前提到的急動(dòng)的問(wèn)題。由于加速、減速過(guò)程完全對(duì)稱(chēng),因此我們關(guān)心的運(yùn)動(dòng)距離控制,則很容易用下圖中綠色區(qū)域的面積計(jì)算得到:
有了這樣的數(shù)學(xué)模型,編碼實(shí)現(xiàn)就是水到渠成的事情了。
總結(jié)一下
電機(jī)速度控制,一般盡量做到柔性調(diào)速,本文分享的步進(jìn)電機(jī)的S-曲線調(diào)速數(shù)學(xué)算法模型,是一個(gè)非常棒的算法模型。速度一開(kāi)始緩慢增加到快速增加,再回到緩慢增加直到速度達(dá)到設(shè)定期望速度。從設(shè)計(jì)上,兼顧了快速啟停,又能盡最大程度降低加速度突變這一對(duì)矛盾。希望對(duì)有興趣的朋友有所幫助。
推薦閱讀:
專(zhuān)輯|Linux文章匯總
專(zhuān)輯|程序人生
專(zhuān)輯|C語(yǔ)言
我的知識(shí)小密圈
關(guān)注公眾號(hào),后臺(tái)回復(fù)「1024」獲取學(xué)習(xí)資料網(wǎng)盤(pán)鏈接。
歡迎點(diǎn)贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵(lì),我都將銘記于心~
嵌入式Linux
微信掃描二維碼,關(guān)注我的公眾號(hào)
總結(jié)
以上是生活随笔為你收集整理的前凸后翘的步进电机调速算法~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 入门程序员如何写博客
- 下一篇: 基于FPGA的CNN算法移植(一)概述