Linus
July 7, 2021, 11:19pm
1
I have a Printer that was manufactured from Creatbot, for another company, but is like a machine in between of a creatbot f160 / f430 and it has a creatbot motherboard ver 9.2.3.
I tried to get the configuration.h file to be able to make a klipper config file but they refuse to give it to me. Is there any chance to make a klipper config file? And if yes How?
Thx
Linus
Sineos
July 8, 2021, 11:36am
2
Well, if you do not find a source for an existing (Marlin) configuration or a schematic / pin-out for the board you will be pretty much out of luck.
It is still possible to do but quite complex and tedious:
Identify the MCU chip. Get its datasheet
Trace back or measure with a multi-meter each relevant pin from its connector to the MCU
Translate this pin mapping into a Klipper config (this is the easiest part)
But we are not done yet:
Klipper needs to support the MCU type used on this board
You need to figure out if there are any special preconditions to flash the Klipper firmware: Bootloader, Flash addresses, etc
Linus
July 8, 2021, 12:59pm
3
Thanks for the prompt help. It is an ATMEGA 2560 but I think, you’re right, I do not have the skills to do what I want. BTW by asking the seller for the marlin configuration.h only, is it a break of confidence with reference to the software agreement with the manufacture CREATBOT , I guess they refer to firmware? THANK YOU VERY MUCH FOR YOUR HELP
Well, I’m not an OSS license expert but Marlin is GPL-3.0, so they should be obliged to disclose such information.
Xevox
February 3, 2023, 3:56pm
6
Hi guys,
Been off the tools for some time, will be getting back into printing again shortly. Want to get my F430 on klipper. Found this post.
I actually have the config .h file, if we could get some assistance with a klipper config file it would be greatly appreciated
#ifndef CREATBOT_CONFIG_H
#define CREATBOT_CONFIG_H
#define MAKE_BEGIN
#define OEM CreatBot
#define MODEL F430
#define EXTRUDERS 2
#define LANGUAGE en
#define KTC
//#define NTC
#define MAKE_BATCH
#ifdef MAKE_BATCH
// #define MAKE_LCD 2 // 0 is 2004, 1 is 12864, 2 is 480272
// #define MAKE_SYSTEM 1 // 0 is Normal, 1 is CoreXY, 2 is Linear guide, 3 is HXY
// #define MAKE_FILE_TYPE 1 // 0 is SD Card, 1 is USB Disk
// #define MAKE_HOTEND_SERIES 0 // 0 is D_SERIES, 1 is F_SERIES
// #define MAKE_NEAR_FEED
// #define MAKE_Z04
// #define MAKE_Z05
// #define MAKE_D_SERIES_USE_300
// #define MAKE_MY_KEYPAD
// #define MAKE_POWER_MANAGEMENT
// #define MAKE_NOT_AUTO_SHUTDOWN
// #define MAKE_HOTWIND
// #define MAKE_AUTO_LEVELING
// #define MAKE_WIFI_SUPPORT
// #define MAKE_Y_DUAL_STEPPER
// #define MAKE_BOARD_VERSION_LT_V95
// #define MAKE_NOT_SIFU
#undef MAKE_BEGIN
#else // not MAKE_BATCH
/******屏幕配置******/
// #define LCD2004
// #define LCD12864
#define LCD480272
/******运动架构******/
// #define COREXY
#define LINEAR_GUIDE
// #define HXY
/******存储支持******/
// #define SDSUPPORT
#define UDISKSUPPORT
/******喷头系列******/
#define D_SERIES
// #define F_SERIES
// #define NEAR_FEED //近端送丝
// #define Z04 //丝杆参数
// #define MY_KEYPAD //键盘支持
#define QUICK_PAUSE //快速暂停
#define FILAMENT_CHANGE //更换耗材
#define FILAMENT_DETECT //耗材检测
#define POWER_MANAGEMENT //电源管理
#define ACCIDENT_DETECT //断电续打
// #define HAS_AIR_FAN //过滤风扇
// #define HOTWIND_SYSTEM //热风系统
// #define AUTO_BED_LEVELING //自动调平
// #define WIFI_SUPPORT //支持WIFI
// #define COLOR_LED //灯光支持
// #define Y_DUAL_STEPPER_DRIVERS //电机双Y
// #define MIXING_EXTRUDER //混合喷头
#ifdef D_SERIES
// #define D_SERIES_USE_300 //送丝机3.0
#endif
// #define NOT_AUTO_SHUTDOWN //禁用自动关机
#endif // MAKE_BATCH
#include "_ModelInfo.h"
/************************************************************************************/
/*********************************** DEBUG OPTION ***********************************/
//#define BAUDRATE 115200
//#define REG_SN 000.00
//#define TEMP_ADJUST
//#define DEBUG_FREE
#define BL_TOUCH_SIGNAL_SELF_FILTER
#ifdef QUICK_PAUSE
// #define DEBUG_CMD
#endif
#ifndef NOT_AUTO_SHUTDOWN
// #define AUTO_SHUTDOWN_DEBUG
#endif
#ifdef DWIN_LCD
// #define DWIN_LCD_DEDUG
// #define DWIN_SERIAL_USE_BUILT_IN
// #define DWIN_HEX_OPERATE_USE_STR
#endif
#ifdef UDISKSUPPORT
// #define UDISK_DEBUG
// #define UDisk_IMPL_NOT_PNP
#endif
#ifdef WIFI_SUPPORT
// #define WIFI_IMPL_DEBUG
// #define WIFI_DEBUG
#ifdef WIFI_IMPL_DEBUG
#undef WIFI_DEBUG
#endif
#ifdef WIFI_DEBUG
#define STATE_ACTION_STRING_LEN 24
#endif
#endif
#ifdef REG_SN
#define TOTAL_TIME_LIMIT 720000 // seconds 200hour For Part-Payment
// #define REG_USE_HARDWARE
#ifdef REG_USE_HARDWARE
#define REG_PLULIC_KEY 0xFFFFFFFF // 公钥
#endif
#endif
#ifdef HOTWIND_SYSTEM
#define HOTWIND_HYSTERESIS 2 //度
#endif
/************************************************************************************/
#define STRING_VERSION "5.6"
#ifndef BOARD_VERSION_LT_V95
#define BOARD_VERSION_GT_V95 //黄主板(主板版本大于9.5)
#endif
#ifdef NTC
#define T_SENSENR 1 // NTC
#define HEATER_0_MAXTEMP 265
#define HEATER_1_MAXTEMP 265
#define HEATER_2_MAXTEMP 265
#define HEATER_3_MAXTEMP 265
#define BED_MAXTEMP 135
#elif defined(KTC)
#define T_SENSENR -1 // KTC
#ifdef T350
#define HEATER_0_MAXTEMP 365
#define HEATER_1_MAXTEMP 365
#define HEATER_2_MAXTEMP 365
#define HEATER_3_MAXTEMP 365
#define BED_MAXTEMP 135
#elif defined(T450)
#define HEATER_0_MAXTEMP 465
#define HEATER_1_MAXTEMP 465
#define HEATER_2_MAXTEMP 465
#define HEATER_3_MAXTEMP 465
#define BED_MAXTEMP 165
#elif defined(T500)
#define HEATER_0_MAXTEMP 515
#define HEATER_1_MAXTEMP 515
#define HEATER_2_MAXTEMP 515
#define HEATER_3_MAXTEMP 515
#define BED_MAXTEMP 215
#endif
#endif
#define PREHEAT_TEMP_HOTEND 210
#define PREHEAT_TEMP_BED 45
#define PREHEAT_FAN_SPEED 0
#ifdef HOTWIND_SYSTEM
#define TEMP_SENSOR_CHAMBER 1 // NTC
#define CHAMBER_MINTEMP -12
#ifdef T500
#define CHAMBER_MAXTEMP 155
#else
#define CHAMBER_MAXTEMP 75
#endif
#define MAX_CHAMBER_POWER 255
#define PREHEAT_TEMP_CHAMBER 0
#else
#define TEMP_SENSOR_CHAMBER 0
#endif
#if EXTRUDERS > 0
#define TEMP_SENSOR_0 T_SENSENR
#else
#define TEMP_SENSOR_0 0
#endif
#if EXTRUDERS > 1
#define TEMP_SENSOR_1 T_SENSENR
#else
#define TEMP_SENSOR_1 0
#endif
#if EXTRUDERS > 2
#define TEMP_SENSOR_2 T_SENSENR
#else
#define TEMP_SENSOR_2 0
#endif
#if EXTRUDERS > 3
#define TEMP_SENSOR_3 T_SENSENR
#else
#define TEMP_SENSOR_3 0
#endif
#if EXTRUDERS > 4
#define TEMP_SENSOR_4 T_SENSENR
#else
#define TEMP_SENSOR_4 0
#endif
#define TEMP_SENSOR_BED 1 // NTC
// KTC TEMP ADJUST
#ifdef TEMP_ADJUST
#if MODEL == F160 || MODEL == F260 || MODEL == F430
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 1.0
#else
#define TEMP_SENSOR_AD595_OFFSET 4.796657303
#define TEMP_SENSOR_AD595_GAIN 0.900138703
#endif
#else
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 1.0
#endif
// PID Settting
#define PIDTEMP
#if ENABLED(PIDTEMP)
//#define PID_DEBUG
//#define PID_OPENLOOP 1
#define PID_FUNCTIONAL_RANGE 10
#define K1 0.95 //smoothing factor within the PID
#ifdef F_SERIES
#define DEFAULT_Kp 12.9
#define DEFAULT_Ki 0.76
#define DEFAULT_Kd 55
#else
#define DEFAULT_Kp 16.57
#define DEFAULT_Ki 1.26
#define DEFAULT_Kd 55
#endif
#endif // PIDTEMP
#define PIDTEMPBED
#if ENABLED(PIDTEMPBED)
#if MODEL == D600 || MODEL == D600SE || MODEL == D600Pro
// 220 1250W silicone heater
#define DEFAULT_bedKp 43.54
#define DEFAULT_bedKi 3.72
#define DEFAULT_bedKd 127.5
#else
// 24V ??W silicone heater
#define DEFAULT_bedKp 345.78
#define DEFAULT_bedKi 14.59
#define DEFAULT_bedKd 2047.99
#endif
#endif // PIDTEMPBED
#ifdef AUTO_BED_LEVELING
#define AUTO_BED_LEVELING_BILINEAR
#define BLTOUCH
#define NUM_SERVOS 1
#define Z_ENDSTOP_SERVO_NR 0
#define DEACTIVATE_SERVOS_AFTER_MOVE
#define Z_SAFE_HOMING // safe homing to prevent servo cann't probe the bed.
#if MODEL == DE || MODEL == DEPlus
#define PROBE_XY_NUM 5
#ifdef BLTOUCH
#define X_PROBE_OFFSET_FROM_EXTRUDER -25
#define Y_PROBE_OFFSET_FROM_EXTRUDER 60
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#else
#define Z_SERVO_ANGLES {135,45}
// #define Z_SERVO_ANGLES {45,135}
#define X_PROBE_OFFSET_FROM_EXTRUDER -25
#define Y_PROBE_OFFSET_FROM_EXTRUDER 60
// #define Z_PROBE_OFFSET_FROM_EXTRUDER -6
#define Z_PROBE_OFFSET_FROM_EXTRUDER -8
#endif
#elif MODEL == D600 || MODEL == D600SE || MODEL == D600Pro
#ifdef BLTOUCH
#define PROBE_XY_NUM 7
#ifdef F_SERIES
#define X_PROBE_OFFSET_FROM_EXTRUDER 30
#define Y_PROBE_OFFSET_FROM_EXTRUDER 74
#elif defined(D_SERIES)
#define X_PROBE_OFFSET_FROM_EXTRUDER 51
#define Y_PROBE_OFFSET_FROM_EXTRUDER 45
#endif
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#else
#error "Not BL_TOUCH??"
#endif
#elif MODEL == F430 || MODEL == F260
#if MODEL == F260
#define PROBE_XY_NUM 4
#else
#define PROBE_XY_NUM 5
#endif
#ifdef MAKE_Y_DUAL_STEPPER
#undef BLTOUCH
#endif
#ifdef BLTOUCH
#ifdef LINEAR_GUIDE
#define X_PROBE_OFFSET_FROM_EXTRUDER 36
#define Y_PROBE_OFFSET_FROM_EXTRUDER 72
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#else
#define X_PROBE_OFFSET_FROM_EXTRUDER 16
#define Y_PROBE_OFFSET_FROM_EXTRUDER 28
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#endif
#else
#define Z_SERVO_ANGLES {45,135}
#ifdef LINEAR_GUIDE
#define X_PROBE_OFFSET_FROM_EXTRUDER 36
#define Y_PROBE_OFFSET_FROM_EXTRUDER 70
#define Z_PROBE_OFFSET_FROM_EXTRUDER -8
#else
#define X_PROBE_OFFSET_FROM_EXTRUDER 16
#define Y_PROBE_OFFSET_FROM_EXTRUDER 28
#define Z_PROBE_OFFSET_FROM_EXTRUDER -8
#endif
#endif
#elif MODEL == F160 || MODEL == F200 || MODEL == F220
#define PROBE_XY_NUM 3
#ifdef BLTOUCH
#if MODEL == F160 || MODEL == F200
#define X_PROBE_OFFSET_FROM_EXTRUDER 16
#define Y_PROBE_OFFSET_FROM_EXTRUDER 71
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#elif MODEL == F220
#define X_PROBE_OFFSET_FROM_EXTRUDER 13
#define Y_PROBE_OFFSET_FROM_EXTRUDER 75
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#endif
#else
#define Z_SERVO_ANGLES {45,135}
#define X_PROBE_OFFSET_FROM_EXTRUDER 16
#define Y_PROBE_OFFSET_FROM_EXTRUDER 28
#define Z_PROBE_OFFSET_FROM_EXTRUDER -8
#endif
#elif MODEL == PEEK300
#define PROBE_XY_NUM 5
#ifdef BLTOUCH
#define X_PROBE_OFFSET_FROM_EXTRUDER 22
#define Y_PROBE_OFFSET_FROM_EXTRUDER 41
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#else
#error "Not BL_TOUCH??"
#endif
#elif MODEL == F1000
#define PROBE_XY_NUM 10
#ifdef BLTOUCH
#define X_PROBE_OFFSET_FROM_EXTRUDER 30
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31
#define Z_PROBE_OFFSET_FROM_EXTRUDER -1
#else
#error "Not BL_TOUCH??"
#endif
#else
#error "This MODEL don't have AUTO_BED_LEVELING Features."
#endif
#define LEFT_PROBE_BED_POSITION (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER) + 5)
#define RIGHT_PROBE_BED_POSITION (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER) - 5)
#define FRONT_PROBE_BED_POSITION (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER) + 5)
#define BACK_PROBE_BED_POSITION (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER) - 5)
#endif
#if defined(COREXY) || defined(HXY)
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#else
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
#endif
#ifdef Z05
#if MODEL == F1000
#define Z_STEP_VALUE 1600
#else
#define Z_STEP_VALUE 640
#endif
#else
#if MODEL == F1000
#define Z_STEP_VALUE 2000
#else
#define Z_STEP_VALUE 800
#endif
#endif
#ifdef D_SERIES
#ifdef D_SERIES_USE_300
#define E_STEP_VALUE 600
#else
#define E_STEP_VALUE 810
#endif
#elif defined(F_SERIES)
#define E_STEP_VALUE 130
#else
#error "Need define the model's series."
#endif
#ifdef LINEAR_GUIDE
#if MODEL == D600 || MODEL == D600SE || MODEL == D600Pro || MODEL == F1000
#ifdef USE_SIFU_MOTOR
#define DEFAULT_AXIS_STEPS_PER_UNIT {800.0/3, 800.0/3, Z_STEP_VALUE, E_STEP_VALUE }
#else
#define DEFAULT_AXIS_STEPS_PER_UNIT {320.0/3, 320.0/3, Z_STEP_VALUE, E_STEP_VALUE }
#endif
#elif MODEL == F430 || MODEL == F260 || MODEL == F200 || MODEL == F220
#ifdef MAKE_Y_DUAL_STEPPER
#define DEFAULT_AXIS_STEPS_PER_UNIT {10000.0/127, 20000.0/381, Z_STEP_VALUE, E_STEP_VALUE }
#else
#define DEFAULT_AXIS_STEPS_PER_UNIT {10000.0/127, 50000.0/381, Z_STEP_VALUE, E_STEP_VALUE }
#endif
#else
#error "This MODEL don't have LINEAR_GUIDE system."
#endif
#elif defined(HXY)
#if MODEL == PEEK300
#define DEFAULT_AXIS_STEPS_PER_UNIT {10000.0/127, 10000.0/127, Z_STEP_VALUE, E_STEP_VALUE }
#else
#error "This MODEL don't have HXY system."
#endif
#else
#define DEFAULT_AXIS_STEPS_PER_UNIT {10000.0/127, 10000.0/127, Z_STEP_VALUE, E_STEP_VALUE }
#endif
#define LCD_LANGUAGE LANGUAGE
#define AUTO_TIME_USED_INTERVAL 1 //seconds
#define AUTO_SAVE_SETTING_INTERVAL 600 //seconds
#ifdef REG_SN
#ifndef TOTAL_TIME_LIMIT
#define TOTAL_TIME_LIMIT 300 //seconds = 5mins For common
#endif //TOTAL_TIME_LIMIT
#endif
#ifdef POWER_MANAGEMENT
#ifndef NOT_AUTO_SHUTDOWN
#define AUTO_SHUTDOWN
#endif
#ifdef AUTO_SHUTDOWN
#ifdef AUTO_SHUTDOWN_DEBUG
#define AUTO_SHUTDONW_TIME_DISPALY 5 //seconds
#define AUTO_SHUTDOWN_TIME_IDLE 10 //seconds
#define AUTO_SHUTDOWN_TIME_HEATING 30 //seconds
#ifdef FILAMENT_DETECT
#define FILAMENT_WAIT_TIME 60 //seconds = 1min
#endif
#else //!AUTO_SHUTDOWN_DEBUG
#define AUTO_SHUTDONW_TIME_DISPALY 60 //seconds = 1mins
#define AUTO_SHUTDOWN_TIME_IDLE 600 //seconds = 10mins
#define AUTO_SHUTDOWN_TIME_HEATING 1200 //seconds = 20mins
#ifdef FILAMENT_DETECT
#define FILAMENT_WAIT_TIME 1200 //seconds = 20mins
#endif
#endif //AUTO_SHUTDOWN_DEBUG
#endif //AUTO_SHUTDOWN
#endif //POWER_MANAGEMENT
#ifdef QUICK_PAUSE
#ifdef NEAR_FEED
#if MODEL == F160
#define PAUSE_STOP_X (X_MAX_POS - 10)
#define PAUSE_STOP_Y (Y_MAX_POS - 10)
#elif MODEL == F430 || MODEL == PEEK300
#define PAUSE_STOP_X (X_MAX_POS/2)
#define PAUSE_STOP_Y (220)
#elif MODEL == D600 || MODEL == D600SE || MODEL == D600Pro
#define PAUSE_STOP_X (X_MAX_POS/2)
#define PAUSE_STOP_Y (200)
#elif MODEL == F1000
#define PAUSE_STOP_X (X_MAX_POS/2)
#define PAUSE_STOP_Y (200)
#else
#define PAUSE_STOP_X (X_MAX_POS - 10)
#define PAUSE_STOP_Y (Y_MAX_POS - 10)
#endif
#define PAUSE_LIFT_HEIGH_INIT 1
#define PAUSE_RETRACTION_LENGTH_INIT 2
#define PAUSE_LIFT_HEIGH 10
#define PAUSE_RETRACTION_LENGTH 6
#else
#define PAUSE_STOP_X 3
#define PAUSE_STOP_Y 3
#define PAUSE_LIFT_HEIGH_INIT 1
#define PAUSE_RETRACTION_LENGTH_INIT 5
#define PAUSE_LIFT_HEIGH 10
#define PAUSE_RETRACTION_LENGTH 15
#endif
#define PAUSE_REUSE_SPEED_LIFT 50 // (mm/s)
#define PAUSE_REUSE_SPEED_MOVE 70 // (mm/s)
#define REUSE_CLOSE_Z 0.1
#define REUSE_CLOSE_E 1
#define REUSE_SPEED_CLOSE 1 // (mm/s)
#ifdef ACCIDENT_DETECT
#define ACCIDENT_Z_DOWN 2
#ifdef NEAR_FEED
#define ACCIDENT_E_RETRACTION 6
#else
#define ACCIDENT_E_RETRACTION 15 // Maybe it should be greater than 10
#endif
#define ACCIDENT_SPEED_TEST 1 // (mm/s)
#endif //ACCIDENT_DETECT
#endif //QUICK_PAUSE
#define FILAMENT_UNLOAD_SPEED 50 // (mm/s)
#define FILAMENT_UNLOAD_EXTRUDER_LENGTH 10 // (mm)
#ifdef NEAR_FEED
#define FILAMENT_UNLOAD_LENGTH 20
#else
#define FILAMENT_UNLOAD_LENGTH 150
#endif
#ifdef FILAMENT_DETECT
#define FILAMENT_DETECT_AGAIN
#ifdef FILAMENT_DETECT_AGAIN
#define FILAMENT_ERROR_BLOCK 500 //ms
#endif
#endif
#ifdef MY_KEYPAD
#define MY_KEYPAD_Z_MOVE_SCALE 5
#endif //MY_KEYPAD
#ifdef DWIN_LCD
#define DWIN_Z_MOVE_SCALE 50
#endif //DWIN_LCD
#ifdef HAS_AIR_FAN
#define DEFAULT_AIR_FAN_SPEED 0
#endif
#define MOTHERBOARD BOARD_CREATBOT
#undef SHORT_BUILD_VERSION
#undef DETAILED_BUILD_VERSION
#undef STRING_DISTRIBUTION_DATE
#undef PROTOCOL_VERSION
#undef MACHINE_NAME
#undef SOURCE_CODE_URL
#undef DEFAULT_MACHINE_UUID
#undef WEBSITE_URL
#define SHORT_BUILD_VERSION STRING_VERSION
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (LYN)"
#define STRING_DISTRIBUTION_DATE __DATE__
#define PROTOCOL_VERSION "1.0"
#define MACHINE_NAME MachineName
#define SOURCE_CODE_URL "http://www.CreatBot.com/en/support.html"
#define DEFAULT_MACHINE_UUID "00000000-0000-0000-0000-000000000000"
#define WEBSITE_URL "www.CreatBot.com"
#endif //CREATBOT_CONFIG_H
Sineos
February 3, 2023, 4:08pm
7
Xevox
February 4, 2023, 12:32am
8
Lucky i have it all muhahaha
Linus
June 10, 2023, 12:46am
9
Hello,
I wonder if you succeeded in installing Klipper on your Creatbot F430 and if you could share
Your solution. I have a Creatbot F260, but I don’t have the technical knowledge, to achieve that. However, I might be able to adapt the F430 solution to the F260 one. Thank you very
much.
Hello,
I would like to add Klipper to a Creatbot F430. Was anyone successful in finding a reliable solution they would kindly share? Thank you.
Additionally, those looking for the F430 firmware and other modifications… another user on github has shared many useful resources for F430 users, including marlin firmware builds that include the necessary information to create a Klipper port. I am new to Klipper and unfamiliar on how to properly compile Klipper for this implementation. Again, if anyone here has a head start on this the support would be greatly appreciated.
F430 Github Resources
BCTAN
April 30, 2024, 3:10pm
12
I have just acquired an old creatbot D600 with board version 9.2.1. I am also really wanted to convert it to marlin or klipper, and hopefully able to add in a bltouch to the Pi.
I have an old Creatbot DX Plus (9.1.1 board) and managed to get klipper working.
Below is the printer.cfg file
It’s still a work in progress, but I can print things.
Beware that the Macros are from another printer. Test before use
I still need to do the following:
# This file contains common pin mappings for RUMBA boards. To use
# this config, the firmware should be compiled for the AVR atmega2560.
# See docs/Config_Reference.md for a description of parameters.
[include fluidd.cfg]
[include mainsail.cfg]
[stepper_x]
step_pin: PH0
dir_pin: !PH1
enable_pin: !PL1
microsteps: 16
rotation_distance: 40.64
endstop_pin: !PC0
#endstop_pin: ^PC0
#endstop_pin: ^PC1
position_endstop: 0
position_max: 305
homing_speed: 40
[stepper_y]
step_pin: PF0
dir_pin: PL2
enable_pin: !PF1
microsteps: 16
rotation_distance: 40.558
endstop_pin: !PC2
#endstop_pin: ^PC3
position_endstop: 0
position_max: 255
homing_speed: 40
[stepper_z]
step_pin: PF3
dir_pin: !PF2
enable_pin: !PK0
microsteps: 16
rotation_distance: 4
endstop_pin: !PC4
#endstop_pin: ^PC5
position_endstop: 0.5
position_max: 500
homing_speed: 10
[extruder]
step_pin: PA1
dir_pin: PA0
enable_pin: !PA2
microsteps: 16
rotation_distance: 5.33
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PE4
sensor_type: AD597
sensor_pin: PK7
#control: pid
#pid_Kp: 12.9
#pid_Ki: 0.76
#pid_Kd: 55
min_temp: 0
max_temp: 250
#[extruder1]
#step_pin: PA4
#dir_pin: PA3
#enable_pin: !PA5
#heater_pin: PE5
#sensor_pin: PK6
#...
#[extruder2]
#step_pin: PA7
#dir_pin: PA6
#enable_pin: !PG2
#heater_pin: PH3
#sensor_pin: PK5
#...
[heater_bed]
heater_pin: PH6
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK3
#control: pid
#pid_Kp: 345.78
#pid_Ki: 14.59
#pid_Kd: 2047.99
min_temp: 0
max_temp: 130
[fan]
pin: PH4
[fan_generic extruder_fan]
pin: PH5
#[heater_fan fan1]
#pin: PH5
[output_pin on_pin]
pin: PL4
[output_pin off_pin]
pin: PG0
[virtual_sdcard]
path: /home/francois/printer_data/gcodes
on_error_gcode: CANCEL_PRINT
[mcu]
serial: /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_8543833383535191B100-if00
[printer]
kinematics: cartesian
max_velocity: 100
max_accel: 2000
max_z_velocity: 30
max_z_accel: 100
[input_shaper]
shaper_freq_x: 52.63
shaper_freq_y: 32.72
# "RepRapDiscount 2004 Smart Controller" type displays
#[display]
#lcd_type: hd44780
#rs_pin: PD2
#e_pin: PL7
#d4_pin: PD3
#d5_pin: PD7
#d6_pin: PG0
#d7_pin: PG1
#encoder_pins: ^PB5, ^PB6
#click_pin: ^!PL6
# "RepRapDiscount 128x64 Full Graphic Smart Controller" type displays
#[display]
#lcd_type: st7920
#cs_pin: PD2
#sclk_pin: PD3
#sid_pin: PL7
#encoder_pins: ^PB5, ^PB6
#click_pin: ^!PL6
#*********************************************************************#
# #
# #
# MACRO SECTION #
# #
# #
#*********************************************************************#
#[gcode_macro m900]
#default_parameter_k = 0
#gcode:
# SET_PRESSURE_ADVANCE ADVANCE={K}
[gcode_macro TEST_SPEED] # Andrew Ellis' speed testing macro
gcode:
# Speed
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
# Iterations
{% set iterations = params.ITERATIONS|default(5)|int %}
# Acceleration
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
{% set bound = params.BOUND|default(20)|int %}
# Size for small pattern box
{% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}
# Large pattern
# Max positions, inset by BOUND
{% set x_min = printer.toolhead.axis_minimum.x + bound %}
{% set x_max = printer.toolhead.axis_maximum.x - bound %}
{% set y_min = printer.toolhead.axis_minimum.y + bound %}
{% set y_max = printer.toolhead.axis_maximum.y - bound %}
# Small pattern at center
# Find X/Y center point
{% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
{% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}
# Set small pattern box around center point
{% set x_center_min = x_center - (smallpatternsize/2) %}
{% set x_center_max = x_center + (smallpatternsize/2) %}
{% set y_center_min = y_center - (smallpatternsize/2) %}
{% set y_center_max = y_center + (smallpatternsize/2) %}
# Save current gcode state (absolute/relative, etc)
SAVE_GCODE_STATE NAME=TEST_SPEED
# Output parameters to g-code terminal
{ action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }
# Home and get position for comparison later:
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
G28
# QGL if not already QGLd (only if QGL section exists in config)
{% if printer.configfile.settings.quad_gantry_level %}
{% if printer.quad_gantry_level.applied == False %}
QUAD_GANTRY_LEVEL
G28 Z
{% endif %}
{% endif %}
# Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24)
G90
G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60}
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
G28 X Y
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
G4 P1000
GET_POSITION
# Go to starting position
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}
# Set new limits
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
{% for i in range(iterations) %}
# Large pattern diagonals
G0 X{x_min} Y{y_min} F{speed*60}
G0 X{x_max} Y{y_max} F{speed*60}
G0 X{x_min} Y{y_min} F{speed*60}
G0 X{x_max} Y{y_min} F{speed*60}
G0 X{x_min} Y{y_max} F{speed*60}
G0 X{x_max} Y{y_min} F{speed*60}
# Large pattern box
G0 X{x_min} Y{y_min} F{speed*60}
G0 X{x_min} Y{y_max} F{speed*60}
G0 X{x_max} Y{y_max} F{speed*60}
G0 X{x_max} Y{y_min} F{speed*60}
# Small pattern diagonals
G0 X{x_center_min} Y{y_center_min} F{speed*60}
G0 X{x_center_max} Y{y_center_max} F{speed*60}
G0 X{x_center_min} Y{y_center_min} F{speed*60}
G0 X{x_center_max} Y{y_center_min} F{speed*60}
G0 X{x_center_min} Y{y_center_max} F{speed*60}
G0 X{x_center_max} Y{y_center_min} F{speed*60}
# Small patternbox
G0 X{x_center_min} Y{y_center_min} F{speed*60}
G0 X{x_center_min} Y{y_center_max} F{speed*60}
G0 X{x_center_max} Y{y_center_max} F{speed*60}
G0 X{x_center_max} Y{y_center_min} F{speed*60}
{% endfor %}
# Restore max speed/accel/accel_to_decel to their configured values
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
# Re-home and get position again for comparison:
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12
# Go to XY home positions (in case your homing override leaves it elsewhere)
G90
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
G4 P1000
GET_POSITION
# Restore previous gcode state (absolute/relative, etc)
RESTORE_GCODE_STATE NAME=TEST_SPEED
[gcode_macro M300] # Corono's beeper macro
gcode:
# Use a default 1kHz tone if S is omitted.
{% set S = params.S|default(1000)|int %}
# Use a 10ms duration is P is omitted.
{% set P = params.P|default(100)|int %}
SET_PIN PIN=beeper VALUE=0.5 CYCLE_TIME={ 1.0/S if S > 0 else 1 }
G4 P{P}
SET_PIN PIN=beeper VALUE=0
[gcode_macro CLEAN_NOZZLE] # this is my macro to clean the nozzle on the little wiper block at the back of the bed
gcode:
{% if "xyz" not in printer.toolhead.homed_axes %} # conditional homing
G28
{% endif %}
G90 # absolute coords
G0 X1 Y100 Z5 F3000 # move through the brush on the left side
G0 X5 Y0 Z5 F1060 # and back
[gcode_macro START_PRINT]
gcode:
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|float %}
# Start bed heating (but don't wait for it)
M190 S{BED_TEMP}
# Go and oooze somewhere else
G90 # use absolute coordinates
G28
#G1 X2 Y200 F3000
# Start extruder fan
SET_FAN_SPEED FAN=extruder_fan SPEED=100
# Set and wait for nozzle to reach temperature
M109 S{EXTRUDER_TEMP}
CLEAN_NOZZLE
#M83 # extruder relative mode
G28 # move X/Y/Z to min endstops
#BED_MESH_PROFILE LOAD="default"
# Removing below in favour of a good old brim
#G1 Z0.28 # lift nozzle a bit
#G92 E0 # zero the extruded length
#G1 X3 Y3 Z0.28 F1800
#G1 X60 E10 F500 # Extrude 25mm of filament in a 5cm line.
#G92 E0 # zero the extruded length again
#G1 E-4 F500 # Retract a little
#G1 X70 F4000 # Quickly wipe away from the filament line
M117
G21 # set units to millimeters
G90 # use absolute coordinates
M82 # use absolute distances for extrusion
G92 E0
M107
[gcode_macro END_PRINT]
gcode:
M104 S0 ; Extruder off
M140 S0 ; Heatbed off
M107 ; Fan off
G91 ; relative positioning
G1 E-5 F3000
G1 Z+0.3 F3000 ; lift print head
G28 X0 F3000
M84 ; disable stepper motors
[gcode_macro M600]
description: Filament change
gcode:
M300
PAUSE
1 Like
BCTAN
May 14, 2024, 12:24pm
14
Uploading: 20240420_162827.jpg…
I have this old D600 that using a board 9.2.1. I am not sure if this can be flashed witht the newer firmware that can allowed me to use klipper and add the bltouch. (the china seller was not helping). I would like to know if its possible to flash with firmware for F430 using motherboard 9.2.3 ?(using
this : CreatBot-F430-Info/Firmware at main · kForth/CreatBot-F430-Info · GitHub ).
Anyone have any idea please let me know.
This should be for the Configs Sub-Forum.
Also, when you want to publish a config, just do not use the config you are running your printer on. It includes config parameters, that my be not work error free with other printers.
Meant is this section and all according settings in the config.