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:
- On/Off pin. (The on/off button on the front don’t work)
- Input shaping
- Pressure advance
The 9.2.3 and 9.1.1 boards seems to use the same pins.
The following info was a GREAT help: CreatBot-F430-Info/Pictures/Pinout Labels.png at main · kForth/CreatBot-F430-Info · GitHub
# 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