Robot can't reach high speed more then 1m/s

(Rust77_SW) #1

My robot has L=1025mm R=366mm. I need a real speed of 5m/s. It’s normal for industrial robots like ABB, Adept Quattro ets.
Here I have maximum 1m/s ((
In my opinion, the limit is in the program’s algorithm.
Motor Nema 23, external driver.
My config:
arm_solution linear_delta # delta
alpha_steps_per_mm 256 # 125mm/rev *1/2.5(reducer) = 50mm, Pulses/rev = 12800 Steps per mm for alpha stepper = 12800/50 = 256
beta_steps_per_mm 256 # Steps per mm for beta stepper
gamma_steps_per_mm 256 # Steps per mm for gamma stepper
arm_length 1025.0 # this is the length of an arm from hinge to hinge
arm_radius 366.2 # this is the horizontal distance from hinge to hinge
gamma_max 88 # Высота присоски над столом
default_feed_rate 4000 # Default rate ( mm/minute ) for G1/G2/G3 moves
default_seek_rate 4000 # Default rate ( mm/minute ) for G0 moves
acceleration 10000 # Acceleration in mm/second/second.
junction_deviation 0.05 # Similar to the old “max_jerk”, in millimeters,
x_axis_max_speed 300000 # mm/min
y_axis_max_speed 300000 # mm/min
z_axis_max_speed 300000 # mm/min
alpha_max_rate 300000.0 # mm/min
beta_max_rate 300000.0 # mm/min
gamma_max_rate 300000.0 # mm/min
mm_per_arc_segment 0.5 # Arcs are cut into segments ( lines ), this is the length for
delta_segments_per_second 100 # for deltas only same as in Marlin/Delta, set to 0 to disable
microseconds_per_step_pulse 1 # Duration of step pulses to stepper drivers, in microseconds
base_stepping_frequency 100000 # Base frequency for stepping, higher gives smoother movement
acceleration_ticks_per_second 1000 # Number of times per second the speed is updated

I tried to make "delta_segments_per_second " 0. Anyway maximum speed is 60000 mm per minutes
How could increase the speed?

Imported from wikidot


(gavinmetzler_SW) #2

Max pulse rate from Smoothie is 100 000 steps/s (IIRC).

For move of 300 000 mm/min = 5000 mm/sec x 256 steps/mm = 1 280 000 steps/sec

Working forwards, with 256 step/mm and max step rate of 100 000 steps/sec = 390 mm /sec = 23 400mm/min

(I haven’t even taken cosine transform of delta to cartesian, which can require up to 2.5x more steps per mm)

Remember also, minimum pulse length of step pulse from smoothie is ~3us, so even with instant drop to 0, then new rising edge at 3us, max step rate theoretically possible is 333 333 Hz, at 256 steps/mm = 1302 mm/sec. Check your external driver docs too, they usually have a minimum pulse duration for Step input - mine are 1.2us but I’ve see as high as 5us.

Remember also, ABB, Kuka, Fanuc etc use AC servos, not stepper motors, for exactly this reason (well also because the stepper motor itself loses torque as speed increases, so its not just about processing speed)

Just a rough look at your setup, large Linear Delta with incredibly high speeds desired - if this is for pick and place with low accuracy required (like sorting robot for food industry), try to get your gearing higher, so steps/mm is more like 25steps/mm, and drop acceleration to around 2000. Your large motors have good torque at low speed, so you want to keep motor speed low and use gearing to increase robot speed.

Ultimately, I think you need to be looking at AC servos and Mach3 or LinuxCNC to drive it.


(Rust77_SW) #3

Great thanks for the detailed explanation.
I really did not consider the frequency 100 000.
I made a step per mm 32. (16 does not work correctrly)
The speed has risen to 140,000 mm/min.
After 1000 movements at 0.5m, the error was about 0.01mm.
This is acceptable for my pick-up robot on first time)).
Next time I’ll really be designing it with servomotors.


(Arthur Wolf) #4

What stepper driver are you using ? Many high-microstepping drivers have the option to do “extrapolation” where for example you are controlling them at 1/8 microstepping, but they output at 1/256. This generally won’t really cost you precision/accuracy, but allows you to work around the 100khz limitation.

Edit : also your config file is a very old revision, please make sure you upgrade to the very latest config file example ( porting over your old values to the new example file ) and latest firmware, before asking for help, as the documentation requests.


(Rust77_SW) #5

I use LCDA357H driver with Nema 23 3Nm motors.
Now I turned it to 1600 imp/rev
Yes config is really old, but firmware is last version.