網頁

基於GRBL的CNC之步進馬達篇



步進馬達在自動化工業以及生活周遭都相當的常見,它的特性是具有高精度的角度劃分、停止時具有保持力、高轉矩與控制容易等優點。

關於步進馬達其實是相當深奧的一門學問,在下面我蒐集了幾份我覺得相當不錯的一個資料,這也是我在學習步進馬達入門的知識時覺得很有幫助的文章與影片。(不是太深奧的文章,但對於DIY的人來說蠻實用的了)

計算移動1mm,步進馬達需要走幾步?
這篇介紹了步進馬達在計算脈波與距離(step/mm)時的一個計算方式,當初也是搞不懂步進馬達是如何運作以及計算的,一開始還是用量的方式去慢慢調整3D印表機直到與尺量出來的移動距離相等,現在想一想真的蠻蠢的。

常見步進馬達疑惑解說20150720
這一篇是露天賣家3DPW所分享的一篇文章,對於步進馬達的工作電壓以及驅動原理有著不錯的解釋。

How does a Stepper Motor work ?
Learn Engineering的教學影片,講解步進馬達劃分的原理以及控制方式,必看

Electronic Basics #24: Stepper Motors and how to use them
GreatScott!的電子學基本影片,從控制端的角度講解步進馬達的控制,也是相當不錯的一個教學影片。


看完以上的一些教學與介紹之後,我這邊來紀錄一下我自己學習的筆記。
把步進馬達拆開後可以看到內部有許多的鋸齒片上面繞著線圈(磁極小齒),以及中間齒輪狀的轉子。這顆馬達是6線式的一個繞組,我們只需要取4條線即可進行控制。



我們可以把步進馬達拆開來,我們可以理解若以2相8極的一個控制(建議搭配How does a Stepper Motor work?的4:35開始看),當步進馬達的磁極小齒兩兩通電時,當在移動時那些小齒會不斷地切換N或S極,我們就把它想像成是一顆電磁鐵好了(事實上也是如此)。



從下圖能發現激磁小齒的繞圈方式,就像是外面電磁鐵的一個繞圈方式。



而中間的轉子本身就是一顆永久磁鐵,步進馬達的轉子小齒被巧妙地設計成前後兩邊交錯的小齒,並兩邊的小齒一邊為N一邊為S。



因為轉子本身是一顆永久磁鐵,所以我想越強的步進馬達就是要把線圈跟定子做得越大,換取比較高的轉矩。



也因此我們可以搭配看下面A4988的步進馬達驅動劃分圖,AB兩個相位的電流會不斷的正負正負變換,這個就能讓激磁小齒在N/S極之間互換。當我轉子為50齒的時候,它的齒距為360/50=7.2度,所以當走完一次完整的激磁行程時(4步)步進馬達的軸心會轉動7.2度,這樣就可以算出一步為1.8度,這也是步進馬達的資料上一定要提供的一個步距角。



圖片來源:DMOS Microstepping Driver with Translator And Overcurrent Protection

下面的影片是我利用A4988建立了一個簡單的步進馬達測試電路(沒有接單晶片),因為A4988的STEP在一個脈衝會移動一個步距(上圖),也因此我用一顆按鈕來模擬脈衝。可以看到我每按一次按鈕就會轉動一點點角度,至於按鈕左邊那顆電容是為了去抖動用的,不然驅動晶片會讀取到錯誤的脈波。
所以3D印表機或雕刻機之類的,也都是利用這樣子的一個脈波訊號去進行輸出,這樣的一個驅動器能大幅減少單晶片本身的負擔以及接腳數,只要告訴驅動器正反轉(HIGH或LOW)、轉幾度(脈衝)它就會自己跑了。



因為1.8度在某些用途上還不夠精密,因此步進馬達的驅動晶片有所謂的微步的設定,微步是怎麼做的?就是把上圖的電流比例在進行切割,把電流的比例在劃分的更密一些,這樣就可以達到微步距的效果了。像A4988最高可達16倍的劃分,相當於一步為0.1125度,DRV8825更是能達到32倍的劃分以及更貴的價格


圖片來源:DMOS Microstepping Driver with Translator And Overcurrent Protection

在文章的最後,我要來解釋一下步距是如何計算的。比較快的方法是到這個網站有簡單的計算機來使用。Prusaprinters calculator

首先以3D印表機常見的皮帶來說,不少人都是使用GT2的皮帶,然後像我是使用20齒的同步輪,搭配1.8步距的步進馬達與1/16劃分的驅動器。把上述的資料都輸入計算機之後可已得到80.00 step/mm的一個數值,這個數值就是告訴控制器幾個脈波可以移動1個mm的意思。這個就是GRBL或Marlin韌體內所需要的XYZ或E軸的step/mm參數。


圖片來源:https://www.prusaprinters.org/calculator/

不過有計算機我們還是要了解一下怎麼算的。首先我有一顆20齒的GT2同步輪,所以馬達轉一圈會讓皮帶走20齒*2mm=40mm,而我的步進馬達是1.8的步距角,所以一圈有360/1.8=200個步距角,再把它劃分16倍就會變成一圈有3200的步距角。

所以我們知道3200步距角會移動40 mm,那反過來計算1 mm就是3200/40=80。

接下來是螺桿的計算,螺桿在雕刻機或3D印表機的Z軸上相當常見。
舉例我是使用M5的一個螺桿(牙條),它轉一圈的螺距是0.8 mm,而我沒有用減速齒進行變速(Gear ratio)。所以輸入以上的數值之後,我們可以得到4000.00 step/mm的一個參數。

有沒有很驚訝跟皮帶竟然能夠差這麼多,也因此在比較需要負荷、自鎖、高扭力的地方就會常常使用螺桿,反之寫字機、3D印表機與雷雕機等等輕負荷高速度的機器就會選用皮帶傳動。



圖片來源:https://www.prusaprinters.org/calculator/

這邊一樣解釋一下怎麼計算的。首先我們知道馬達轉一圈會讓螺帽移動0.8mm,而我的步進馬達是1.8的步距角,所以一圈有360/1.8=200個步距角,再把它劃分16倍就會變成一圈有3200的步距角,馬達數據都與皮帶相同,因為同一顆馬達。
所以我們知道3200步距角會移動0.8 mm,那反過來計算1 mm就是3200/0.8=4000,這樣就是結果了,是不是很簡單呢。

學習了步進馬達的知識之後,我們在應用上以及接線上會有更深的一步了解,同時也會知道該如何計算自己機器的Steps per unit了。


(20230228補充:雖然現在的機器好像也都是包好的也沒得調整了,真懷念以前DIY的苦日子?)