A Software Solution to Eliminate Ringing?
-
@DigitalVision Sure the belt lengths are like this:
It's a 50 mm edge length on that print
X axis "best case"
Short length: 166 mm to 216 mm
Long length: 970 mm to 920 mmX axis "worst case"
Short length: 366 mm to 416 mm
Long length: 770 mm to 720 mmY axis numbers are similar.
-
@bot said in A Software Solution to Eliminate Ringing?:
Short length: 166 mm to 216 mm
Long length: 970 mm to 920 mm
X axis "worst case"
Short length: 366 mm to 416 mm
Long length: 770 mm to 720 mmCool. Your "best" case should have up to 75 % higher spring constant than the worst side (very dependent on which side of the print was at the most extreme point). If your belts dominate ringing, this should translate into ~32% higher ringing frequency, so the good side ringing period should be as little as ~3/4 of the worse side (with the stepper motor and other serial springs the difference will be slightly smaller though). That seems possible from your photo.
I don't know what that secondary ringing at around 2/3s of the print is though. That far too early to be at the deceleration ramp but also too late to be a late residual from the earlier corner.
-
@DigitalVision I think it's best not to look to deeply into my tests. I didn't isolate the Y axis as you mentioned, and my Y axis is insanely stupid to begin with (there is a longer "short side" on the primary drive than at any point of the secondary drive belt. I don't know what I was thinking at the time). I have plans to change it to be "the same" as the X axis, just with more weight to move around. Then I will perform more tests.
All I wanted to do was confirm or deny the idea that the ringing was variable (in frequency) depending on where it was printed. I feel like I confirmed that and your theories all seem to line up.
So, given all that, would using your method be as simple as determining the different frequencies at different parts of the axes, and cancelling as required based on position?
-
@bot said in A Software Solution to Eliminate Ringing?:
So, given all that, would using your method be as simple as determining the different frequencies at different parts of the axes, and cancelling as required based on position?
Yes, in theory at least. For a cartesian all you would need is to determine the frequencies at two different positions per axis and provide the positive and negative belt lengths at a known location. One could probably create a nice script to automatically generate the right structures to print at the known locations. I found it most easy and consistent to spot the acceleration ringing (where the extrusion width oscillates), and especially when printing in a semi-translucent material. Here's a photo on silver filament which is very hard to capture on photo showing the phase inversion in the ringing pattern as the f_n parameter was varied across the print z. If you get it right, there is a rather sharp region without ringing that's fairly easy to spot and measure:
-
@DigitalVision The results are truly fantastic.
Do you think it would be easier or harder to determine the "positional frequency" on a corexy machine? A delta?
-
This post is deleted! -
@bot a CoreXY has a more complex model, but it seems to be enough to measure 3 points per axis instead of 2. I haven't yet started to work on a position dependence model for a delta yet – and I still need to get some time to implement and test the CoreXY one. The delta geometry is more symmetric, so it may be easier to calibrate – unless the wire bundle ends up messing up things. I did get great results in the center of bed though, and I haven't yet tested how they vary with position.
-
Another approach that should be very straightforward for calibrating the ringing dynamic would be to attach a cheap MEMS accelerometer to the print head and log samples at different locations. Accelerometers with up to 8kHz sampling rates are less than $1 each in volume. Determining the ringing frequency should be trivial and very accurate.
A more crazy idea: You could easily build a closed loop system with an IMU. The filter lag in an accelerometer can be as low as 1 ms, and with say 1kHz sampling we’d be well within reasonable latencies. So you could simply measure the x,y,z acceleration in real-time and compare to the desired acceleration - and apply a motion compensation signal (using the spring model) to correct for any deviation.
-
@DigitalVision klipper's input shaper implementation uses an ADXL accelerometer to measure vibrations and and configure the input shaper.
-
@bot said in A Software Solution to Eliminate Ringing?:
@dc42 In my experience, it's easy to avoid the low-frequency ringing by choosing sensible acceleration/jerk/speed settings. It's the high-frequency ringing that is nearly impossible to be rid of. No matter how low of a jerk and accel/speed value I use, there is always a tiny amount of HF ringing.
That's exactly opposite to my experience. I find low frequency ringing to be a problem at any sensible acceleration. I would need to use really low acceleration to avoid it, which would slow the prints down too much.
-
@dc42 said in A Software Solution to Eliminate Ringing?:
@bot said in A Software Solution to Eliminate Ringing?:
@dc42 In my experience, it's easy to avoid the low-frequency ringing by choosing sensible acceleration/jerk/speed settings. It's the high-frequency ringing that is nearly impossible to be rid of. No matter how low of a jerk and accel/speed value I use, there is always a tiny amount of HF ringing.
That's exactly opposite to my experience. I find low frequency ringing to be a problem at any sensible acceleration. I would need to use really low acceleration to avoid it, which would slow the prints down too much.
Interesting. I have a somewhat different setup than most: there is a lot of mass to be moved by most of my axes. What printer are you thinking of when you say you experience the opposite? All printers you've used? Do they all tend to be lightweight?
It's entirely possible that the low-frequency ringing on my printer is of such low-frequency that it is hard to see it. As mass increases in a system, the resonant frequency decreases, right?
Edit: When I think about it, the low-frequency ringing I experience shows up at high print speeds, maybe regardless of how low I have the acceleration. How fast are you printing, normally, dc42? I've settled on quite low perimeter print speeds, so I don't see or notice any ringing in my prints.
-
Just registered to say thanks for your work @DigitalVision, it's like magic!
My custom CoreXY-Toolchanger has quite a heavy gantry and would benefit a lot from something like that, because if I want to print ringingless, I have to slow down quite a lot.
If you want me to test something in particular, just drop me a line. -
Any updates on this?
-
See the threads on accelerometers and input shaping.
-
@dc42 said in A Software Solution to Eliminate Ringing?:
See the threads on accelerometers and input shaping.
I just went ahead and ordered the recommended Adafruit accelerometer. Any time estimate on a first pass at input shaping?
-
@ccs86 said in A Software Solution to Eliminate Ringing?:
@dc42 said in A Software Solution to Eliminate Ringing?:
See the threads on accelerometers and input shaping.
I just went ahead and ordered the recommended Adafruit accelerometer. Any time estimate on a first pass at input shaping?
I have some preliminary results, see https://forum.duet3d.com/topic/22296/input-shapers-2hump_ei-3hump_ei-auto-tuning/17?_=1619123752409.