步進馬達參數計算

進馬達行徑所需步數計算: 由於每個人買的步進馬達最小基本角度和同步齒輪有可能不一樣所以您需要計算每1mm馬達需要轉多少步數,以確保步進馬達可以控制你的噴頭到正確的位置。 網站http://calculator.josefprusa.cz/可以免費線上計算,計算並不困難,以下是簡單的翻譯說明:

  • Steps per millimeter - belt driven systems (皮帶帶動的每1mm所需步數計算)
       i. Motor step angle: 步進馬達基礎角度(每一步的角度)
    ii. Diver microstepping: 在RAMPS上JUMPER跳線設定的微步類型,通常設在精度最高角度最小。
    iii. Belt pitch: 皮帶的間距。(如果知道皮帶種類可以跳過此項直接到下一項去設)
      iv. Belt presets: 常用皮帶種類選取。(設定了此項的話上一項會自動被更改)
    v. Pulley tooth count: 同步齒輪齒數 以下是我的機器的計算方式

sc belt driven

我的馬達是1.8度的,我使用1/16的微步設定,我的皮帶間距是2mm(此項是選擇後一項GT2後自動跳出來的值),皮帶種類2mm 間距的GT2,同步齒輪齒數16齒,所以得到的結果是每1mm馬達需要跑100微步,這個數值要記下來等等後面用得到!

  • Steps per millimeter - leadscrew driven systems (螺旋導桿動每1mm所需步數計算)
    Leadscrew pitch: 螺旋螺絲間距(如果知道皮帶種類可以跳過此項直接到下一項去設)
    Presets: 常用螺桿種類選取。(設定了此項的話上一項會自動被更改)
    Gear ratio: 齒輪比(如果是馬達直接帶動螺桿就設定為1:1,否則需要根據你的齒輪速度比填入)
    以下是我的機器的計算方式 同款的馬達為1.8度,同樣使用1/16的微步設定,我的螺絲間距是2mm(此項是選擇後一項M5螺桿後自動跳出來的值),直接驅動所以齒輪比為1:1,最後得到的結果是每1mm馬達需要跑4000微步,這個數值等等也要用。
    sc leadscrew driven
  • Optimal layer height for your Z axis (Z軸每層高度之最佳化)
    這個計算是用來計算Z軸的誤差假設你希望列印的每層的高度是0.2mm,他可以幫你計算出最佳的步數是多少,我們大多使用M5的螺桿所以在大多狀態下是沒有誤差的。

sc optimal height

比方我所設定的最小每層是0.2mm那麼馬達跑50微步就剛好是0.2mm沒有誤差,如果最小每層是0.3mm則為75微步,但若是0.35mm則為87.5微步,此時Z軸高度每10cm將誤差-0.5714…mm,所以最好將最小每層高度設為可以整除,不過這個誤差值也是相當的小就是了。

Acceleration (加速度計算)

Max speed 最快移動速度,將你期望的加速度數值填入,你可以根據以下曲線看出’印表機需要多久可以達到這個移動速度。

Acceleration: 加速度(1mm/每秒)

Distance or axis length: 距離或是軸長

Desired speed: 期望速度

這個部分在設定黨內我建議用預設值,不要去更動它,如果太快將造成失步或煞車不急,太慢當然也不好。

擠出頭步數計算與誤差調校正

雖然Prusa i3的擠出頭齒輪比已經在設計時計算過了,但由於擠出頭內的擠出螺絲刻紋幾乎都是手工打造(就算是機器自動刻紋也不會你買的跟大家一樣吧),所以我們需要測量一下擠出頭的馬達轉多少步之後能帶動1mm的塑膠線,這個就類似像以上XYZ軸的校正,但由於這個部分不是直接可以用公式算出,所以要你自己測量一下,方法很簡單。

  1. 首先先不要安裝擠出頭加熱器(hotend),因為我們不想等等測試時產生一堆廢料。
  2. 由於韌體為了保護在加熱頭溫度還不夠熔化塑膠線時,擠出頭就開始擠出導致線無法熔化卡而在裡面,甚至弄壞擠出頭模組,所以在設計上做了保護,雖然這種狀況通常都是手動模式才會發生,然而現在我們正要以手動模式來調整擠出頭所以必須檔案中的對擠出頭動作的保護取消
    方法一:
    #define PREVENT_DANGEROUS_EXTRUDE
    改成
    // #define PREVENT_DANGEROUS_EXTRUDE
    (就是取消擠出頭動作保護)
    方法二:
    #define EXTRUDE_MINTEMP 170
    改成
    #define EXTRUDE_MINTEMP 0
    (就是將安全溫度改為0度)
    前面已經教過如何重新編譯程式碼,然後上傳到控制板,接下來請進行這個步驟。在本校正結束之後千萬不要忘記改回原來的值並且重新編譯上傳。
  3. 讓塑膠線進入擠出頭模組內,可以用手轉動大齒輪確定擠出螺絲以經咬住了塑膠線,讓線能從下方出來看到一些。(請注意步驟一已經將加熱器拆掉了)
  4. 在擠出頭模組上方找一個參考點,必須是剛好線要進入的地方(這樣方面目視),然後拿油性筆在此點做一個小記號,然後用尺量上方100mm(10cm),在100mm處在做一個記號(影片中用預先測量好的100mm吸管也可以,但其實沒這必要)。如果要更長也可以,但其實沒這必要,而且造成線太長很麻煩。
    (
    參考影片)
  5. 然後使用PC端軟體Repetier-Host進入手動模式,設定Extruder Speed為100mm/min(速度,適當就好,不是這裡重點), Extrude為100mm(跟上方我們預先測量的100mm相符),接下來按下軟體的啟動擠出頭馬達,此時馬達會轉動"大約"100mm,這個大約100mm其實是原本Configuration.h中預設的值(根據每1mm需要多少步的值)。
  6. 接下來看看你原本做的100mm記號在哪,如果還露在線外面代表擠出馬達轉動步數還不夠,如果已經跑到裡面了(超過參考點)代表轉動步數過多,如果剛好停在參考點那恭喜你,你不需要做以下調整步驟就已經很精確了。
  7. 接下來我們要測量步進馬達還要多轉多少或是少轉多少才能正確停在我們要的位置,請測量目前線的位置與我們標記的位置的距離,以Arduino IDE開啟Configuration.h檔案找到#define DEFAULT_AXIS_STEPS_PER_UNIT   {100, 100, 4000, 700}此行,此行的四字個數字代表E軸(擠出頭)每擠出1mm需要多少步的設定。
    假設原本值是700,我們露在參考點外的線長度是6.6mm,則原本700步 x 100mm應該得到70000步,但我們走了70000步卻只得到100 - 6.6 = 93.3mm,所以正確的步數應該是70000 / 93.3 = 750步,將這個數值填回取代原本的700然後重新編譯再以同樣方法測試一次,應該就差不多了。
    相反地,如果你是多跑了3.3mm變成了103.3,計算就是70000/103.3=677.3。所以將677.6填回取代即可。
  8. 線本身是有誤差的,線在擠出頭轉動過程中也會有誤差,實際在運作有時會希望擠出頭多擠一點或是少一點,可以利用這個部分做修正,所以上面測量的是方法而不是絕對,當然差太多是不行的,給您參考。
  9. 有些擠出頭模組齒輪比不同或是採用直接驅動(沒有減速齒輪),這會造成上面的數值跟我的例子差很大,這是正常的。
  10. 千萬不要忘記將步驟二修改的擠出頭馬達保護預設值改回來並且重新編譯上傳之後再將加熱器裝回去。
創作者介紹

3D Printer DIY 自製3D印表機

diy3dp 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 訪客
  • 請教您...
    Repetier-Host顯示連線, 但為何在軟體的任何操作, printer都沒動作呢???
    我從LCD去操縱, X, Y, Z, Extruder都可work.
  • 假連線 不是真的連上 應該是連線速率設錯

    diy3dp 於 2014/09/05 17:48 回覆

  • 訪客
  • 目前看來, 軟體無法連線是因為我將#define SERIAL_PORT的數值0改成3所造成...改回0後便可透過Repetier-Host去work了~
    從手動控制處去開啟Extruder、Bed、Fan後, 各個LED指示燈皆有亮起, 端子座處也可量到電壓, 目前看來, 皆疑似正常~
    抱歉打擾了~
  • 是的'

    diy3dp 於 2014/09/05 17:48 回覆

找更多相關文章與討論