Marlin 펌웨어 설정

1. 보드 설정

  - 통신속도
      #define BAUDRATE 250000
  - 보드 종류
      #define MOTHERBOARD BOARD_ULTIMAKER
      보드 설정은 board.h 파일에 정의되어 있음
  - 익스트루더 개수
      #define EXTRUDERS 1
  - 파워 서플라이 종류
      #define POWER_SUPPLY 1

2. 온도 제어 설정

  - Thermistor (온도센서) 설정
      #define TEMP_SENSOR_0 -1
      #define TEMP_SENSOR_1 -1
      #define TEMP_SENSOR_2 0
      #define TEMP_SENSOR_BED 0
  - 온도센서 차이 허용치
      온도 센서간의 차이가 이보다 크면 프린트를 중단한다.
      #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
  - M109 명령 수행 기준
      M109 : Set Extruder Temperature And Wait
      #define TEMP_RESIDENCY_TIME 10  //결정 시간
      #define TEMP_HYSTERESIS 3  //오차범위
      #define TEMP_WINDOW     1  //타이머 시작 오
  - 최저 온도 설정
      #define HEATER_0_MINTEMP 5
      #define HEATER_1_MINTEMP 5
      #define HEATER_2_MINTEMP 5
      #define BED_MINTEMP 5
  - 최고 온도 설정
      #define HEATER_0_MAXTEMP 275
      #define HEATER_1_MAXTEMP 275
      #define HEATER_2_MAXTEMP 275
      #define BED_MAXTEMP 150
  - PID 설정 (Proportional Integral Differential)
      #define PIDTEMP //PID 모드는 사용하는 경우
      #define BANG_MAX 255 //bang-bang control 경우의 최대 제한 전류
      #define PID_MAX BANG_MAX
      #define PID_FUNCTIONAL_RANGE 10
      #define PID_INTEGRAL_DRIVE_MAX PID_MAX
      #define K1 0.95
      #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0))
      #define  DEFAULT_Kp 22.2
      #define  DEFAULT_Ki 1.08
      #define  DEFAULT_Kd 114



      #define MAX_BED_POWER 255
      #define  DEFAULT_bedKp 10.00
      #define  DEFAULT_bedKi .023
      #define  DEFAULT_bedKd 305.4

3. Extruder 제한

  - 안전 범위 설정
      #define EXTRUDE_MINTEMP 170
      #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH)

4. 엔드스탑/모터 설정

  - 엔드스탑 풀업 설정
      #define ENDSTOPPULLUPS
  - 스텝모터 회전 방향
      #define INVERT_X_DIR true
      #define INVERT_Y_DIR true
      #define INVERT_Z_DIR true
      #define INVERT_E0_DIR true
      #define INVERT_E1_DIR false
      #define INVERT_E2_DIR false
  - 홈 이동 방향
      #define X_HOME_DIR -1
      #define Y_HOME_DIR -1
      #define Z_HOME_DIR -1
  - 이동 범위 제한 (프린터의 크기)
      #define X_MAX_POS 205
      #define X_MIN_POS 0
      #define Y_MAX_POS 205
      #define Y_MIN_POS 0
      #define Z_MAX_POS 200
      #define Z_MIN_POS 0

5. 오토레벨링

  - 레벨링 기준 포인트
      #define LEFT_PROBE_BED_POSITION 15
      #define RIGHT_PROBE_BED_POSITION 170
      #define BACK_PROBE_BED_POSITION 180
      #define FRONT_PROBE_BED_POSITION 20
  - PROBE 와 익스트루터 간의 거리
      #define X_PROBE_OFFSET_FROM_EXTRUDER -25
      #define Y_PROBE_OFFSET_FROM_EXTRUDER -29
      #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35
  - 오토레벨링간 움직임 설정
      #define Z_RAISE_BEFORE_HOMING 4
      #define XY_TRAVEL_SPEED 8000
      #define Z_RAISE_BEFORE_PROBING 15
      #define Z_RAISE_BETWEEN_PROBINGS 5

6. 이동 상세 설정

  - 홈 위치 설정
      #define MANUAL_X_HOME_POS 0
      #define MANUAL_Y_HOME_POS 0
      #define MANUAL_Z_HOME_POS 0
  - 가속하지 않는 (급격한) 이동 거리
      #define DEFAULT_XYJERK                20.0
      #define DEFAULT_ZJERK                 0.4
      #define DEFAULT_EJERK                 5.0 
  - 유닛(mm)당 스텝수
      #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}



Steps per mm = ((360°/Motor step size°) * (1/Driver microstepping))/(Belt pitch * Tooth count)

예) Steps per mm = ((360°/1.8°) * (1(1/16)))/(5 * 12) = 53.333333
Z축 공식은 (steps for a 360° rotation of stepper/Threaded Rod Pitch)

예) (360 / 1.8) * 16 = 3200에서 피치로 나누면 3200 / 4 = 800
E축 공식은 Steps per Unit (Extruder) = Motor Steps per Revolution * Extruder Gear Ratio / (Pinch Wheel Diameter * Pi)
Extruder Gear Ratio = (big_gear_teeth / small_gear_teeth) 

예) // Classic Wade with a 39:11 gear ratio
(200 * 16) * (39 / 11) / (7 * 3.14159) = 515.91048
// MK7 Direct Drive with 2engineers 50:1 planetary gear motor
(48 * 16) * (50 / 1) / (10.56 * 3.14159) = 1157.49147