基板が壊れた3Dプリンタを、とりあえず動くようにしたい

# おことわり
**電気配線は失敗すると火災の原因になります。**
**何があっても自己責任です。予めご了承ください。**

#条件と目的
  * 基板が壊れた3Dプリンタを、代替基板を使って安上がりに動くようにしたい。
  * 海外通販はイヤ。国内で買える部品で何とかしたい。Arduinoなら何とか扱える。
 
という人向けです。

今回は5ちゃんねるにて「SCOOVO X9H」というプリンタが故障したとの事だったので、設定についてはそれを対象として記述していますが、内容としては一般的な3Dプリンタの基板換装や、自作の3Dプリンタの電気回りについて参考にしていただければと思います。

#必要なもの

  * ① RAMPS 1.4 ボード
  * ② Arduino MEGA 2560
  * ③ A4988ステッピングモータードライバー 4個（X,Y,Z,E0用）
  * ④ LCDボード(12864 Full Graphic Smart Controller)
  * ⑤ LCDボードを①につけるL型のアダプタ(Smart Adapter)

とりあえず安く動かしたいならば、①～⑤を含んだものが幾つか売っているので、それを買います。
https://www.amazon.co.jp/dp/B07YDSP3K7/
https://www.amazon.co.jp/dp/B071FHZJHT/

但し①②は粗悪品が多く出回っていて故障率が高く、基板3枚重ねなので、最終的に取り付けたいところにつかない可能性もあります。その場合、

  *   ⑥ MKS Gen 1.4 ボード

を③④を再利用、もしくは別途個別に手配する方法があります（①②⑤は不要）。個人的にはおすすめです。個別購入のリンクは下記参照してください。
https://www.amazon.co.jp/dp/B078SSNJZ7/
https://www.amazon.co.jp/dp/B07TB572Y3/
https://www.amazon.co.jp/dp/B010Q17CAI/

他にも⑥に③をオンボードで実装した「MKS Base」というのがあり、ジャンパ設定とかも必要ないので最も扱いやすかったのですが、Amazonに取り扱いなくなった為、除外しました。
また、正直32ビットボード系(MKS Sbase,SKR等)のほうが断然良いですが、VSCode + Platform.ioを使用する為、Arduinoではありません。今回の主旨から外れるため除外します。気が向いたら調べてください。

#結線について

現在の3Dプリンタのボードのピン配置を、①または⑥のボードにあわせて端子を変更します。
コネクタはそれぞれ異なるので、適宜加工してください。
①の場合：http://www.geeetech.com/wiki/index.php/Ramps1.4
⑥の場合：https://wiki.keyestudio.com/Ks0282_Keyestudio_3D_MKS_Gen_V1.4_Printer_Motherboard_Control_Board(Black_%26Environmental-protection)

よく使うコネクタは「千石電商」か「秋月電子通商」で買えます。なんでもよければAmazonでも買えますが、粗悪品多いので注意です。オスメスあるものは、メスがケーブル側です。

JST(日本圧着端子） XHシリーズ：
http://akizukidenshi.com/catalog/c/cxh/
https://www.sengoku.co.jp/mod/sgk_cart/search.php?cid=3378
https://www.amazon.co.jp/dp/B071XV8LRB/
※もし秋葉原が近いなら、「ネジの西川」の2階が最安値です。

2.54mm QIコネクタ（ただのジャンプワイヤーみたいなの）：
http://akizukidenshi.com/catalog/c/cqi2550/
https://www.sengoku.co.jp/mod/sgk_cart/search.php?cid=3380
https://www.amazon.co.jp/dp/B078SQ3LSV/

圧着工具も無ければ買いましょう。
調べてみるとAmazonで安くて使いやすいのがあるようなので、持っていなければ、これでよいと思います。
https://www.amazon.co.jp/dp/B00W4WRZPU/
参考：https://fumimaker.hatenablog.com/entry/2019/06/16/220408

**最も重要なのは電源端子です。恐らく旧式なので12Vだと思いますが、12Vはヒートベッド加熱時の電流が大きく、結線悪いとコネクタが溶けたり、最悪火災も発生した事例もあるので細心の注意が必要です。**
MOSFETの性能によるところもあり、⑥は①と比べてオン抵抗が低い新しいタイプのMOSFET使っているので気分的には少し安心できます。（Amazonに売っている互換品ボードのメーカーがケチっていなければですが）
対策として「MOSFETボード」というのもあるので、実運用時には検討してください。
https://www.amazon.co.jp/dp/B07C4VN36Q/

またファームウェアの動作検証に頻繁に電源ON/OFFを行う場合があります（後述）。必要であれば、手元で電源ON/OFFができるスイッチがあるので、これも手配しましょう。
https://www.amazon.co.jp/dp/B003VJZYX0/

①⑥ともにジャンパ設定が必要ですが、A4988ならデフォルトで動くはずです（未確認）。
またA4988はステッピングモーターの仕様にあわせて、流せる電流の上限を可変抵抗で調整する必要ありますが、とりあえず動かす分には調整しなくても動くと思います。
参考：
https://hirasaka001.blogspot.com/2017/04/proxxoncnc-24-a4988.html
http://letsdiy.hatenablog.com/entry/2017/03/21/152009

まずは電源と上記のボード類だけ繋いで電源入れて、ショートしたりしないか予め見ておくと良いです。

# ファームウェア

![text-day.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/d5b6557f-d8eb-9aa9-1eee-6b6a4ed638e9.png)

Arduinoを使って書き込みができる、Marlin 1.x系を使います。
https://marlinfw.org/meta/download/
ここから1.1.x.zipをダウンロードします。

コンパイルに必要なのはMarlinフォルダ内のMarlin.inoです。
編集が必要なものは下記2点のみです。後は基本上級者以外いじってはいけません。

  * Configuration.h
  * Configuration_adv.h

①～⑥を使う前提だと、前者のファイルの修正だけでとりあえず動くはずです。

また3D Printerの改造については、**伝統的に3Dプリンタメーカー毎にFacebookのUser Communityがあり、そこで上記2点を配っている場合があります。**
またMarlin公式の説明ページがあります（英語）。下記記述と異なる場合は、公式ページを正としてください。
https://marlinfw.org/docs/configuration/configuration.html

まずMarlinフォルダにはExample Configurationフォルダがあります。
有名どころのプリンタは、ここの中に参考設定値があります。
個人的ですが、SCOOVO X9HはUltimakerのクローンだと思いますので、AliExpress/CL-260を参照することにします。

下記にCL-260のConfiguration.hを参照し、個人的な編集すべきと思った箇所と説明です。
設定項目は完全に憶測です。実機に合わせて適宜修正してください。
また参考設定値のConfiguration.hは古いバージョンの時があり、上書きコピーではなく
オリジナルを1項目ずつ修正したほうが良いです。当設定項目はVer.1.1.9をもとにしています。

`#define SERIAL_PORT 0`
→3DプリンターをUSBからコマンドを送って印刷したり、設定値の調整をしたりするポートです。
おそらくこのままで良いと思いますが、通信できなかったら変更してみてください。
通信できるか否かはPronterfaceというフリーソフトを使用します。
https://www.pronterface.com/
これにCOMポートとボーレートを指定して、正常にConnectできれば正常です。使用方法の詳細は割愛します。

`#define CUSTOM_MACHINE_NAME "CL-260"`
→起動直後に表示される文字です。好きに修正してください。

`#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0`
→フィラメントの直径です。値を1.75に変更します。

`#define MOTHERBOARD BOARD_RAMPS_14_EFB`
→使用するボードの種類です。この値はBoards.hを参照して記述します。①②なら恐らくこのまま、⑥ならBOARD_MKS_GEN_13にします。

`#define TEMP_SENSOR_0 1`

`#define TEMP_SENSOR_BED 1`
→実機の温度センサーの仕様です。プリンタの仕様にあわせます。
SCOOVOはABS使えると書いてあり、ボード仕様から推測して両方100kセンサーだと思うので、このままでいいと思いますが、全然所得温度が違う場合は、センサーの形状から調べて変更してください。（後述）

`#define DEFAULT_Kp 22.2`
`#define DEFAULT_Ki 1.08`
`#define DEFAULT_Kd 114`

`#define DEFAULT_bedKp 10.00`
`#define DEFAULT_bedKi .023`
`#define DEFAULT_bedKd 305.4`
→目的の温度までが単に加熱するのではなく、どれだけ加熱すれば目的の温度に最短かつ正確に達するか常に計算し、温度センサーの値を元に制御を行います。これをPID制御といいます。この値はその計算式に必要な値です。
ただ動かすならこのままでいけると思いますが、修正が必要になるかもしれません。（後述）

`#define EXTRUDE_MINTEMP 170`
→フィラメントの送り出しをするとき、ヒートノズルが加熱していないと送り出せません。これはその最低温度の指定です。特に変更不要だと思いますが、必要に応じて修正してください。

`//#define ENDSTOPPULLUP_XMIN`
`//#define ENDSTOPPULLUP_YMIN`
`//#define ENDSTOPPULLUP_ZMIN`
→実機のエンドストップセンサーの仕様によって、予め通電が必要な場合はコメントアウトを取り消します。多くの場合は不要ですが、実機仕様によります。

`#define X_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.`
`#define Y_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.`
`#define Z_MIN_ENDSTOP_INVERTING true  // set to true to invert the logic of the endstop.`
`#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.`
→エンドストップセンサーは正論理で検知させるか、負論理で検知させるかの指定です。これも実機仕様によります。

`#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 160.6 }`
→**重要です。** 前の3桁はX,Y,Z、後ろの1桁はエクストルーダーにて、1mm動かすためにステッピングモーターに何パルス送れば良いかを指定します。本来は歯車、リードスクリューなどの実機の仕様から計算して設定します。
もしFacebookのCommunityサイトとかで配布されていたら、その値を参考にしてみます。
それぞれ不明な場合の、簡易的な測定方法を別途記述します。

`#define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }`
→上記と同様、X,Y,Z,エクストルーダーの最大加速度を指定します。あくまで最大で、実際にはスライサー側で指定します。個人的にはエクストルーダーの最大加速度が遅すぎると思います。25 → 150に設定します。

`#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN`
→一般的なZ軸のエンドストップセンサーがあって、「ヒートベッドとヒートノズルの距離はコピー用紙と調整ネジで調整する場合」はこのままです。
これがヒートノズル周辺にセンサーがあって、自動的にヒートベッドとの距離を調整する場合（オートレベリング機能）はこれをコメントアウトして、それぞれの仕様に合うように修正します。センサーの種類や方法によって多種多様なので割愛します。

`#define INVERT_X_DIR false`
`#define INVERT_Y_DIR true`
`#define INVERT_Z_DIR false`

`#define INVERT_E0_DIR true`
→これも実機仕様によります。ステッピングモーターなので正と負の方向に指定しただけ動かすことができますが、マイコンからみた正方向と、実際に動く正方向が正しいかを確認して決定します。

`#define X_BED_SIZE 220`
`#define Y_BED_SIZE 220`

`#define Z_MAX_POS 260`
→箱型3Dプリンターの最大印刷サイズを指定します。今回の機種はヒートベッドのサイズは200x200ですので修正します。Zも同様ですが、とりあえずこのままで良いでしょう。

`#define PREHEAT_1_TEMP_HOTEND 180`
`#define PREHEAT_1_TEMP_BED     70`
`#define PREHEAT_1_FAN_SPEED     0 // Value from 0 to 255`

`#define PREHEAT_2_TEMP_HOTEND 240`
`#define PREHEAT_2_TEMP_BED    110`
`#define PREHEAT_2_FAN_SPEED     0 // Value from 0 to 255`
→プレヒート条件の設定値を2つまで決められます。伝統的に1がPLA、2がABSを想定して決定しています。主にPETGとか使うのであればHOTEND 220、BED 90などに変更します。
昔は直前にPLA,ABSの記述を書くところがありましたが、いつの間にかlanguage_〇〇.hファイルの`#define MSG_PREHEAT_〇〇`に移動したようです。

`#define LCD_LANGUAGE en`
→kanaに変更すると日本語になりますが、はっきり言って微妙です。お好きにどうぞ。

`//#define REVERSE_ENCODER_DIRECTION`

`//#define REVERSE_MENU_DIRECTION`

`//#define INDIVIDUAL_AXIS_HOMING_MENU`
→LCDボードのロータリースイッチを回したときに、カーソルが上下どちらに動くかです。思ったのと反対方向に動く場合はコメントアウトを削除します。

`//#define SPEAKER`
→ONにするとブザー音が有効になります。ブザー音は画面の操作中の確認音、異常発生時の警報音の他、独自のGコードを埋め込み、印刷完了時に鳴らす（後述）といった事もできますが、正常になるかはハードウェアによります。

`#define REPRAP_DISCOUNT_SMART_CONTROLLER`

`//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER`
→**重要です。④は後者のフルグラフィック版です。必ず前者をコメントアウト、後者のコメントアウトを外してください。**
もしかしたら前者はSCOOVO純正が互換品かもしれませんが、似たような見た目で実は回路が異なるものが市場に多数ありますので、下手したら両方破損します。この設定間違えているだけで、LCDが破損したことがありました。（筆者の経験、2機種2枚）
確実に動作し、入手しやすいものを今回選定しました。
ちなみに前者は下記ですが、実機にどのみちつけられないので、大きいほうが操作しやすいと思います。
https://www.amazon.co.jp/dp/B00JPVEVQY/

Configure_adv.hはBabySteppingとか有効にすると便利ですが、説明は割愛します。
参考：
http://3dprintfaq.com/index.php?action=artikel&cat=3&id=10&artlang=en
https://medium.com/@printartpie/start-every-3d-print-perfectly-with-a-z-probe-babystepping-6eb66c7bba09

コンパイル、書き込みも割愛します。書き込み時にエラーになっても、実際には正常に書き込めている場合があります。
コンパイル時にはシリアルモニターを見ながら実施してください。正常に書き込めれば、シリアルモニターに文字列が流れてきます。

# 初期動作確認

(写真は筆者所有のプリンタです。自分のプリンタに置き換えてください)
最初に、ホットエンド部分を筐体の真ん中あたりに手動で移動、ヒートベッドもホットエンドから50mm程度は最低でも離します。ヒートベッドはリードスクリューを手で回せば動くはずです。

次にX,Y,Zが正しい方向に動くか確認します。<font Color="blue">Menu → Move Axis → Move X → Move 10mm</font>
正しい方向に動かなかったら、`INVERT_X_DIR` `INVERT_Y_DIR` `INVERT_X_DIR`の値（True/False）を書き換えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/e7af3df8-f815-87bf-57fc-daeb523ca4d8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/935b7a89-b12a-a071-a70c-427ca182aace.png)

正しい方向に動くことを確認したら、10mm指定をしたとき、正しく10mm動くかを定規を使って確認します。
正確さを考慮するなら、30mm程度動かして30mm動くか、この後正方形を造形したときにノギスで確認するとかすると良いです。
Z軸の場合は、ホットエンドとヒートベッドの距離を使って測定すると良いでしょう。
移動距離が期待通りではない場合、`DEFAULT_AXIS_STEPS_PER_UNIT`の値を増減して修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/5153c270-2ceb-da95-5f78-f7dd874c4b79.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/d4b0f906-3700-e312-f77e-22725e1a7db5.png)

次はエンドストップスイッチの動作確認になります。<font Color="blue">Menu → Motion → Move Axis → Home X</font>
ここで重要なのは、`Home X`を実行する前に、X軸のエンドストップはどれかを予め確認し、`Home X`を実行したら、すぐにすぐに定規等を使って該当するエンドストップのスイッチを押下して動作が止まるか確認します。

  - スイッチを押下する前にストップする　→　スイッチの論理が反転している可能性があります。`ENDSTOP_INVERTING`の値を変更してみます。
  - スイッチを押下してもストップしない　→　エンドストップスイッチの配線が間違っている可能性があります。他のスイッチを押下して反応するか確認します。それでも反応しない場合は、ケーブルが抜けていないか、`ENDSTOPPULLUP`を有効にしてみる等して、切り分け作業を行います。

エンドストップが反応しない為に、ホットエンドが筐体に衝突しても動き続ける、ヒートベッドが必要以上に上がろうとしたりして、最悪プリンタを破損するので、ボードのリセットスイッチを押下、PronterfaceのEmergency Stop、コンセントを引っこ抜くなどの緊急停止できるよう準備して実施してください。
最後に<font Color="blue">Menu → Motion → Auto Home</font>を行って、正しい位置に止まれば、ひとまず完了です。

次にホットエンドです。ヒートノズル、ヒートベッドの温度を個別に上げて、正常に温度を所得しているか確認してください。
LCDに-14℃とかでていたら、ケーブルが刺さっていない（外れている）か、刺しているところを間違えています。
もし「温度がやたらと高い（常温なのに200℃以上で検出）上に、加熱すると逆に温度が下がる」ような奇妙な動作をした場合、PT100を使っている可能性があります。一般的な100kサーミスタとの違いはホットエンド部分を見ればわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/79b69f63-3c99-3327-d18a-020224270156.png)

PT100は別途アンプボードという変換が必要になりますが、アンプボードをAmazonに売っているのが確認できないので、100kサーミスタに交換してしまうのが一番手っ取り早いです。100kサーミスタはAmazonで安価に売っています。
https://www.amazon.co.jp/dp/B079XYSWN2/

また加熱中にLCDに「THERMAL RUNAWAY～」と表示され、ブザーがけたたましく鳴ったら、プリンタの温度条件がPID制御のパラメータとして記述した推定値と大きく異なるのが原因です。
この場合一度電源切って、冷ましてから電源入れて、Pronterfaceを接続してPID AutoTuneを実行して、得られた値を`#define DEFAULT_Kp`などに反映します。
PID AutoTuneについては下記を参照してください。
参考：
https://www.th3dstudio.com/knowledgebase/p-i-d-auto-tune-guide/
https://3daddict.com/pid-tune-3d-printer/

最後にエクストルーダーの送り出しを確認します。<font Color="blue">Menu → Move Axis → Extruder</font>
ヒートノズルの温度を上げてフィラメントを挿入します。この時使用するフィラメントは白系が良いと思います。マジックペンでマーキングを行い、0～20mm送り出しを行ってください。
正常に10～20mm送り出したか（逆回転している場合は`#define INVERT_E0_DIR`を修正）、圧力が強すぎてエクストルーダーが脱調（ガッ、ガッと音が鳴って、フィラメントの送り出しギアが空転）していないか確認してください。脱調するなら`DEFAULT_AXIS_STEPS_PER_UNIT`の4番目の値を小さく、送り出しが足りないなら値を大きくします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/f2f3b7d2-4f32-d4c7-13df-a5169d1bea2f.png)

これでファームウェアの調整はひとまず終了です。

# スライサー
![images.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/1b751f30-ae3d-d579-f649-08df6a98f3b1.png)

SCOOVOは独自のスライサーがついていたようですが、今後は無償で使えるスライサーソフトウェアを使います。
ここではUltimakerが配布しているCuraを使います。「Download for free」をクリックしてダウンロード＆インストールします。
https://ultimaker.com/software/ultimaker-cura
Curaは更新が早い分、バージョンによって画面が大きく異なります。Ver.4.5 Windowsをベースに説明します。

インストール後の初回起動時、プリンタの追加を聞かれるので、Add a non-networked printer - Custom - Custom FFF printerを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/61cebcc8-dce7-25fc-63d3-a943fb88a685.png)

この後Machine Settingを聞かれますが、一度無視して進み、初期画面にしてしまいます。
（Cura 4.x系の不具合で、ウィンドウを広げられない為）

最初の画面からSettings - Printer - Manage Printerを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/131c607b-7a14-3d57-b7b5-9ce585a9c13f.png)

PreferencesのPrintersから、先ほど作成したCustom FFF printerより、Machine Settingsを選択します。再度開くMachine Settingsはウィンドウの大きさを変更できるので、下図のように設定を変えていきます。

  * X(Width)、Y(Depth)、Z(Height)は印刷可能サイズの指定です。今回はMarlinの設定値と同じで200x200x260としました。
  * 実機にヒートベッドがある場合、Heated Bedにチェックを入れます。
  * Gコードとは、3DプリンタというよりNC向けの制御装置に共通した命令セットです。flavorはアイスクリームに例えた元々ゲーム業界の俗語で、純粋な状態をバニラ、それに機能を独自に追加したものをフレーバー（もしくはMODなど）と呼びます。G-code flavorはファームウェア毎に拡張されたGcodeの解釈が異なる（もしくは反応しない）ので、使用したファームウェアを選択します。今回はMarlinのままで良いでしょう。
  * Printhead SettingsはX minとY minを設定します。プリンタはHomeの位置を原点としますが、実際にはヒートベッドから退避した位置にあるので、ヒートベッドの角までどれだけあるかを設定します。これは実機で<font color="Blue">Auto Home</font>を実行した後、<font color="Blue">Move X </font>と<font color="Blue">Move Y</font>を使って、ヒートベッドの上にヒートノズルが来るまでどれだけ動かしたかをマイナスつけて記述します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/681393c7-108b-28b1-628d-79b5ae4d4813.png)


Start G-codeとEnd G-codeは、印刷前後に追加するGcodeです。初期値は必要最低限のコマンドしか記述されておりませんが、とりあえず動かす分にはこれで良しとします。

自分の場合、TEVO Tarantulaが流行した頃から言われている「最初に捨て線を引くと1層目の定着が良くなる」というノウハウのGcodeを使っています。ご参考まで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/5ca1e622-7407-9ed3-21aa-0854581af7d2.png)

Start G-code（参考例）

```
G92 E0 ; Reset Extruder
G28 ; Home all axes
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
G1 X0.1 Y180.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y180.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish
```

印刷完了後はヒーターの電源を切って、ヘッドを退避するぐらいしかすることありませんので、元のままでも十分だと思いますが、1つTipsとして、M300から始まるGcodeを使えば、ブザー音を使って、音を鳴らすことができます。
参考：
http://doc.3dmodularsystems.com/plays-a-music-at-the-end-of-a-print/
https://www.crosslink.io/m300-reprap-songs-collection/
今回はA4988のステッピングモータードライバーを指定していますが、TMCシリーズのドライバーを使用すると驚くほど静かになり、一番うるさいのがファンの音になります。そうした場合に印刷完了を知らせるブザーを用意すると便利です。但し、音量調整は無いので寝ている間はうるさいので注意です。

Stop G-code（参考例）

```
G91 ;Relative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning

M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed

;3 Beeps at the Print Finish
M300 S2349 P53
M300 S0 P428
M300 S2349 P53
M300 S0 P428
M300 S2349 P53

M84 X Y E ;Disable all steppers but Z
```

Extruder 1のタブを開きます。ここでは2点設定します。

  * Nozzle sizeは実機で使用しているノズルサイズに合わせてください。一般的な場合は0.4mmで変更不要です。
  * Compatible material diameterには実機で使用しているフィラメントの直径を指定します。1.75mmに変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/f80816a3-31ab-047e-bb01-666a2ab3cad6.png)

ここまで設定したら、Closeを押下してください。最低限の設定は完了です。

説明失念しておりましたが、Curaは日本語表示に変更することができます。この先は日本語表示で説明します。
最初の画面からPreferences - Configure Cura...を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/970963b6-aca2-93a0-2888-a2be5baeae6e.png)

Preferencesが開いた最初の画面にLanguageがあり、ここから日本語を選択すればOKです。Closeを押下して、一度Curaを終了します。再度プログラムを起動したときに、日本語表示になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/0e380618-c15b-acc3-0d3e-5036bfc72590.png)

ここから、ようやくCuraの使い方を説明します。まず印刷するものがない場合は、まずは3D Benchyです。2ちゃんねるで「いいから船見せろよ船！」と怒られたら、これを印刷して見せろとの意味です。Ender3とかi3Mega等は何もしなくても綺麗な造形ができますが、昔は皆プリンタ調整にこればかり印刷した為に、自宅に何艘も保管している方も多いと思います。

https://www.thingiverse.com/thing:763622
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/620df572-a226-987e-f72f-378630909c3d.png)

リンク先のDOWNLOAD ALL FILESからZIPファイルをダウンロード、3dbenchy.stlというファイルが含まれているので、Curaにドラックアンドドロップすると、追加できます。

基本操作：

  - キーボードの←→キー：画面を中心として全体画面を左右回転
  - キーボードの↑↓キー：画面を中心として全体画面の上下回転
  - マウスのスクロール：画面中心に対してズームイン・ズームアウト
  - Shiftキーを押しながらマウスクリックして移動：画面全体の移動

モデルを選択して、印刷位置を調整します。左側に上から

  - モデルの位置移動
  - モデルの寸法変更
  - モデルの回転
  - モデルの反転
  - モデルの個別設定（サポートの有無などをモデル毎に設定できる）
  - サポートブロッカー（サポートをつけたくないところに、ブロック状のブロッカーを指定して無効にさせる）

です。別メーカーのソフトでも同じようなことできるので、特に迷わないと思いますが、モデルの回転のサブメニューに、マウスで指定した平面をビルドプレート接地面にするボタンがあり、覚えておくと便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/2fe4553b-c394-7e0c-fa69-c67cb81b0d9b.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/b02b6fb3-9439-8653-8f2f-5d10fe573154.png)

あとモデルを複数印刷するには、モデルを選択して右クリックメニューにある、選択された複数のモデルをクリックして数を指定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/b6ea45c3-76a1-2f2c-128c-75fed33f3975.png)


またCuraにはマーケットプレースというのがあり、有無償のプラグインが配布されています。最初の画面の右上の×ボタンの下に、マーケットプレースというボタンを押下すると開きます（画面割愛）。
この中にプラグイン - Custom Supportsという無償のプラグインがあり、サポートブロッカーの反対で、ブロック状のサポート材を作って、独自のサポートを指定することができます。正直使いにくいですが、興味があれば使ってみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/1e82ba0e-5017-34e6-4efa-6d202b9f2836.png)

それではプリント設定になります。こちらも初期値が雑なので、詳細設定で詰めていきます。
画面右上の設定項目の端に鉛筆マークがでるので、クリックするとプリント設定が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/392440eb-57a4-f0c6-4354-6f077ce4357b.png)

この後、幾つか個人的に設定したほうが良いポイントを説明しますが、画面に表示されていない場合、歯車から設定画面を開いて、必要なチェックボックスにチェックをつけてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/ae8b0265-eccf-6f78-ebce-f361a1226e0c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/5822f444-e726-b6e2-8c20-8b5daad4d114.png)

  - 品質項目の初期レイヤー高さ　→　**いきなりですが重要です。レイヤー高さは積層間の高さですが、Cura 4系は1層目にはレイヤー高さが適用されません。**設定にしないと、ずっと初期値0.3mmのままになります。まずはノズルサイズの半分くらいの値を指定しましょう。0.4mmノズルなら0.2mm前後になります。あまりに距離が狭いと印刷後の剥がす際に剥がれにくかったり跡が残ったり、ビルドシートタイプなら摩耗が激しくなるので、適宜調整してください。
  - 外郭項目　→　割愛しますが、0.4mmノズルなら0.4の倍数で指定しましょう。
  - インフィル項目　→　割愛です。造形内部の密度と、埋める際のパターンを選択します。密度100％とすると造形が荒くなる場合があるので多くとも80~90%位にしましょう。
  - マテリアル項目の初期レイヤー印刷温度と初期レイヤーのビルドプレート温度 →　印刷温度はフィラメントに合わせて指定をすればよいですが、ビルドプレートの温度センサーは、印刷表面から反対側なので、印刷開始時には表面の実際の温度は低いです。従って、ヒートノズルもビルドプレートも1層目は印刷温度より5℃高くすると食いつきが安定します。但しモデルの形状、印刷サイズと印刷時間によっては反りやすくもなりますので、適宜調整してください。
  - スピード項目の印刷速度 →　実機の性能に合わせてください。SCOOVOの構造から想像すると45mm/s位が恐らく安定して造形できる最大速度で、それ以上は造形品質が落ちるかもしれません。
  - 移動項目の引き戻し距離と速度 → 印刷中にOozeと呼ばれる蜘蛛の糸のようなものがでたりしますが、ここの設定次第で軽減できる場合があります。但し過剰に設定すると、フィラメントが融けている範囲が広がり内圧が上がり、結果としてフィラメントを押し出せず中で詰まる事があります。これは構造や使用するフィラメントにもよります。とりあえず初期値で様子を見て、適宜調整してください。ファームウェアの設定を25 →　150に変更したのはこの為で、距離を短くする代わりに速度を早くしたりすると、比較的良くなる傾向があります。
  - 冷却項目のファン速度と初期ファン速度　→　初期ファン速度は1層目のファン速度で、2層目以降はファン速度になります。1層目はファンを止めておいたほうが食いつきが良いでしょう。ファン速度は一般的に100%のままでよいですが、PETGとかは50～80%のほうが良いとも言われます。ちなみに2層目ではなく、指定された層まで段階的にファン速度を上げたい場合、詳細設定より「標準ファン速度のレイヤー」を有効にして指定してください。
  - 3DBenchyは印刷テストモデルの為、サポートは付けずに印刷するのが作法ですが、スカート、ブリム、ラフトのサポート材を必要によって追加することができます。それぞれの差異は割愛します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/979ab020-e8bf-dcd8-f88d-8cf7369117c3.png)

ここまで来たらスライスしてみましょう。画面右下のスライスボタンを押下してスライス開始します（ボタン画面割愛）。スライス後、およその印刷時間とフィラメントの使用量が表示されます。保存されるファイル名は、画面の左下に表示されています。修正する場合は鉛筆ボタンを押下してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/fb820cd4-aadb-99bb-ddac-a8354f24754f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/fc2a5576-ec56-63a6-7a22-7ae368517c56.png)

SDカードが認識されていれば、上図のようにリムバーブルドライブに保存と表示されます。クリックして保存し、SDカードをPCから取り外します。
④LCDボードの左側にあるSDカードスロットに接続して、<font color="Blue">Print from media...　→　（3DBenchyのGコードファイル）　→ Print</font>を押下したら、印刷開始です。

# 印刷後の確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/6fd3c602-30bc-666b-7fc4-7b39eb880eb4.png)

3DBenchyの説明の前に、まず正しく印刷が完了したでしょうか？
もし何らかの理由にて失敗した場合は、Simplify3Dという有償のスライサーソフトウェアメーカーが、よくある失敗事例の写真と対処方法を説明しています。説明内のソフトウェアの設定は、もちろんSimplify3Dの設定ですが、該当する項目がCuraに含まれる場合もありますので、ぜひ参考にしてみてください。
参考：
https://www.simplify3d.com/support/print-quality-troubleshooting/
https://idarts.co.jp/3dp/simplify-3d-troubleshooting-guide/

それでは3D Benchyの説明です。
3D Benchyはパッと見た感じでプリンタの性能がわかる位、印刷が難しいモデルです。それだけではなく、ある程度の校正目安となる基準寸法が、製作者より提示されています。ノギスを使って確認してみてください。
http://www.3dbenchy.com/dimensions/

また3D Benchyを印刷して、おかしなところがあったとして、ではそれがどこなのかを突き止めるのは、とても多くの経験が必要です。プリンタ固有の知られた問題かもしれないので、FacebookのUser Communityを探す、2ちゃんねるに写真や動画付きで投稿して意見をもらうか、ねじを締めなおしたり、一度機構部品をばらして組みなおしたりして根気よく調整するしかありません。

そこでここでは、よくある不具合の1例として「3D Benchyの煙突が綺麗に正円で印刷されない」について説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/d83d81a7-fddf-6bb9-c4d2-491646d6760f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598155/3888bfd6-4a0d-9b5a-b845-2db3d60c0291.png)

乳白色のフィラメントの為、見難くて恐縮ですが、煙突が楕円形に歪んでいるのがお分かりでしょうか？
これはバックラッシュ（もしくはバックラッシ）と呼ばれるよくある不具合です。これは例えば「右に100歩進んで、その後左に100歩進んだら、今どこにいる？」とした場合、計算では「元いた場所に戻っている」はずですよね？それが実際には歩幅が違ったりして、もといた場所より半歩右だったり、半歩左だったりと誤差がでます。
機械も同じで大なり小なり誤差が生じ、その誤差がやたら大きい場合に、このように表面化します。但し3Dプリンタの場合、9割がた「X,Yそれぞれのタイミングベルトがたわんでいること」が原因です。
対処方法としては、

  - タイミングベルトを強く張りなおす。（加減が分かりにくいので意外と難しい）
  - タイミングベルトを質の良いものに交換する。（例：https://www.monotaro.com/s/?c=&q=gt2+%83%5E%83C%83%7E%83%93%83O%83x%83%8B%83g)
  - タイミングベルトをたわみにくい鉄線入りのものに交換する。（例：https://www.amazon.co.jp/dp/B07D9D6QR4/ ）
  - 専用のベルトテンショナーを取り付ける（一番楽で安い）。例：https://www.amazon.co.jp/dp/B07FX6HB9H/

などがあります。

#最後に
現行の積層式の3Dプリンターはとにかく手間がかかります。海外で売っているものを国内代理店として売ったとしても、専門的な不具合が多岐にわたるので、カスタマーサービスを考慮すると、直輸入価格の倍の値段をとったとしても、決して割り合わないでしょう。
なので3Dプリンタを使う人は皆、プリンタに不具合が発生したら、自身のスキルとネット検索で不具合に対処する以外ありません。このページがその役に立つこと願い、はやくこんなノウハウを知らなくても良いような時代が来るように祈っています。

最後は伝統的なこの言葉を送って締めたいと思います。
**Happy Printing!**