關(guān)于步進(jìn)電機(jī)任意分度程序的編寫方法
關(guān)于步進(jìn)電機(jī)任意分度程序的編寫方法
很多人都認(rèn)為步進(jìn)電機(jī)是不能精密分度的,把伺服電機(jī)的驅(qū)動方法過于的神化。就本人用步進(jìn)電機(jī)做分度盤的經(jīng)驗。
很多人都認(rèn)為步進(jìn)電機(jī)是不能精密分度的,把伺服電機(jī)的驅(qū)動方法過于的神化。就本人用步進(jìn)電機(jī)做分度盤的經(jīng)驗來看,其實你只要懂得怎么去用步進(jìn)電機(jī),懂得怎么去寫程序,正常情況下的分度精度還是可以保證的。
步進(jìn)電機(jī)不管在什么場所應(yīng)用,有一點是必須要保證就是有足夠的扭矩。步進(jìn)電機(jī)就是一個大馬拉小車的東西。
正常情況下的啟動時間,一般來說應(yīng)盡可能的拉長一些。啟動的速度也不可以太快。啟停過快都可能會引起過沖的現(xiàn)象。在使用過程中,如果分度不完整,也就是正常要走一圈的,但是發(fā)現(xiàn)怎么弄都差那么一點點,也就是有一個接縫,這種情況就是有傳說中的失步。解決失步的方法不外乎如下幾點:
增加電機(jī)扭矩,加大驅(qū)動器的電流;
降低運(yùn)行的最大轉(zhuǎn)速;
拉長啟動時間;
減小啟動轉(zhuǎn)速。
如果以上都沒有問題,那么就有可能是程序里面帶有無法分完的余數(shù)脈沖所產(chǎn)生的累計誤差了。
眾所周知,脈沖是以整數(shù)來計算,沒有哪里會出現(xiàn)半個脈沖的說法。但是往往就是這半個脈沖出了問題,如果一個圓分10等份,每個等份差半個脈沖不算個什么。20個等份,每個等份差半個脈沖可能也不是特別明顯。但是要分到50個,100個,500個,nnn個等份時,這樣每個等份差半個脈沖可就不是一個小數(shù)目了。在等份數(shù)越多時,就算是每個等份差0.1個脈沖,都是一個天文數(shù)字。這就是很多人都認(rèn)為步進(jìn)電機(jī)無法做出精密的分度盤的原因了。這不僅僅是進(jìn)步電機(jī),就算是伺服電機(jī),同樣也存在這個問題----余數(shù)。
如下:步進(jìn)驅(qū)動器的細(xì)分?jǐn)?shù)為64.那么電機(jī)每一圈的脈沖數(shù)為62x200=12800.
現(xiàn)在設(shè)定電機(jī)分成128等份,那么很好計算 12800/128=100.每個等份的脈沖數(shù)為100個脈沖。
但是如果我現(xiàn)在要求分成129等份,公式為:12800/129=99.2248062,也就是每個等份須要99.2248062個脈沖才能均分,如此計數(shù)去掉小數(shù)點余數(shù),那么這129個等份里總共將要誤差129X0.2248062=28.9999999個脈沖。相當(dāng)于這個圓就誤差了一個等份的1/4。
由于本人文化水平有限,通過了相當(dāng)長的時間去思考,終于解決了這個剩余脈沖數(shù)的處理方法。
以面說的例子為參考,電機(jī)脈沖數(shù)為12800為一圈,分成129等份。要求一圈走完的最大誤差不大于1個脈沖。
程序編寫方法如下:
設(shè)定電機(jī)脈沖數(shù),這個是死的,可以不寫。 12800或者其它數(shù)值。
設(shè)定要分的等份數(shù):129 代入數(shù)據(jù)寄存器D 或者V
計算出每個等份須要的整數(shù)脈沖數(shù):12800/129=99
精確計算出每個等份須要的脈沖數(shù),浮點運(yùn)算得到的結(jié)果是:12800/129=99.2248062
把99轉(zhuǎn)為浮點數(shù),得到數(shù)據(jù)為99.0
然后用99.2248062—99.0=0.2248062 這個計算公式得到了每個等份剩下脈沖數(shù)。
用剩下的脈沖數(shù)再乘上等份總數(shù):0.2248062x129=28.99999998.去掉小數(shù)點,得到整數(shù)28.
用等份數(shù)減去28得到:129-28=101。本數(shù)據(jù)為加工過程中的等份數(shù)。
程序運(yùn)行到:己經(jīng)加了的等份大于101,也就是從102等份開始到129等份,這28個等份里面,每個等份加一個脈沖。也就是從102等份開始的脈沖數(shù)為99+1=100.
如上計算,在后28個等份里面,每個等份增加一個脈沖,也就是每個等份增加了1/100.
總結(jié):從上面的計算來看,如果不是要求絕對精密的加工,本程序加工出來的產(chǎn)品是完全滿足要求的。