Marlinをv1にしてからプリントアウトするとなんだかおかしいんですよね。
初めはどこがどう変なのかよく分からなかったのだけど、プリントアウトしたものをよくよく見てみたらZ軸方向の高さが低いのです。具体的に言うと、高さが10mmのものをプリントして出来上がったものの高さを測って見ると7~8mmしかないんです。
その原因と解決法です。
Marlinの設定
何が悪いのかまず疑ったのはMarlinの設定。
Marlin_v1の設定で書いたのだけど、”単位あたりのステップ数”が違うのではないかということ。
再度、”RepRap Calsulator3“で計算をやり直してみたけど間違いは無い。さらに、以前のMarlinのConfiguration.hの設定を見てみたけど、単位あたりのステップ数は変更していないので問題は無いはず。ということは原因は違うんだな。
ネットで検索
そこで次はネットで検索。
Z軸だけが全然動かないっていうのがあったけど、ちょっと違う。Mendelを使っていて高さが半分位にしかプリント出来ないっていうのもあったけど、結局これはZ軸のモーターシャフトと寸切ボルトをつなぐ部分の締め付けが甘く軸が滑ってしまっていて、ボルトを締め直したら直ったというものでした。ここでも原因は分からずじまい。
プリントを観察
ネット検索でも分からなかったので今度は10mm×10mm×10mmの直方体をOpenSCADで作り、それをプリントアウトして観察してみることにしました。
そこで発見!
Z軸のモーターはレイヤーが上がる時にしか動かないのだけど、そのレイヤーが上がる時の4回に1回位の割合でモーターが動いていない。動いていないということは前のレイヤーと同じところでプリントしていることになりますね。ホットエンドが熱いからプリント済みの部分が再度溶けているので、ヘッド自体が動かないことはないけど、溶けたフィラメントの行き場が無いからムニュムニュと外側に押し出されていっている感じです。
原因はモータードライバA4988
たまにZ軸のモーターが動かないのは結線か接続が良くないのかなと思って手で触ったりして調べていたところたまたまRamps1.4に付けているモータードライバA4988のヒートシンクに触れてしまったのだけど、これがむちゃくちゃ熱くなっていました。
使っているのは違うものだけどスイッチサイエンスで売っているA4988のページをみてみたところ、このモータードライバには過熱シャットダウン機能が付いているということです。ああ、やっぱり熱がいけなかったんだなと思って余っていた8cmのファンをATX電源に直接つなげて常時ファンを回してA4988を冷やすことにしました。
そしてファンを回しながらプリントしてみたところきちんとZ軸のモーターも動くようになり、プリントアウトしたのの高さを測ってみたらきちんと10mmありました。(あっ、正確にいうと最初のレイヤーをヒートベッドに押し付けて接着を良くしてるので最終的な高さは0.1mm程度低くなっています。)
Marlinの新しい仕様?
いままでRamps1.4にファンを使っていなくても問題は無かったんだけど、新しくMarlin_v1に変更してからのモーターの動きを見てみると、どうやらプリントが始まるまでのヘッドが原点で待機している時や、z軸のモーターが動いていない時(レイヤーを上げる以外の時)などの、ステッピングモーターが止まっているときにはホールディングトルクが掛かって状態になっているみたいです。
以前のMarlinの場合、モーターが止まっている時に手で軸を動かすと動く状態だったけど、新しいMarlinでは、軸を手で動かすことが出来なくなっています。不用意にモーターが動いてしまいズレが生じてしまうおそれがあるので、どちらが良いかと言えばホールディングトルクが掛かっている後者でしょうね。そしてモータードライバの熱対策をきちんとすることが必要ですね。
ホールディングトルクが掛からないようにする方法
以前のMarlinのようにホールディングトルクがかからなようにする方法は2つあります。(もっとあるかもしれないですけど…)
(1)Mーcodeを使う。
Mーcodeの”M84″を使うとホールディングトルクがかからない。
GitHubのMarlinのページにも書いてあります。
M84 – Disable steppers until next move, or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout.
M84の使い方
M84 S0
”S”のあとの数字でホールディングトルクが掛かる時間(秒)を調節できます。
Printrunでプリントをする前にコマンドを打ち込むか、Slic3rのPrinter Setteing/Custom G-codeのStart G-codeに書き込んでからスライスするで出来ます。
(2)Marlinを書き換える
Marlin_v1の”Configuratin_adv.h”の232行目を以下のように書き換える。
//default stepper release if idle
#define DEFAULT_STEPPER_DEACTIVE_TIME 0
こちらも同じように数値によってホールディングトルクが掛かる時間(秒)を調節出来ます。デフォルトは60。
別の熱対策方法
モータードライバをA4988の代わりにDRV8825を使うのもいいかもしれないです。スイッチサイエンスのページには”ヒートシンク無しで一相当り1.5Aの大電流に対応します。”と書かれているのでA4988よりも熱には強そうです。(DRV8825自体は2.5Aまで対応してます。A4988は2Aまで。)しかも1/32ステップの解像度まで対応しているのでちょっと楽しそうですね。
スイッチサイエンス ステッピングモータードライバDRV8825
コメントを残す