text:
How to systematically calibrate all the parameters of variable fan speed?
When a part is thin and the overall layer time decreases below a certain threshold, the plastic has no time to cool down enough to solidify and properly support the next layer, resulting in low print quality. When the layer printing time is higher the issue does not exist, plastic cools down by itself due to the cooler environment.
Slicers also have the option to slow down printing when the layer time decreases below a certain threshold, so that there is more time to cool the part, but this only down to a minimum printing speed.
Assuming a variable fan speed is used, the following parameters play a role:

layer time threshold to turn on the fan at the minimum speed
layer time threshold to set the fan to its maximum speed and to start slowing down print speed
minimum printing speed to be used for layers smaller than the threshold number 2. (below this threshold 3. the layer time starts to decrease again)

Obviously these parameter depend on the enclosure temperature, fan power, print temperature, flow rate, and so on. I'm assuming they are constant.
Well, while we have very clear methods to calibrate most aspects of a printer (max extrusion rate, temperatures, E steps, ...) I haven't seen any procedure to calibrate all the cooling settings.
Often you see people (even experienced ones) use a temperature/fan tower to pick a fan speed, but this is not really correct: there's no point in using fan for big layers, while a single fan speed won't be enough for small layers.
Ideally, with optimal calibration, the part strength is not lowered by the use of a fan.
How to systematically calibrate the above-mentioned parameters used to set variable fan speed?
Note: this is NOT about calibrating fan speed for bridges, which requires a different procedure, since excessive fan speed may blow away the bridge itself.

Did you mean mathematically?

@user77232 maybe wrong choice of words. I'm asking for a complete calibration procedure which can determine all the required parameters.


text:
G-code for 3-axis arc? GRBL
I see that arcs are done on a two-axis plane.
However, I am curious if it is possible to move from an <x,y,z> position to <x',y',z'>
e.g <152, 559, -139> to <905, 279,-145> with an arcing z-axis.
Context:  I'm trying to move between the two coordinate points while dodging an obstacle by arcing the Z-axis movement.  I am trying to do the motion on command to be able to operate faster. Using GRBL 1.1

I love the idea of arcs. Common approach in 3d printing is to process triangulated mesh. This leads to slicing only segments. I see that arcs are supported by Marlin, but so far I saw no case of using them...

This should be possible in GRBL 1.1, see examples below.
Disclaimer: I have never used neither GRBL nor arcs (G2, G3) in practice.
Support for arcs in G-code
In general, in IJK variant where the arc is described by three points (starting, end, center) anything seems possible, including the rainbow-like moves. I imagine (I,J,K) coordinates as imaginary arrow's nock for bent bow. By moving it around, you will "reshape" the bow as needed. I actually found similar CNC Arc Programming Exercise, including:
G01 X40 Z-25
G03 X70 Z-75 I-3.335 K-29.25

and very interesting Quick G-Code Arc Tutorial on CNC Cookbook. It presents R variant example of helical moves (tread milling) with Z decreasing in steps (relative positioning):
G03 X0.0939 Y0.0939 Z0.0179 R0.0939
G03 X-0.1179 Y0.1179 Z0.0179 R0.1179
G03 X-0.1185 Y-0.1185 Z0.0179 R0.1185

Support for acrs in GRBL
I found similar question in Duet3d forum: Caution! - STL Resolution. There is a sentence:

On GRBL you get some planar support (pick any two axes, eg XZ, but not three). (...) Some controllers even implement a helix mode.. but no standards exist.

So the support in GRBL may be limited. However this comment seems to be in condtradiction to the official GRBL README.md, saying:

List of Supported G-Codes in Grbl v1.1:
(...)

Arc IJK Distance Modes: G91.1

I leave a practical proof to you now.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Apply / find / create a stainless steel coating to apply to a PETG or PLA part to make it react to a magnet
Apply / find / create a stainless steel coating to apply to a PETG or PLA part to make it react to a magnet.
My goal is to make a small tubular and conical shapes that can be painted with a stainless steel coating and will react with a magnet.
I know I can buy iron filled PLA but these rust which I want to avoid.  I'm trying to get the magnetic properties of stainless steel (no rusting / reacts to magnets)
I have found videos on how to coat with copper / silver / carbon but I'm looking for stainless steel no rust / magnetic properties.

I'm looking for a "low-cost" solution just for testing.

Beware some stainless steels are magnetic, and others are not, it depends on the micro-structure content. The company I work for used a company to clad metal onto the inside of composite cylinders so that they could be used with a piston for hydrophilic purposes, you could look into that, but I suspect that that is quite expensive and not what you are looking for.

Thanks, but I'm looking for a "low" cost solution just for testing.

Leafmetal won't work... also "react with a magnet" is QUITE vague: do you want magnets to stick? Do you want to detect the print in a coil? Why you need the print to be magnetic all over? Would magnetism from some spots not suffice?

@Trish if your talking about gold leaf type of materials I didn't know about a stainless steal magnetic leaf products if you know of one please share.  Yes I do want magnets to stick to it (so the magnets may cause the metal leaf products it to rub off).  Now that I think of it, only having the inside of the tubular / Conical shapes be magnetic would be fine.

@RickT that's why I said it won't work: there is no "stainless" type of that type. To stick a magnet, you need a considerable thickness.

The surface won't work
The only true-metallic surface treatments I know to be actual metal in large enough amounts to conduct electricity would be leafmetal, akin to leaf gold, and electroplating. However, you can't use the procedures for stainless steels, and even then, the thickness is in the tenth of a µm area and lower. Not only would that be far too thin to adhere a magnet to, it also would be super easy to damage with rubbing.
Filling?
PLA itself does not block magnetism - I have printed a PLA holder for a magnetic GPS device, into which I inserted a simple 0.5 mm steel plate for a magnetic surface with 0.5 mm of PLA acting as the container and seal against water.
If the prints can be done with one end open and no infill or have a dedicated area that a cheap piece of steel can be inserted into, this method can be used too. The only requirement is that there is a cavity on the inside that at some point is accessible. This also can be during the print.
This cavity could either take a piece of shaped steel sheet or be filled with a different magnetic filler, for example, simple iron powder. The powder could be bound in a non-oxidizing polymer, for example, epoxy resin. This method has been used to create cast stators for electro motors. It's not the most efficient, but might work in your application - if your walls are thin enough.
With the correct mixture, such a material can be used to coat or fill the inside with enough magnetic material to give the magnets something to stick to and not rust away - the shell and the resin together would shield the iron from any air that could rust it. Indeed, a quite stuffed Resin-Iron-mix and a strong magnet have been used in 2012 to create furniture by the name of "Gravity Stools" or other art pieces like in this video

No rust but has magnetic properties? You could try varnishing the iron filled PLA.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
What modifications do I need to make to Marlin if I completely replace the heated bed assembly?
I have a 3D printer built from generic, scrap parts.
It's controlled by a 2+ years old MKS GEN L board running Marlin version 1.1.x.
I want to do a complete bed assembly replacement, including:

Heated bed
Thermistor
Y-carriage

All the hardware bits, including the z-endstop are sorted and ready to be installed.
My question is:

Once I replace the assembly, what kind of software / firmware modifications do I need to do to Marlin configuration for my printer to work correctly?

I understand that I need to modify dimensions and offsets but I am unsure what else will I need to change within the codebase before flashing Marlin.

Hi Phil! Are you looking for general guidelines ("kind of changes") or do you observe some issue? Then you could significantly improve the question by adding information of what does work incorrectly now? Along with information about the previous setup. If only height is different, or other dimensions either? If the previous bed was heated, or it should be enabled now? As for Marlin, there were some vital changes between 1.0 and 1.1 like TEMP_BED_ settings, so the exact version is also important.

Hello @octopus8. Thank you for your kind suggestions. I have updated my original question trying to improve it with the details you mentioned.

Dimensions if they differ, maybe endstop offsets and possibly a different thermistor type.

You may wish to PID Autotune the bed as well.


text:
Z-offset: 0.2 mm, 0.1 mm or the thickness of paper?
So, I'm pretty new to 3D Printing, and to quote Spock from Wrath of Khan I would say "He is intelligent, but not experienced". Now everything I have been reading about Z-offset seems to talk about a 0.2 mm gap and using a piece of paper.
Wishing to be accurate, I have tried to use my 0.2 mm feeler gauges and this is too high.
However, the thickness of paper depends on the GSM (grams per square metre). A Google search tells me that the average thickness of paper is ~0.1 mm but how can we be accurate with this variation.
I tried using a 0.1 mm feeler gauge and even this seemed too high. Is this because of the lack of give in the metal? Anyway, I have now settled for a Lotto slip (UK Lottery) which has a thickness of 0.1 mm and seems to allow me to set a good offset.
However, I would welcome someone who can explain the science behind this.

If you have a good caliper or micrometer, measure your paper and get a feel for how it feels when it drags through the caliper and also user the nozzle.   From the theory side, z-offset=thickness-of-paper should make it so your measured first layer thickness matches your slicer's setting. Practice-wise, as long as you are consistent, you can juggle z-offset and first layer settings to get good results.

They are all generic guidelines. Don't count on them too much.
What you need is a reproducible offset to get the same value everywhere in the bed, then you can correct the overall offset via gcode at the beginning of your print.
You can also get an approximate Z-offset value, then print a solid 30x30x5 mm cube.
If, starting from the third-fourth layer, you see some over-extrusion, you need to adjust the extrusion multiplier or the E steps calibration and reprint.
Once the solid cube looks good starting from the third-fourth layer up, then you can tune the Z offset by printing a cube which is only 0.2 mm high (or 0.25 mm, or whatever your first layer height is).
If you see over-extrusion, the Z offset is too big. If you see visible gaps between extrusion lines, the Z offset is too small.
If unsure, better get some small remaining gaps rather than overextrusion and excess material.
The idea is that extrusion issues in the first layer can be caused either by the offset or by the multiplier, so you must adjust the multiplier first by looking at the print after about 1 mm height (the first layer issues tend to disappear after some layers). Once you know the extrusion is right, set properly the first layer.

Edit
For a good guide check Andrew Ellis' guide: set first the extrusion multiplier and then the first layer squish.

That's really useful advice.  I'm trying to configure Marlin from scratch and there is definitely head scratching going on.

@Davies-Barnard and don't forget that the offset needs to be checked periodically, since the nozzle wears out not by widening itself (usually), but rather by getting shorter, so the Z offset increases

Personally I use Klipper, so that everything is done via config file without any flashing, but then a Raspberry Pi is needed, so people may not like the idea.

...then, after swapping filaments, you will notice that you have to re-calibrate the rate flow, because the other one is softer and teeth bites it deeper. For the Z, remember to calibrate it with bed already heated (I use piece of glass over printboard, this setup bends a bit, I played a lot with springs and wote "front" with marker on glass to remember how to put it after washing). Change is inevitable.

@octopus8 the offset is independent of bed temperature. It is the probing which has to be done when warm

You are right. But on the other hand, isn't it just only assumption that he uses probing at all? ;) Stil l agree with you.

Measuring a gap with paper is just a rule of thumb. Personally I didn't measure anything, I've just made sure my bed is level and adjusted z-offset bit by bit until I was satisfied with the results. I couldn't tell you how wide the gap is.
On the other note you might not have to reconfigure your Marlin. You might be able to configure your z-offset by adjusting it directly in your printer config menu or alternatively if you are using Cura you can download a plug-in that allows you to adjust z-offset. You just have to remember to reslice your model if you print on multiple surfaces with different thickness


text:
Problems with X axis movement
I have been printing with no problems. I have finished the spool of filament and removed the remaining filament from the Bowden tube and hotend. Before loading the new spool of filament, I decided to level the bed using the installed BLTouch.
Probe grid 3 x 3. Centre point of the build plate, X:135, Y:130.
Homed the bed (G28). Leveled the bed (G29). The first four probe points worked as expected. When the printhead moved to the fifth probe point, the screen read that the printhead was in the expected position (X:130, Y:130). The printhead had only moved about 20 mm, meaning the true position was X:240, Y:130, I had checked this with a ruler. The sixth probe point also moved about 20 mm on the X-axis. The seventh point moved along the Y-axis correctly. The printhead tried to move correctly to the eighth point and promptly crashed into the side of the printer as it was trying to move 130 mm to the right. The screen had X:0 when in reality it was X:230.
I tried the ABL again. This time I aborted the ABL on the fifth probe point as the previous event had been repeated. Reported position, X:130, Y:130. The true position, X:240, Y:130. I then tried to home the bed (G28). The printhead moved a short distance to the left (<20 mm) on the X-axis, reported on the screen X:0, and started along the Y-axis. When it had reached Y:0 (true position) it then moved diagonally to where it thought would be the center of the bed, but would have crashed into the side of the printer frame if I had not cut the power.
After re-setting the board, I could home the board either by using G28 or via the screen. I could move the printhead along the X-axis freely, both through Pronterface and the printer screen. If I tried to home the printhead when X>140, it would only move a short distance to the left, set X:0 on the screen, and head down the Y-axis.
I have checked for loose connections and everything seems tight. The only difference from when I was last able to print is there is no filament loaded.
Anybody any ideas what is wrong?
Printer: Hypercube Evolution (CoreXY)
Board:   KFB2.0

Short moves sound to me like loosing steps: by aggressive speed/accelleration? or by faulty stepper driver (you could try to swap X and Y stepper drivers and check this way). What is your homing mechanics - if it is based on mechanical or optical endstop? How does it work for G28 X executed from each different corner or other positions? And what firmware do you use?

Marlin 2.0.6.1. Endstops are all optical. X-Max endstop packed in a few weeks ago. It has been disconnected from the board and commented out of Marlin.  Other endstops used are X-Min, Y-Min and Y-Max. Z-Min used for the BL Touch. Z-Max used to drive BL Touch Servo. I will have to try the stepper drivers and G28 X command. I did not realise that you could home individual axes.

Swapped stepper drivers around. Problem remains. Swapped X and Y stepper drivers for some others I had lying around. Problem remains.
G28 X produced some interesting results. Home printhead to centre of bed, enter G28 X, desired result. Move printhead to X:100, enter G28 X, printhead moves right approx 10mm, screen shows X:0. Enter G28 X again, same result. Repeat two more times, same result each time. Repeat, printhead jerks to the left, then the right, screen shows X:0. Continued...

...Continued Repeat, no movement or change in display. Move printhead to the right, G28 X, moves to the left and then the right, screen X:0. Move printhead to left half of bed X:-100(I had to turn off software endstops to do this) G28 X produced desired result.
Repeat process, but with Y moved to Y:235. Same results except for next to last attempt where printer crashed and had to be reset.
Repeat process with Y:35, same result.

Could it be the issue with too tight wheels, similar to this one?

No wheels on the printer. All bearings move as they should.

After many hours tinkering, pulling things apart, testing them and re-assembling them, it turned out that the problem was a broken wire for the X_Min endstop. This has now been replaced and the problem is resolved.


text:
What is the brand of this 3D printer?
Could anyone help me to find out what is the brand name of this 3D printer?

I found this printer while playing Spider-Man on PS4 in the Lab

the fact that it is a digital item was rather crucial: they used a printer. if you could check the files, then it might tell you how the manufacturer refers to it

The printer on picture looks like LulzBot TAZ.
It could be some prototype or a self-made built or just inspired by it (as it is a digital rendition), because there is no sign of any branding on it. There are similar builds on Thingiverse.


text:
Extruder motor does spin - but not while printing
I hope someone can poke me in the right direction, I´ve been failing to find a way around this problem and trying for about a week.
My setup is pretty custom, I am using a BTT SKR 1.4 Turbo with TMC2208 driver and a BTT TFT V3 display. At the beginning of this problem I´ve added a second Z-Axis to my printer and made the mistake to declare both axes in Marlin (as I am only using one driver, I should not have to alter Marlin for this, but I found that out too late). At this point, I updated Marlin to take my new steps/mm for the Z-axis, but no matter how often I did, the firmware didn´t seem to change anything. Later (out of pure hopelessness) I used the M502 Command, followed by M500 to save and somehow this made my axis work and set the correct steps/mm out of my firmware (at this point, I already found the mistake in Marlin mentioned above).
Relieved I started my first print... But the extruder motor (bowden setup) stopped turning and I don't know why. Now, I´ve been stuck with this strange behavior for a week:
When I freshly boot the printer, the extruder motor spins (correct length and correct direction). I can do this via M-Command, TFT35 and Pronterface (PC-USB direct to the mainboard). Whenever I start a print, the extruder just stops (motor engaged, but not trying to turn, no skipping steps). No matter how long I wait, even in a 2-hour print, the motor doesn´t spin a bit. After the print and if I cancel the print the motor won´t turn again (tried all the ways mentioned before). BUT when I kill the power to the printer and let it reboot I can use the extruder in all the mentioned ways without any problems.
I think this is a software problem, but I can´t find it. Looked through Marlin a few times, adjusted my Start G-code, looked at the existing G-code, I can not find the mistake. I´ll attach a few lines of G-code and my Start G-code (I use Cura 4.8). If someone knows a line in Marlin, I´ll look that up for you - it seems impossible to post the whole firmware somewhere.
Start G-code:
G21 ;metric values
G91 ;relative positioning
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
M900 K0.22 ; set K-primus-factor
M117 K0.22 ; display K Value on display
G92 E0 ;zero the extruded length
G90 ; absolute positioning
M82 ;set extruder to absolute mode
G1 Z1 F500 ;move up slightly
G1 Y60.0 Z0 E9.0 F500.0;intro line
G1 Y100.0 E21.5 F500.0 ;continue line

G-Code:
G1 F600 Z0.3
G1 F1500 E0
G1 F1200 X99.215 Y92.699 E0.06147
G1 X99.708 Y92.391 E0.09734
G1 X100.377 Y92.083 E0.14279
G1 X100.743 Y91.958 E0.16666
G1 X101.484 Y91.803 E0.21337
G1 X102.187 Y91.748 E0.25689
G1 X103.552 Y91.72 E0.34114
G1 X118.764 Y91.72 E1.27986

If there are any ideas, please tell me. I am completely lost at this point!
Edit: a few mistakes are gone now, formatting and PS.: "blockage of the extruder-motor" after starting a print happens no matter how I start a print (SD TFT/Pronterface/SD Mainboard)

Extruder stops to spin
The problem you described seem to be reported elsewhere for TMC in relation to stealthChop mode (unsure, see below) and linear advance. For details look at this comment in Extruder stops during print (Bugfix-2.0.x) #17944. An advice from there is to supplement the G-code with (my interpretation):
M569 S0 E ; disable stealthChop for extruder (use spreadCycle)
M900 K0   ; disable linear advance

There is also another discussion TMC2208 extruder driver shuts itself off in spreadcycle mode with pressure advance enabled #1774 for Klipper. Above summary is just a result of my quick look through, I suggest to re-read these articles with more insight.
Also I propose to do following to doublecheck:

execute M503 (without parameters) before and after print, compare reports (especially: M92, M203, M204)
verify EXTRUDE_MINTEMP parameter in Configuration.h (I am not sure how does it behave during the print)
I also saw the remedy: "Then I changed the extruder stepper motor wires and the problem is now fixed", but it is the edge case.

Extrusion mode
I personally prefer to use extrusion in relative mode, because it allows to manipulate G-code or restart the print from any line. You would need to put M83 in starting G-code instead of current M82, together with enabling Cura setting (Special Modes > Relative Extrusion). I am not sure what happens currently with your filament between in your file's:
  M82 ;set extruder to absolute mode
  G1 Y60.0 Z0 E9.0 F500.0;intro line
  G1 Y100.0 E21.5 F500.0 ;continue line
  ...
  G1 F1500 E0

For me it looks like it's retreating 21 mm of filament just at the start of print? So it cannot really print for several consecutive G-code lines, does it?
Marlin settings vs EEPROM
When updating settings in Marlin like steps/mm you should be aware, that values stored in EEPROM take precedence. Reinstalling firmware will not clear the EEPROM settings. If you want to make persistent change, save to EEPROM and alter the firmware config, to have these values secured for future as "defaults".

First of all, Thank you!
Linear advance was my problem - it is now permanently disabled in Marlin. I was overgoing mentioned discussions because my problem showed different than theirs and linear advance was enabled for a long time now without any problems. Rooky mistake.
I actually like my extrusion better in relative mode, as I had some other Marlin issue when it was set relative. But thank you for the input.
I am pretty new to 3D printing and my start-G-Code is just stolen togehter from a few websites. It doesn´t retract, it just prolongs the line. I dont know why I did it this way :)

Great you have resolved it. Thank you for feedback. Regarding retraction question, I was think of line G1 F1500 E0. If it does follow E21.5 without G92 E0 anywhere in between, then - in absolute postitioning mode - it will just go pulling these 21.5 mm back to reach a 0 position.

No problem, I´m glad someone helped me! Digging way deeper - It doesn´t seem to be a TMC  problem, it seems to be a specific TMC 2208 combined with Marlin problem.
Thinking about the "extrusion problem" a bit longer - you are absolutley right! But (and don´t ask me why, my printer seems to get worse with every "upgrade"), this has never been a problem. It SHOULD retract filament, but for the last years and ~100h of printing it never did. I´ll keep that in mind for my next time rearranging things in Cura, thank you again!


text:
Anycubic Kossel Delta switch from Trigorilla to MKS Gen L 1.0
I have an Anycubic Kossel Delta 3D Printer.
The original Trigorilla motherboard died and I decided to buy one but I only found a Makerboard MKS Gen L 1.0 which is said to be compatible with Trigorilla.
My questions are:
I have 2 fan ports on Trigorilla and 1 in MKS. I have 2 power supply connectors in Trigorilla (5A, 11A) and I have 1 (12/24V) in MKS Gen L. My power supply (which originally comes with Kossel) has 2 power connectors. (2 + red and 2 - black) How can I use the new MKS Gen L board with Kossel?
My official Trigorilla wiring:

MKS Gen L 1.0 wiring:


text:
Z-Axis on i3 clone won't move at all, Melzi A4982 driver problem
I'm setting up a replacement Melzi 2.0 board from TRONXY for my i3 clone (a Monoprice Maker Select v2 for those curious), which according to the RepRap wiki has A4982 drivers for all the steppers. I'm attempting to configure Marlin 2.0.x for this printer and this is the last big problem I'm encountering.
The problem: The Z-axis (or any motors connected to the Z-axis driver) won't budge no matter what I try. All my other steppers work fine.
What I've tried: I've done everything I can to prompt the Z-axis to move, from Gcode commands to homing via the LCD and Pronterface. I've connected my X-axis motor to the Z-axis driver and it won't move either. Sometimes, when I send a command for them to move, they'll make a small noise - like they're getting power - but won't move. I probed the motor connectors at the board and received nothing but a few stray millivolts here and there, very different from the several volts on my Y-axis motor when I did the same thing. Bear in mind, that was just one test moving them from the LCD, and this time they did not make any noise or attempt to move. I have switched pin definitions in the firmware for X/Z ENABLE/STEP/DIR and the Z driver once again appeared to be the culprit, keeping the Z-axis planted even if it was being controlled as if it were the X-axis.
What I think the problem could be: To me, this seems like a software problem. I'm configuring Marlin for my first time and I think I messed something up somewhere. Could it be a problem with the trim pots, motor currents, motor enabling, or something else? Outside of that, maybe the driver is just dead?
My Marlin 2.0.x config.h for reference:
// These are all excerpts from various parts of Configuration.h

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 500 }

#define DEFAULT_MAX_FEEDRATE          { 300, 300, 4, 25 }

#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 10000 }

#define DEFAULT_ACCELERATION          2800    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  2800    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   2800    // X, Y, Z acceleration for travel (non printing) moves

//#define CLASSIC_JERK  //left at default

// :{ 0:'Low', 1:'High' }
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false

#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 150

#define MIN_SOFTWARE_ENDSTOPS
#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
  #define MIN_SOFTWARE_ENDSTOP_X
  #define MIN_SOFTWARE_ENDSTOP_Y
  //#define MIN_SOFTWARE_ENDSTOP_Z    //disabled until the driver works correctly
#endif

#define MAX_SOFTWARE_ENDSTOPS
#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
  #define MAX_SOFTWARE_ENDSTOP_X
  #define MAX_SOFTWARE_ENDSTOP_Y
  //#define MAX_SOFTWARE_ENDSTOP_Z
#endif

//#define Z_SAFE_HOMING

#if ENABLED(Z_SAFE_HOMING)
  #define Z_SAFE_HOMING_X_POINT X_CENTER  // X point for Z homing
  #define Z_SAFE_HOMING_Y_POINT Y_CENTER  // Y point for Z homing
#endif

// Homing speeds (mm/min)
#define HOMING_FEEDRATE_XY (50*50) //changed from 3000 to 2500
#define HOMING_FEEDRATE_Z  (4*60)

// Validate that endstops are triggered on homing moves
#define VALIDATE_HOMING_ENDSTOPS

// Sorry if that was a bit much, I tried to include all the settings that could
// potentially have an effect on the Z motion.

I genuinely have no idea where to even look to solve this problem, so any guidance or advice would be hugely appreciated!! Thanks!
My conclusion is that the driver chip itself is dead and replacing it ought to fix the problem. If this works, I will post an answer to this question.

Hi! If X,Y are working ok, then maybe try to swap stepper PINs (ENABLE, DIR, STEP) of Z and e.g. Y in firmware configuration for a while, and try to manually move (LCD or G-code)  the Y and Z axes a bit ? (Better swap also endstops if you are going to home, etc.). Then you will know much better if this is really a software problem.

Hi, I've now tried modifying all of those parameters for the Z-axis, and nothing has seemed to influence it whatsoever. I've continued to probe the steppers and still haven't seen any signal at all. I think the problem is either somewhere deep in software, or that the driver itself is bad somehow.

My excuses, but I do not understand precisely what you did... What I have proposed is a visual test, it has nothing for probing. The goal is to exchange purpose of two physical drivers: Z and Y (or any driver that works OK). So (1) did you swap respective pin values of Z and Y in your board's settings (some Marlin file) and reinstall? (2) After this swap, if it still caused one stepper moving and the other one stalled? (3) Resolve: if stalled motor was connected to driver marked "Z" on the board, then it is hardware issue. If it was connected to driver with "Y" mark, then it is software issue.

( If you got firmware settings from reliable source, then it is less of chance - but there is another possibility for "Z" variant: that pin values originally set for Z driver in your firmware's files were incorrect from beggining. Then signals from microprocessor would go via unconnected legs and arrive nowhere. Or arrive elsewhere - you may want to doublecheck in settings if these pins are not used for any other purpose. )

You probably know this, but the default Marlin configuration is not to move E unless the extruder temperature is at a minimum value.

@octopus8 My apologies, I misread your comment the first time. I have now swapped the pin definitions for the X and Z axis. The X-axis happily moved as if it was Z and the actual Z axis refused to move once again. My conclusion is that I will need to buy a new driver and connect it in place of the current driver. Thank you for your help!

I've replaced the Z-axis stepper driver with an off-board Pololu-style A4988 driver by soldering leads to pins 2 and 3 on the Melzi board, then connecting those to the driver on a separate board. The Z-axis now moves correctly. When I encountered issues with the step pin (pin 3), I connected it to pin 12 (bed heater) instead, leaving the bed to be heated manually. This has worked so far and the only problems I've encountered were minor issues with electrical noise, which I was able to fix with a shielded cable.


text:
PID tuning and different filament temperatures
Since I have lots of PETG, I ran tuning to 230 °C (average temp for my filaments).
What is it good for, in terms of temperature ranges?
For the same printer configuration, and just different filaments, will I need to run it again and again?
Let's assume that I'll be printing between 200 °C and 240 °C.

PID tuning can be performed multiple times and the results saved for future use, since the question is about "what are the usable ranges for PID tuning", based on my experience

a slightly suboptimal tuning will not make the temperature oscillate more than 2-3 degrees, which is more than enough for most traditional filaments
if you have a 30-40 °C temperature range you can likely keep a tuning in the middle and be done with it
an accurate tuning is needed if you run the hot end at its maximum rated temperature: mine was rated 250 °C and without a good PID tuning the temperature was overshooting by 2-3 degrees, which was enough to trigger a over-temperature safety shutdown. Using the printer at 245 °C would have resulted in no issues even with sub-optimal PID tuning.

Of course, people with high temperature hot ends (up to 270-300 °C or more) will need a tuning for the usual range (200-240 °C) and one for the higher temperature range to obtain better prints.

This is exactly what I was looking to find out.
Thanks for saving me a lot of trials and errors.
I want to configure this printer to be as generic/basic as possible, for usability and reliability reasons.

It's not a straight answer, but you don't have to run PID tuning every time you decide to print with different temperature. (Until you change something in a hardware near or related to the hotend.)
You can tune PID for different temperatures and grab necessary values, for example:
M303 C16 D1 E0 S190
22:14:31.872 > PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
22:14:31.886 > #define DEFAULT_Kp 30.87
22:14:31.886 > #define DEFAULT_Ki 3.06
22:14:31.886 > #define DEFAULT_Kd 77.75

and then store respective G-code commands (like M301 P30.87 I3.06 D77.75) as few different "PID profiles" as new entries in custom menu for Marlin or menu.cfg for Klipper for quick switching.


text:
Marlin firmware: unload filament with G-code
I have upgraded my ER-20 with a Bondtech dual gear feeder.
It is not or hardly possible to load/unload filament manually with this feeder, so some .gcode is needed to do it.
I wanted to implement something similar to the atomic cleaning method for unloading: https://ultimakernasupport.zendesk.com/hc/en-us/articles/115004187066-Atomic-Cleaning-Method
Here is my current .gcode:
G21 ; Metric values
G90 ; Absolute positioning
M82 ; Extruder absolute mode
G28 ; Auto home
M420 S1
G1 X100 Y100 Z100 F1000
; M92 E415 ; 415 steps/mm
M302 S105 ; Allow extrusion above 105C
M109 S218 ; Heat hotend to 218C
M400
G92 E0 ; Reset extruder positioning
M104 S160 ; Start the cool down
M117 Extrude prime blob
G1 E10 F100 ; Extrude a short before unload to avoid blob forming
M109 S160 ; Wait for 160C
M104 S110
G92 E0
G1 E0.2 F100 ; Pressurize the hotend
M117 Pressurize hotend
M109 S110 ; Heat hotend to 110C
G92 E0 ; Reset extruder positioning
M117 Pull out slow
G1 E-3 F200 ; Pull back a bit, slow
M117 Pull out fast
G1 E-430 F2000 ; Pull back 43cm with 2000mm/min
G92 E0 ; Reset extruder positioning
M400 ; Wait for command finish
M117 Remove the filament now
; M400 ; Wait for command finish
M302 S170 ; Allow extrusion above 170C
M104 S0

It doesn't work:

the auto bed leveling is always done, I don't know how to turn it off
when I see that the "Extrude a short before unload to avoid blob forming" event is happening, I also see the "Pull out fast" message on the display and the "print" process ends

Could anyone take a look at this code please? Or is there any .gcode validator for Marlin somewhere?
What I intend to do with this code:

heat up the hotend to 218 °C
extrude some material while a cool down to 160 °C is already started
when temp 160 °C is reached, start a cool-down process to 110 °C and push a little material to the feeder (pressurize)
when 110 °C is reached pull out some material from the hotend slow (maybe the feeder won't be enough strong to do it, but I have never reached this point to check)
then pull out the filament from the Bowden and feeder fast

There are three things to fix and one suggestion:

Change follwing lines of M109, using parameter R instead of S, because the latter is not waiting to cool down:
M109 R160 ; Wait for 160C
...
M109 R110 ; Heat hotend to 110C

The behavior of M420 will depend on type of bed leveling, saved mesh, etc. It is off topic to troubleshoot this. The printer operates 10 cm above the surface for this operation. G28 disables bed leveling. Why do you need to re-enable it? Just remove this line:
; M420 S1 - remove (or comment out)

Redefine maximum extrusion length in Configuration.h to allow for scripted long pull (G1 E-430), for example:
#define EXTRUDE_MAXLENGTH 450

Suggestion: Use relative mode for extrusion (M83) instead of absolute positioning (M82). It will simplify your code a lot. You just want to express the distance in E parameter. Then you will not have to reset position with G92 E0 every now and then (do it just once on the start). (I use this Extrusion mode also for slicing becuase it makes easier to re-start a print in case of failure).

Note: 160 might be below the temperature that allows to move the extruder.. Luckily OP included M302 S105 before the cooldown.

Yes, the script looks quite mature and consistent. Btw. I have added #define  USER_DESC_7 "Allow cold extrusion" #define USER_GCODE_7 "M302 P1" to my custom commands in Configuration_adv.h and used it quite often since then.

Thanks @octopus8. I use the factory firmware for my EryOne ER-20. As I see the Marlin FW development is Windows centrist. The flashing tool was even not working for me on Linux, I had to borrow a Windows machine to flash the printer with the new factory FW release.

Maybe I'll try to set up some kind of serial debug logging (if it is possible), and I hope I'll get some meaningful error messages (like M302 is not supported by this config).

But to change lines in G-code - as described in an answer - and possibly make you script work, you don't need to re-flash Marlin. Or do you, for any reason which I do not recognize? But for tunning custom menu, yes indeed.

Thanks for the "using parameter R instead of S" tip. Now I see the cool-down sequence. But no extrusion (pull) happens. Maybe it is just not enabled in the FW. Other annoying thing, that the bed leveling always happens. Is there any way to turn that off? As I remember when I worked on startup g-code for the Cura slicer, I had to figure out how to bed-level from the code. Now I have to figure out how to not bed-level :)

M302 S105 followed by G1 E-1 works for me at 145 °C, I just checked it with PuTTY. (Maybe you would like to try executing your script line by line, manually from terminal? Marlin is giving some valuable textual feedback, more debug details with M111 S247.) As for the auto bed leveling I do not have a response at hand, I was too lazy so far to inspect all these settings in practice... but: maybe you didn't ever save the mesh to EEPROM after performing leveling, and thus it wants to re-do this process?

Hi, I guess I got it. I have checked the source of the Factory FW and I have seen that the maximum extrusion length is set to 200. So I divided my long one piece extrusion into 3 smaller and now the pull back is working.


text:
Effects of static on 3D printers & print quality
I manage four 3D Printers for my college's robotics team. They are used pretty constantly throughout the school year; that is, they are used more as manufacturing printers than hobbyist printers. The environment they are in is less than ideal: The outdoor climate is typically cold and has low humidity, and the room they are in has fine dust particles that are less than 80 microns diameter and have electrostatic properties. The room's temperature also fluctuates week to week. As such, static electricity is fairly common in that room.
What effects does static electricity have on our 3D printers? I have had numerous problems recently with a motherboard with resistors that failed and another printer with an unknown issue that we suspect also has to do with the motherboard. Could the static electricity be causing these or other issues, or affecting the quality of our printed parts?
We use ZylTech filament, and print using a Creality Ender 3 Pro, CR-10S Pro, Ender 5 Plus, and a FlashForge Creator Pro. The dust particles mimic "regolith", or lunar soil, that comes from one of our team's test facilities.

Static electricity is detrimental to nearly all electronic devices. A stray zap from touching the frame of your printer could migrate to the controller boards, terminating normal operation. If you wish to protect the printers from static electricity, connect the frame to a confirmed electrical ground. The power supply may be grounded via the electrical cord, but you'd want to ensure that the entire structure shares that ground. Additionally, provide a grounding strap to which an operator would connect prior to using the machine.
Image below courtesy of linked site.

The more unfortunate aspect of your description is the issue of particulates in the air. Moving parts will be subject to excessive wear and your printer has plenty of moving parts. The stepper motors may "ingest" particles and the fans on the power supply will certainly pull in abrasive dust. The rails and bearings are going to be collecting as well.
If you wish to ensure a longer lifespan for the printer, a filtered enclosure with an overpressure environment is going to be needed. This presumes that one desires to provide cooling air to the printer and power supply. The box around the printer would have to be fed by a fan which is protected by a filter capable of preventing the dust you describe from entering.  One could create a box around the printer without fans and another around the power supply with fans and filters.
One could use the reverse concept, that is, build a box from filters and have a fan suck the air into the box, into the fan and back out into the environment. This would provide for a greater surface area of filter material, reducing the frequency of filter changes. In the first example, the box is created from a solid material and the fan forces air for cooling, into the box, as dust-free as the filters will allow. In the reverse method, the box is created from filters and the fan is used to move air from the box to the outside, pulling clean, cool air into the enclosure.
It sounds like a tough place to be a 3D printer.

I didn't get the reverse concept... too many "intos" for me :) Could you elaborate a bit more?

added clarification, I hope.

Ok, I got it. So the filter-box has no "entry hole". I like this. Maybe filters would be even a better insulation than chipboard or glass walls. Though for ABS fumes, for example, you would like to have also an exit filter (of different kind probably) or just a "chimney" to the outside.

Static electricity does not affect the printing process but it can destroy or disrupt the electronics of the system. The dry air environment is really good for the printing process because keeping moisture out of the filament is one of the most important concerns for a good quality print. Dust is the other. If you can find a solution where the filament is drawn directly from the dry box; that would be best. (I am assuming that you have a dry box ;)
One problem that can occur in especially dry environments is static build-up during printing. A 3D printer can become a mini Van de Graaff generator with static being generated on the spool, being transferred to the nozzle. Normally this is a very rare problem but it sounds like your environment is very dry. You should try earthing the nozzle. Determine a spot on the cold side of the hot end assembly onto which you can connect a wire to earth, and ensure that it is connected via a very large ohmage resistor (100Mohm). This should keep static away from the stepper which should keep it away from the controller.

I would say does not usually affect, as a static charge could trap dust on the filament and get it to the hotend to create clogs. But earthing the hotend cooler and extruder to the frame should suffice

Regolith is one of the worst stuff known to man that could accumulate on electronics and moving parts. NASA replicated Regolith and has a manual. Researchers studied Regolith as a 3D print material - and found it can be used. We even have the formula to make Concrete from it by adding water and refined regolith or even dry refined regolith.
Also, we understand how Regolth behaves electrically. It's not a good conductor in the dry state but at least a conductor. However, just a little water rapidly changes that and makes it a rather good conductor! Tiny amounts rapidly increase the conductivity, making it very dangerous to electronics in combination with dew - which happens in low temperatures.
Dust on bearings gunks them up and then starts to grind away the rails.
Dust on filament gets pulled into the hotend and can create clogs.
So, it's rather clear that we don't want this regolith-dust on our printers.
Danger mitigation
You immediately need to take measures to prevent dust from accumulating on the electronics and secondary on moving parts!
If possible, housing the electronics in a dust-sealed box would be preferential, but
housing the printers as a whole in an enclosure might mitigate most of the trouble for the start.
The most simple enclosure that would allow for such would be a simple large wood box, provided that the door contains a seal. For fire protection and to reduce the risk of one spot of the housing getting too high, the inside air should be constantly mixed, best by some sort of permanent running large fan. For further protection, the setup needs to be vented at least when the internal temperature gets too high, allowing to use of the heat of the printers to stabilize the internal temperature - and best even log it.
A venting-trigger temperature should be below 100 °C air temperature, better even 80 °C. But how to reduce the temperature?
The easiest cooling solution is to intake air from the outside, but we need to get the dust out of that. An easy solution would be a HEPA-filter unit. There are permanently running types, that would keep the printer-box(es) under over pressure compared to the atmosphere, keeping the dust from creeping into the box, but that doesn't give us control to heat the chamber if it gets cold.
But we could salvage an old printer board for that! Setting up the thermosensor in such a way that it measures air-temperature is easy. Using the bed and/or hotend exit of the board to some sort of heating element with grids at the filtered intake should be doable, evening out the temperature in the printer box to a minimum safe temperature.

Well I suppose he could mount the printer inside a fridge! https://www.youtube.com/watch?v=fCscpAyGPlk

@user77232 actually, if a fridge wasn't so cold, that would be a good idea.... keep the temperature above dewpoint and the casing of a fridge makes a decent ad-hoc chamber, but it's usually flammable...


text:
Is Creality Ender 3 V2 Supposed To Come With Board V 4.2.2?
I recently purchased a Creality Ender 3 V2 ~1 month ago, and just yesterday installed a BLTouch. When looking at the motherboard, I noticed my board version is 4.2.2. Isn't the Ender 3 V2 supposed to come with a V 4.2.7 board? Did Creality mistakenly include the wrong board with my printer?
I did some googling but couldn't find a definitive answer. If anyone can, please let me know. My plan (if there was a mistake) is to email Creality customer service, but if any of you have a better suggestion, I'm all ears.
PS: I purchased this directly from Creality website, not Amazon or any other marketplace. Thanks, all.

Yes, they are shipping the v2 with the 4.2.2 board.  My understanding is that the 4.2.7 board has a change in the stepper driver pinout but is otherwise the same as 4.2.2.  The change in the pinout allowed them to change the stepper driver package as the stepper driver vendor appears to be changing that spec.  I've used both boards in my V2 with no discernable difference.


text:
Delaminating in the middle area of photon printer
I've been getting delaminating and other issues in the middle area of my Anycubic photon printer.
Sometimes the print won't stick to the print bed and sometimes it delaminates like in the images below, but I'm only seeing issues in the middle of the printer. Anything along the edges of the print area prints without issue.

I've tested the screen, it seems to work. No dead areas.
I've tried multiple different prints (I only have issues in the middle area).
The problem usually is early in the print but the size of the print does not seem to matter.
The print bed does not appear to be warped.
FEP tensioned using the Tuning method.

The prints can be seen attracted to the print bed here. The part of it that is facing each other is where there were issues.

Delamation example (both prints had the same issues)

Settings used:

Resin: Elegoo ABS-Like Grey
Layer thickness: 50 µm
Bottom layers exposure time: 100 s
Number of bottom layers: 10
Normal layer exposure time: 11 s

Should the title really say "in the middle" twice? I've removed the duplicate "in the middle". If that was wrong, please feel free to rollback to edit #2

The print you do is a sealed cup in the position it sits directly on the build plate. As a result, there is a column of resin in the cup as you print and at some point, the weakest spot delaminates, the air gets into the column and drains.
Take the print and either angle it by a few degrees so the hole in the top becomes a vent or add a tiny extra vent-hole.


text:
Bottom rough edge
I am trying to get rid of the bottom rough edge of my printed jobs. It is on everything I print. I have adjusted my Initial layer settings but no change. I have the Ender 3 and using the provided Creality Slicer.
Picture showing the problem:

I have also adjusted various bed temps.  As well as 1st layer settings.

Unless you update the question with the bed temperatures and settings you changed it is guesswork for us. Please update the question by [edit]. This problem looks exactly like in this question! I'm in favor for closing it a a duplicate.


text:
Layershifting near windows
I just got my Ender 3 V2 a few days ago. I have started designing a simple local church but the surface of the print is not what I was expecting.
The main issue is layers not being exactly on top of each other near openings(windows). (Red circles in the attached image). Is this setting related or do I need to change my model?
For the blue circle, it is not a nice and flat surface. It happens in this location in every print of the church. You can see it in the background as well.
Can anyone give me some tips on how to improve these issues?

Thank you for your reply. Do you have any suggestion on how to fix it or what could cause it? Do I need to change some settings?

I have impression that it is over-extruded (looking at bottom layer, doorway, and wall below the balcony, the stairway). Do you have belts reasonably tensioned? What if you lower the flow (even underextrude a tiny bit) and raise temperature (try to convert retraction/pressure issue even to a leaking issue)? Try these and edit above answer - we may evolve it to become a real answer. You may try to use [chat] for consultations.

Hi and welcome to SE.3DP. StackExchange is a Q&A site not a forum of threaded messages. The answer section is not for a back and forth chat, that is why there is a comment section and chatrooms... You can address someone under your question in the comments by preceding their name with the @ symbol. I've deleted this answer and moved it to the comments under the question.

That's a retraction issue, not layer shift.
Your nozzle starts printing a new line in those areas but doesn't extrude enough plastic at the first moments, resulting in a weak line.


text:
Wrong calculation of E-parameter values
Hello dear Community,
I am trying to print my first Box and I have a problem with the skin of the bottom layers.
After finishing the slicing and while looking into the generated G-code I was wondering why Slic3r increases the E-parameter continuously when 90 % of the lines have the same length and the axis have the same speed. Logically as long as the length of the lines are equal and the speed of the axis is also fixed so the amount of extraction has to be in this case also fix but that is unfortunately not the case.  Therefore as you can see in the Result photo, that the printer prints the skin layer at the beginning in the right way with the right amount of extruded material. At the end of the skin layer, it seemed very bad because of the huge amount of extruded material.
Some Infos about my Printer may be interesting for you :
Nozzle diameter = 2.7 mm
Type of Filament= granules
Diameter of filament = 2.5 mm
Please let me know your suggestions and feedbacks.

The value you see is the cumulative extrusion, in other words the E value in consecutive G-code commands reflect a position of the filament since you started that print.
It is normal that it continuously increases in "absolute" mode.
You should see, at the beginning of the G-code, also a M82 or G90 command, which means "absolute extrusion". And you should avoid having M83 or G91 later in G-code, which would change an interpretation of E values to "relative extrusion".
It is more accurate than relative extrusion (which is the mode you are thinking about).
From your print it looks like the printing bed is not properly tuned, probably too far.
Also, it is difficult to see properly, but it looks like you get bubbles in the second part of the print, which are the reason there is an increase of extrusion: hot air pushes too much filament out.
Maybe your granules are not properly dry. It is difficult to tell you more, pellet extruders are more difficult to tune than filament extruders.

Hallo FarO,
Thank you for your fast answer.
1- "The value you see is the cumulative extrusion"
Can I change the calculation way of E values in the slicer to another form, For Example, Steps/mm or Volume or any other form than cumulative form?
2-"You should see, at the beginning of the Gcode, also a M82 command". Yes, I have at the beginning.

3-"From your print it looks like the printing bed is not properly tuned"
It is properly tuned but I took the printed layers out from my table and the table was still warm 60°. But I was in hurry and didn't want to wait till it will be cold.  That was my mistake.
4-"Maybe your granules are not properly dry."
I agree with you. Yes maybe it was not dry enough but for sure that is not the main reason because the E-Values in Gecode increased linearly.

The reason for the increasing E values is because it provides the cumulative extrusion. You can change the slicer to "relative E values" somewhere, but the firmware does the conversion anyway: it will NOT solve the issue. The print is identical. Cumulative is actually more accurate. Of course the gcode will be easier to read for you, but it will not change the print.

Dear FarO,
Thank you for the information. TheWord CUMULATIVE let me understand the reason for my problem and I will change the way of thinking to solve it.
Thanks again :-)


text:
Standard Settings for AnyCubic Printers?
Does anyone know where I can find a list of recommended settings for different types of resin / print objects for Anycubic printers?
I realize that some of the details will need to be tweaked on a case-by-case basis, but having some general starter information (exposure times for first 6 lines + rest of the print, step settings based on type of print, etc) would certainly be better than starting "cold".
It seems like this information should be gathered somewhere, either for ALL printers, or separate ones for each type of printer.

Times are not dependant on the printer but the resin. Please look at the resin's label, which should have recommended settings.


text:
Ultimaker Cura 4.8 / How to specify bed (Print) Area?
Repetier-host has a setting to specify the "print area". That's roughly the size of the bed.
Note that the printer head can go out of those bounds, in my case my bed is very undersized compared to the printer frame, but this would also be an issue if you had clips or some obstacles in the bed.
Is there a similar setting in Cura where I can specify the "print area"/"bed size"/"margins" to be different from the printer width/depth?
Thanks.
Repetier host settings:

The print area settings would be in the Preferences > Printers. Select the particular printer on the left side pane, then click the "Machine Settings" button.

You will need to set a printing offset (M206) in Marlin: via Start G-code in Cura, or any other suitable way (LCD configuration, configuration files, etc.).

Do you refer to the x(width), y(depth) settings in that image? they set where the printer can move to, but not where the bed is within that coordinate system. If you had a bed of 100mm x 100mm in your same frame... how do you define that there?

I see what you are asking now. I am new to 3D printing, so I would assume that the printer firmware would center the print bed within the frame of the printer. Maybe someone with more experience can shed some more light.

The build area has three dimensions (assuming we all agree to remain with a cuboid, like all slicers do). Then that's all Cura has to know. @rufo is taking advantage of "host" functionality, which (most simply) can be task of firmware like Marlin. So @argaza your answer lacks only one information: setting an printing offset (M206) in Marlin: via Start G-code in Cura, or any other suitable way (LCD configuration, configuration files, etc.).

@octopus8 I have edited to add your suggestion.

I am not sure this is the "official" solution for this, but I was able to define the "disallowed areas" in a custom printer definition.
I created a json file under C:\Program Files\Ultimaker Cura 4.8.0\resources\definitions for the printer, and added the machine_disallowed_areas section to "overrides".
    "machine_disallowed_areas": {
    "default_value": [
        [ [ -97.5, 90],[97.5,90] , [97.5,80] ,[-97.5,80] ] ,
        [ [ -97.5, -57],[97.5,-57] , [97.5,-90] ,[-97.5,-90] ] ,
        [ [ -97.5, -90], [-49.5, -90], [-49.5,90 ] ,[-97.5, 90] ],
        [ [ 64.5, 90],  [64.5, -90], [97.5, -90], [97.5,90 ] ]
        ]
        }

Very interesting. Sound a bit exaggerated to reach the simple goal. If I wanted just a rectangular bed and a space above it, I would go for X,Y,Z dimensions plus home offset. The fewer numbers, the fewer places to make error.


text:
Marlin firmware: move without auto bed leveling
I am working on a filament unload script.
My current problem is that the script always does an auto bed leveling.
I have two scripts to test this issue:
LevelBed.gcode:
G28             ; Auto home
G29             ; Level bed
M500            ; Save to EEPROM

Move.gcode:
M501            ; Restore from EEPROM (try to eliminate bed leveling)
G21             ; Metric values
G90             ; Absolute positioning
G28             ; Auto home
M420 S1         ; Enable bed leveling
G1 X100 Y100 Z100 F1000 ; Move
M400            ; Finish moves

Move.gcode does bed leveling (LevelBed.gcode was executed before).
How is it possible to do a movement from G-code without doing automatic bed leveling?

My intention with Move.gcode:

Do an auto home
Do a move to (100, 100, 100)

The problem:

Bed leveling happens between the Auto Home and the Move. (It probes the bed at 9 points)

I think G28 Auto Home is not required for filament load/unload scripts. My donor scripts for this purpose just contained them.
I made an example script to just rotate the feeder gear and it seems to be working.
ColdExtrude.gcode
G21           ; Metric values
M83           ; Extruder relative mode
M302 S5       ; Allow extrusion above 5C
G1 E-10 F200  ; Pull back filament a bit
M400

So I cannot eliminate doing an Auto Bed Leveling sequence after G28, but maybe I even won't need to do it :)

This question remains relevant. I'll need a good print startup code for the Cura slicer.
It should do something like:

Heat the bed
Auto Home
Auto Bed Level
Auto Home again
Lift up the hot-end a bit and heat it up
Draw a prime line

I am afraid if this problem is not solved, an other Auto Bed Level sequence will be executed between the 2nd Auto Home and the hot-end lift up.

I have recently noticed that the my load/unload scripts based on ColdExtrude.gcode are not always working. Sometimes the printer starts Auto Bed Leveling without knowing the origin position and badly hits the X/Y movement limits.
So I have to do G28 in my filament load/unload scripts, which involves an implicit Auto Bed Leveling sequence, which is time wasting.
So my question is still active:
How to do extrusion from .gcode without implicit execution of an Auto Bed Leveling sequence?

Could you please explain what you want to happen in what order? Probing the bed to determine the level is always done by the G29, so when you call it it will probe the bed, note that a G28 after G29 disables bed leveling. "Follow with M420 S to turn leveling on, or use RESTORE_LEVELING_AFTER_G28 to automatically keep leveling on after G28" (reference).

What I would like to do is an Auto Home, than a Move. The problem is that a bed leveling is happening in between (the bed is probed at 9 points), I don't want this bed leveling and I don't know how to turn it off. I guess RESTORE_LEVELING_AFTER_G28 is a C macro, I'd like to avoid FW recompilation and re-flashing.

If so, that can only be caused by M420 then. But, I've looked into the sources of Marlin 2, but don't see that a level probing is instructed. Have you tried M420 S without the 1?

Hi @Oscar, thanks for your help. It also doesn't work as I expect with M420 S. But as I see I even don't have to solve this problem now to move forward.

Please delete the question if it is not relevant anymore.

@0scar, I think it is actually good question. It's the leftover, if you check the previous one. I plan to try making similar setup the next weekend, and possibly reproduce this. @Endre would you mind attaching your configuration files? Btw. will it do ABL when you execute G28 X Y? Or if you execute G28 Z separately after then?

Why a second auto home, while a G0 X0 Y0  Z10 would suffice. Homing is an action that should be performed once.

Right. G0 or G1 move is sufficient instead of G28. What I have experienced that my load/unload scripts without G28 are not functioning well sometimes. Sometimes they just start an auto-bed-level, without knowing where the origin is :(. As I see it is too risky to even do just a feeder gear rotation without G28, which involves a bed-level sequence which is sometimes time wasting.

Maybe the board doesn't store the changes, that was pretty common for SKR boards and older Marlin firmware versions, that has been fixed now that the changes can be stored on the SD card of the board. What printer and which firmware is being used?

A second G28 should not be necessary as it can be replaced by a G0 or G1 command, but in the end it should work when RESTORE_LEVELING_AFTER_G28 has been set in firmware weren't it for a bug present in the Marlin 2.0.7.2 and 2.0.x bug-fix release.


text:
Confusing stepper motor behavior
I am trying to control stepper motors for a 3D printer with a RAMPS 1.4 shield connected to an Arduino Mega 2560. I have uploaded Marlin firmware to the board and am currently using Pronterface to test the board's components.
At first, the stepper motors would not move at all when commanded. They would just slightly twitch and them hum, but not rotate. Then, I checked the wiring connections and ensured they were correct, but the problem persisted. Then, I measured the Vref of the stepper drivers, which was 0.79 Volts.
Based on my stepper motors, NEMA 17, the maximum Vref I calculated was 1.36 Volts. After adjusting the potentiometer screw the maximum amount, Vref is 1.19 Volts. Now, the motors WILL rotate when given the 0.1 and 1 command in Pronterface, but return to the twitch and whine behavior when given the 10 or 100 command. What is the cause of this?

Please give us your calculations. There is a lot that you seem to be missing. e.g. the potentiometer doesn't adjust the voltage...

I used the equation Vref = I_max * 8 * R_sense. For my stepper, I_max is 1.7 A, and on the driver, R_sense is 0.1 Ohms.

I_max is 1.7 A at what voltage?

Please iclude these details to question. As well as configured speed and acceleration settings (e.g. output of M503, btw. do you use Marlin?). Does the problem persist when you lower the max speed ?

To user77232, I_max is 1.7A at 12V. To octopus8, I've attached a picture of my Marlin configuration.h file that shows the movement settings I've configured. I'll admit I'm a rookie where all this is concerned, so I'm not exactly sure of what I'm doing with these settings. Thank you!

This could be caused by faulty stepper driver, stepper motor or connection between the stepper driver and the motor or between the stepper driver and the microcontroller. What stepper drivers are you using? I assume you bought all of these parts from China on Aliexpress or eBay or whatever. The connections on these boards can be noisy producing false signals between the microcontroller and the stepper driver.

The described behaviour could happen if, e.g. X_STEP_PIN, X_DIR_PIN and X_ENABLE_PIN are not correctly mapped.
I guess you will find them in pins_RAMPS_144.h. Make sure the correct file is used.


text:
What are my options if I want to install a bed levelling sensor capable of operating at 100 °C?
I currently use a BLtouch 3.1, which is known to stop operating at about 35-40 °C. In fact, when I preheat the bed at 100 °C close to the probe, I sometimes get issues with the pin not retracting correctly.
I would like in the future to enclose and heat the printer chamber, therefore I need a probe capable of operating at higher temperature. My target is 100 °C.
As of now, I'm aware of this solution:
https://hightemp3d.com/products/remoteht-bed-level-probe-3d-printer

This high temperature probe uses a mechanical switch in combination
with a servo motor to probe the bed. The servo motor is outside the
enclosure and retracts the probe pin by pulling on a steel string
inside a spring guide tube.

Microswitches are known to work at high temperatures (that's what the link above uses), but usually need a servo or other mechanism to extend/retract them when needed. Servos typically don't operate at such high temperature, not to mention that they are usually not very accurate.
I saw a Hall filament sensor which uses Hall effect sensors "ss49e" and which could be easily modified to be used as bed probe. Those Hall effect sensors are rated up to 100 °C but at that temperature they have up to 8% shift of the null value and +3/-9% change in sensitivity. The linked project uses two of them in differential mode so the temperature compensation should be much better, but it is not clear how much better. A discussion about it on a Russian forum does not talk about this.
Are there other options operating at 100 °C?

You could put a piezo element into the print head, or alternatively put a strain gauge somewhere. Might that be something you are looking for?

Are they reliable at that temperature? https://www.mdpi.com/2411-5134/3/1/8/pdf

There are various designs which can be made to work at 100 °C.
For example this solenoid probe uses a solenoid to lift a plunger during print, letting it drop during probing. The design uses a rare earth magnet which usually loses strength at 60-80 °C, but there are high temperature versions or a ferrite magnet will do. It also uses an Attiny13, rated 80 °C, but there are higher temperature versions of the chip. It is likely that it would work out of specs at 100 °C too, but it uses an optical endstop, which is the limiting factor with 85 °C typical.
This other design uses a solenoid to push up and down a tactile switch. I see no reason why the solenoid would not work at 100 °C, maybe only the external wires may require replacement to withstand the temperature. There is no electronics limiting the operating temperature.
Other designs with a servo are limited by the temperature range of the servo, which is typically 50-60 °C max. I think they would work fine up to 80 °C since they are not operated continuously and they are loaded with little force, but there is no guarantee.
Another design working perfectly and with an even lower total weight is based on a microswitch and... the user placing the probe in position manually. It can probably be automated by mounting it on a hinge and by using something on the side of the bed to move it in an upright position and in a tilted position, where it could be held by (ferrite) magnets.

Have you considered using or adapting Prusa’s P.I.N.D.A. V2 or SuperPINDA? Seems that within some bounds they’ve solved the temperature compensation issue.
The older P.I.N.D.A. V1 sensor seems to be temperature-sensitive. See more information in P.I.N.D.A./SuperPINDA Sensor testing article of Pruse Knowledge Base.

To answer the question, you should at least state the operating temperatures for such a sensor if you know them. It is similar to other inductive sensors, but they generally have a lower upper limit temperature ( up to 65 °C or so).

"withstanding high temperature" and "temperature compensation" are different things. The latter refers only to the allowable temperature range.


text:
How do filament properties change after printing? (In relation to water absorbtion)
I have PLA and PETG filament.
I hear that 3D filament absorbs water and causes problems when printing but after printing they can be used with water and they are water proof.
So my question is why is it different after printing/what has changed to make it now waterproof?

Is PETG waterproof or does it absorb water?

Is there a limit on how much water PETG can absorb or will it keep going until it splits and turns to mush?

The properties of the maternal are not what changes after you print.  It is how you use the material.  PLA and ABS prints aren't usually subject to +100 °C after printing.
When PLA absorbs moisture it becomes brittle.  PLA filament will break when trying to print.  Your PLA print may be thick enough so that brittle doesn't cause a problem.  However, this can be a problem if you intend your PLA print to be flexible.
The main issue with PETG absorbing moisture is the water changing to steam in the extruder.  PETG becomes soft and will distort with force applied at +100 °C; so generally moisture isn't a issue with PETG prints, due to application.
PLA and PETG absorb moisture, but do not dissolve in water.  Usually what a person means by waterproofing is water won't seep through the layers of the material and leak out of a container.  Note: most glass will absorb small amounts of moisture, but are still waterproof.
If one wants a hermetic seal this is a similar issue.  One person printing hermetic prints said thicker layers make it easier to be hermetic.  Thicker layers also tend to make the printer stronger, but can also give less detail in the print.

Filament that absorbs water prior to printing is subject to boiling temperatures as it passes through the heater block. In extreme cases, steam will be visible and a spitting sound will be heard. The filament will expand as the water exits, causing multiple structural and printing problems.
Once printed, dry filament may absorb water from the atmosphere, but is unlikely to be subject to boiling temperatures.
Waterproofing as a general consideration usually means the ability to keep water out, which is possible if the model is sealed and some printing conditions will adhere each layer well enough to the previous one to provide floating-type waterproofing.
PETG is hydroscopic, which means it will absorb moisture from the air. When printed properly (layer adhesion), the model can be waterproof.
These terms are independent and should not be used interchangeably.

How can it be waterproof and absorb water at the same time?

Also wouldn’t the print split between the layers if it absorbed too much water

If the model is going to absorb enough moisture to split layers, it's been immersed for far too long and under extreme pressure. 3D models are used in radio control boating with no problem. One should seal or otherwise coat a boat to ensure that any gaps are closed.

Would it work as a bath tub plug/a tap attachment/hose nozzle or would that just not be possible with PETG alone

Let's distinguish first three things:

Hygroscopic behavior. The ability of a substance to absorb water. Salt is very Hygroscopic.
Watertight open-shell. A boat is watertight against water from below. But you can pour water into it. Putting a lid on seals such a body somewhat, but the gap allows water to seep in.
Watertight closed-shell. A sphere is water tight against water from all sides. You can not pour water into it, no lid needed.

Now, hygroscopic behavior of filament has can create a huge hazzle when printing: Waterlogged filament creates lots of problems, like spazzing, steam, foaming and others. This can result in a watertight designed print being printed in a gappy fashion or result in lack of strength or many other results.
Watertightness of a shell - open or closed - is primarily a result of the design and well fused lines. In my experience, 2 shells can be watertight, 3 shells upwards is almost always watertight. The main problems are with tops, where I experienced that the minimum tops and bottom layers need to be 4, better even 5. But this is dependant on your print quality - and you might need more or less dependant on your settings.
Under stress, like in an RC boat hitting into waves, the inter-layer bonds are the ones that would break first, breaking the shell likewise. To strengthen both the shell and ensure water tightness, polymer lacquers like acrylic paint, guitar lacquer or even epoxy resin (2-component epoxy resin is a very common glue) have been used successfully to create much strengthened and polished surfaces in RC projects. But you don't need to go through these steps unless you really want to.
After printing, a hygroscopic filament still undergoes the same processes and might undergo strength shifts. Sintered-Nylon for example might become heavier and softer if waterlogged. Such material also can't be frozen, the contained water can destroy the print.
For a bath-plug, I just would print the item as a "solid" body from TPU - TPU is after all the opposite of Hygroscopic: it's Hydrophobic. The next best "easy" material is ABS (as you can seal the surface using a little acetone vapor and can withstand 80 °C water for some time without deforming), then PLA (it's barely hygroscopic, but does not like hot water), and likewise PETG will do for some time, possibly better with the heat. Unless you put it in a freezer, it will keep the water in the tub long enough to take a bath.

But would petg work instead of tpu because I don’t have the money for epoxy or tpu filament. Also apparently tpu is not food grade/food safe so if I use it for a bath plug it can be harmful to the body

I'd prefer PLA for a bathplug (it's less hygroscopic), but PETG will work in a pitch. Just print it as solid as possible

Do you have any suggestions on a food grade sealer for prints because I have no knowledge on what to get. I have heard epoxy but I can find one that is food grade

You said it will keep the water In the tub long enough. Does that mean it will break after taking it out or does that mean it will be mostly fine because it is not used for long periods of time. Because I don’t want a print splitting and jamming something up

as a stiff part, the seal will be less good than a flexible plug. Any material will work well enough if designed well. In regards to Food Grade: No, I have no suggestion for any brand. Also, Food grade certified food safe FDM printing is Hard.


text:
Marlin Z-probe Failure!
I'm using Marlin. Recently my Z-probing randomly doesn't work. Sometimes during Z-Homing it goes up instead of going down to sense the Bed! In  Bed Leveling it goes higher and higher every time. It got frustrating so I ignored Bed-leveling.
Sometimes I get a fine Z-homing but it always starts printing in the air!!! I have no Idea why it happens. All home and axis offsets and setting are fine. I had no problem last time I used my printer.
Why my printer starts printing 5 mm in the air?

Out of the blue? Or, did you change something recently?

My MKS Gen_L V1 and tmc2100 drivers on X,Y axis fried for unknown reason! I replaced them with the same board and LV8729 drivers. then I changed the settings for the new drivers.

I had problems with z-probing before that! I guess this maybe related to what happened to my board.

I found the problem. I'm using an aluminum structure for my gantry. My Chinese power supply was in contact with this structure. There was a current leak from my power supply that was messing with the Z-probe signal.
I detached the power supply, everything's gotten back to normal, except it had my board and TMC2100 drivers fried a week ago.


text:
Why is this outer wall warping?
I am printing a battery compartment cover on my CR-X Pro. Upon removing the cover I see that some of the outer walls are warping. I have tried printing this same piece with and without bed heat, cooling fans, and both via an SD card and OctoPrint. I don't know where else to try and eliminate the problem. The corner of the extended part in the images below did have an adhesion problem but the issue occurs regardless.
Separately if you have any knowledge on why the printer leaves little burs on the print that would be appriciated, I've tried messing with both retraction and z-hopping on that front.
I am currently using Cura for any recommendations of slicing settings.

Tra calibrating E steps and then check first layer height

Hi! For me also this print looks like the printer is non-calibrated, regarding the amount of extrusion and maybe the temperature. Some places look like over-extruded, and the middle infill has holes. Adhesion problem may be caused by unclean bed or other issues, which may be more important.


text:
Minor stringing issue, only happens in helpers & infill areas
I'm having a "minor" stringing issue, where I'm only getting stringing in helpers/support and infill area.
Background: Calibrating printer with 1 roll of PLA. Still getting minimal stringing, but mainly, stringing in helpers/support and infill areas. Tried different temps, but didn't seem to affect this.
Suspect some kind of slicer optimization settings? I mean, it's logical to not care about how pretty supports & infill look.
I would like to understand why this is happening.
Please point me to the right direction.
Thanks in advance.
Example photo: Outside in: brim, shell/wall, support, brim.
From Thingiverse.

Hi! Nice photo, shows a lot, thank you. At the same time you did not give any information of your current configuration. What are your current slicer settings: do you retract at all? Maybe too few? What is your slicer? There are many retraction-related detailed settings in Cura's section "Travel". What did you try? How much did you lower a temeparture? I have PLA which starts melting slowly at 150 °C. Maybe yours is still too hot? Did you even went below minum level (of slight underextrusion)? When you are leaving readers with hundreds of questions, there are many possible answers.

Thanks. I'll check out: many retraction-related detailed settings in Cura's section "Travel"

If the problem occurs in or immediately following printing of support material, it's probably Cura's Limit Support Retractions option, which defaults to on. This is probably the single worst default Cura has, and it causes all sorts of problems - surface defects, difficult-to-remove support, underextrusion, etc. - due to basically skipping all (necessary!) retractions while printing support.
If the problem occurs in infill area, it's probably Combing. Lowering Max Comb Distance With No Retract to something very low (150-200% of the nozzle width, so like 0.8 mm) should make this problem go away, but at some nontrivial cost to print time. If you make this change, you almost surely need Zig-zaggify Infill enabled if you want to avoid very high cost to print time and excessive retractions.

It would be great if you could add an image showing the stringing that occurs on the filled and helper/support part of the print. It's quite difficult to visualise what is happening/your problem.
I would assume that the density/fill of the print will be different for infill versus helper/support parts of the print. As a result, there are more gaps in the helper/support parts and stringing can more easily occur between them.
Have you tried enabling z-hop/retraction to prevent further stringing?


text:
Ender 3 v2 hot end fans (nozzle and part cooling fan) not working
Last night I finished printing all the parts for my HeroMe Gen 5 hot end. I decided to just chop off the existing fans and then solder on a JST XH connector to make it easy to change the fans over in the future.
I did the part cooling (adjustable) fan first and it was working great. I then did the same for the nozzle/heatsink fan, but when I plugged in the fan it just didn't work. I checked the voltages on the JST connector pins and they were reading 22.8 V. I thought that was odd, because I'm sure when I checked at the board before I installed the fan it was showing 24 V.
I tested the part cooling fan again and it now no longer works. I checked it's pins on the JST connector and the board and it to is showing 22.8 V.
I checked both adjustable fan sockets on the board and both are showing 22.8 V when the fan is set to 100 %.
When I check the voltage on the fans themselves they're showing 1.5 V between the ground and positive. I didn't read this value when it was working, so I'm sure if this is expected. And unless I have a batch of 6 dodgy fans, I think it must be the printer.
Without trying to lead the answer as to why, I have a feeling at some point during the nozzle fan install, after I tested the fan was working by putting the wires straight into the fans JST connector, i.e. before I soldered, I may have touched the 24 V ground and positive wires together when the printer was on, but I'm not certain. But wouldn't this have tripped a fuse and then be showing 0 V?
What have I broken or how can I work out what's broken?
Please note, I don't understand electronics very well, but I checked the continuity of the PSU input + to the Fan + for the nozzle fan. It shows as 1, which I believe means no connection. If I connect - to -, then it reads 0 which I think means good.
So I guess I've burnt a connection between the Fan + and the PSU + if I understand that right?

If the connector gets 22.8 V, you have lost a little along the way, that is possible, Are you sure you haven't interchanged (+) and (-), if so the fan will not work and can be damaged. Considering you measure a voltage, the fan should be able to run.

I have tried both polarities and the fans were working fine. Also, when I put a load on the wire it drops to 0-1.5V

Then you have damaged the fans or the PSU. If the fans aren't working, then your hotend or bed won't heat either if the PSU is broken. I've had this happen also once, my PSU failed due to a short circuit. So, can you connect a heater element directly to the PSU? If that doesn't heat up the PSU is broken. Or, if that works, something on the controller board has broken. Note that this fan is constantly on, so you could power it from the PSU directly.

The bed heats up fine and I have a solid 24V from the PSU. I think I've fried the lane/fuse between between the fan output and the PSU input. And I'm guessing that fuse sits between both the constant fan and the adjustable fan. New motherboard arriving tomorrow.

Sounds like this is similar to what's happened to me: https://www.reddit.com/r/3Dprinting/comments/kab17q/need_help_ender_3_pro_fans_not_working/gf9e8na?utm_source=share&utm_medium=web2x&context=3 I could try putting a wire in, but that would bypass the fuse I'm guessing. For the sake of £30, I'd rather have a safe board.


text:
How to accurately print a thin piece with a hole pattern
I'm quite new to 3D-printing. I need to build a curved piece with a hole pattern and I was wondering whether it was possible to print such a hole pattern accurately, with such a thin (3 mm) thickness of the piece. In the past, when I tried printing thinner pieces with holes, the piece warped and holes were not printed properly. Therefore is there any changes to the model I need to make to improve the quality of the print, or add any supports?
I am using an Ender 3 Pro, with PLA.

People like PLA for dimensional accuracy.  It's disadvantage is it becomes brittle, which can be an issue especially with thin prints if the application tends to bend it (applying force).  Working with settings and with a 0.4 mm nozzle, typical for most printers using PLA, you can print walls as thin as 1 mm, but strength may be an issue.
To prevent warping, you need the PLA to stick to the build surface; something like a PEI tape surface. glue stick, or hair spray.  Slowing down the print speed decreases warping.  With a heated bed, you can print you first layer hotter (e.g. 75 °C) so that the PLA sticks well to the build surface, then use a lower temperature for subsequent layers (e.g. 60-65 °C) so that the PLA is stiffer.  A level bed is also important to prevent warping.  Using a brim also helps prevent warping.
Your print orientation is good for the print accuracy of your curved ends, but not as good for keeping a perfect circular shape of your holes.  However, the smaller the holes the better the circular shape as long as they are large enough to print with your printer.

Use the smallest nozzle possible to get better rounded edges on holes.
Slow down the print speed to increase accuracy and prevent errors.
Print it face down against the bed if possible to reduce support requirements for overhangs and increase hole quality.
Clean the bed well, increase bed temperature, stick glue, enable brim, or add 'mouse ears' to prevent warping.
Make sure the bed is levelled properly to prevent warping and increase finish surface quality.
Use a 'stringing tester' to find the best temperature to print at so that you can prevent stringing between holes.
Enable z-hop retraction to prevent stringing and errors.
You can bore through the holes with a drill to clean them flush.

One more thing: and goes a bit without saying, make sure that the filament stays the same temperature from start to finish of printing. For instance, a cold garage that gets hot during daytime is not good. I found that the 1st layer is good, full and solid, but that my last 4 layers are way too thin -- creating more of a see through mesh.

That depends on the printer, the print material and your experience level (and maybe print orientation, but that depends on the load case), but, the depicted part should be printed very well at a thickness of 3 mm (that is not really "thin"). PLA will be easier than higher temp materials like ABS and PETG, but not impossible.


text:
Do printer controllers take inertia into account when interpreting G-code into movement instructions?
I've never built a 3D printer before, but I understand dynamical systems and control theory, and I imagine a lot of the distortion/inaccuracy that happens during the FDM process (especially at high speeds) is due to position inaccuracies because of inertia. For example, a heavy print head moving fast enough might overshoot its position target if the system expects it to stop instantly. Does any existing 3D printer controller software try to measure the mass of the print head/movement assembly and then use that to come up with better movement instructions?
To speculate a bit: This additional accuracy might not be useful with many normal stepper-driven printers because they lack resolution and/or control, but I think in some cases it would. I imagine with enough positional accuracy and acceleration control you could model the print head position with a dynamical system and get extremely precise movement right up to the mechanical limits of the system.
Am I wrong that inertia has a large effect? Would this be theoretically impossible for some reason I'm not thinking about?

What printers usually end up with is oscillation when turning corners, so that you will see a wave pattern in prints.

For what it's worth, most printers try very hard to avoid having a "heavy print head", but a moving bed (which many do have) ends up being the same thing. CoreXY and delta machines, however, tend to have no fast-moving parts with significant mass.

Stepper motors "want" to keep their position as they are told to by the firmware, therefore they do whatever it's needed (accelerate and brake) to follow the orders they received.
The question is: is the firmware telling them to move/accelerate/brake faster/harder than they can? if yes, they won't keep up (because of inertia and much more) so you'll see artefacts. If not, they will follow the orders exactly (well, mostly, but it's not important now) and no distortions will be there.
Whether they keep up or not is up to you: you are setting their power (the motor current) and you are telling them how fast/hard to move/accelerate/brake. If you push them too much, the motors will try... and fail to keep up. That's why you have max acceleration, speed, jerk in the firmware and in the slicer.
Additional info: even if the motors keep the position as they are told to, the motors have no knowledge of anything past them: belts, leadscrews, and so on.
Imagine the X axis belt (which connects the motor to the printing head) is made of an elastic band: the motors will be where you order them to be, but the inertia of the printing head will stretch the elastic band and the printing head will NOT be where you expect it to be.
It is again up to you to reduce the max acceleration to a value below what the motors could be able to do, if needed. Motors are often not pushed to their limit also because other factors cause issues before the motors fail.
How to know how much to limit the acceleration and speed? the only way is trying.

The rubberband example actually uses inertia in the non-physical way. The rubber band acts as a spring, so any happening is delayed by a factor of the length of the band and the spring coefficient of it

@Trish it may not be completely rigorous, but I think it answers the question in a quite clear way for people not particularly versed in physics :)

Inertia is not what you think it is
Inertia is technically speaking something that in physics is not what you commonly understand under the term. There is no mysterious "Inertia Force" that slows your actions on a setup. Inertia is not what makes you overshoot a print's endpoint.
Inertia is just the principle why you need to break (negative acceleration) before you reach the endpoint of travel and how much you need to and how fast you can step on the break (jerk).
Recap on Newtonian Motion Mechanics
Inertia is the fact that an item that is under movement and does not get acted upon just does nothing, as Newton's first law prescribes. That your applied force only takes effect on a body over time (the common thing understood under inertia) follows directly from the description of the 2nd Law of Newtonian Mechanics:

Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum
lineam rectam qua vis illa imprimitur.

The alteration of motion is ever proportional to the motive force impressed; and is
made in the direction of the right line in which that force is impressed.

$$F=\frac{d}{dt} (m\times v)$$
The Force onto a body is the change over time($\frac{d}{dt}$) of mass and velocity. In the classics physical case with constant mass, this becomes the much more well known formulation: $$F=m\times \frac{d}{dt} v=m\times\dot v=m\times a$$
Now, we have an item of known mass and a known initial velocity $v_0$. The speed of the item at any moment is thus $$v(t)=v_0-(\frac F m\times t)=v_0-(a\times t)$$
Momentum
Another thing that is often mingled into the therm inertia is actually the momentum of an item. It follows directly from the newton text: the force is proportional to the change of momentum. $$F=\frac{d}{dt}p=\frac{d}{dt}(m\times v)$$$$p=m\times v$$ Momentum can be best understood as an amount of "energy" (it's not, energy is $E_\text{kin}=m\times v^2$)
The principle of inertia is looked at in the slicer
Most slicers set a maximum acceleration for machines and jerk for machines. These values are decided based on the mass of the printhead: Maximum acceleration times the mass of the printhead is the maximum force. Jerk is the derivate of acceleration over time, so it flows into motion mechanics back as $F(t)=m\times j\times t$. So choosing the Jerk and Max-acceleration does include information about the mass of the printhead, without expressly stating it.
One could write the code in reverse and decide on a maximum allowable Force and include the mass of the printhead, resulting in automatically calculated settings for the maximum allowable 2nd and 3rd derivate of the position, acceleration and jerk.
Printer control boards just throttle
Likewise, printer control boards just throttle acceleration and jerk to a value in their firmware. They don't need to know the mass of the printhead if they put maximum values on both, and those account for the behavior wanted.
There is no accuracy to be gained from doing the calculation the other way around in the firmware: Even knowing the mass and some allowable force would not get you any way closer but spend quite some code on a function that is called for a few static values.
What is more influential, the acceleration and jerk settings are very heavily influenced by how your printhead is mounted, not just the mass of the printhead: Do you have a feather mounted on linear rails and moved with a screw? Or do we have a kilo chunk of lead mounted on a cross of 2 mm aluminium rod rails, pulled with a super soft rubber twist?

I think I was using inertia properly. I mean, for example, that once the print head is moving it might overshoot its position objective. The Jerk settings do speak to what I'm talking about. Do they just have a flat estimate of the mass?

@ZECTBynmo "Overshooting" is exactly why I said you understand inertia wrong. You need to just reduce the max acceleration and jerk.

Thanks for the responses. I understand the comments about jerk and max acceleration - although my question about how those settings are setup is not answered. Are there any controllers that dynamically measure mass constants for those values? Also, your comments about inertia don't make sense to me - those jerk settings are specifically to correct for the effects of inertia I'm talking about, no?

Anyway thanks for pointing me in the direction of jerk/acceleration limits. I'll see if I can find projects that dig into setting those dynamically.

@ZECTBynmo let me put something straight: to calculate all those values (e.g. deforming of rails etc.) influencing the actual movement path in real time, your machine would need to model the behavior of the whole machine in every moment. That is a task for a supercomputer. I am not aware of any commonly used firmware that even would allow to set a mas value for the printhead, let alone use that to calculate anything.

The jerk and acceleration limits are there to limit overshooting, yes. By setting those, you effectively make sure that the changes in printhead direction come more gradual and the printhead has to break further from the corner.

Okay, I think we're talking past each other. Thanks for the help!