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