Vibrations on changing direction, y axis belt problem?

Hi there!
On our self-build machine (1200x1200mm bed, 150W Reci tube, closed loop NEMA23 steppers) we have the Cohesion3D motherboard.

It all works great, especially with Lightburn side-by-side it is a relieve compared to the old system we had. However, there is one small problem with mostly the Y-axis (to axis from the laser tube towards the front of the machine).

While cutting (several speeds tried, ranging from 10 to 40 mm/s, all on 5% power) we see an obvious wobble in the line. We have done the following to try and bring it down but still with minimum results:

  • belt tensions
  • different belts (now running PU HTD 5M 15mm with internal steel wire reinforcements)
  • Bringing down the junction_deviation as far as 0.001 and acceleration down as well

Also, the start and stop location vary slightly which might become a problem in thicker materials…

Anyone encountered these problems before?

Hi Steven, is this the machine?

First of all, what a beast! That thing looks amazing. I can’t tell from the drawings, but is the Y axis moved by a single stepper motor, or are there two steppers? What is the exact configuration?

It’s definitely one of the larger machines we’ve seen here, and since it’s DIY the more info (and photos) you can provide will help in trying to diagnose what is going on.

Hi Pete, thank you for the reply, and I do understand your questions.

Originally, we had a single NEMA23 closed loop stepper on the Y-axis, using a solid 10mm shaft to drive both sides. We were issues with play in this setup and decided to run 2 NEMA23 motors parallel on the Y axis, to remove the long torsion-prone axle. I will add photos tomorrow when I’m in the workshop.

Setup now:
Y-axis are 4080 profile (standing upright) with HIWIN rails + carts on top for the linear movement, the power comes from Leadshine NEMA23 closed loop steppers running in parallel and runs on a HTD5M belt (with steel wires inside to minimize the stretch on this ± 3mtr long belt).
The movement on this axis still feels as if there is hardly any acceleration, it just jumps into action. While the X axis, same linear guide and belt (both spec & length) and powered by a single NEMA23 Leadshine closed loop stepper has no wobble at all.

Check this topic to understand how to “force check and set” a super low acceleration:

Hi Ray, thanks for the reply. Yes I have been experimenting with the per-axis and the default acceleration. Not sure how they do effect eachother (in other words, which value overwrites the other?).
A small exempt of the current config file:

#Cohesion3D LaserBoard v0.2

# NOTE Lines must not exceed 132 characters
## Robot module configurations : general handling of movement G-codes and slicing into moves
default_feed_rate                            60000           # Default rate ( mm/minute ) for G1/G2/G3 moves
default_seek_rate                             24000        # Default rate ( mm/minute ) for G0 moves
mm_per_arc_segment                           0                # Fixed length for line segments that divide arcs 0 to disable
mm_max_arc_error                             0            # 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
#mm_per_line_segment                         1                # Lines can be cut into segments ( not usefull with cartesian
                                                              # coordinates robots ).

# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
alpha_steps_per_mm                           71.111          # Steps per mm for alpha stepper
beta_steps_per_mm                            44.444          # Steps per mm for beta stepper
gamma_steps_per_mm                           640              # Steps per mm for gamma stepper

# Planner module configuration : Look-ahead and acceleration configuration
planner_queue_size                           32               # DO NOT CHANGE THIS UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING
acceleration                            1000          # 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.001            # Similar to the old "max_jerk", in millimeters,
                                                              # see https://github.com/grbl/grbl/blob/master/planner.c
                                                              # and https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8
                                                              # Lower values mean being more careful, higher values means being
                                                              # faster and have more jerk
#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
#minimum_planner_speed                       0.0              # sets the minimum planner speed in mm/sec

# Stepper module configuration
microseconds_per_step_pulse                  3                # Duration of step pulses to stepper drivers, in microseconds
base_stepping_frequency                      125000          # Base frequency for stepping

# Cartesian axis speed limits
x_axis_max_speed                             90000           # mm/min
y_axis_max_speed                             90000            # mm/min
z_axis_max_speed                             10000            # mm/min

# Stepper module pins ( 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
alpha_en_pin                                 0.4              # Pin for alpha enable pin
alpha_current                                1.7              # X stepper motor current
alpha_max_rate                               16000            # mm/min
alpha_acceleration                           500             # mm/sec²

beta_step_pin                                2.1              # Pin for beta stepper step signal
beta_dir_pin                                 0.11 !           # Pin for beta stepper direction
beta_en_pin                                  0.10             # Pin for beta enable
beta_current                                 0.6              # Y stepper motor current
beta_max_rate                                16000            # mm/min
beta_acceleration                            500             # mm/sec²

gamma_step_pin                               2.2              # Pin for gamma stepper step signal
gamma_dir_pin                                0.20!            # Pin for gamma stepper direction
gamma_en_pin                                 0.19             # Pin for gamma enable
gamma_current                                0.6              # Z stepper motor current
gamma_max_rate                               24000.0          # mm/min
gamma_acceleration                           1000             # mm/sec²

Also, images as requested by Pete are attached.

This is covered in that link I sent you:

In our stock config file, per axis acceleration values are defined. Can you try with very low values as a different test to see if it will respect them? For example, set acceleration to 2500 as we ship it, and set the alpha_acceleration to 500. You will notice when you try to jog just in X, if that accel value is being respected.

Do you observe the physical slow down in motion upon doing this?

Also, get these values way down, like 10x less.

default_feed_rate 60000
default_seek_rate 24000

Hi Ray,

thank you for taking the time to think on this case. It might be due to the fact that I’m no fluent english speaker, but what I really wanted to ask is the following:

acceleration = 1000
alpha_acceleration = 2000
beta_acceleration = 500

If I start a cut, what value will be chosen?
something like
if ($acceleration > $beta_acceleration) actual_acceleration_for_beta = $acceleration
if ($acceleration <= $beta_acceleration) actual_acceleration_for_beta = $beta_acceleration

how and when does the firmware decide to use either of those values for its actual movement?


Besides this, when I took beta_acceleration under ±500 (as a test, I did 200), the cut line dims to zero (as in, corners are not even scored / marked, simply no visible burn). This might be due to the cocktail of having junction_deviation on 0.001 as well.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.