Steps/mm, Microstepping,Jackpot Config

All,

I’ve gotten the FrankenLaser so that everything moves in the correct direction and the laser will fire (all under LightBurn control).

BUT, the distances that the machine moves are not even close to the distances I want. I’ve been through all the posts I could find on the forum for getting accurate movement, but can’t quite get my head around applying it all with the Jackpot board.

I have 16 tooth stepper pulleys and 6mm wide belt. The steppers are the ones from V1 and I think they are 200 steps per revolution, but I’m not sure what happens when microstepping is enabled.

Does the steps per revolution get multiplied by the microstep count?

In the config.yaml file the current values use microstep=8 and the steps/mm is set at 68. What I got was a distance of 270 when I commanded 100. (or something like that, I’ve changed a few setting using the correction formula posted elsewhere).

Is there a way to send step count commands rather than distance commands? I’d like to test the step/revolution independent of the distance value, just to see what my steppers are actually doing.

In reviewing the setup of this machine I also realized that I didn’t check the distances on the JL-1 installation of the FluidNC Pen/laser board I need to go back and do that.

So, please, help me understand the interaction between microsteps and steps per revolution of the motor, and secondarily, how to verify the steps per revolution of the motor. Then what do I need to put in the config file?

Mike B.

1 Like

On my MPCNC the X and Y values are: steps_per_mm: 50.000
The rotary value is: steps_per_mm: 65.815

I hope this helps Mike.

@Britt

Thanks, I’ll try these values.

1 Like

You have a microstep setting and a steps per mm setting for each stepper. If you can tell us what yours are set at and how far they actually move vs what you asked for we can tell you the right settings.

For example, asked for 100mm, got 80mm on the X axis.

1 Like

Okay, I’m an idiot, I guess.

Here are my config settings:

stepping:
  engine: I2S_STATIC
  idle_ms: 255
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0
  
uart1:
  txd_pin: gpio.0
  rxd_pin: gpio.4
  rts_pin: NO_PIN
  baud: 115200
  mode: 8N1

axes:
  shared_stepper_disable_pin: NO_PIN
  
  x:
    steps_per_mm: 50.00
    max_rate_mm_per_min: 9000.000
    acceleration_mm_per_sec2: 200.000
    max_travel_mm: 330
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: false
      mpos_mm: 0
      feed_mm_per_min: 300.000
      seek_mm_per_min: 1500.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100
    #X
    motor0:
      limit_neg_pin: gpio.25:high
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 2.00
      tmc_2209:
        uart_num: 1
        addr: 0
        cs_pin: NO_PIN
        r_sense_ohms: 0.110
        run_amps: 0.680
        hold_amps: 0.500
        microsteps: 8
        stallguard: 0
        stallguard_debug: false
        toff_disable: 0
        toff_stealthchop: 5
        toff_coolstep: 3
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        direction_pin: I2SO.1
        step_pin: I2SO.2
        disable_pin: I2SO.0      

With both the Y motors set exactly as the X.

And I get 100mm when I ask for 100mm!! I don’t know what was happening when I was testing it earlier, but ti seems to work now.

I’ll try @Britt values for the rotary and see what I might need to change there.

Sorry for the fire drill.

1 Like

Sounds good, glad it was an easy fix, the easiest!!

When I was having unpredictable stepper movement after making changes to the config I found in the Fluidnc docs or wiki that you have to turn on the power before you plug in the USB or the drivers don’t load correctly.

Belt width doesn’t matter for this calculation, but the pitch of the belt teeth is important. I believe all the belts sold at V1 are GT2, so 2mm tooth pich.
Here’s how the math breaks down for 8x microstepping:

8x microstepping means that the controller can subdivide a single step into 8 microsteps, so with a 200 step motor and 8x microstepping, you’ll have 1600 steps per revolution.

Then, with a 16-tooth GT2 pulley, you have 16 teeth in one revolution, and each tooth moves 2 mm, so that’s 32 mm per revolution.

Finally, divide 1600 steps (in 1 revolution) by 32 mm (in one revoution) to get 50 steps per mm.

Edit to add - some folks recommend changing your steps per mm based on doing a commanded move and adjusting for what you actually get. I don’t like doing that because there shouldn’t be enough “slop” or error in these belted systems to require that level of tweaking. If your calculated values produce moves that are way off the mark, you should check for mechanical problems (loose pulley grub screws, missing steps due to too high velocity/acceleration/friction, stretched/deformed belts or missing teeth, etc.) and fix those. Then the calculated numbers should get you right on the money.

On a 3D printer I will do adjustments based on actual filament movement for extruder steps per mm, since counting the teeth or measuring the circumference and “bite” by the teeth is impractical (and may change based on filament hardness), but that hasn’t been needed (in my experience) on my MPCNC’s X or Y axes.

2 Likes