What controls the maximum speed?

Machine: Scratch built

Board: LaserBoard

Firmware: Smoothie as shipped

Question: What controls the maximum speed for G0 moves?

I’ve got the X and Y axis of my build working. I have a 1305mm x 760mm bed and have the motors and homing all operating correctly. I want to determine the maximum speed I can move at but seem to be hitting some kind of limit (around 400mm/sec by timing with a stopwatch). In Lightburn the speed maxes at 1000 mm/sec in the Move tab so I upped the speeds in the config file to 60000 mm/min which should theoretically allow me to test up to the Lightburn limit of 1000 mm/sec. I’m issuing a G0 command in the console without a feed rate to test.

What I’m unsure about is how motor current might limit things. I’m using NEMA 17 motors (84oz/in / 2.0A / 27V) with external stepper drivers set at 1.5A, and I have the current in the config file also set at 1.5, although I don’t know if this has any bearing when using external drivers.

I’m not particularly unhappy with the speed, just trying to understand what limit I’m hitting. If it’s not in the config or the current settings then what about the actual mechanics of the build? Would the speed reach a mechanical limit without manifesting itself as a movement issue, (e.g. juddering, grinding, skipping steps, etc)? It moves quite smoothly, just not at the speed I expect and I’m worried that if it doesn’t move at the speed I have programmed for a job then it’s not going to give me the desired results.

I only just completed the Y-axis tonight so I’m going to do more thorough testing tomorrow. Any suggestions would be appreciated!

There are a couple factors here limiting jog rate: the stepper motor’s ability to commutate at a high rate of rotational velocity, the stepper drive’s ability to quickly respond to commands, and the controller’s ability to issue commands to the stepper driver.

The stepper motor commutation is largely a physics discussion and has a lot to do with the weight of what it’s moving, the particular motor’s torque/speed curve, and the microstep setting on the driver. There’s a sweet spot for each motor.

As far as stepper drivers go, the analog ones tend to fall over long before the DSP-controlled ones, and all of them will fall over sooner the higher you go with microstep resolution. Again, there’s going to be a motor relationship here too - you want fewer microsteps for a 0.9° motor than you do for a 1.8° motor, for instance. As motor load increases, you (generally) want fewer microsteps (and a lower acceleration value).

But, the big one here is the controller. You’ll find that a Smoothie-based controller will likely be your bottleneck here. Don’t take that as a criticism of Smoothie - it’s very good at what it does, but it’s also a complicated piece of software running many thousands of calculations per second ensuring your movement is as smooth and accurate as possible (hence the name). There’s an upper bound of how many steps it can process per second and you may be hitting that despite commanding the machine to go faster.

It’s my understanding (and this may be wrong, so buyer beware) that Smoothie inherently knows its limits (based on the processor speed and tuning in the config file) and will adjust/scale job parameters that are outside its capable bounds. I don’t know if it’s possible to get those limits out of Smoothie.

That said, with a 130W machine I’m sure you want to get it going as fast as possible to both make jobs complete faster and to have better control over your raster scanning relative power levels.

Thanks for the reply. Gives me plenty to think about. You responded on my acceleration question thread as well, and I’m thinking that the one thing I haven’t played with is the micro-stepping. I currently have it set at 32 which may be too much for the NEMA 17 motors which are probably a little undersized for the size of machine I’ve built. I’ve already experienced what happened with too much acceleration, (too much deceleration and machine couldn’t come to a stop in time), so I’m going to do more testing tomorrow with micro-stepping and current limits.

Generally it’s running well, so if I don’t get any improvement it won’t be a problem. It’s interesting that Smoothie may be adjusting upper limits. That would explain why you can just keep increasing values and see no difference. Nuggets of information like that make the job a lot easier so that I don’t waste too much time trying to achieve the unachievable. :smiley:

It is very important to make a distinction between:

  • How fast the board can actually make pulses to drive the motors
  • How fast the stepper drivers can actually move the motors
  • How fast the board can actually handle image engraving data which is much more dense than simple vector cut moves.

That is the order of decreasing max speed possible.

How fast the board can actually make pulses to drive the motors

This is the output of the microcontroller driving some extreme stepper motors with driver.

How fast the stepper drivers can actually move the motors

Jim does a lot of testing for me, this was with the first LaserBoard Prototype and built in stepper drivers:

How fast the board can actually handle image engraving data which is much more dense than simple vector cut moves.

The actual limits of that are explained here:

And because a response is not complete without a cheeky component… :slight_smile:

What controls the maximum speed?


Actually the last answer is not at all cheeky. My setup is currently limited by physics - it’s a prototype and not particularly rigid. I found that while I can move individual axes at 600mm/sec without issue, the machine complains if I go diagonally corner to corner at this speed. Dial it down to 400mm/sec and it runs nice and smooth.

Having said that I expect the final working version to be a more solid machine and hope to once again run some stress tests. Since I’m only running single G0 code lines to determine maximum speed the engraving data volume won’t come in to my experiments, (at least not until I start engraving!) The first two points are definitely what I need to check. First off since I don’t need 32 micro-stepping I’m going to drop down to 16, which should theoretically (physics and motor/driver limits aside) give me twice the speed if I’m hitting limits in pulse generation from the LaserBoard. If I can get my 600mm/sec up to 800mm/sec I’ll be more than happy, (I’m happy now at 600). If I can get a more rigid machine and get diagonal moves up to 600mm/sec I might even do a little dance, (but not on video).

My goal is to find an absolute upper limit for my machine and then dial it back to a safe working limit. I think the biggest limiting factor will actually be the physics of my design, followed by the undersized motors. Since this is my first attempt at building my own machine I’m using it as a guide for building the next one by observing the areas that need improvement and going back to the drawing board.

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