3D printer SCARA
Понравилась конструкция 3D принтера SCARA: http://www.thingiverse.com/thing:1241491/#comments , решил ее повторить. Детали разработал сам, как мне проще печатать детали и настраивать. Прошивка Марлин с файлом конфигурации для SCARA. Электроника та же что и в предыдущих принтерах. Для осей Х и У применены DRV8825.
Находим в Марлине строки и корректируем.
Configuration.h
//========================= SCARA Settings ==================================
#define Linkage_1 130 //mm Preprocessor cannot handle decimal point...
// Length of outer support arm Measure arm lengths precisely and enter
#define Linkage_2 130 //mm
(длины секций рук, при искажении масштаба по Х и У , можно изменить длину рук +- 5мм от измеренного размера рук.))
// SCARA tower offset (position of Tower relative to bed zero position)
// This needs to be reasonably accurate as it defines the printbed position in the SCARA space.
#define SCARA_offset_x 120 //mm
#define SCARA_offset_y -54 //mm
(указываем расстояние от оси вращения первой секции руки (или оси башни) до 0,0 стола.)
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
//============================= Thermal Settings ============================
(указываем тип термистора экструдера и стола)
У меня // 1 is 100k thermistor - best choice for EPCOS 100k
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_BED 1
//============================== Endstop Settings ===========================
// @section homing
// Specify here all the endstop connectors that are connected to any endstop or probe.
// Almost all printers will be using one per axis. Probes will use one or more of the
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
//#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
#define USE_XMAX_PLUG
#define USE_YMAX_PLUG
#define USE_ZMAX_PLUG
// coarse Endstop Settings
//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
#if DISABLED(ENDSTOPPULLUPS)
// fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX // open pin, inverted
#define ENDSTOPPULLUP_XMIN // open pin, inverted
#define ENDSTOPPULLUP_YMIN // open pin, inverted
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE
#endif
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
// Manual homing switch locations:
// For deltabots this means top and center of the Cartesian print volume.
#if ENABLED(MANUAL_HOME_POSITIONS)
// For SCARA: Offset between HomingPosition and Bed X=0 / Y=0
#define MANUAL_X_HOME_POS 0.
#define MANUAL_Y_HOME_POS 0.
#define MANUAL_Z_HOME_POS 0.1 // Distance between nozzle and print surface after homing.
Указываем расстояние от парковки экструдера до 0,0 стола.
#endif
// @section machine
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
// @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
// @section homing
// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1
* MOVEMENT SETTINGS
#define HOMING_FEEDRATE {30*60, 30*60, 3*60, 0} // set the homing speeds (mm/min)
// default settings
#define DEFAULT_AXIS_STEPS_PER_UNIT {68.6,68.6,400,354} // default steps per unit for SCARA
// formula: ((steps per rev * stepping mode of motor)/360) * Gear Ratio (кол. шагов на градус для Х и У, у меня получилось большое отклонение от расчетного- подбирал.
(Рассчитываем и указываем своё кол. шагов на градус для Х и У, и на мм для Z и экструдера)
#define DEFAULT_MAX_FEEDRATE {120, 120, 30, 25} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {2000,2000,10,1000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
#define DEFAULT_ACCELERATION 400 // X, Y, Z and E acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration in mm/s^2 for retracts
#define DEFAULT_TRAVEL_ACCELERATION 400 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
* Marlin_main.cpp (тоже нужно откорректировать)
#if (Linkage_1 == Linkage_2)
SCARA_C2 = ((sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS])) / (2 * (float)L1_2)) - 1;
#else
SCARA_C2 = (sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2) / 33800;
(33800 – заменяем на свое удвоенное произведение длин рук (130*130*2)
Мои настройки:
Настройка SCARA выполняется по аналогии с MORGAN
Еще одна табличка: (только опечатка в командах, должно быть сверху вниз М360, М361, М364)
Принтер в работе: https://www.youtube.com/watch?v=QEI8J-BrP04
При наличии желания и времени занимаюсь настройкой принтера. Принтер в общем то простой в изготовлении, но над качеством печати нужно работать и работать.