Duet maximum achievable step rates
-
@dc42 I documented it in my blog years ago. When I get chance, I'll post a link which includes the maths and spread sheets.
In a nutshell, if one or more filaments are moving forward as single digit percentages of the whole, at 400 steps per mm (Bondtech or Titan 3:1) for short segments, that can result in an extruder move which is in the order of 1 tenth (IIRC) of a micro step.
So even with carry over of fractions, one would have a series of moves with no extrusion, followed by one move with around 5 times too much.
If you use a 5 input hot end and happened to be using single digit percentages of mixing on 4 if those inputs, the overall under/over extrusion amount can be a significant proportion of the whole.
I did a later blog post, accompanied by a video which clearly showed the improvement that 128x micro stepping gives under those conditions (and that was with carry over of the fractions due to rounding).
-
Thanks Ian, I'll accept your word that it does make a difference. I am surprised though, because my expectation was that stiction in the extruder mechanism, gearing and Bowden tube would cause the filament to move in small jerks rather than continuously.
-
Another thought was, the 6HC and 3HC boards run firmware separately, linked by CAN. A kind of a server farm. Communication through CAN becomes a bottleneck for high step rates. By implementing a common RTC (to sync the boards without the need to communicate it by CAN), it would be possible to use lower interrupt times and higher step rates to dedicated boards, decoupling the timers of the boards. E.g. sending one board compressed instructions how to generate signals for mixed extrusion. 3HC could make the movements and 6HC at high step rates produce the extrusions. Maybe something to think about for RRF4+.
-
@dc42, @JoergS5, @engikeneer Here is a link to the blog post I did back in June 2018.
https://somei3deas.wordpress.com/2018/06/08/why-16x-micro-stepping-is-a-bad-idea-with-mixing-hot-end/To save you reading the entire thing and pouring over the data, here is an extract from my conclusions quote .....
"..............to summarise the spread sheet data, using anything up to 5% mixing ratio at 16x micro-stepping will result in no movement from that extruder. The net result would 10% under extrusion (for a small segment of length 0.5mm) using a 3 input mixing hot end because two extruders wouldn’t move. For a 5 input mixing hot end, 4 of the extruders would remain stationary so the error would be a whopping 20%."
At that time, carry over of fractions didn't happen so the overall effect would be under extrusion. Now that carry over of fractions is applied, that effect is mitigated to some degree. There are many "bad case" scenarios but taking the example shown, potentially one could end up with 20% under extrusion on one segment, followed by 20% over extrusion on the next. Admittedly, by the time those filament moves have gone through the hot end, there would be some mechanical damping effect which would serve to even out the overall flow rate at the nozzle tip. But this rapid segment to segment variation in extruder amount seems to play havoc with pressure advance.
Another bad case scenario is where the extruder amount is 1/10th of a micro step. This can happen with mixing ratios of 2% or less. Taking a 5 input mixing hot end at 92:02:02:02:02 (admittedly that's an unlikely setting) one could end up with 92% overall extrusion for 5 moves (because 4 extruders would be 1 tenth of a micro step), followed by a jump to circa 120% for the next step, followed by another 5 moves at 92% overall extrusion amount (edit, that's assuming step sizes 0.5> are rounded up to one whole step. If it's only fractions that get carried over, then there would be 9 moves at 92% followed by a single move at something much higher).
-
@deckingman thanks for your link, I understand that the main problem is the rounding to/from integer values. I know a similar problem to/from motor positions of the steppers for calculations of rotary actuators. The error can be diminished by finer steps, but the error remains, it's imho a fundamental mathematical problem (loosing information by rounding values / quantization to integer values).
-
@JoergS5 said in Duet maximum achievable step rates:
................. it's imho a fundamental mathematical problem (loosing information by rounding values).
Yes that pretty much sums it up. It's only problem with mixing hot ends where individual extruders can be required to make single digit percentages of what would otherwise be considered "normal" moves. I guess a similar problem might be encountered if one used a very small diameter nozzle and very low layer heights, but in such a case, I would use a highly geared extruder (say 10:1 or more).
-
@deckingman said in Duet maximum achievable step rates:
When I get chance, I'll post a link which includes the maths and spread sheets.
Now that would be
Did you ever have a chance (I had none so far, have to save money for it) to try the new(er)/ish Dyze-Design DyzeXtruder Pro (which has those new gear-tooth) with it´s 5.65:1 reduction-ratio (maybe attached to a 0.9° stepper) -> Or long question short: Have you ever made side-by-side comparisons of different reductions of "up to date" extruders?
-
@LB said in Duet maximum achievable step rates:
@deckingman said in Duet maximum achievable step rates:
When I get chance, I'll post a link which includes the maths and spread sheets.
Now that would be
Did you ever have a chance (I had none so far, have to save money for it) to try the new(er)/ish Dyze-Design DyzeXtruder Pro (which has those new gear-tooth) with it´s 5.65:1 reduction-ratio -> Or long question short: Have you ever made side-by-side comparisons of different reductions of "up to date" extruders?
Scroll up 3 posts to the one dated 23rd Feb
Ref the extruder - no, TBH, I'm happy enough with 6 BMGs that I already have (and now that I only have my pension - I don't have much cash to splash around).
-
@JoergS5 said in Duet maximum achievable step rates:
I understand that the main problem is the rounding to/from integer values
The rounding can be done when sending each command (micro step) to the servo but internally the software can have a much finer resolution such that the rounding error does not accumulate.
Anyway, optimizing/prioritizing the hardware/software design for one niche use case like this proportional color mixing can make it sub optimal for the rest of the users.
Scoping a product sometimes requires a tough decision making process.
-
@zapta said in Duet maximum achievable step rates:
........................ Anyway, optimizing/prioritizing the hardware/software design for one niche use case like this proportional color mixing can make it sub optimal for the rest of the users. ..................
Woah, hold on a minute. Are you seriously suggesting that increasing the maximum step pulse frequency is a), only beneficial to users of mixing hot ends, and b) a sub optimal thing to do for all other users?
Setting aside the other use cases for higher micro-stepping such as users with very small nozzle and/or layers heights or users with 0.9 degree motors or more recently 0.45 degree motors, possibly in conjunction with fine lead screws, how can having a lower maximum step pulse frequency be beneficial (or "more optimal") for other users?
-
@deckingman said in Duet maximum achievable step rates:
how can having a lower maximum step pulse frequency be beneficial (or "more optimal") for other users?
@deckingman, here are two examples
-
Freeing significant developer's time/attention to features that benefit most users.
-
Reducing the need for more expensive hardware.
Nothing is free, including higher pulse rate.
It's Duet3d's role to scope their products but we need to understand that every scoping decisions is a compromise.
"Perfect is the enemy of good".
-
-
@zapta said in Duet maximum achievable step rates:
@deckingman, here are two examples
-
Freeing significant developer's time/attention to features that benefit most users.
-
Reducing the need for more expensive hardware.
Nothing is free, including higher pulse rate.
Actually, there are alternatives to Duet which offer much higher step rates and which are free. I can provide a link but fear that I might fall fowl of forum rules by linking to what might be seen as competitors.
-
-
@deckingman said in Duet maximum achievable step rates:
I can provide a link but fear that I might fall fowl of forum rules by linking to what might be seen as competitors.
I think he means Klipper
-
@zapta I would say that we're always trying to maximize the step rate that the hardware is capable of providing.
-
@Phaedrux Actually this is more explicit. - https://www.klipper3d.org/Features.html
But lets' not go there - theoretical rates are divorced from what happens in the real world. So I can see how pursuing this line of thought will end (or never end).
-
@Phaedrux said in Duet maximum achievable step rates:
I think he means Klipper
Doesn't Klipper require SBC in addition to a hardware controller such as Duet? IIRC @deckingman expressed in the past concerns about non SBC configurations but I may be wrong.
Anyway, I leave it to the Duet staff to scope their products and to prioritize their work.
-
@zapta said in Duet maximum achievable step rates:
Anyway, optimizing/prioritizing the hardware/software design for one niche use case like this proportional color mixing can make it sub optimal for the rest of the users.
Scoping a product sometimes requires a tough decision making process.
RRF used to have an excellent pulse rate, but there were regressions somewhere in RRF2 and RRF3 didn't make it any better. Happily, Duet3D has spent the time to correct the situation. Many would consider it a bug fix, and if my understanding of dc42 is correct, the regressions irritated him on a personal level.
While this might not impact you, personally, it can have impacts for different configurations that are far more common than @deckingman's multi-dimensional mixing hot end.
-
This post is deleted! -
Yep - requires another computer to do the kinematics and generate the timings, then sends just raw step pulse information for the MCU to execute. Klipper doesn't use segmentation to calculate moves, instead opting for an iterative solver that uses the final position to calculate back how to get there.
I run toolboards (not the 1LC, but inspired by) over CAN with klipper - basically using CAN to tunnel serial signal through - and it works great and stays in sync with the rest of the motion system.
Apparently klipper only peaks at like 6kb/s usage max for data transfer, which is well within non-FD capabilities. Most of the issues are actually from limited adapters available that behave correctly with the current hack of tunneling serial thru CAN.
The one thing that klipper focuses on is keeping mutliple MCU's in sync from a master. I don't know the ins and outs of how that's accomplished, but considering that they do it over serial or the even more hacky serial-by-can implementation, I'd think that there's something to be learned there.
Related to main topic - I am genuinely appreciative of the bugfixes bringing back steprate performance. I'll be putting a small machine through its paces, and hope to run back-to-back prints between klipper and RRF on a d3 mini to help 1) Get an idea if there's really a difference in print performance and 2) help find ways to improve RRF's performance, especially with future input shaping adventures.
-
FWIW I've further increased the maximum available step rate post 3.3beta1 on most boards (all except the Maestro, Tool Board and 1XD). I've already put one of the new figures in the step rates spreadsheet. Step rates in 3.3beta1 are already better than in 3.2.2 for the Tool Board and the 1XD. However, some of the increase may be lost when input shaping is fully implemented.