Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Advance algorithm for extruder hysteresis #1

Open
machinekoder opened this issue Aug 5, 2015 · 5 comments
Open

Advance algorithm for extruder hysteresis #1

machinekoder opened this issue Aug 5, 2015 · 5 comments

Comments

@machinekoder
Copy link
Owner

Altough velocity extrusion is used to drive FFF 3D printers with Machinekit there is currently no real adavnce algorythm implemented.

A possible approach could be based on using the delayline component in combination with a advance component where one could change the parameters.

See also related issues of other firmwares:
Marlin: Smoothieware/Smoothieware#645
Smothieware: MarlinFirmware/Marlin#1600

@luminize
Copy link

luminize commented Aug 5, 2015

@Strahlex The best way to use delayline component is for creating a "look-ahead". Predicting speed changes. An advance component could for example react on the speed and the speed change and create a position offset. This position offset can come from an arbitrary algorithm. The offset can be added to the commanded position, or when in velocity mode, a ddt component after the offset can be used to influence the current extruder velocity. I like to think in position offsets instead of speed change, because in the end (from start point to end point) the total volume (the total average speed) does is a constant. And also constant nozzle speed means constant extruding speed.
Thus if delayline is used for the look-ahead it's trivial to experiment with different algorithms that need the look-ahead.

@machinekoder
Copy link
Owner Author

@luminize That's basically what you started to work on this branch if I understand correctly: https://github.com/luminize/machinekit/blob/7eaae56450cb9d2046f3a40375d707ff0d0b9d26/configs/ARM/BeagleBone/BeBoPr%2B%2B/Pepper/vel-extr-3-pepper.hal#L421

How far should we look into the future? I see you used 5 samples for the extruder and 20 for the joints.

@luminize
Copy link

luminize commented Aug 6, 2015

I experimented with delaying the motion (which gives extruder look-ahead), but also delaying the extruder wrt the motion (which resulted to nothing). Only delaying the extruder velocity (without adjusting the filament offset), which is done with lincurve results in just moving the excess (and lack of plastic) around.

taking 0.1 sec I could very clearly see the blob not appearing in a corner, but a thickness at a straight end further on my test part. However, I think that the time it takes for the filament to react could be something like 0.5 seconds. So if I knew how to calculate the offset-per-speed(change) (which I don't) that would be the time I'm aiming for.

I've been thinking a while back that maybe the term "advance" is a bit misleading. my conjecture is that taking a stab at the hysteresis (which is a comparable with, but not the same as backlash) could yield good results. A bit like the lincurve, but than tailored to hysteresis.

@machinekoder
Copy link
Owner Author

@luminize How do you handle the feedback when using the delayline for delaying the position commands? The feedback is delayed too which will result in a following error. Increasing the ferror tolerance is an option, but not a good one.

@luminize
Copy link

The feedback is done before the delayline like here. Because of the stepperdrivers open loop control this should just work https://github.com/luminize/machinekit/blob/7eaae56450cb9d2046f3a40375d707ff0d0b9d26/configs/ARM/BeagleBone/BeBoPr%2B%2B/Pepper/vel-extr-3-pepper.hal#L239-L241

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants