3Dプリンター作る!

3Dプリンターを作る。3Dプリンターで作る。

  • HOME
  • 3Dプリンタ
  • プリントアウト
  • Delta作る
  • Mendel作る
  • その他
Here: Home > その他 > 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整

3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整

17 Jan 2015 Categories: その他 / Tags: Marlin, ステッピングモーター, ノズル

加速度とジャークのグラフ 13Dプリンターを使っている時の音や振動を抑えて、もっとスムーズな動きでプリントをしたかったので、色々と調べてファームウェアのMarlinを変更・調整しました。変更後は動きがかなりニュルニュルとスムーズな動きになり満足しいます。

3Dプリンターで気になっていた音と振動

3dプリンターを使っていて一番気になっていたのが、その騒音と振動。ノズルがまっすぐに進んでいる時は良いのですが、細かく方向転換する時やInfillのプリントをしている時のガタッガタッと、音と振動が結構するんですね。それがマンションの下階に響いているんじゃ無いかと心配で、プリントしている時は気になるし夜中はプリントしてませんでした。
そこで、この音と振動の心配事をなんとかしようと思い立ったのです。

Marlinの動きに関する部分

僕が使っているファームウェアは”Marlin”です。バージョンは”1.0.5-r2″。その中でノズルの動きに関する部分は”Configuration.h”の437行目から459行目にある「MOVEMENT SETTINGS」の箇所です。

//// MOVEMENT SETTINGS
// default settings

#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,2560,146}
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25}
#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}

#define DEFAULT_ACCELERATION 3000
#define DEFAULT_RETRACT_ACCELERATION 3000

#define DEFAULT_XYJERK 20.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0

今回その中の、DEFAULT_ACCELERATIONとDEFAULT_RETRACT_ACCELERATIONの加速度に関する部分と、DEFAULT_XYJERKのジャークに関する部分をデフォルト値から変更することでノズルの動きをスムーズにすることが出来ました。

JERKの設定が音と振動の発生を左右する

加速度(Acceleration)と減速のマイナス加速度(Retract Acceleration)については、そんなに難しく無いと思います。加速度を大きくすれば早く目標速度まで達し、小さくすると遅くなる。急激な速度変化を抑えることで音と振動の発生も多少は少なくなると思い、デフォルト値の3000mm/s^2から1000mm/s^2に下げました。
問題はXYJERKの設定。これ、初めは何のことかさっぱり分かりませんでした。”jerk”の英単語の意味を調べてみると「引き上げ」とのこと。重量挙げのジャークです。そこで色々と調べてみるとMarlinの開発者の一人であるErik Zalmが”Can somebody explain these?“の質問に応える形で説明していました。

Jerk is the max. instantaneous speed change allowed. If the jerk is 20 the a speed change from 0 -20 mm/s will be instantaneous. (No acceleration part)
But also for speeds changes from 60-80 and 50-30 etc.
Speed changes > jerk will have an acceleration part.
A speed change of 10 – 80 will start at 30 and accelerate to 80.

要するに、設定したJERKの速度に加速度無しで引き上げますということ。減速時も同じです。速度が0mm/sから20mm/sにする時は、加速無しでいきなり20mm/sからスタートします。また0mm/sから50mm/sにする時は、加速開始が20mm/sから始まります。逆に50mm/sから0mm/sにする時は、20mm/sまでマイナスの加速度で減速してその後はストンと0mm/sになります。
したがってこのJERKによってノズルが急に動いたり、急に止まったりするので、その時に音と振動が発生してるのです。

加速度AccelerateとジャークJerkの関係

移動グラフ 図1

[図1]

例えば速度を50mm/s、加速度を一定に設定し[図1]のように(A)点から(B)点へ移動するのに、XYのJERKが無い時(XYJERK = 0mm/s)と、ある時(XYJERK = 20mm/s)を比較してみます。

(1)XYJERK=0mm/s の時[図2]

速度のグラフ 図2

[図2]

グラフの縦軸は速度、横軸は時間です。XYJERKが0mm/sなので、加速は速度0mm/sから始まり、速度が50mm/sになると加速は無くなり定速になります。減速の時も同じで、マイナスの加速が50mm/sから始まり、速度が0mm/sになると終わります。

(2)XYJERK=20mm/s の時[図3]

速度のグラフ 図3

[図3]

今度はXYJERKを20mm/sに設定したので、速度はJERKによって引き上げられるので20mm/sから加速が始まります。減速時は50mm/sから20mm/sに減速した時点でJERKによって速度は0mm/sに引き下げられます。

XYJERKがどの様に働くか分かっていただけたでしょうか。JERKによってパスの最初と最後に急制動が発生しているのです。

JERKの設定によって影響すること

MarlinのXYJERKの値を大きくした時と小さくした時のメリットが、Repetierの説明”Repetier-Firmware Documentation“に書いてあります。

 ■XYJERKの値を大きくした時
  ・プリント時間を短縮する。
  ・溶けたフィラメントの塊を減少させる。

 ■XYJERKの値を小さくした時
  ・機械的なストレスを減少させる。
  ・動きをスムーズにする。
  ・方向転換時のフィラメント接着の向上。
  ・ノイズの低減。

と書いてあり、XYのJERKを小さくした方がいろいろとメリットが多い様な気がしますが、問題点がありました。

方向転換時の動きを考えてみる

移動グラフ 図4

[図4]

どんな問題点が出てくるのか、ノズルが方向転換をする場合の動きを考えてみます。
[図4]のように(A)から(B)にX方向に動き、そこで方向を90度変えて(B)から(C)へとY方向へ動くとします。速度は50mm/s、加速度は一定、XYJERKは20mm/sです。
こちらも縦軸を速度、横軸を時間にして、X、Y方向をそれぞれ[図5][図6]にしてみます。

X方向の速度グラフ 図5

[図5]X方向

Y方向の速度 図6

[図6]Y方向

このX方向とY方向の図を基にしてノズルの絶対的な速度のグラフを書いてみると[図7]のようになります。

速度のグラフ 図7

[図7]

方向転換点の(B)で20mm/sまで一旦減速して、また再び加速しています。JERKの設定値によってどこまで減速するのかが変わってくるということですね。
上の様に大きな角度の方向転換をする時はJERKを小さくすれば、X、Y軸方向での急制動が少なくなってそれだけスムーズに動いて振動も少なくなります。加速する時間が伸びますがそれほど気になる長さでは無いと思います。インフィルをプリントする時や四角形をプリントする時はとてもスムーズになります。
しかし、JERKを小さくすると小さな角度の方向転換でも減速→加速をすることになり、多角形のパスに分解されている円形部分などをプリントする時に、パス毎にいちいち減速→加速をするので動きがぎこちなてくシームレスではなくなり、逆にスムーズな動きとならなくなってしまいます。

スムーズなACCELERATIONとXYJERKの設定値は?

それじゃあ加速度とジャークをどのくらいの値にするのが良いのかということですよね。 方向転換の角度をいろいろと変えて速度のグラフを書いて見ようと思ったのですが、斜めに進む時の速度をXとY方向に分解してそれぞれ加速度とジャークを考慮して、さらに直線的に進む為にX、Yどちらかの速度変化に合わせてとかいろいろ考えてみたのですが、結局分からなくなってしまいました。
そこで速度を50mm/sに設定してXYJERKの値を幾つか変えてプリントしてみたところ、XYJERK=5mm/sではちょっと小さすぎました。パス毎に減速→加速を頻繁に繰り返してしまいます。その後、XYJERKを15mm/s、10mm/sと変えて試して見ましたが、今のところ10mm/sが良いです。もちろん最適なJERK値はノズルの速度によって変わってきますね。
XYJERKを変更したのでエクストルーダーのジャークEJERKの値も同じ割合で変更してみたのですが、見た目には全く変化が分かりませんでした。
これで3Dプリンターの動きはスムーズになり気兼ね無く夜でも3Dプリントすることが出来るようになりました。(いや、振動が全て無くなった訳ではないので多少は気兼ねするのですが…。)

今回のブログどうでしたか?文章の下書きやグラフを何度も何度も書き直してやっとアップ出来ました。下手な文章や、間違った理解をしている所も多々あると思いますが、少しでも3Dプリント・ライフの参考になれば嬉しいです。

No Related Posts

Categories: その他 / Tags: Marlin, ステッピングモーター, ノズル

« PWMモーター速度可変キットとケースの製作
“I AM KENJI”のプレート作りました。STLファイルあります。[追記あり] »

Comments

  1. yama4ta says

    2015年1月24日 at 8:46 AM

    昨年暮れからプリンターを製作してます。
    当初はネジ駆動でしたが、6mm/s以上で脱調するため、ベルト駆動に改良したところです。
    今回の記事内容は参考になりました。”いいね”

    返信
    • AKIRAAKIRA says

      2015年1月24日 at 10:53 AM

      yama4taさん
      コメント&”いいね”をありがとうございます。
      このブログが参考になりとても嬉しいです。
      どんな3Dプリンターを作っているのでしょうか?
      これからもこのブログを宜しくお願いします。

      返信
  2. yama4ta says

    2015年1月24日 at 1:43 PM

    返信ありがとうございます。参考にMarlinをいじったら、動きが満足できる状態になりました。

    FACE BOOKの”山下 栄一”で情報発信してます。

    返信
    • AKIRAAKIRA says

      2015年1月24日 at 11:39 PM

      山下さん。Facebookを大変楽しく見させていただきました。ノズルの速度とステッピングモーターが脱調しない回転速度を考えるとベルトの方が良いと思います。CNCをやっていらっしゃるようですが、ベルトでもほとんどバックラッシュも無いと感じています。
      ホットエンドに付けるM6のネジですが、メタル製の物を僕も一時期使っていましたが、どうやら熱でフィラメントが穴の中に焦げ付いてしまい、その結果フィラメントが送り出せなくなってしまいました。なのでテフロンチューブが入っているのに戻しています。
      それと今、Slic3rの日本語マニュアルを作成しています。まだ途中ですがよければご覧になってください。少しずつ増やしていってます。→http://3dp0.com/slic3r/

      返信
  3. yama4ta says

    2015年1月25日 at 10:16 AM

    ありがとうございます。
    ご指摘のとうり、M6のネジには苦労しました。M6のネジをφ4で貫通させ(手持ちの旋盤は無理なので会社で)テフロンチューブで事なきを得ています。また、当初、CNCフライスを考えていました。
    偶然にも、長男が同じ内容の翻訳に着手してます。
    拝見が楽しみです。

    返信
  4. Genie says

    2015年2月13日 at 12:59 AM

    こんにちは!

    詳細な内容の解説記事をアップしてくださってどうもありがとうございます。このテーマで書かれた日本語の記事は今まで存在しなかったのではないでしょうか。多大な時間を割いて判りやすいイメージを描かれ、また理解しやすい文章で説明されていることに敬服いたします。

    返信
    • AKIRAAKIRA says

      2015年2月13日 at 12:46 PM

      Genieさん、コメントありがとうございます。
      Genieさんのブログをいつも見ています。また3Dプリンターを自作した際には大変参考にさせて頂きました。ありがとうございます。
      JERKに付いては日本語以外の情報も少なく、自分で理解するのに時間がかかりました。実は方向転換時にJERKが適用されるかされないかの分岐速度についても書こうと思ったのですが、計算が難しいことと理解不足なので断念しました。
      これからもこのブログをよろしくお願いします。

      返信
  5. Nippy says

    2018年7月22日 at 1:01 PM

    Jerkは躍度(加加速度)のことですので,この記事での説明は間違っていると思います.
    Jerkは初期速度(m/s)ではなく,加速度の時間微分(m/s^3)のことを指していると思います.

    https://ja.wikipedia.org/wiki/%E8%BA%8D%E5%BA%A6

    https://car.watch.impress.co.jp/img/car/docs/1099/891/html/109_o.jpg.html

    返信
    • AKIRAAKIRA says

      2018年7月22日 at 3:49 PM

      Nippyさん、コメントありがとうございます。
      Nippyさんが言うように本当の”Jerk”の意味としては違いますね。
      本文中でも引用したCan somebody explain these?(https://github.com/MarlinFirmware/Marlin/issues/367)でErikZalm氏が説明していますが、Marlinで使っている”Jerrk”は本来の”Jerk”では無いと言っています。
      ですので、ここではあくまでMarlinで使っている”Jerk”がどういうものなのかについて書いたものです。

      返信
  6. 匿名 says

    2022年9月25日 at 5:27 AM

    静音設定を探していたらここにたどり着きました。
    先人に学ばせていただきます。

    返信

Trackbacks

  1. SilentStepStick | Genie's Blog より:
    2015年2月15日 11:50 PM

    […] http://3dp0.com/acceleration-and-jerk/ […]

    返信
  2. 重力③(ステッピングモーターの脱調との戦い) | DaisukeOgura Weblog より:
    2015年4月22日 12:06 AM

    […] erk)が関係していると考えました。要はモーターの加速度や動き始めの設定です。(詳しくはココ) あとはG28やG32の速度ですね。とにかく脱調しないような設定を煮詰めて、G32を繰り返して […]

    返信

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。

CAPTCHA


Follow Me on Twitter
Follow Me on Twitter
Follow Me on Instagram
Follow Me on Instagram

Instagram

Sorry:

- Instagram feed not found.

Slic3r日本語マニュアル

Slic3r日本語マニュアル

Latest Posts

  • AutodeskのFusion360で”ローレット加工”を作るAutodeskのFusion360で”ローレット加工”を作る
  • デルタ型3Dプリンターを作る。(5) -フレーム完成デルタ型3Dプリンターを作る。(5) -フレーム完成
  • 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る100円ショップのアクリルスタンドでLCDコントローラーのケースを作る
  • デルタ型3Dプリンターを作る。(4) -垂直キャリッジ完成(←まだココ)デルタ型3Dプリンターを作る。(4) -垂直キャリッジ完成(←まだココ)
  • 新しいフィラメントを買いました(4) VerbatimバーベイタムPLA 1.75mm 1kg シルバー新しいフィラメントを買いました(4) VerbatimバーベイタムPLA 1.75mm 1kg シルバー

Popular Posts

  • 接着剤をいろいろ試す -PLAの接着 接着剤をいろいろ試す -PLAの接着
  • AutodeskのFusion360で"ローレット加工"を作る AutodeskのFusion360で”ローレット加工”を作る
  • 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤
  • 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整
  • Marlin_v1の設定 Marlin_v1の設定

Tags

123D Design A4988 Arduino Arduino MEGA fill pattern Fusion360 g-code Hobbed Bolt INDIEGOGO J-head hotend LCDコントロールパネル Marlin OpenSCAD Printrun Prusa Mendel Python Ramps Reprap Silentstepstick slic3r STLファイル Thingiverse Xキャリッジ アイコン アルミフレーム エクストルーダー クラウドファンディング ステッピングモーター タイミングベルト ノズル パーツ ヒートベッド ビット ファン フィラメント ベアリング ホットエンド リニアシャフト リニアベアリング ルーター 充填パターン 塗料 寸切りボルト 接着剤 改良

PROFILE

AKIRA
AKIRA

 3Dプリンターを自作したり、改良したり、それで好きなモノをプリントしたりして遊んでいます。
 なかなか上手く行かないことが多くて試行錯誤してます。

このサイトについて

Popular Posts in 30days

  • 接着剤をいろいろ試す -PLAの接着 接着剤をいろいろ試す -PLAの接着
  • AutodeskのFusion360で"ローレット加工"を作る AutodeskのFusion360で”ローレット加工”を作る
  • 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整 3Dプリンターの動きをスムーズに!Marlinの加速度AccelerationとジャークJerkの変更・調整
  • 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤 強力・瞬間-PLAにはアクリル用接着剤がベスト!アクリサンデー接着剤
  • Z軸の不調→解決 Z軸の不調→解決
  • Marlin_v1の設定 Marlin_v1の設定
  • スライスソフトSlic3rのFill Pattern充填パターンの比較 スライスソフトSlic3rのFill Pattern充填パターンの比較
  • スライサーが出力するGコードのパスと実際のプリントを比較 スライサーが出力するGコードのパスと実際のプリントを比較
  • Prusa Mendelの躯体(7) ~プーリーとタイミングベルト Prusa Mendelの躯体(7) ~プーリーとタイミングベルト
  • 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る 100円ショップのアクリルスタンドでLCDコントローラーのケースを作る
Copyright © 2017 3Dプリンター作る! All Rights Reserved.
Powered by Genesis Framwork ・ WordPress