LR4 Z Axis taking a dive mid cut

Hey all, back on the forums after a 7 year break with a troubling problem.

I recently bought an LR4 from Northwoods (shout out to @Jonathjon for the great shipping and assembly!) and have fully aligned the machine and done manual jog test cuts to confirm everything is within spec (0.3mm over 4ft).
I just started on my first real cut and have had to stop it 6 times now because at different points in the cut, the z-axis seems to be disabling itself. From my perspective, it looks like zmotor0 is powering down when the gantry is near x0 and this causes the spindle to drop.
But then its trucking right along at that new depth pretty consistently instead of just bombing out…
Not really sure what’s going on, any help is appreciated!
Here’s a list of all the things I’ve checked so far and attached pics, config files:

  • Confirmed Z rail parallel to work surface (modified the motor pull-offs to dial it in, which I assume is the way?)
  • Confirmed tool is not slipping out of chuck
  • Confirmed router is not slipping out of holder
  • Confirmed gcode is not issuing dive commands

This is a simple two pass adaptive clearing cut @ 5mm each (2000mm/min). Where the blue arrow is, you can see it took a much bigger bite and then seemed to continue to roll with that depth. Feedback still showed it at WposZ: -0.5

I’ve attempted this cut about a dozen times, trying various things (listed above), this attempt (7?), it made it a but further into the program down the side of the board before randomly dropping depth again.

Config File:

board: Jackpot3 TMC2226

name: LowRider

meta: 11-01-2025 RyanZ

stepping: 

  engine: I2S_STATIC

  idle_ms: 255

  pulse_us: 2

  dir_delay_us: 1

  disable_delay_us: 0

  segments: 12




uart1: 

  txd_pin: gpio.16

  rxd_pin: gpio.4

  rts_pin: NO_PIN

  cts_pin: NO_PIN

  baud: 115200

  mode: 8N1

  passthrough_baud: 0

  passthrough_mode: 8E1




i2so: 

  bck_pin: gpio.22

  data_pin: gpio.21

  ws_pin: gpio.17

  min_pulse_us: 2




spi: 

  miso_pin: gpio.19

  mosi_pin: gpio.23

  sck_pin: gpio.18




sdcard: 

  cs_pin: gpio.5

  card_detect_pin: NO_PIN

  frequency_hz: 20000000




kinematics: 

  Cartesian: 




axes: 

  shared_stepper_disable_pin: NO_PIN

  shared_stepper_reset_pin: NO_PIN

  homing_runs: 2

  x: 

    steps_per_mm: 50.000000

    max_rate_mm_per_min: 9000.000000

    acceleration_mm_per_sec2: 200.000000

    max_travel_mm: 1220.000000

    soft_limits: false

    homing: 

      cycle: 2

      allow_single_axis: true

      positive_direction: false

      mpos_mm: 3.000000

      feed_mm_per_min: 300.000000

      seek_mm_per_min: 1500.000000

      settle_ms: 500

      seek_scaler: 1.100000

      feed_scaler: 1.100000




    motor0: 

      limit_neg_pin: gpio.25

      limit_pos_pin: NO_PIN

      limit_all_pin: NO_PIN

      hard_limits: false

      pulloff_mm: 4.000000

      tmc_2209: 

        addr: 0

        cs_pin: NO_PIN

        uart_num: 1

        step_pin: I2SO.2

        direction_pin: I2SO.1

        disable_pin: I2SO.0

        r_sense_ohms: 0.110000

        run_amps: 0.800000

        hold_amps: 0.700000

        microsteps: 8

        toff_disable: 0

        toff_stealthchop: 5

        use_enable: false

        run_mode: StealthChop

        homing_mode: StealthChop

        homing_amps: 0.800000

        stallguard: 0

        stallguard_debug: false

        toff_coolstep: 3




  y: 

    steps_per_mm: 50.000000

    max_rate_mm_per_min: 9000.000000

    acceleration_mm_per_sec2: 200.000000

    max_travel_mm: 2440.000000

    soft_limits: false

    homing: 

      cycle: 2

      allow_single_axis: true

      positive_direction: false

      mpos_mm: 3.000000

      feed_mm_per_min: 300.000000

      seek_mm_per_min: 1500.000000

      settle_ms: 500

      seek_scaler: 1.100000

      feed_scaler: 1.100000




    motor0: 

      limit_neg_pin: gpio.33

      limit_pos_pin: NO_PIN

      limit_all_pin: NO_PIN

      hard_limits: false

      pulloff_mm: 4.000000

      tmc_2209: 

        addr: 1

        cs_pin: NO_PIN

        uart_num: 1

        step_pin: I2SO.5

        direction_pin: I2SO.4

        disable_pin: I2SO.7

        r_sense_ohms: 0.110000

        run_amps: 0.800000

        hold_amps: 0.700000

        microsteps: 8

        toff_disable: 0

        toff_stealthchop: 5

        use_enable: false

        run_mode: StealthChop

        homing_mode: StealthChop

        homing_amps: 0.800000

        stallguard: 0

        stallguard_debug: false

        toff_coolstep: 3




    motor1: 

      limit_neg_pin: gpio.35

      limit_pos_pin: NO_PIN

      limit_all_pin: NO_PIN

      hard_limits: false

      pulloff_mm: 4.000000

      tmc_2209: 

        addr: 3

        cs_pin: I2SO.14

        uart_num: 1

        step_pin: I2SO.13

        direction_pin: I2SO.12

        disable_pin: I2SO.15

        r_sense_ohms: 0.110000

        run_amps: 0.800000

        hold_amps: 0.700000

        microsteps: 8

        toff_disable: 0

        toff_stealthchop: 5

        use_enable: false

        run_mode: StealthChop

        homing_mode: StealthChop

        homing_amps: 0.800000

        stallguard: 0

        stallguard_debug: false

        toff_coolstep: 3




  z: 

    steps_per_mm: 200.000000

    max_rate_mm_per_min: 900.000000

    acceleration_mm_per_sec2: 80.000000

    max_travel_mm: 150.000000

    soft_limits: false

    homing: 

      cycle: 1

      allow_single_axis: true

      positive_direction: true

      mpos_mm: 3.000000

      feed_mm_per_min: 300.000000

      seek_mm_per_min: 800.000000

      settle_ms: 500

      seek_scaler: 1.100000

      feed_scaler: 1.100000




    motor0: 

      limit_neg_pin: NO_PIN

      limit_pos_pin: gpio.32

      limit_all_pin: NO_PIN

      hard_limits: false

      pulloff_mm: 3.000000

      tmc_2209: 

        addr: 2

        cs_pin: NO_PIN

        uart_num: 1

        step_pin: I2SO.10

        direction_pin: I2SO.9

        disable_pin: I2SO.8

        r_sense_ohms: 0.110000

        run_amps: 0.800000

        hold_amps: 0.700000

        microsteps: 8

        toff_disable: 0

        toff_stealthchop: 5

        use_enable: false

        run_mode: StealthChop

        homing_mode: StealthChop

        homing_amps: 0.800000

        stallguard: 0

        stallguard_debug: false

        toff_coolstep: 3




    motor1: 

      limit_neg_pin: NO_PIN

      limit_pos_pin: gpio.34

      limit_all_pin: NO_PIN

      hard_limits: false

      pulloff_mm: 6.60000

      tmc_2209: 

        addr: 3

        cs_pin: I2SO.19

        uart_num: 1

        step_pin: I2SO.18

        direction_pin: I2SO.17

        disable_pin: I2SO.16

        r_sense_ohms: 0.110000

        run_amps: 0.800000

        hold_amps: 0.700000

        microsteps: 8

        toff_disable: 0

        toff_stealthchop: 5

        use_enable: false

        run_mode: StealthChop

        homing_mode: StealthChop

        homing_amps: 0.800000

        stallguard: 0

        stallguard_debug: false

        toff_coolstep: 3




control: 

  safety_door_pin: NO_PIN

  reset_pin: NO_PIN

  feed_hold_pin: NO_PIN

  cycle_start_pin: NO_PIN

  macro0_pin: NO_PIN

  macro1_pin: NO_PIN

  macro2_pin: NO_PIN

  macro3_pin: NO_PIN

  fault_pin: NO_PIN

  estop_pin: NO_PIN

  homing_button_pin: NO_PIN




coolant: 

  flood_pin: NO_PIN

  mist_pin: NO_PIN

  delay_ms: 0




probe: 

  pin: 'gpio.36:low'

  toolsetter_pin: NO_PIN

  check_mode_start: true

  hard_stop: false

  probe_hard_limit: false




macros: 

  startup_line0: 

  startup_line1: 

  Macro0: 

  Macro1: 

  Macro2: 

  Macro3: 

  after_homing: 

  after_reset: 

  after_unlock: 




start: 

  must_home: false

  deactivate_parking: false

  check_limits: true




parking: 

  enable: false

  axis: Z

  target_mpos_mm: -5.000000

  rate_mm_per_min: 800.000000

  pullout_distance_mm: 5.000000

  pullout_rate_mm_per_min: 250.000000




user_outputs: 

  analog0_pin: NO_PIN

  analog1_pin: NO_PIN

  analog2_pin: NO_PIN

  analog3_pin: NO_PIN

  analog0_hz: 5000

  analog1_hz: 5000

  analog2_hz: 5000

  analog3_hz: 5000

  digital0_pin: gpio.26

  digital1_pin: gpio.27

  digital2_pin: gpio.0

  digital3_pin: gpio.2

  digital4_pin: NO_PIN

  digital5_pin: NO_PIN

  digital6_pin: NO_PIN

  digital7_pin: NO_PIN




user_inputs: 

  analog0_pin: NO_PIN

  analog1_pin: NO_PIN

  analog2_pin: NO_PIN

  analog3_pin: NO_PIN

  digital0_pin: NO_PIN

  digital1_pin: NO_PIN

  digital2_pin: NO_PIN

  digital3_pin: NO_PIN

  digital4_pin: NO_PIN

  digital5_pin: NO_PIN

  digital6_pin: NO_PIN

  digital7_pin: NO_PIN




arc_tolerance_mm: 0.002000

junction_deviation_mm: 0.010000

verbose_errors: true

report_inches: false

enable_parking_override_control: false

use_line_numbers: false

planner_blocks: 32

routingTableTrack.gcode (9.6 MB)

It sounds like the Z stepper motors are skipping steps. Did you lube the lead screws?

1 Like

I would check and make sure there are no loose connections. Z0 has no extension cable one it, but be sure its didnt come a little loose in shipping at the board. This will be the first one to have that issue so I am very curious to see what it might be.

1 Like

Thanks for the ideas guys! I’ll doublecheck all the connections just to be safe and make sure the lead screws are moving well. Hopefully that’ll do it. I’m surprised skipping steps was a first thought, is 2000mm/min @ 5mm DOC a bit too aggressive? This is a new bit going into plywood

5mm DOC is possible, but you might want to ease up on it a little. With a 6mm endmill, 3mm is okay as well. :slight_smile: DOC adds the most “stress” on the endmill, going faster doesn’t do that much.

Okay so I just got a chance to try all the feedback:

  • Lubricated Z lead screws
  • Checked wire connections (no issues)
  • Ran with a ~1mm DOC to be safe

It is still plunging but I can now see that it is very consistent. I ran two cuts and it took a massive dive on the second pass both times in the same spot and to the same depth. So now I’m pretty confident it’s a config issue or I’m not doing something software related on my end that I should be.

  • This is the first attempt. It correctly cut a 1mm perimeter, then plunged to a 6mm depth

  • This is the second attempt. Flipped the board over and got basically identical results which leads me to believe this is a software problem.

I’ve checked the gcode and it looks fine.

TestPass.gcode (35.1 KB)

I also checked the WposZ and it again showed correct (~[-2mm]) as it was barreling in at -6.
An odd thing though, when I stopped it and moved back to my zeros, the Z was serveral mm lower than where I originally started it.
I used F360 and the latest post processor to generate the gcode if that makes any difference, although that looks fine to me..

Looks like I can’t upload a video but I wanted to give an example of what I’m doing each time because maybe it’s me? IDK very confused at this point

P.S.
I had forgotten about this but years ago when I was getting out of college, I built an MPCNC and posted a question about a Z axis issue I was having at the time. I guess the Z just hates me :rofl:

If your Z was off at the end, three things come to mind….

  1. Loose grub screw.

  2. loosing steps.

  3. End mill moving in collet. I have had this happen before. I had a 3mm end mill in a 1/8 collet. The cutting force pulled the end mill down resulting in deeper cut.