1

Topic: Volcano/Bulldog step rate limitation

This stemmed from a conversation with wardjr, so I might as well post the answer here for everyone's benefit:

wardjr was using a Bulldog XL and experiencing problems extruding at higher speeds with a Volcano.

A Volcano tops out in terms of melt rate at about 45mm^3/sec, best case. With 1.75mm filament, that's a filament feed rate of 18.75mm/sec. With a typical ungeared hobgoblin, 200steps/rev stepper and 1/16 stepping, that's 2705 steps/sec, or 0.84rotations/sec. With a 5:1 reduction, that becomes 13525steps.sec or 4.21rotations/sec. The torque curve of a 42BYGHW609 for example is nearly flat between these speeds. On the PDF below, you're looking at the region from 500pps to 1500pps (note they used a half step driver to make that plot). So, torque isn't an issue.

The worst firmware around for step rate is probably Marlin. Marlin tops out at 10ksteps/sec, which is not enough for the top speed 5:1 ratio. Technically Marlin can go faster but it goes into the weird quad step mode that can cause problems.

https://docs.google.com/viewerng/viewer … sheet1.pdf

Of course, it is also possible that it was just being driven faster than the polymer could be melted. the 45mm^3/sec figure is a best case scenario. The 10kstep/sec limit can be avoided by simply reducing the micro stepping to 1/4 or 1/8, since the Bulldog XL has a 5:! reduction anyway it'll still be better than 1/16 micro stepping ungeared.

As a sidebar, gearing always beats micro stepping for print quality/resolution. The quality potential from 1/16 step to 1/32 step is well documented, and actually a 3:1 gear reduction at 1/16 stepping would be better than a 1:1 reduction at 1/48 stepping due to decreasing incremental torque when microstepping. In contrast, gear reduction actually multiplies available torque rather than decreasing it.

2

Re: Volcano/Bulldog step rate limitation

Excellent information,  thank you for spelling it out so clearly.  When I had the problem I understood the basics of the issue, now I have the science to support my theory.  At the time I did in fact reduce to 1/8 stepping to help solve the problem.  I am fairly certain the Volcano wasn't the issue as I could hear the motor fall flat on its face and see very erratic motion of the drive gear.  As a test I simply removed the filament to eliminate that variable and the BulldogXL did the exact same thing.  Now I realize that I was pushing the speed limits of the extrusion process as we know it and will continue to do so.  It is my belief that new technology and equipment will bring faster printing while maintaining quality is just around the proverbial corner.
It is conversations like this that will spark those new innovations.

Printit Industries Model 8.10 fully enclosed CoreXY, Chamber heat
3-SD3's & a Workbench all fully enclosed, RH-Slic3r Win7pro, E3D V6, Volcano & Cyclops Hot End
SSR/500W AC Heated Glass Bed, Linear bearings on SS rods. Direct Drive Y-axis, BulldogXL
Thanks to all for your contributions

3 (edited by jagowilson 2016-04-08 17:35:09)

Re: Volcano/Bulldog step rate limitation

Is the step limit in Marlin a limitation of the clock speed of the microcontroller? If not, how could it be improved? I've been pouring through their code quite a bit lately making some software to communicate with a printer directly for a research project at my university, so just curious. On a Rumba using the ATmega16U2, the maximum clock speed is 16 MHz, so depending on code efficiency and the distribution of operations per tick of the Marlin main loop, it's probably possible for them to go faster. It's hard to quantify it and do the math because one line of code is not executed in one clock tick, it typically takes several depending on the efficiency of the pipeline, and these small microcontrollers don't typically have an efficient pipeline. That's quite different from say an i5 which not only has interleaving pipelines but can also predict the next instruction with high accuracy in the hardware.

Also your link produces a 404.

4

Re: Volcano/Bulldog step rate limitation

Marlin is not very good firmware, to be honest. It has had features hacked in on what was meant to be a experimental basis, often times using poor coding practices. Those issues generally are not the cause of this particular limitation, though.

The interrupt handler that creates the pulses cannot be run much faster than 10khz. The interrupt handler can generate 1, 2, 3, or 4 steps per axis each time it is run, but if you start generating more than 1 step per interrupt, then the period between steps is unequal since you are getting 2, 3, or 4 really close together, than a pause, then 2/3/4 again.

It may be possible to further optimize the stepper handler, but I doubt there's much to be gained or it would have been taken care of by now. I haven't looked into it much myself.

Some helpful reading:

http://reprap.org/wiki/Step_rates
https://github.com/MarlinFirmware/Marli … tepper.cpp

Link fixed in OP.

5 (edited by jagowilson 2016-04-08 17:45:59)

Re: Volcano/Bulldog step rate limitation

Thanks, makes sense. Yeah, needless to say after reading many hours of Marlin code I am not impressed with it. What's really troubling to me about Marlin overall is the sloppy way they handle USB communication. Not sure if you've ever looked at that loop, but it's extremely error prone and unfriendly. Part of the issue is the lack of flow control over serial, but the bigger problem is using ASCII in the first place. Repetier Firmware has a much smoother binary communication protocol so I'm probably going to end up using that for my research work.

But yeah, my gripes with Marlin is no small list.

6 (edited by jagowilson 2016-04-11 18:06:56)

Re: Volcano/Bulldog step rate limitation

Follow-up on this. Are you sure it is 10kHZ? This isn't really important for any reason, but it's driving me absolutely bonkers.

So let's say the step rate is 10,000 steps per second, and the steps per mm is 88. This would be the conditions for a stock Solidoodle running MXL belts on a 1.8 degree stepper at 1/16 microstepping. Given this, we can find the maximum millimeters per second via 10,000 steps/sec * 1 mm/88 steps =~ 113 millimeters per second. This isn't the correct answer; at a minimum I am capable of 150mm/s travel, but can actually get to 200mm/s and above. I haven't been able to drive it fast enough to cause any anomalies, so finding the breaking point isn't a way for me to find the actual value.

To achieve these speeds I'm seeing is it using quad stepping mode?

EDIT: Nevermind, I see the solution in Marlin/stepper.cpp, lines 538 to 548. It essentially skips every other step if above 10kHz, and skips steps 0-3 but keeps 4 if step rate is above 20kHz.

Essentially the reason I wanted to know is because this is telling me my retractions are too fast. I should probably stick to within the 10kHz step limit for these. Currently  using a hobb goblin at 285 steps per mm and 100mm/s retraction, which is 28.5kHz. Should probably back down to around 35mm/s retraction, which would be approximately 10kHz (9975 Hz).

7

Re: Volcano/Bulldog step rate limitation

From everything I've read it is limited to 10khz if you want the steps to have uniform periods. If commanded faster than that, you get 2 steps in quick succession, then a pause, then 2 steps in quick succession, etc. The length of the "pause" determine the frequency, but the time between pulses is therefore not uniform and can cause strange things depending on the system dynamics.

Note that I have not experimentally verified the above, just what I have ascertained by reading the code and talking with other developers/users.

8 (edited by jagowilson 2016-04-11 20:35:29)

Re: Volcano/Bulldog step rate limitation

Your assumptions seem right to me. thanks for making this thread, I actually leaned quite a bit trying to understand this. If you break down the math at the print speeds I typically use (> 100mm/s), Marlin is actually already overloaded (> 10kHz) and skipping every other clock tick. I can only imagine this has negative impacts on precision. Really need to upgrade to a Smoothieboard, or another board that can genuinely produce the steps.

The maximum speed I can use before Marlin starts skipping on the clock is 10000/88 =~ 114 mm/s.

9

Re: Volcano/Bulldog step rate limitation

Depending on the print and your acceleration values, it is probably rare that you get over 114mm/s even if you've commanded higher.

Duet and Smoothieboard are the two frontrunners in the 32-bit arena.

10

Re: Volcano/Bulldog step rate limitation

Decided to check it out on the RepRap calculator just out of curiosity. http://prusaprinters.org/calculator/ Now unfortunately this calculator doesn't include jerk, not sure how much that will influence the graphing.

My travel speed of 300 mm/s yields ~25mm before maximum speed is reached.
http://soliforum.com/i/?8vziqQy.png

My lowest printing speed of 100mm/s yields a fairly short distance before speed is reached, about 2.5mm
http://soliforum.com/i/?kuh8I8a.png

11

Re: Volcano/Bulldog step rate limitation

2000mm/s^2 is fairly aggressive acceleration, that's double the defaults. Note also that the distance required to reach that top speed is half of the distance required to achieve it in practice, since the axis has to decelerate as well. Then of course jerk only serves to be a further limitation, so the plot above is best case scenario (unlimited jerk).

If you're printing boxes, it is reasonable to achieve top speed. If it is a more organic geometry, say something like a stretchy bracelet, it is unreasonable to expect 114mm/sec.

12

Re: Volcano/Bulldog step rate limitation

Definitely aggressive wink the Solidoodle is so flimsy it can barely keep up