This is my first time building up a 3D printer, and I am running into issues. I now have 8 Benchie3D’s that all have tilt, to the same degree and I cant seem to find the root cause.
I have tried:
- Rotating the effector
- Changing around my endstops to try and make things worse/better
- Adjusting my arm_radius (was 178.54, now is 183.5)
- Tightening the belts
- Running a full tune
- Running with no tuning (remove config-override delta.grid, then resting)
- Printing through OctoPrint, Printing local SD card (print foo.gcode)
- Making sure my machine is square
My controller is a bit different than most. I am running an SDK V1.3 board with uStepperS drivers in a closed loop configuration.
I am honestly kinda stumped. I cant seem to find anything that effects the tilt, for better or worse. Any ideas???
More info that I hope can help:
(My calibration sequence)
G32 G28 (Full calibration, then return to home)
(Manually: jog down to touch the plate)
M306 Z0 (Set Z to 0)
G28 (Go home)
M500 (Save it)
reset
G31 (Full bed leveling)
M374 (Save bed leveling)
reset
Send: version
Recv: Build version: edge-6a09a62, Build date: May 6 2019 12:53:34, MCU: LPC1768, System Clock: 100MHz
Recv: 5 axis
root@octopi:~# cat config.txt
# Smoothieboard configuration file, see http://smoothieware.org/configuring-smoothie
# NOTE Lines must not exceed 132 characters, and '#' characters mean what follows is ignored
## Robot module configurations : general handling of movement G-codes and slicing into moves
# Basic motion configuration
default_feed_rate 8000 # Default speed (mm/minute) for G1/G2/G3 moves
default_seek_rate 8000 # Default speed (mm/minute) for G0 moves
mm_per_arc_segment 0.0 # Fixed length for line segments that divide arcs, 0 to disable
#mm_per_line_segment 5 # Cut lines into segments this size
mm_max_arc_error 0.01 # The maximum error for line segments that divide arcs 0 to disable
# note it is invalid for both the above be 0
# if both are used, will use largest segment length based on radius
delta_segments_per_second 100 # For deltas only, number of segments per second, set to 0 to disable
# and use mm_per_line_segment
# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
# See http://smoothieware.org/stepper-motors
#alpha_steps_per_mm 76.26 # Steps per mm for alpha ( X ) stepper and tower @1/12
#beta_steps_per_mm 76.26 # Steps per mm for beta ( Y ) stepper and tower @1/12
#gamma_steps_per_mm 76.26 # Steps per mm for gamma ( Z ) stepper and tower @1/12
alpha_steps_per_mm 150 # Steps per mm for alpha ( X ) stepper and tower
beta_steps_per_mm 150 # Steps per mm for beta ( Y ) stepper and tower
gamma_steps_per_mm 150 # Steps per mm for gamma ( Z ) stepper and tower
# Delta configuration
# See http://smoothieware.org/delta
arm_solution linear_delta # Selects the linear delta arm solution
#arm_length 250.0 # This is the length of an arm from hinge to hinge
#arm_radius 124.0 # This is the horizontal distance from hinge to hinge when the effector is centered
arm_length 304.11 # this is the length of an arm from hinge to hinge
#arm_radius 178.54 # this is the horizontal distance from hinge to hinge (CAD value)
arm_radius 183.5 # this is the horizontal distance from hinge to hinge (Guessing with grid numbers)
# Planner module configuration : Look-ahead and acceleration configuration
# See http://smoothieware.org/motion-control
acceleration 3000 # Acceleration in mm/second/second.
#z_acceleration 500 # Acceleration for Z only moves in mm/s^2, 0 uses acceleration which is the default. DO NOT SET ON A DELTA
#junction_deviation 0.05 # See http://smoothieware.org/motion-control#junction-deviation
junction_deviation 0.001 # See http://smoothieware.org/motion-control#junction-deviation, updated as per the Nimble documentation
#z_junction_deviation 0.0 # For Z only moves, -1 uses junction_deviation, zero disables junction_deviation on z moves DO NOT SET ON A DELTA
# Cartesian axis speed limits
x_axis_max_speed 21000 # Maximum speed in mm/min
y_axis_max_speed 21000 # Maximum speed in mm/min
z_axis_max_speed 21000 # Maximum speed in mm/min
# Stepper module configuration
# Pins are defined as ports, and pin numbers, appending "!" to the number will invert a pin
# See http://smoothieware.org/pin-configuration and http://smoothieware.org/pinout
alpha_step_pin 2.2 # Pin for alpha stepper step signal
alpha_dir_pin 2.6 # Pin for alpha stepper direction, add '!' to reverse direction
alpha_en_pin 2.1 # Pin for alpha enable pin
alpha_current 1.5 # M1 stepper motor current
alpha_max_rate 24500 # Maximum rate in mm/min
beta_step_pin 0.19 # Pin for beta stepper step signal
beta_dir_pin 0.20 # Pin for beta stepper direction, add '!' to reverse direction
beta_en_pin 2.8 # Pin for beta enable
beta_current 1.5 # M2 stepper motor current
beta_max_rate 24500 # Maxmimum rate in mm/min
gamma_step_pin 0.22 # Pin for gamma stepper step signal
gamma_dir_pin 2.11 # Pin for gamma stepper direction, add '!' to reverse direction
gamma_en_pin 0.21 # Pin for gamma enable
gamma_current 1.5 # M3 stepper motor current
gamma_max_rate 24500 # Maximum rate in mm/min
## Extruder module configuration
# See http://smoothieware.org/extruder
extruder.hotend.enable true # Whether to activate the extruder module at all. All configuration is ignored if false
#extruder.hotend.steps_per_mm 130 # Steps per mm for extruder stepper
extruder.hotend.steps_per_mm 2630 # Steps per mm for extruder stepper, updated for nimble, 30:1 gear, 1/16 micro stepping, GOLD, tested on 100CM
extruder.hotend.default_feed_rate 600 # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend.acceleration 120 # Acceleration for the stepper motor mm/sec²
extruder.hotend.max_speed 150 # Maximum speed in mm/s
extruder.hotend.step_pin 2.13 # Pin for extruder step signal
extruder.hotend.dir_pin 0.11! # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend.en_pin 2.12 # Pin for extruder enable signal
# Extruder offset
#extruder.hotend.x_offset 0 # X offset from origin in mm
#extruder.hotend.y_offset 0 # Y offset from origin in mm
#extruder.hotend.z_offset 0 # Z offset from origin in mm
# Firmware retract settings when using G10/G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults
extruder.hotend.retract_length 0.8 # Retract length in mm, as per the E3D V6 wiki, for PLA
#extruder.hotend.retract_feedrate 45 # Retract feedrate in mm/sec
#extruder.hotend.retract_recover_length 0 # Additional length for recover
#extruder.hotend.retract_recover_feedrate 8 # Recover feedrate in mm/sec (should be less than retract feedrate)
#extruder.hotend.retract_zlift_length 0 # Z-lift on retract in mm, 0 disables
#extruder.hotend.retract_zlift_feedrate 6000 # Z-lift feedrate in mm/min (Note mm/min NOT mm/sec)
## Laser module configuration
# See http://smoothieware.org/laser
laser_module_enable false # Whether to activate the laser module at all
## Temperature control configuration
# See http://smoothieware.org/temperaturecontrol
# First hotend configuration
temperature_control.hotend.enable true # Whether to activate this ( "hotend" ) module at all.
#temperature_control.hotend.thermistor_pin 0.24 # Pin for the thermistor to read
temperature_control.hotend.heater_pin 2.5 # Pin that controls the heater, set to nc if a readonly thermistor is being defined, H-BED
#temperature_control.hotend.thermistor EPCOS100K # See http://smoothieware.org/temperaturecontrol#toc5
#temperature_control.hotend.beta 3950 # Or set the beta value
temperature_control.hotend.set_m_code 104 # M-code to set the temperature for this module
temperature_control.hotend.set_and_wait_m_code 109 # M-code to set-and-wait for this module
temperature_control.hotend.designator T # Designator letter for this module
temperature_control.hotend.max_temp 450 # Set maximum temperature - Will prevent heating above 300 by default
#temperature_control.hotend.min_temp 0 # Set minimum temperature - Will prevent heating below if set
temperature_control.hotend.sensor pt100_e3d
temperature_control.hotend.e3d_amplifier_pin 1.30 # must be a free ADC pin, not a temperature input
# Safety control is enabled by default and can be overidden here, the values show the defaults
# See http://smoothieware.org/temperaturecontrol#runaway
#temperature_control.hotend.runaway_heating_timeout 900 # How long it can take to heat up, max is 2040 seconds.
#temperature_control.hotend.runaway_cooling_timeout 0 # How long it can take to cool down if temp is set lower, max is 2040 seconds
#temperature_control.hotend.runaway_range 20 # How far from the set temperature it can wander, max setting is 63°C
# PID configuration
# See http://smoothieware.org/temperaturecontrol#pid
#Auto tune: M303 E0 S190
temperature_control.hotend.p_factor 22.6 # P ( proportional ) factor
temperature_control.hotend.i_factor 1.065 # I ( integral ) factor
temperature_control.hotend.d_factor 120 # D ( derivative ) factor
temperature_control.hotend.max_pwm 192 # Max pwm, 64 is a good value if driving a 12v resistor with 24v.
temperature_control.hotend.i_max 192 # Maximum value for the I variable in the PID control. This should usually be set to about the same value as Max_pwm
temperature_control.bed.enable true # Whether to activate this ( "hotend" ) module at all.
temperature_control.bed.thermistor_pin 0.23 # Pin for the thermistor to read
#temperature_control.bed.heater_pin 2.5 # Pin that controls the heater
temperature_control.bed.heater_pin 2.7 # Pin that controls the heater (HE0)
temperature_control.bed.thermistor Semitec-104NT4 # See http://smoothieware.org/temperaturecontrol#thermistor, SeeMeCNC Rev 10 heated bed thermistor
#temperature_control.bed.beta 3974 # Or set the beta value
temperature_control.bed.set_m_code 140 # M-code to set the temperature for this module
temperature_control.bed.set_and_wait_m_code 190 # M-code to set-and-wait for this module
temperature_control.bed.designator B # Designator letter for this module
## Temperatureswitch
# See http://smoothieware.org/temperatureswitch
# Automatically toggle a switch at a specified temperature. Different ones of these may be defined to monitor different temperatures and switch different swithxes
# Useful to turn on a fan or water pump to cool the hotend
temperatureswitch.hotend.enable true # enable this module
temperatureswitch.hotend.switch fan # select which MOSFET to use, must match a switch configuration (fan2 below)
temperatureswitch.hotend.designator T # first character of the temperature control designator to use as the temperature sensor to monitor
temperatureswitch.hotend.threshold_temp 65.0 # temperature to turn on (if rising) or off the switch
temperatureswitch.hotend.heatup_poll 5 # poll heatup at 15 sec intervals
temperatureswitch.hotend.cooldown_poll 60 # poll cooldown at 60 sec intervals
## Switch modules
# See http://smoothieware.org/switch
# Switch module for fan control
switch.fan.enable true # Enable this module
#switch.fan.input_on_command M106 # Command that will turn this switch on
#switch.fan.input_off_command M107 # Command that will turn this switch off
switch.fan.output_pin 2.3 # Pin this module controls
switch.fan.output_type digital # PWM output settable with S parameter in the input_on_comand, switched to digital for a more like on/off operation
#switch.fan.max_pwm 255 # Set max pwm for the pin default is 255
## Endstops
# See http://smoothieware.org/endstops
endstops_enable true # The endstop module is disabled by default and must be enabled here
delta_homing true # Forces all three axis to home a the same time regardless of what is specified in G28
alpha_min_endstop nc # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
alpha_max_endstop 1.28!^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
alpha_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_max 0 # This gets loaded as the current position after homing when home_to_max is set
beta_min_endstop nc # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
beta_max_endstop 1.26!^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
beta_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
beta_max 0 # This gets loaded as the current position after homing when home_to_max is set
gamma_min_endstop nc # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
gamma_max_endstop 1.24!^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
gamma_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_max_travel 1000 # Max travel in mm for alpha/X axis when homing
beta_max_travel 1000 # Max travel in mm for beta/Y axis when homing
gamma_max_travel 1000 # Max travel in mm for gamma/Z axis when homing
# Endstops home at their fast feedrate first, then once the endstop is found they home again at their slow feedrate for accuracy
alpha_fast_homing_rate_mm_s 150 # Alpha tower fast homing feedrate in mm/second
alpha_slow_homing_rate_mm_s 20 # Alpha tower slow homing feedrate in mm/second
beta_fast_homing_rate_mm_s 150 # Beta tower fast homing feedrate in mm/second
beta_slow_homing_rate_mm_s 20 # Beta tower slow homing feedrate in mm/second
gamma_fast_homing_rate_mm_s 150 # Gamma tower fast homing feedrate in mm/second
gamma_slow_homing_rate_mm_s 20 # Gamma tower slow homing feedrate in mm/second
alpha_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for alpha/X
beta_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for beta/Y
gamma_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for gamma/Z
# Endstop debouncing options
#endstop_debounce_count 100 # Uncomment if you get noise on your endstops, default is 100
#endstop_debounce_ms 1 # Uncomment if you get noise on your endstops, default is 1 millisecond debounce
# Endstop trim options
alpha_trim_mm 0 # Software trim for alpha stepper endstop (in mm)
beta_trim_mm 0 # Software trim for beta stepper endstop (in mm)
gamma_trim_mm 0 # Software trim for gamma stepper endstop (in mm)
# End of endstop config
# Delete the above endstop section and uncomment next line and copy and edit Snippets/abc-endstop.config file to enable endstops for ABC axis
#include abc-endstop.config
## Z-probe
# See http://smoothieware.org/zprobe
zprobe.enable true # Set to true to enable a zprobe
#zprobe.probe_pin 1.29^ # Pin probe is attached to, if NC remove the !
zprobe.probe_pin 1.29^ # Pin probe is attached to, if NC remove the !
#probe.debounce_ms 2 # Set if noisy
zprobe.fast_feedrate 200 # move feedrate mm/sec
zprobe.slow_feedrate 5 # Mm/sec probe feed rate
zprobe.return_feedrate 200 # feedrate after a probe, default 0 is double of slow_feedrate (mm/s)
zprobe.probe_height 10 # How much above bed to start probe
#gamma_min_endstop nc # Normally 1.28. Change to nc to prevent conflict,
#CRITICAL! This sets to MAX travle!!!!!!!!!!!!!!!!!!
zprobe.max_z 536.5667 # Maximum Z (was gamma_max)
gamma_max 536.5667 # This gets loaded as the current position after homing when home_to_max is set
# Levelling strategy
# Example for the delta calibration strategy
leveling-strategy.delta-calibration.enable true # Enable basic delta calibration
leveling-strategy.delta-calibration.radius 110 # the probe radius
# Example for the delta grid leveling strategy
leveling-strategy.delta-grid.enable true # Enable grid leveling
leveling-strategy.delta-grid.radius 100 # Grid radius in millimeters
leveling-strategy.delta-grid.size 5 # Grid size, must be an odd number
leveling-strategy.delta-grid.do_home true # Whether to home before calibration
leveling-strategy.delta-grid.save false # Whether to automatically save the grid
leveling-strategy.delta-grid.initial_height 10 # Height at which to start probling
## Panel
# See http://smoothieware.org/panel
# Please find your panel on the wiki and copy/paste the right configuration here
#panel.enable true # Set to true to enable the panel code
panel.enable false # Set to true to enable the panel code
# Example for reprap discount GLCD
# on glcd EXP1 is to left and EXP2 is to right, pin 1 is bottom left, pin 2 is top left etc.
# +5v is EXP1 pin 10, Gnd is EXP1 pin 9
panel.lcd reprap_discount_glcd #
panel.spi_channel 0 # SPI channel to use ; GLCD EXP1 Pins 3,5 (MOSI, SCLK)
panel.spi_cs_pin 0.16 # SPI chip select ; GLCD EXP1 Pin 4
panel.encoder_a_pin 3.25!^ # Encoder pin ; GLCD EXP2 Pin 3
panel.encoder_b_pin 3.26!^ # Encoder pin ; GLCD EXP2 Pin 5
panel.click_button_pin 0.28!^ # Click button ; GLCD EXP1 Pin 2
panel.buzz_pin 1.30 # Pin for buzzer ; GLCD EXP1 Pin 1
#panel.back_button_pin 0.28!^ # Back button ; GLCD EXP2 Pin 8
panel.external_sd true # set to true if there is an extrernal sdcard on the panel
panel.external_sd.spi_channel 0 # set spi channel the sdcard is on
panel.external_sd.spi_cs_pin 1.23 # set spi chip select for the sdcard (or any spare pin)
panel.external_sd.sdcd_pin 1.31!^ # sd detect signal (set to nc if no sdcard detect) (or any spare pin)
panel.menu_offset 1 # Some panels will need 1 here
panel.alpha_jog_feedrate 6000 # X jogging feedrate in mm/min
panel.beta_jog_feedrate 6000 # Y jogging feedrate in mm/min
panel.gamma_jog_feedrate 6000 # Z jogging feedrate in mm/min
panel.hotend_temperature 185 # Temp to set hotend when preheat is selected
panel.bed_temperature 60 # Temp to set bed when preheat is selected
panel.menu_offset 0 # Some panels will need 1 here
panel.alpha_jog_feedrate 6000 # X jogging feedrate in mm/min
panel.beta_jog_feedrate 6000 # Y jogging feedrate in mm/min
panel.gamma_jog_feedrate 6000 # Z jogging feedrate in mm/min
panel.hotend_temperature 185 # Temp to set hotend when preheat is selected
panel.bed_temperature 60 # Temp to set bed when preheat is selected
## Custom menus : Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands
custom_menu.power_on.enable true #
custom_menu.power_on.name Power_on #
custom_menu.power_on.command M80 #
custom_menu.power_off.enable true #
custom_menu.power_off.name Power_off #
custom_menu.power_off.command M81 #
## Network settings
# See http://smoothieware.org/network
network.enable false # Enable the ethernet network services
network.webserver.enable false # Enable the webserver
network.telnet.enable false # Enable the telnet server
#network.ip_address auto # Use dhcp to get ip address
# Uncomment the 3 below to manually setup ip address
#network.ip_address 192.168.3.222 # The IP address
#network.ip_mask 255.255.255.0 # The ip mask
#network.ip_gateway 192.168.3.1 # The gateway address
#network.mac_override xx.xx.xx.xx.xx.xx # Override the mac address, only do this if you have a conflict
## System configuration
# Serial communications configuration ( baud rate defaults to 9600 if undefined )
# For communication over the UART port, *not* the USB/Serial port
uart0.baud_rate 115200 # Baud rate for the default hardware ( UART ) serial port
second_usb_serial_enable false # This enables a second USB serial port
#leds_disable true # Disable using leds after config loaded
#play_led_disable true # Disable the play led
# Kill button maybe assigned to a different pin, set to the onboard pin by default
# See http://smoothieware.org/killbutton
#kill_button_enable true # Set to true to enable a kill button
#kill_button_pin 2.12 # Kill button pin. default is same as pause button 2.12 (2.11 is another good choice)
#msd_disable false # Disable the MSD (USB SDCARD), see http://smoothieware.org/troubleshooting#disable-msd
#dfu_enable false # For linux developers, set to true to enable DFU
# Only needed on a smoothieboard
# See http://smoothieware.org/currentcontrol
#currentcontrol_module_enable true # Control stepper motor current via the configuration file