自作中の巨大3DプリンタのfirmwareはMarlinを使うつもりです.
まだテストモード的に動かしているだけですが、END STOP SWが効きませんで困っています.端部まで行きついてギア欠けしたら困りますからfail safeを付けておきたい.
MarlinのEND STOP SWの取り扱いは、ヒラサカが予期していたのとは異なるようです.
ひら予想: 各軸にMIN/MAX END STOP SWがついていて、もしも暴走してもそれで止まるので安心
Marlin: 起動後に必ずhome positionを決める.その際に各軸のMIN END STOP SWを活用する.home position決定後はsoft的にMIN/MAXを制限する.ゆえにMAX END STOP SWは不要.
というわけで、コンフィグファイルに可動範囲が記述されているはずです.いずれはコンフィグとじっくりとお付き合いしなくちゃいけないのでどんな設定が可能なのかをザッと見ました.
Marlin/Configuration.h がそれだと思います.上から行きまーす.
#define BAUDRATE 115200
これはお決まりのCOMボーレートです.
蛇足かもしれませんが、これはplatformio.iniの記述と合わせる必要があるかも.同ファイルにはmonitor_speedの行が数か所ありますが片っ端から115200にしました.
monitor_speed = 115200
#define MOTHERBOARD BOARD_RAMPS_14_EFF
今使っているのはRAMPS1.4です.
boards.hを見ると、マシンのhardware機能別にこれだけあります.
#define BOARD_RAMPS_14_EFB (Hotend, Fan, Bed)
#define BOARD_RAMPS_14_EEB (Hotend0, Hotend1, Bed)
#define BOARD_RAMPS_14_EFF (Hotend, Fan0, Fan1)
#define BOARD_RAMPS_14_EEF (Hotend0, Hotend1, Fan)
#define BOARD_RAMPS_14_SF (Spindle, Controller Fan)
Hotendは1つだけです.Heat Bedを使うつもりは無いんです.Spindleも使いません.なので (Hotend, Fan0, Fan1)を選びます.
#define EXTRUDERS 1
吐出機の数は1個です.
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
1.75mmフィラメントです.
#define TEMP_SENSOR_0 1
サーミスタの素性を選ぶようです.選択肢はたくさんありますが、今持っているサーミスタがどれに相当するのかは不明です.1を設定すると、この意味があります.
1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
#define PIDTEMP
ヒーターをPID制御するパラメーター.この設定はよくわかんない.後日悩むことになりそうです.
//#define COREXY
中略
//#define COREZY
これは当初全部コメントアウトされていたので、試しにCOREXYのコメントを外してみました.そしたら、X軸Y軸のステッパが同時に動くようになってしまいました.どうやら、XYZ座標系ではなく、X'=0.5X+0.5Yのような斜方座標系に変わるみたいです.使わないことにしましょう.
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
これらはEND STOP SWを生かす設定で、冒頭で述べた通り、MINは生かすけどMAXは不要です.
#define X_MIN_ENDSTOP_INVERTING true
#define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING true
END STOP SWの極性をtrue/falseで設定.わたしが使うSWではtrueで正常に動きます.
#define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988
#define Z_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
モータードライバICです.よくあるA4988.
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 95 }
X,Y,Z,E0の順番で、steps/mm を設定.現物のギア比などに合わせて変える必要がありますが、いまは元のままにしておきます.GCODEで上書きされます.
#define DEFAULT_MAX_FEEDRATE { 2500, 2500, 100, 25 }
動きの速さ mm/Sec、X,Y,Z,E0の順番.GCODEで上書きされます.
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
高さセンサ.この付近にはセンサ設定が色々ある.でもよく分かりません.とりあえずコメントアウト.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false
#define INVERT_E0_DIR true
ステッパモーター回転方向を逆にする機能のようです.
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
END STOP SWがMIN側についていて、home positionが(0,0,0)になる構成ならば、(-1,-1,-1)にしておくと、そんな意味があるらしい.間違ってるかもだけど.
#define X_BED_SIZE 400
#define Y_BED_SIZE 450
ベッドサイズが400x450mmという意味です
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
home position調整した座標が(0,0,0)になります.
#define X_MAX_POS 420
#define Y_MAX_POS 470
#define Z_MAX_POS 500
最大可動範囲が(420,470,500)mmになります.
#define MIN_SOFTWARE_ENDSTOPS
#define MAX_SOFTWARE_ENDSTOPS
softwareでリミッタがかかります.
//#define FILAMENT_RUNOUT_SENSOR
フィラメント切れのセンサだと思うんだけど、そんなセンサがあるのね.
#define AUTO_BED_LEVELING_BILINEAR
オートレベリング機能のアルゴリズム選択.
//#define SKEW_CORRECTION
ベッドの斜めりを補正してくれる機能.(オートレベリングとは違うのか?)
#define LCD_LANGUAGE en
#define SDSUPPORT
#define SPEAKER
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
表示やコンパネの設定.
以上です.
かしこ
【おしらせ】
pdfをダウンロードしていただけます.全36ページ.
3DP印刷部品のstlファイルを無料ダウンロードできます.
Marlinのvscode project folder詰め合わせも無料ダウンロードできます.
まずは無料立ち読み版をご覧になってはいかがでしょうか.(pdf)
0 件のコメント:
コメントを投稿