1400mm/s² acceleration is for print moves. i print all lines with 80mm/s
6000mm/s² acceleration is for travel moves, 400mm/s velocity is also only for travel moves
i use my macro for “detecting” travel moves and change the acceleration settings for that travel move, then switch back to printer settings acceleration ( 1400mm/s² ) if the next task is a print move
with these acceleration / velocity settings, it prints pretty good so far:
Nice prints indeed. but …
A printer with this price tag and build quality (at least judging from the pics), I would slot in somewhere in the range of 20k accel.
Note that:
Acceleration contributes to print time much more than velocity
High velocities rather lead to issues with the extrusion system, since you will not push enough filament through the nozzle (unless you use something like Volcano or CHT nozzles)
With your 256 native microstepping you are putting undue strain on your system. This likely is shown in your first graph with the high buffer saturation. This resolution will give you no benefit unless maybe a bit in stepper noise. I’d not go higher than 128 (Resolution of 0.00078125 mm)
System load for a 4 core CPU like the RPi 3 is not an issue according to your graph. This can go as high as 400%
With such a high potential acceleration (at least in my opinion) you should work on the resonance. 3hump_ei at 40 Hz is really bad and unworthy for such a printer. Will also lead to extreme smoothing even at low accelerations. Makes no sense to print at 256 microstepping with a theoretical resolution of 0.000390625 mm and have it all smoothed away (but would not make sense in any other case as well)
actually im playing around to find the perfect settings.i know that 3hump is really bad, but with these setting i can actually get rid of such surface print artefacts:
if i go higher with the print acceleration, i get more ghosting / ringing.
1400 is fine for me for printing, and travel moves have already a really fast acceleration.
actually, unfortenatelly i need the 3hump_ei to get rid of print artefacts on the surface but im testing further to get rid of the artefacts - actually im testing the tmc5160 with fullstep ( chm1 ) instead of the tmc2209 and i seems the surface artefacts are tmc2209 related.
if the surface artefacts are gone with the tmc5160 the next step would be to go back to the suggested input shaper values with damping ratio of 0.1 or 0.125
Most likely you are creating more steps than your board can cope with. This is caused by the extreme microstepping setting combined with 0.9 steppers.
If and when this error will hit you is of course depending on what you print. Long straight lines will only cause a few steps (especially on 45° angles where only one stepper is active or a CoreXY), fine details a lot of steps
As far as I’m aware, no. It just provides hints where to search.
Well, OK, if the graph would show 400% to 500% CPU load on a 4 core CPU things are pretty clear. But even then you do not know which process was causing it.
A “rescheduled timer in the past” error indicates the micro-controller become overloaded. Host buffers would not result in that kind of error (and your host buffers actually look okay - the single spike is likely due to a “one off” event).
The bandwidth is also not an indicator of a problem here - the graphs use a simple heuristic that assumes one is using 250000 baud serial - you are using USB which has 10+ times the capacity.
It seems something went awry in the micro-controller - possibly too high a step rate - although the rate at the time of the failure (350 clock ticks between steps with two steppers running) is not particularly high. Unfortunately the log doesn’t seem to provide an indication of the root cause of the issue.
No one has yet published step rate benchmarks (nor command benchmarks) for the stm32h7 mcus. If you have time and are technically inclined, it may be helpful to run those benchmarks to see how they compare to the step rate you had during the fault. The benchmarks are described at Benchmarks - Klipper documentation
Otherwise, you could try reducing the microstep rate and/or try to see if the issue reproduces (to gather more logs that may indicate the root cause).
Thanks. Alas, I’m not understanding the information in your previous post. To gather the benchmarks, I need to know the mcu model, the mcu configuration sequence, the gcc version (run arm-none-eabi-gcc --version), the software version (run git describe --tags --dirty), and the smallest value you were able to successfully set TICKS to for the 1 stepper case and for the 3 stepper case.
It does explain the issue you are having though. Your board can’t keep up with the requested step rate.
Your benchmark indicates that you can drive 3 steppers at a minimum interval of 570. That is basically equivalent to a minimum interval of 380 with two steppers. During the failure, there were two steppers running at an interval as low as 347. That overloaded the mcu.
It is odd that the stm32h7 board is slower than an stm32f4 board. I’m not sure why that would be. I didn’t develop the stm32h7 code; I’ll try to ping the authors.
In any case, you’ll need to use a slower maximum velocity or reduce microsteps.
Cheers,
-Kevin
EDIT: Just to word the above a little differently, at the failure your board was requested to step at a rate as high as 2305K steps/s, which is higher than your multi-stepper benchmark rate of 2105K steps/s.
Thanks. What are the benchmarks if just the cache is enabled and no other changes?
Just 42 ticks per stepper is troublesome as that is only 105ns for time between steps - which is very close to the minimum supported by the trinamic drivers (~103ns). It may be necessary to force Klipper to implement explicit stepper timing checks on the stm32h7 (which will reduce the total steps per second but avoid lost steps between mcu and driver).
As indicated by Jake, various Klipper code assumes a 32-bit counter will not overflow within 10s, which would not be true with a 480Mhz mcu.
-Kevin
EDIT: if you want to test with explicit Klipper step timing (slower but potentially safer) it is the following change (rerun make menuconfig, make, and make flash to apply):