FullControlXYZ / fullcontrol

Python version of FullControl for toolpath design (and more) - the readme below is best source of information
GNU General Public License v3.0
649 stars 74 forks source link

[PROBLEM] Extrusion problem #83

Open Timothee-Leblond opened 5 months ago

Timothee-Leblond commented 5 months ago

What are you trying to do? I'm trying to print biomaterials and I'm trying to fix my extrusion parameters.

What have you done so far? I'm trying to print a simple geometry (grid pattern) using square waves to set up my extrusion parameters. However, I've noticed that the printer extrudes as much material on small portions as on large ones, which totally distorts the print and overextrudes. According to the code (attached), the E value increases gradually from point to point, without taking into account the distance between each point.

What is your question How can I fix this?

Capture d’écran 2024-04-24 à 16 11 02
fullcontrol-xyz commented 5 months ago

This is absolute extrusion. The E value for each point is the old E value plus the extra E for the new line. Check out M82 and M83 commands (Google them).

If you're using M82 the GCode looks good.

Overextrusion on the small sections is common. The printer comes to a stop at each corner, but material still comes out of the nozzle. So you get over-extrusion at corners. And for short lines, the printer doesn't have time to reach full speed, so you get over-extrusion on them too. It may just be a limit of the printer and/or material. Try printing a big spiral with gaps between each line and see if you get consistent extrusion cos there are no corners. Check the tutorial notebook about geometry if you haven't used the spiral function before.

Timothee-Leblond commented 5 months ago

I'm definitely using the M82 command. The Gcode is looking good overall. Isn't it a way to compensate that overextrusion on the small sections? Otherwise making grids is impossible?

AndyGlx commented 5 months ago

It's a common challenge for materials that ooze/flow after printing. There's no easy fix. You can try retracting a little bit, or setting no extrusion for the short end lines. But I doubt that will work. One way to improve it is to replace the square ends with round ends like this (to allow the nozzle to maintain constant speed better):

image

Timothee-Leblond commented 5 months ago

Very good idea. Does a "roundwave" exist?

fullcontrol-xyz commented 5 months ago

Not quite but you can do it by either adding all the points of the arc based on the centre_point of the arc being the fc.midpoint() of the two end points, of maybe simpler, create a new rounded_wave function that does point, point, arc, point, point, arc then repeats those points and arcs with fc.move() for however many periods are required.

Alternatively, the is a function in fullcontrol lab called loop_between_lines which is created for this purpose. You'd give it the line up and the line down as parameters and then do that again for every pair of lines. It's shown in the lab_geometry tutorial notebook and is also detailed here: https://github.com/FullControlXYZ/fullcontrol/blob/master/lab/fullcontrol/geometry/loop_between_lines.py

You could do that very concisely in a single line of code with python list comprehension to change your squarewave into a loopy wave.

Timothee-Leblond commented 4 months ago

Quick update on my problem. After including the loop_between_lines function to my grid pattern, I still have the same problem of "over extrusion" as we can see on the video. It is also pretty clear when you look at the gcode - for each point of the arc it extrudes the same amount when is quite problematic. Reducing the amount of points in the arc kinda reduce the problem. But even with a 3 points arc, it extrudes 3 times more materials than the long line portions... How can I solve this? It shouldn't be complicated to set up since the geometry is quite simple, but I'm still stuck on it...

Capture d’écran 2024-05-09 à 11 42 57

https://github.com/FullControlXYZ/fullcontrol/assets/100682983/df46d4e6-f7e0-4ba6-bb5e-3c7c88e798b7

fullcontrol-xyz commented 4 months ago

I think you have set it to print with absolute extrusion (M82). So, the long line extrudes 0.7 and all the little one gradually increase E by a v small amount 0.04198

This seems perfectly fine. E is just gradually increased by an amount proportional to the length of each line. I couldn't tell what the video was showing

ES-Alexander commented 3 months ago

Does a "roundwave" exist?

I know this is from a while ago, but just so relevant things are nicely linked together, there's some discussion about rounded square-waves (with example code) in #34 :-)