FluidNC

I just switched over to fluidnc as part of my laser scan troubleshooting process. Transferring from grblesp32 was made easier with the " Translate Machine.h File to FluidNC" feature now found in the grblesp32 issue report section. However, it wasn’t just drop a file and cut… homing directions were wrong and autosquare wasn’t setup (also, esp3d wifi wasn’t configured precompile, but you can use the standard esp3d hotspot method to set it up). Since it’s not that long, I’m posting my working YAML here. This is for a 24"x24"x6" MPCNC with 6-pack using dual endstops, z-max stop, mist, flood, spindle, laser pwm, e-stop/pause/run buttons, a probe, and “running” LED indicator.

name: TrugMPCNC
board: 6-pack

kinematics:
  Cartesian:

stepping:
  engine: I2S_static
  idle_ms: 255
  dir_delay_us: 0
  pulse_us: 4
  disable_delay_us: 0

axes:
  x:
    steps_per_mm: 200.000
    max_rate_mm_per_min: 7500.000
    acceleration_mm_per_sec2: 127.000
    max_travel_mm: 562.000
    soft_limits: true
    homing:
      cycle: 2
      mpos_mm: -562.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 300.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.33
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: true
      stepstick:
        direction_pin: i2so.1
        step_pin: i2so.2
        disable_pin: i2so.0
        ms3_pin: i2so.3
    motor1:
      limit_neg_pin: gpio.32
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: true
      stepstick:
        direction_pin: i2so.12
        step_pin: i2so.13
        disable_pin: i2so.15
        ms3_pin: i2so.14
  y:
    steps_per_mm: 200.000
    max_rate_mm_per_min: 7500.000
    acceleration_mm_per_sec2: 127.000
    max_travel_mm: 562.000
    soft_limits: true
    homing:
      cycle: 3
      mpos_mm: -562.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 300.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.35
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: true
      stepstick:
        direction_pin: i2so.4
        step_pin: i2so.5
        disable_pin: i2so.7
        ms3_pin: i2so.6
    motor1:
      limit_neg_pin: gpio.34
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: true
      stepstick:
        direction_pin: i2so.17
        step_pin: i2so.18
        disable_pin: i2so.16
        ms3_pin: i2so.19
  z:
    steps_per_mm: 800.000
    max_rate_mm_per_min: 2000.000
    acceleration_mm_per_sec2: 80.000
    max_travel_mm: 150.000
    soft_limits: true
    homing:
      cycle: 1
      mpos_mm: 0.000
      positive_direction: true
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 300.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.25
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: true
      stepstick:
        direction_pin: i2so.9
        step_pin: i2so.10
        disable_pin: i2so.8
        ms3_pin: i2so.11
    motor1:
      null_motor:

i2so:
  bck_pin: gpio.22
  data_pin: gpio.21
  ws_pin: gpio.17

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  cs_pin: gpio.5

control:
  reset_pin: gpio.16:pu
  feed_hold_pin: gpio.4:pu
  cycle_start_pin: gpio.26:pu

coolant:
  flood_pin: i2so.24
  mist_pin: gpio.15
  delay_ms: 1000.000

probe:
  pin: gpio.39
  check_mode_start: false

macros:
  startup_line0: 
  startup_line1: 
  macro0: 
  macro1: 
  macro2: 
  macro3: 

start:
  must_home: true
  check_limits: true
  deactivate_parking: false

user_outputs:
  digital0_pin: i2so.25

laser:
  spinup_ms: 0
  spindown_ms: 0
  tool_num: 0
  speeds: 0=0.0% 1000=100.0%
  output_pin: gpio.13
  enable_pin: gpio.14
  disable_with_s0: false
  s0_with_disable: false
  pwm_hz: 5000
arc_tolerance_mm: 0.002
junction_deviation_mm: 0.010
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false 

Of course, with a 6-pack you can plug in your expansion boards wherever (more or less)… but I figured seeing a working config might help others adapt their rig to the new YAML method.

2 Likes