Unable to home the machine?

smoothie-forum
(JustmeNL_SW) #1

My machine, a converted Proxxon MF70, has a problem that I’m unable to home the machine. When I turn on the power, and the axis are somewhere in the middle, smoothie says they are at their 0-position. Pressing home in smoothie web does nothing. If I jog an axis some, the home button reverses the axis to the position in which the machine was at power on.

Jogging the machine using smoothie web confirms the steppers work, the axis move in the right direction. The M119 command shows the endpoints work correctly (they are NO). So what am I missing in the configuration?

Pressing home should move all three axis until they hit their designated endpoints and then stay there or move to the configured origin point right?

The info:

Hardware: smoothieboard v1.0
firmwareversion: upstreamedge-b07c971 Dec 15 2018 22:19:07

Configuration of the endstops:

@<

+ show block

[[code]]
endstops_enable true # The endstop module is enabled by default and can be disabled here
corexy_homing false # Set to true if homing on a hbot or corexy
alpha_min_endstop 1.24!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#alpha_max_endstop 1.25!^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
alpha_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_min 0 # This gets loaded as the current position after homing when home_to_min is set
alpha_max 200 # This gets loaded as the current position after homing when home_to_max is set
beta_min_endstop 1.26!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#beta_max_endstop 1.27^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
beta_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
beta_min 0 # This gets loaded as the current position after homing when home_to_min is set
beta_max 160 # This gets loaded as the current position after homing when home_to_max is set
gamma_min_endstop 1.28!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#gamma_max_endstop 1.29^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
gamma_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
gamma_min 0 # This gets loaded as the current position after homing when home_to_min is set
gamma_max 80 # This gets loaded as the current position after homing when home_to_max is set

alpha_max_travel 200 # Max travel in mm for alpha/X axis when homing
beta_max_travel 160 # Max travel in mm for beta/Y axis when homing
gamma_max_travel 80 # Max travel in mm for gamma/Z axis when homing

  1. Optional enable limit switches, actions will stop if any enabled limit switch is triggered

alpha_limit_enable true # Set to true to enable X min and max limit switches
beta_limit_enable true # Set to true to enable Y min and max limit switches
gamma_limit_enable true # Set to true to enable Z min and max limit switches

  1. 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 50 # Alpha/X fast homing feedrate in mm/second
alpha_slow_homing_rate_mm_s 25 # Alpha/X slow homing feedrate in mm/second
beta_fast_homing_rate_mm_s 50 # Beta/Y fast homing feedrate in mm/second
beta_slow_homing_rate_mm_s 25 # Beta/Y slow homing feedrate in mm/second
gamma_fast_homing_rate_mm_s 4 # Gamma/Z fast homing feedrate in mm/second
gamma_slow_homing_rate_mm_s 2 # Gamma/Z 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 1 # Distance to retract from the endstop after it is hit for gamma/Z

  1. Optional order in which axis will home, default is they all home at the same time,
  2. If this is set it will force each axis to home one at a time in the specified order

#homing_order XYZ # X axis followed by Y then Z last
move_to_origin_after_home true # Move XY to 0,0 after homing
#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
home_z_first true # Uncomment and set to true to home the Z first, otherwise Z homes after XY

  1. End of endstop config

[[/code]]

>@

Thank you for your help.

Imported from wikidot

0 Likes

(d3delta3d_SW) #2

Just looking through the config file on the delta I built and I don’t use a lot of the commands you have used from teh first option section and everything works fine. Try removing the # from homing_order XYZ so it works and set home_z_first to false and see what happens

0 Likes

(JustmeNL_SW) #3

Thank you for your feedback. I uncommented the homing_order and set z_first to false but unfortunately it has no effect on the outcome. The machine refuses to home to the end stops and keeps the power-up position as home and origin.

0 Likes

(d3delta3d_SW) #4

Try setting all these to false as your not using them.

alpha_limit_enable true # Set to true to enable X min and max limit switches
beta_limit_enable true # Set to true to enable Y min and max limit switches
gamma_limit_enable true # Set to true to enable Z min and max limit switches

Also when you enter M119 without the endstops being depressed I assume you see X min:0 Y min:0 Z min:0

0 Likes

(JustmeNL_SW) #5

Unfortunately, setting the limit_enable to false does not help.

M119 shows three zero’s with untouched endstops. And the right axis changes to 1 when a press the endstop for that axis and reissue the M119.

With the limit_enable set to true the machine halts when I press any endstop so I know they function correctly.

Am I missing the correct gcode? Pressing home on the smoothie web interface or sending G28 should home the machine to the endstops right?

0 Likes

(d3delta3d_SW) #6

I use Pronterface but did use Smoothieweb and yes if you press the home button all axises should home, My config file is from 2015 so does not have some of the stuff in yours. Mine is simpler

If you enter a code M114 when the machine is powered up what do you get. If you enter the code G0 X30 Y30 Z30 does it move to those coordinates and can you confirm the movement to this location with M114?

It is very strange.

0 Likes

(JustmeNL_SW) #7

Here are the results:
Poweron: machine does not move, all motors are off, M114: ok C: X:0.0000 Y:0.0000 Z:0.0000
G0 X30 Y30 Z30: ok, machine moves all three axis in the right direction, M114: ok C: X:30.0000 Y:30.0000 Z:30.0000
Press home: machine moves XY back but leaves Z in its place (?), M114: ok C: X:0.0000 Y:0.0000 Z:30.0000
Press Home Z, nothing happens, M114: ok C: X:0.0000 Y:0.0000 Z:30.0000

In case I missed something somewhere else in the config, the complete config as it is now:

+ show block
# Smoothieboard configuration file, see 
# 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 100 # Default speed (mm/minute) for G1/G2/G3 moves
default_seek_rate 100 # 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

Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions

alpha_steps_per_mm 3200 # Steps per mm for alpha ( X ) stepper
beta_steps_per_mm 3200 # Steps per mm for beta ( Y ) stepper
gamma_steps_per_mm 3200 # Steps per mm for gamma ( Z ) stepper

Planner module configuration : Look-ahead and acceleration configuration

acceleration 50 # 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
#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 100 # Maximum speed in mm/min
y_axis_max_speed 250 # Maximum speed in mm/min
z_axis_max_speed 500 # Maximum speed in mm/min

Stepper module configuration

Pins are defined as ports, and pin numbers, appending “!” to the number will invert a pin

alpha_step_pin 2.0 # Pin for alpha stepper step signal
alpha_dir_pin 0.5! # Pin for alpha stepper direction, add ‘!’ to reverse direction
alpha_en_pin 0.4 # Pin for alpha enable pin
alpha_current 1.0 # X stepper motor current
alpha_max_rate 100.0 # Maximum rate in mm/min

beta_step_pin 2.1 # Pin for beta stepper step signal
beta_dir_pin 0.11! # Pin for beta stepper direction, add ‘!’ to reverse direction
beta_en_pin 0.10 # Pin for beta enable
beta_current 1.0 # Y stepper motor current
beta_max_rate 250.0 # Maxmimum rate in mm/min

gamma_step_pin 2.2 # Pin for gamma stepper step signal
gamma_dir_pin 0.20 # Pin for gamma stepper direction, add ‘!’ to reverse direction
gamma_en_pin 0.19 # Pin for gamma enable
gamma_current 1.0 # Z stepper motor current
gamma_max_rate 500.0 # Maximum rate in mm/min

Switch modules

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.6 # Pin this module controls
switch.fan.output_type pwm # PWM output settable with S parameter in the input_on_comand
#switch.fan.max_pwm 255 # Set max pwm for the pin default is 255

#switch.misc.enable true # Enable this module
#switch.misc.input_on_command M42 # Command that will turn this switch on
#switch.misc.input_off_command M43 # Command that will turn this switch off
#switch.misc.output_pin 2.4 # Pin this module controls
#switch.misc.output_type digital # Digital means this is just an on or off pin

Endstops

endstops_enable true # The endstop module is enabled by default and can be disabled here
corexy_homing false # Set to true if homing on a hbot or corexy
alpha_min_endstop 1.24!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#alpha_max_endstop 1.25!^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
alpha_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_min 0 # This gets loaded as the current position after homing when home_to_min is set
alpha_max 200 # This gets loaded as the current position after homing when home_to_max is set
beta_min_endstop 1.26!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#beta_max_endstop 1.27^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
beta_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
beta_min 0 # This gets loaded as the current position after homing when home_to_min is set
beta_max 160 # This gets loaded as the current position after homing when home_to_max is set
gamma_min_endstop 1.28!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
#gamma_max_endstop 1.29^ # Pin to read max endstop, uncomment this and comment the above if using max endstops
gamma_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
gamma_min 0 # This gets loaded as the current position after homing when home_to_min is set
gamma_max 80 # This gets loaded as the current position after homing when home_to_max is set

alpha_max_travel 200 # Max travel in mm for alpha/X axis when homing
beta_max_travel 160 # Max travel in mm for beta/Y axis when homing
gamma_max_travel 80 # Max travel in mm for gamma/Z axis when homing

Optional enable limit switches, actions will stop if any enabled limit switch is triggered

alpha_limit_enable false # Set to true to enable X min and max limit switches
beta_limit_enable false # Set to true to enable Y min and max limit switches
gamma_limit_enable false # Set to true to enable Z min and max limit switches

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 50 # Alpha/X fast homing feedrate in mm/second
alpha_slow_homing_rate_mm_s 25 # Alpha/X slow homing feedrate in mm/second
beta_fast_homing_rate_mm_s 50 # Beta/Y fast homing feedrate in mm/second
beta_slow_homing_rate_mm_s 25 # Beta/Y slow homing feedrate in mm/second
gamma_fast_homing_rate_mm_s 4 # Gamma/Z fast homing feedrate in mm/second
gamma_slow_homing_rate_mm_s 2 # Gamma/Z 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 1 # Distance to retract from the endstop after it is hit for gamma/Z

Optional order in which axis will home, default is they all home at the same time,

If this is set it will force each axis to home one at a time in the specified order

homing_order YXZ # X axis followed by Y then Z last
move_to_origin_after_home true # Move XY to 0,0 after homing
#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
home_z_first false # Uncomment and set to true to home the Z first, otherwise Z homes after XY

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

zprobe.enable false # Set to true to enable a zprobe
zprobe.probe_pin 1.28!^ # Pin probe is attached to, if NC remove the !
zprobe.slow_feedrate 5 # Mm/sec probe feed rate
#zprobe.debounce_ms 1 # Set if noisy
zprobe.fast_feedrate 100 # Move feedrate mm/sec
zprobe.probe_height 5 # How much above bed to start probe
#gamma_min_endstop nc # Normally 1.28. Change to nc to prevent conflict,

Levelling strategy

Example for 3-point levelling strategy, see wiki documentation for other strategies

#leveling-strategy.three-point-leveling.enable true # a leveling strategy that probes three points to define a plane and keeps the Z parallel to that plane
#leveling-strategy.three-point-leveling.point1 100.0,0.0 # the first probe point (x,y) optional may be defined with M557
#leveling-strategy.three-point-leveling.point2 200.0,200.0 # the second probe point (x,y)
#leveling-strategy.three-point-leveling.point3 0.0,200.0 # the third probe point (x,y)
#leveling-strategy.three-point-leveling.home_first true # home the XY axis before probing
#leveling-strategy.three-point-leveling.tolerance 0.03 # the probe tolerance in mm, anything less that this will be ignored, default is 0.03mm
#leveling-strategy.three-point-leveling.probe_offsets 0,0,0 # the probe offsets from nozzle, must be x,y,z, default is no offset
#leveling-strategy.three-point-leveling.save_plane false # set to true to allow the bed plane to be saved with M500 default is false

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

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 1.30!^ # Click button ; GLCD EXP1 Pin 2
panel.buzz_pin 1.31 # Pin for buzzer ; GLCD EXP1 Pin 1
#panel.back_button_pin 2.11!^ # Back button ; GLCD EXP2 Pin 8

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 200 # 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

network.enable true # Enable the ethernet network services
network.webserver.enable true # Enable the webserver
network.telnet.enable true # 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.xx.xx # The IP address (marked out with x’s when posting to a public forum)
network.ip_mask 255.255.x.x # The ip mask
network.ip_gateway 192.168.xx.xx # 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

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
#dfu_enable false # For linux developers, set to true to enable DFU

Only needed on a smoothieboard

currentcontrol_module_enable true # Control stepper motor current via the configuration file


I started out with the latest firmware and config file for a CNC machine.

0 Likes

(d3delta3d_SW) #8

After you have sent G0 X30 Y30 Z30, if you then send G0 Z0 will it move back?

0 Likes

(JustmeNL_SW) #9

Yes, it returns to the position before the first G0 command, M114 reports the Z:0.0000 which is the position the machine was in when smoothie was started (or reset in)

0 Likes

(JustmeNL_SW) #10

First thank you for your help! By asking me the questions I found the answer.

It is a bit hidden, and I expected it to be better mentioned in the CNC milling guide, but the CNC firmware is a bit different then the normal smoothie. To quote the wiki on the grbl-mode page:

Typical differences between 3d mode and CNC mode are:-

  1. Error messages are different
  2. G28 goes to park position and is NOT home, $H homes in CNC mode
  3. Many GCodes may be differently interpreted in CNC mode than in 3D mode, please check your gcode references (Linuxcnc has a good GCode reference, do not use the reprap gcode reference for CNC mode)

And indeed, $H does do what I expected home or G28 to do! Problem solved.

0 Likes

(d3delta3d_SW) #11

Fantastic you got it going. On with the tuning

0 Likes