text:
Is E-axis steps/mm resolution limiting factor in print quality?
I've been noticing in some of my linear advance test towers that the (very minor/fine) ripple pattern in walls varies with the K factor, which made me think that it isn't coming from any vibration in the print head motion, but rather from quantization of the extruder into discrete steps (i.e. wall gets slightly thicker right after a step, thins out afterwards until the next step, repeats).
By my math, with 1.75 mm filament and 93 steps per mm on my printer (Ender 3), each step is 0.02585 mm³ of material. At 0.4 mm line width and 0.2 mm layer height, there's 0.08 mm³ of material per linear mm, so that should give roughly 3 extruder steps per linear mm. That seems comparable to the ripple rate I see, although not exact; I suppose it varies somewhat because of linear advance and perhaps other reasons.
Anyway, to get to the question, am I missing something or is this the limiting factor in print resolution on my printer? It seems like isolated small details (smaller than 1/3 mm) won't be extrudable at all except as ooze, or over-extruded if they happen to cross a step threshold, and like things would be far worse if I tried to use a smaller nozzle and thinner layers. It seems that, ideally, you'd want the E-axis steps per mm to be sufficiently high that quantization is a non-issue (i.e. +-1 step is small relative error) for extrusions corresponding to a single X- or Y-axis microstep.

This is interesting - it means that using a better resolution stepper will have effects here. Moving from i.e. 200 to400 steps / revolution (0.9 degree steppers ARE available) doubles it, as does a Bondtech BMG (3:1 gearbox).

Your calculations about the theoretical extruder resolution are spot on. I did a similar calculation to evaluate which extruder to use with different hot ends, I paste the results. The dark cells are the input cells, the rest is calculated. You can see that for some lines I entered directly the mm/microstep value, since I wanted not a theoretical but practical result for my printer (3 mm filament) or for known extruders (BMG).

Concerning the question, the resolution of the extruder matters, but it's a bit complicated to estimate exactly how much.
In general, this are the factors I can think about.
A poor resolution may not impact straight lines much, since the rotation of the extruder is continuous and the extruder is unlikely to snap exactly to the desired microstep position as soon as you ask for it: it's likely a bit behind all the time, that's how torque is obtained (more or less).
The issue may become smaller with drivers which interpolate microsteps up to 256x.
However, whenever there is a change of flow rate, poor resolution implies that you cannot control the exact location/moment where/when the flow changes. This matters mostly at the end and at the beginning or retractions/re-retractions. Maybe you get more ooze?
However, the extruder resolution is not, in practice, as good as you calculated. In fact, as we know, microsteps reduce the incremental torque to very low values. The extruder is a motor which requires quite a lot of torque, since pushing the filament is quite hard, and it is unlikely that you can achieve all the time the 16x microstep accuracy you assumed. For example, due to friction in Bowden, hot end, ... the filament (= the motor shaft) may at a certain point stay "back" more than average. This would cause an increase of effective torque, pushing the filament a bit faster, which would it bring to in sync or so with the desired position, but at that point it would slow down, and so on. Depending on the average speed, this oscillation may be dampened (and then no rippling is visible) or may oscillate constantly, and you see ripples also along straight lines.
This is why I placed the usteps column in my calculations: it is meant to calculate a more realistic resolution assuming that no accurate microstepping is achieved. I assumed higher achievable microsteps the lower the load on the motor is (this means gears, or thinner filament).
Having a high resolution to begin with clearly helps to reduce this issue. You can try to increase the current to the max your drivers and motor and cooling allow, and see if the ripples change. I think it will be reduced.
You may also try to build the Orbiter extruder (linked also in the table) and see how it goes.

Is it still possible to get 3 mm filament? I thought I was one of the last few using 2.85 mm filament... :-) (2.85 mm is still easy to get due to being the norm for Ultimaker printers)

@0scar I have a spool of 3 mm nylon trimmer line and I had a spool of PLA, both bought back in 2014 I think. PLA is gone, it was cracking by itself. Nylon is there, I'm waiting to try it with an enclosed printer (my HEVO is almost ready). In general no, it's not available anymore. The PETG I bought to print the HEVO is 2.85 mm.

Short answer
Usually no.
Long answer
There are several big factors that limit how small things you can print. The bigger ones are pretty much:

Positional accuracy and settings (limited by steps/mm in X, Y, Z)
Nozzle diameter

Now, why don't you need to care about steps/mm on the extruder that muchin the grand scale compared to the positional accuracy? Well, we have 1.8° per step, from which, with the diameter of the gear, 11mm, we get 0,1778 mm of filament extrusion or 0.428 mm³ of extruded plastic per full 1.8° step - which clearly is unsuitable to printing at all. But with the 16 micro-steps the shorter movements are possible and a single micro-step extrusion is in the area you calculated - I got to 0,0267 mm³, possibly the result of different rounding between us. With an assumed effective gear diameter of 11mm (usually the effective gear diameter is a little smaller, thus the 93 steps) we come to about 89.9 steps per mm of filament, which corresponds to about 2.4 mm³ of extruded plastic, or about 30 mm of line (with your given parameters), bringing us to about 3 microsteps per millimeter of line on the tray. So far, your math checks out. But that usually shouldn't be too much a limiting factor. We know from your given settings, that the Configuration.h will look like this, putting the microsteps into the steps/mm:
/**
* Default Axis Steps Per Unit (steps/mm)
* Override with M92
*                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 93 }

As you don't have a micro-stepping driver, this part in Configuration_adv.h is non-functional:
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]

With the proposed 0.4 mm/0.2 mm line, we are still somewhat on the good side, allowing us about 1/3rd of a millimeter as the shortest line printable as a single step extrusion. That's a consistent with printing a simple, circular dot being printable with these settings - 0.4 > 1/3.
But once you get to smaller nozzle diameters, the limitation gets more noticeable: at a 0.2 mm nozzle and 0.22 mm line at 0.1 mm height, that's a 0.022 mm² crosssection, so the 1-step extrusion is equivalent to a full millimeter of line! That's much more bothersome in theory.
However, I haven't been able to witness the inability of showing that limit of lacking extrusion yet on my TronXY-X1 with a 0.2 mm nozzle - the steps/mm in it are also about 90-100 last I set them. The TronXY uses a very similar (virtually identical) extruder setup as the Ender 3, and it achieved printed lines of about 0.3 mm length at 0.1 mm layer height somewhat reliable, but the retraction made huge issues, which might also mask the problem.
I believe that it needs these smaller nozzles to amplify the problems to make them noticeable. It also should become more noticeable if you'd use 2.85 mm or 3 mm filament.
Ways to improve resolution
However, if printing with smaller nozzles, it might be a good idea to think about how one could improve the accuracy of the extruder system.
The most-easy way would be to alter the extruder and swap the gear to one of a smaller effective diameter - That way a single step accounts to less extrusion, which means, in turn, a higher number of steps/mm, and thus allowing for shorter extrusions that can be still achieved.
Next one might think about getting a different motor/driver setup that might have either more microsteps or generally a smaller step size.
Quadrupling the effective (micros)steps/mm would allow us to print about a 0.25 mm line on the 0.22 mm nozzle I proposed, being pretty much a spot - if it wouldn't be partially masked in other issues as I experience.

Note that after some slicer and firmware fixes, I do have positional control down to single microsteps - see Does this microstepping test result indicate need for TL smoothers?.

Revision process moved this to chat.

@R..GitHubSTOPHELPINGICE is right. Marlin uses "steps/mm" in the meaning of "microsteps per mm". How would Marlin even KNOW what the microstep settings are, for example in older drivers which do not expose said setting in software? This answer, independently from the final conclusion, is factually wrong where it calculates "0.0085 mm³/micro-step". The original question has it right, it's 0.02585 mm³/microstep. I haven't downvoted it (yet), but please correct it.

@Trish also you quoted a configuration parameter which REQUIRES digital micro-stepping pins. No common driver has them. See also https://marlinfw.org/docs/gcode/M351.html

@FarO Took my time, redid the math, fixed some of the conclusions, someone should clean up here...

authors: مظفر الشوبكي


text:
Attach LCD to VAT
I began build LCD printer and I want make some modifications.
What if I will place LCD below VAT? Will the display break when printing? what are the risks?
I seen a lot of printers and all of them use PP material for VAT bottom and attach with a lot of screws. I want make more simple VAT-LCD constructions and I think this construction transmis UV light better

The way you're thinking about using the LCD directly on the bottom of resin vat and cure the resin is a good idea, but there are several problems that I will focus on the main. as mentioned by @Trish some issues might occur to the LCD and u need to replace it. Except that you need to clean the vat some times after print and with LCD attach to it, you know...
But the main reason is that when the resin is cured in the bottom layer can stick to the bottom of the vat so the printers have a solution to raise the bed and again lower it.
The FEP (Fluorinated Ethylene Propylene) membrane is an elastic material, so when the bed raises the FEP film get raise a little sticking to the part and detaching. so we cant have this situation with the lcd because the lcd is a solid film that bends just a little.
I'm also working on an LCD resin base printer so please post questions if you have any other questions.

SLA printers have basically 2 expendable parts:

The UV light source is only good for so long before it degrades and breaks.
The LCD will become blind over time.
The vat's lower surface - the build area - will get eaten by the resin over time.

Because of this, all commercial SLA printers come with a special film at the vat's bottom surface, a sacrificial surface and, as part of the boundary of the vat, also acts to protects the LCD from the resin.

source: Stack Exchange

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

sort: votes


text:
PLA from the top of the hotend
My custom printer is affected by a strange problem. After 30/40 min printing without any problem, PLA starts blobbing from the top of the hotend.

What does it means? Where to start checking?
It is possible that there is a little space between nozzle screw and transition screw inside the hotend?

I've had the same problem, and the answer you selected fixed it.

This is a typical sign, that your hotend wasn't tightened properly. Carefully heat it up and remove all the plastic you can while removing the heatbreak - that's what you call transition screw.
After cleaning, screw in the heatbreak and the nozzle. The nozzle should butt agains the heatbreak, but have at least 2 threads to the heating block. Reassamble the full hotend now by adding the coolend.
Finally heat the hotend on the full assembly to about 240 °C and tighten the nozzle against the heatbreak again. This is called hot-tightening. You can add the PTFE liner after the hot tightening.

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


text:
Changing final build plate position
I have a Monoprice Maker Select V2 (Wanhao Duplicator i3) on which I've installed a recent version of Marlin.
The home position is at the front-left of the build plate. At the end of the print, the print head returns to this position by moving the build plate back.
Can I modify this to return the print head to the back-left corner, so that the print ends with the part more easily accessible?
Here is the default G-code for this printer in Ultimaker Cura:
 M104 S0 ;extruder heater off
 G91 ;relative positioning
 G1 E-1 F300  ;retract the filament a bit before lifting the nozzle, to release some of the pressure
 G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more
 G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
 M84 ;steppers off
 G90 ;absolute positioning

I believe I would want to do:
 M104 S0 ;extruder heater off
 G91 ;relative positioning
 G1 E-1 F300  ;retract the filament a bit before lifting the nozzle, to release some of the pressure
 G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more
 G90 ;absolute positioning
 G0 X0 Y200 ; move to back-left corner
 M84 ;steppers off

Here, Y200 is the depth of my build plate.
This works, but the movement is very slow.

That approach is correct. You'd normally still use G1 commands for non-extrusion moves these days. Use Fxxx to provide a speed for that last movement, for example F6000 for 100 mm/s - it's unfortunately still in mm/min.


text:
Do spare throats or a heater blocks ever break?
A question to those who have a 3D printer. Have you ever needed a spare throat or a heater block? Do they ever break?
I just bought some spare parts: heaters, thermistors, nozzles... However, I am not sure if buying throats and heater blocks make any sense.

I've destroyed a heater block because of a seized up stainless steel nozzle once. That ruined the threads for the heat break / nozzle. Haven't needed any spare throats yet.

Short answer
Yes
Long answer
Heater bocks
A heater block is destroyed if one of the following happens

Threads stripped
Bent or otherwise deformed
stripped grub screw

All of these can happen by handling the block with too much force when securing nozzles, thermosensors or heater cartridges.
Throats
Throats can be destroyed, especially e3D v6 throats with their neck down on the center can be simply turned and broken in two. Lined throats can be heated too much and the liner destroyed, which not always can be replaced, mandating a spare part. And you can strip the threads.
Another chance to damage the throat is by using very hard material nozzles - stainless steel comes to mind. Such a nozzle would not deform itself like brass when tightened against the throat and might lead to damage to the end of the throat if exchanged several times.
Conclusion
If you run several printers or change nozzles regularly for whatever reason, it is a very good idea to have at least a complete set of spare parts on hand to fix problems that might occur during work on the printer. I have a fully assembled spare hotend waiting for its day to shine in case my current one breaks...

Just one! ;-) I have spares to build multiple hotends :-) Apart from the Ultimaker 3, those spares cost 150 Euro each...

well, I only run 2 printers, and the assembled hotend is an e3D v6... and I have the spares from the old tronXY hotend (that runs on an e3d Light6), which is pretty much the one in the Ender-3, so technically I have one per printer...

Parts don't have to break or bent, they may become unusable by other issues as well!
In addition to the answer of @Trish, if you clog your hotend, or the hotend/heater block/nozzle gets buried deep into solidified filament (see image below), it might be much easier just to replace the parts rather than salvaging the parts (or you can salvage the parts later, in the meantime you'll be up and running).
E.g. recover from this:


text:
Object is supposed to be symmetrical, but the bottom edge is flattened, why?
The object is supposed to be symmetrical, but it printed with a flat edge. Cura 4.5 even generated support material to make it round, but then it came out like this:

I tried printing it in the pegs straight down orientation, which was fine except it adds a crazy amount of support material.  So much it becomes hard to remove.
How can I prevent Cura from flatting the edge?  Or at least doing it much less than that.

I seen a overhang setting at 51 is that related?
The flat edge on the bottom was against the glass.

Can you add an image of the STL or link to the file? We have no clue how it is supposed to look. The image you posted of the print looks as if it is overextruded and printed too hot. The question also lacks printer and printer settings and material.

What other print settings did you have? I see a HUGE amount of ghosting there too (lower print speed for the outermost wall). A Snapshot of where you position it on the printer also migh thelp

Hm, now we know how it was supposed to look, but how did you pose it in Cura?

@Trish The edge that is flat that isn't supposed to be was against the print bed.

A guess: occasionally Cura goes crazy and leaves part of the design below bed level.  Try quitting & restarting Cura,  re-slice.  Then take a close look in "Layer View"

@CarlWitthoft I have tried that and everything "looks" correct, but isn't.

Not sure if this is the cause, but you have severe underextrusion and bed leveling and/or Z axis mechanical issues.


text:
Overhanging section of part turns into spaghetti
A part I've printed (on a Monoprice Maker Select V2, sliced with Cura) has a small peg on it, which is an unsupported overhanging section of the model.
The first few layers of the peg end up a mess of PLA spaghetti. Here I've rotated the part to get a better shot, normally it would be printed on its side.

I've done test prints that contain L-shaped overhangs and they worked ok, so I'm not sure what's broken about this one.
One guess I have is that because the peg is relatively low to the heated build plate, the material isn't cooling as quickly, and it needs to be more rigid in order for subsequent layers to print.
I also tried with supports but I found it too hard to remove.

There are a lot of options in Cura to adjust the density and gapping of supports.  Take a look at those.

Unsupported parts need to be printed with support. If your supports are too hard to remove, try the Tree Support setting and make sure that your support structure is set up with a gap to the actual print. As we don't know which slier you use, I can't go into more details here.

You could try printing slower and/or increase cooling ( possibly even a cooler bed temp) if you absolutely want to avoid supports, or just use supports with a support interface and tweak support distance.


text:
Anet A8 Marlin BLtouch moves up instead of down during homing
I have a previously working Anet A8 that I just flashed to Marlin 1.1.9 (bugfix) and installed a real BLtouch sensor. I followed setup instructions and believe my wiring is correct. When I try to do a G28, the extruder moves to the front left corner properly, then moved to center the BLtouch over the bed. Then, it moves up instead of down, the BLtouch drops the probe, the extruder moves up again, the BLtouch drops the probe again and the extruder moves up again until the carriage is near the top. Using Pronterface I can move the carriage back down, but have to use M211 S0 to let me get it close to the table. X, Y and Z move properly in Pronterface. I have changed the relevant settings in Marlin and recompiled with no success. The BLtouch does it's self test correctly and I can control the probe with commands.

Hi, welcome to 3DPrinting.SE! Could it be that Z_MIN_PROBE_ENDSTOP_INVERTING has an incorrect value? It should be false.

I tried changing that with no effect. One setting I would like to try but can't is #define Z_HOME_DIR -1 changed to 1.  Marlin won't compile and gives lots of errors that I haven't been able to resolve.

Z_HOME_DIR should be -1. Please add the instructions you followed, the BLTouch is a little more difficult to wire to the Anet board (using a pin from the LCD cable). For that reason I used an inductive sensor on my Anet A8.

I replugged the z stop microswitch and disabled the BLtouch features and bed leveling in Marlin 1.1.9bf. The A8 functions perfectly with the manual z switch. I am able to print just fine. I then plugged in the BLtouch in place of the z stop microswitch, enabled the BLtouch features per the youtube https://www.youtube.com/watch?v=WWDkZtWwd6I&list=PLEJK8F0g9KPdtsSASKGWrmCzZGEvxRDM0&index=12&t=141s  The result is the same as before, with a G28 command, the nozzle homes to the center of the bed, but the carriage goes up instead of down. The BLtouch cycles the pin twice and the carriage moves up.

Somehow in the homing sequence, the z servo is getting the wrong command. The z works correctly with Pronterface or when I use the mechanical z stop and disable BLtouch. It's got to be a setting or code issue with the BLtouch homing sequence.

SOLVED -- The problem turned out to be that the BLtouch was set up for 3.3 V and my Anet board is 5 V. The docs were not clear on what the BL defaulted to and I mistakenly thought 5 V. After I did a M280 P0 S140 command, the carriage would home properly with G28. Why it was going up instead of down was a Red Herring. I changed the settings in configuration_adv.h to force 5 V and did the EEPROM one time write. Now the A8 works correctly. Thank you for your help Oscar.


text:
Bizarre Underextrusion Issue
Printer: SecKit Go w/ BMG/v6 and SKR v1.3/TMC2130 Drivers
Slicer: Simplify3d or Cura (problem is much worse in Cura?)
Long story short - after getting this printer running, I have noticed that it will underextrude ONLY on corners on an internal perimeter specifically once we're above bottom layers - and nowhere else. See below:

E-Steps have been calibrated, extrusion multiplier has been calibrated (single perimeters are 0.48 mm), linear advance has been calibrated, but here it gets weird. Anything resembling a 'standard' value (suggested between 1-2) results in MASSIVE underextrusion after the speed change. I was able to get a good looking line using the linear advance test with a value of 0.15 (which seems very low).

Retraction (1 mm @ 30 mm/s), junction deviation (0.02) and all other settings are off the factory Simplify3d profile. Turning linear advance off makes the problem slightly better but doesn't fix it, going to a value of around 1 results in huge underextrusion after any change in direction.
I am absolutely lost as to what to try next.

I read that linear advance or junction deviation settings in firmware clash with Ultimaker Cura as it uses similar techniques in the slicer itself.

From what I can find, the SecKit Go has a direct drive extruder, so 0.15 is a very reasonable linear advance K value. For comparison, I have 0.6 for PLA with a bowden. Values in the range 1-2 are way too high for direct drive except possibly for really soft TPU.
Geometrically localized underextrusion almost always means you have either

loss of material due to oozing elsewhere, or
filament slippage

usually due to whatever's being printed just before the part with the underextrusion. If it's oozing you may need to increase retraction or disable or limit combing in your slicer (to prevent unretracted moves; these can ooze a lot of material when crossing infill areas). If it's slippage it could be from trying to print too fast.

I was under the impression that most direct drive extruders ended up with a value around 1 (the Titan clone I had before was 1.2).Happy to be wrong though. Although I have experience with multiple printers, 32 bit boards and 'fancy' stuff like this are new to me.
You can see in the print that the underextrusion happens on multiple perimeters, when there is zero chance for any oozing to happen. These are printing at 75mm/s which is well within the capable speeds of the SecKit (many are printing +100mm/s), and even if I slow down further to ~50mm/s I get the same issue in the same places

Are you aware that the units of K changed between Linear Advance 1.0 (older Marlin) and 1.5 (Marlin 2.0.x and 1.1.9)? See https://marlinfw.org/docs/features/lin_advance.html

That might be why I thought the figure was nonsense, but I now don't believe it's relevant to the issue I am having. Increasing it makes considerably more underextrusion in -different- places, but decreasing or turning it off doesn't improve the underextrusion on corners of inside-perimeters only.

I switched over to PrusaSlic3r and 99% of the issue went away even with copying settings straight over.
Maybe Cura/S3D handle internal walls differently?

Thanks for posting an answer to your question! Please accept after 48 hours.


text:
Uneven walls, not solid
I'm using Cura 4.5.0 and an Ultimaker S5
The walls in my model are coming out not solid. I don't have a clue why.

When I open the STL in Sketchup it has all these weird lines. I don't know how they got there and I don't know how to get rid of them.

The lines are not a problem, they come from being STL - which is all triangles.

What is the width of the walls, what is your nozzle, what is your line widths?

Nozzle 0.4, walls 1.75mm. Running Cura on recommended 0.2 line

What's the retraction distance?

Triangles?!
First of all, the triangles on the STL are not a problem - they are just how STL is defined: a mesh of triangles. you can't save anything but triangles in STL, so let's not bother with that item but the actual elephant in the room: the print.
Underextrusion
Step 1: proper settings
It shows signs of underextrusion. And I can exactly tell you where part of it comes from: You have set the line width to below the nozzle width. However, the line width should be best 10% larger than the nozzle. All of these lines should read between 0.4 to (as I have set it) 0.45 mm:

With a 10% wider line planned into, it is not necessary to have an extra initial layer line width of more than 100 %, but it can help in adhesion.
Step 2: Other issues?!
There might be other issues at work, though they will show up after setting the width much better. The following two strike me as most likely if the problem persists with the now considerable increased flow:

The retraction and/or retraction speed might be set too high.
mechanical issues of the extruder system, for example, worn gears or uneven pressure against the gear due to damaged parts.

I've done the settings by your recomendation but when i slice it it still shows the inproper infill of the walls –
But when i increase the layer hight to 0.25mm and slice it it looks fine.
Something wierd is going on. Because when I then change it back to 0.2mm layer hight it looks fine. Must cache something. So it seems that your setting will work.
Many thanks!

@Tobbe note that you can set "Initial layer width" to 100% too.

This looks more like localized underextrusion due to loss of material. Line widths down to 0.35 or even 0.3 are unconventional but should be okay. I've even printed 0.2 mm lines using a standard 0.4 mm nozzle and didn't have any problems with extrusion consistency.

@R..GitHubSTOPHELPINGICE Possibly... Retraction!

@Trish: Yeah that would be my first guess, but you can also end up with loss of material from combing over infill, or can have underextrusion due to coasting or other weird slicer options.

The 0.35 mm is the default width for Ultimaker machines and works perfectly, I've printed kilometers of filament with the default settings without a problem.

Maybe drop the layer height to 0.18 .  I've seen claims that multiples of the default 0.06 work better.  Or maybe not  :-)


text:
PID Autotuning not working – large initial overshoot, no oscillations
Using the following code to autotune the PID:
M303 E0 S200 C10

Which is setting my tuning temperature to 200 °C using 10 cycles (though this is irrelevant in this scenario).
The temperature overshoots to 250 °C then decreases until room temperature.
The following error is returned:
PID Autotune failed! Temperature too high

As a test I reset all PID values to zero.
M301 P00.00 I00.00 D00.00

M500

Then set the printer to reach 200 °C
M104 S200

This produced the following graph, where oscillations can be seen.

I could attempt to manual tune the PID from here but I'd rather use the autotune command if possible. Any ideas how to fix this?

No sure what exactly went wrong here, but increasing the PID_FUNCTIONAL_RANGE may help.
The overshoot may also have triggered overtemp protections (HEATER_0_MAXTEMP)

@towe I am receiving the message "PID Autotune failed! Temperature too high" so it looks like you are correct about the overtemp protections. However, I am unsure about how to/what to adjust PID_FUNCTIONAL_RANGE and HEATER_0_MAXTEMP to?

We'd need to know what printer (/ hotend) model you're using to say for sure what HEATER_0_MAXTEMP would be safe.
PID_FUNCTIONAL_RANGE is just a way of ensure fast heat up times. By default, Marlin heats at 100% power until it's at (Target temperature) - (PID_FUNCTIONAL_RANGE) and only then starts to modulate heating power with PWM. I'm not sure whether that applies to PID tuning though.
How long does the hot end take to heat up to the target temperature (with PID = 0)?

@towe The printer I'm using is a Creality Ender 3, the hotend setup is the stock 20W heater cartridge and thermistor, with the Ender 3 having an output power of 24W. The heater block I am using is not stock however, it is a custom one I made myself. With PID=0, the heat up time from room temp to 200°C is approx. 40s

I recently experienced exactly the same problem. For me it was related to an incorrect heater cartridge. I accidentally used a 12 V cartridge in a 24 V powered system.
The heater element got accidentally mixed up between the higher voltage parts container and I forgot to check the resistance. Inserting the correct voltage heater immediately fixed the problem, but it did require a retune of the hotend.

This is the correct solution to my problem, I realised just the other day that I was using a 12V cartridge as opposed to the 24V cartridge I normally use.

It got me puzzled for a while until I decided to measure the resistance of the cartridge... Glad it fixed it for you too!

I guess this should be one of our FAQ ones XD

same problem.Got my e3dv6 for 12V system and forgot it.....


text:
Does it matter what kind of FEP film I use for my SLA printer?
I have a Phrozen Sonic Mini printer, and of course I'm eventually going to need to replace the FEP film on the resin vat. Is there anything I need to take in to consideration when buying some replacement film? Will any legitimate FEP film I find on Amazon work?

Yes*
Any FEP film you find will work fine with any SLA printer you come across. Some may work 'better' or 'worse' depending on the quality of the film, but, for the most part they will all just work.
The caveat is that you must ensure the film is of the correct dimension for the resin vat, If it's too small you may be unable to clamp the sheet in taut enough to get a proper seal.
ASWELL, Some SLA printers do not have a standard 'sheet' style FEP, instead opting for a proprietary/semi-proprietary 'cartridge' style FEP. In these cases, unless you can find some form of 'adapter' or aftermarket upgrade, you will be unable to swap FEP films outside of said cartridges sold by your printer manufacturer.
In the case of your Phrozen Sonic Mini, It looks like it uses the standard sheet-style method, You should have no problems with replacing the FEP with an aftermarket sheet.

I second this, any FEP that's above the absolute minimum size will let you print. The cheaper ones may not last as long, but so long as you fit them correctly they should be functionally identical to any other FEP that you find online so long as you're not running a print farm with multiple prints every day or prints lasting an entire day.


text:
Command to have printer head move constantly
I am currently writing (software) and building (printing) a little control panel for my printer. I have some 2D joysticks that I want to use for X/Y and Z/E movement. The idea is that when I move the joystick in X direction the printer starts moving to the right/left and when released it should stop. For now it should just be constant speed, so the amount of tilting the joystick should not matter. I have been looking through the GCode reference (Marlin) but I all the movement related GCodes seem to be moving to specific position, but not simply starting to move until further notice.
When using positioning I can think of two possible issues.

Moving too much per iteration -> it will continue to move after releasing the joystick
Moving too little per iteration -> it will jerk around (stop, start, stop, start, ...) which is probably not too good for the motors

Is there a way to have the printer head just start and stop moving without having to give a target coordinate? If it makes any difference: I am only talking about having this for a Creality CR-20.

If iterating like you're doing, you could time each successive command to happen just before the deceleration from the previous move would begin, based on acceleration profile. But I'm not sure if the planner will react that quickly. You may instead be able to just send a long move, then a command to abort as needed, but there still may be high latency. Printer firmware isn't made for interactive control.

You'd be better off with each nudge of the joystick equaling a set movement. I don't know of a way to just kick off movement without an endpoint.

Those are both good ideas, I think I will implement it in a way that moving it into a direction causes a movement to the end of the platform and when released I will abort the last command. It doesn't matter if there is just a small delay between releasing and stopping

Obviously there's no Gcode to "move until instructed otherwise," as that leads to nasty hard-stop collisions.  Your thought about "Move to Max_X" followed by an Abort command should work, but be cautious about speed since the limit switches may not cut the drive off in time.

klipper not support G80 gcode to stop runing move


text:
Anet A8 Installing second extruder without changing board
I am wondering if it is possible and safe to add a second extruder to my Anet A8 without changing the main board. I was thinking splitting my Z motor wires to free up the Z2 axis motor connector on the main board, using this connector for the second extruder motor.
Is this possible? If so, how would i configure Marlin to use those extruder pins
Can I overload the board by using two motor on the same connector?

Even if there were a spare stepper, where would you get the additional power to heat both extruders?

That is not possible without changing to a different printer main board. The Anet A8 board has 4 integrated (A4988) stepper drivers, one for X, one for Y, one for Z and one for E (extruder 0).

Both Z steppers are controlled by a single stepper driver (they are wired in parallel to the single Z stepper driver), there is nothing to free up nor is there to configure in Marlin without replacing the main board.


text:
2x scaling of Monoprice Mini Select v2 Firmware v30.50b after factory reset?
About a year ago, a bad print encased my hotend in PLA and I broke the wires due to my impatience trying to get the glob of PLA off.
I don't remember the details of the disaster print, but generally the printer was working fine except I now know I was heating the bed too high and causing warped prints that I was trying to avoid by raising the bed temp.
I'm trying to salvage the printer now, I bought a new hotend and build plate sticker. I don't want to name the supplier because I'm pretty sure these parts are irrelevant and I don't want this to seem like an advertisement. Anyways, install was pretty easy, I didn't disconnect any of the axis or feeder steppers control wires - just the hotend heater and thermistor.
I don't think it should have anything to do with the bad print or the replacement parts, but now when I print I'm having major calibration issues. My entire print seems to be 2x scaled up. This is causing skipped stepper steps, grinding, etc for completely bad prints.
I ran at least part of a factory reset program before any trial prints because it was recommended online somewhere (which displayed weird 50 % complete message and that's all).  I most suspect the factory reset as my problem.  After the reset, I needed to flip the Y axis with an additional G-code instruction before it would home to the correct corner instead of grinding to the top-back-left.
M502 ;     Restores default settings
M562 Y ;     Reverse Y  -- I had to add this to even get it to work as well as it does.
M500 ;     Saves the settings to EEPROM

I have read that I can adjust the axis scaling by an arbitrary factor with additional G-codes, but since I didn't mess with the printer other than the program above, I don't expect my scaling factor to be off by a random value, but more a common value that ALL mini select v2s need that I erased. But I am not finding info about this.
I am using Cura 4.5 and Cura knows I'm using a Mini Select v2 and the model I've loaded is known to Cura to be the right dimensions.
In the picture, you can see that Cura shows it is centered on the bed, but it actually prints off center. Also, the finished print is about 2x scaled in all three axes and lacks the material density of a correct print - it's printing only enough plastic for the correct size print, but spreading it over the scaled-up volume. The steppers are also skipping steps (I guess) so there are a few layer shifts in this print. What a mess! (It's supposed to say it's dimension on the top - "23 mm" but it actually measures about 46 mm but hard to say exactly due to the other print issues)

Hi welcome to 3DPrinting.SE! It sounds that the steps per mm are off in the firmware. You can set or see them with M92. With M503 you see all settings. You do need to connect to a console.

supplier is usually not any issue, but you want to tell us the style of Hotend. e3d v6 style has other issues than the Makerbot Mk8 or Mk10.

Thanks for the comments!  They led me to find this solution using PuTTY on Windows as my serial (COM) terminal.  I guess one of my resets put the settings to 1/16th stepping whereas my hardware has 1/8th stepping.
> M115
NAME: Malyan    VER: 3.0        MODEL: M200     HW: HA04
ok N0 P15 B15

> M503
echo:Steps per unit:
echo:  M92 X93.00 Y93.00 Z1097.50 E97.00
echo:Maximum feedrates (mm/s):
echo:  M203 X150.00 Y150.00 Z1.50 E50.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X800 Y800 Z20 E10000
echo:Accelerations: P=printing, R=retract and T=travel
echo:  M204 P1500.00 R3000.00 T1500.00
echo:Advanced variables:
S=Min feedrate (mm/s),
T=Min travel feedrate (mm/s),
B=minimum segment time (ms),
X=maximum XY jerk (mm/s),
Z=maximum Z jerk (mm/s),
E=maximum E jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
echo:Home offset (mm):
echo:  M206 X0.00 Y0.00 Z0.00
echo:Invert axis: M562 XYZE
XYZABCD++-+-+-
echo:PID settings:
echo:  M301 P20.00 I0.02 D250.00 C100.00 L20
echo:  M304 P10.00 I0.02 D305.40
echo:Filament settings: Disabled
echo:  M200 D1.75
echo:  M200 D0
ok N0 P15 B15

> M92 X46.50 Y46.50 Z548.75 E48.50 ; from https://www.mpselectmini.com/howto/steps_per_unit_mm
> M562 Y ; Invert Y because it was Homing to the wrong corner
> M206 X0.00 Y-2.00 Z0.00 ; Inverting the values from M114 once good Home manually found.
> G0 X0 Y0 ; testing the range of motion
> G0 X0 Y120 ; testing the range of motion
> G0 X120 Y120 ; testing the range of motion
> G0 X120 Y0 ; testing the range of motion
> M500 ; this saves the new values to EEPROM
```


text:
Y Axis motor is really loud
The Y-axis motor is really loud. The pitch of the sound varies depending the angle of the motor (in some angles the motor is silent, in others it's louder than a fan). I am looking for a solution because this is by far the loudest component of my printer. Is there any settings that could help making this motor quieter? If not, should I replace the motor or the board?
Here is a short clip of the sound of the motor:

The sounds are mainly caused by the bed resonating with the stepper motor, and this will vary with the speed of the stepper motor. The best solution is to use "silent" stepper motor drivers (e.g. Trinamic), but you may be able to reduce the noise by:

Reducing the belt tension as much as possible.
Changing your print and/or move speeds.
Fitting a stepper motor damper.
Fitting TL smoothers (if you have A4988 drivers), although their efficacy is controversial.

I have done all of the above with good results.


text:
Marlin 2.0.x bugfix 2nd extruder not working
I am using the SKR PRO board on a dual extruder 3D printer. I have tried Curaengine and Slic3r in Repetier-host. The printer firmware is handling the offset fine (it prints in the right spot for extruder 2 when it switches extruders) but it won't extrude any filament. When I type in T1 and manually extrude with the buttons in reetier-host it extrudes just fine. I have let it go for several layers without seeing any extrusion from the 2nd extruder. The main extruder works fine and doesn't extrude while the 2nd one is selected. Here is some of the g-code from curaengine slicing the dual extruder calibration cube.
;Generated with Cura_SteamEngine 15.01
; Default start code
G28 ; Home extruder
G1 Z15 F100
M107 ; Turn off fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
M190 S50
; Activate all used extruder
M104 T0 S200
M104 T1 S200
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
M109 T0 S200
M109 T1 S200
;Layer count: 100
;LAYER:0
M107
G0 F6000 X-10.960 Y3.540 Z0.200
;TYPE:SKIRT
G1 F1800 X-10.960 Y12.456 E0.26689
G1 X-23.956 Y12.456 E0.65592
G1 X-23.956 Y-0.540 E1.04494
G1 X-15.040 Y-0.540 E1.31183
G1 X-15.040 Y-23.540 E2.00032
G1 X12.040 Y-23.540 E2.81093
G1 X12.040 Y3.540 E3.62155
G1 X-10.960 Y3.540 E4.31003
G0 F6000 X-11.320 Y3.180
G1 F1800 X-11.320 Y12.096 E4.57693
G1 X-23.596 Y12.096 E4.94440
G1 X-23.596 Y-0.180 E5.31187
G1 X-14.680 Y-0.180 E5.57876
G1 X-14.680 Y-23.180 E6.26725
G1 X11.680 Y-23.180 E7.05631
G1 X11.680 Y3.180 E7.84537
G1 X-11.320 Y3.180 E8.53386
G1 F2400 E3.53386
G0 F6000 X-10.960 Y-10.540
;TYPE:WALL-INNER
G1 F2400 E8.53386
G1 F1800 X-10.960 Y-19.460 E8.80087
G1 X-2.040 Y-19.460 E9.06788
G1 X-2.040 Y-10.540 E9.33490
G1 X-10.960 Y-10.540 E9.60191
G0 F6000 X-11.320 Y-10.180
;TYPE:WALL-OUTER
G1 F1800 X-11.320 Y-19.820 E9.89047
G1 X-1.680 Y-19.820 E10.17904
G1 X-1.680 Y-10.180 E10.46760
G1 X-11.320 Y-10.180 E10.75617
G0 F6000 X-10.411 Y-10.665
;TYPE:SKIN
G1 F1800 X-10.833 Y-11.088 E10.77405
G0 F6000 X-10.833 Y-11.597
G1 F1800 X-9.902 Y-10.665 E10.81349
G0 F6000 X-9.393 Y-10.665
G1 F1800 X-10.833 Y-12.106 E10.87447
G0 F6000 X-10.833 Y-12.615
G1 F1800 X-8.884 Y-10.665 E10.95700
G0 F6000 X-8.374 Y-10.665
G1 F1800 X-10.833 Y-13.124 E11.06109
G0 F6000 X-10.833 Y-13.633
G1 F1800 X-7.865 Y-10.665 E11.18674
G0 F6000 X-7.356 Y-10.665
G1 F1800 X-10.833 Y-14.142 E11.33393
G0 F6000 X-10.833 Y-14.651
G1 F1800 X-6.847 Y-10.665 E11.50267
G0 F6000 X-6.338 Y-10.665
G1 F1800 X-10.833 Y-15.161 E11.69298
G0 F6000 X-10.833 Y-15.670
G1 F1800 X-5.829 Y-10.665 E11.90484
G0 F6000 X-5.320 Y-10.665
G1 F1800 X-10.833 Y-16.179 E12.13824
G0 F6000 X-10.833 Y-16.688
G1 F1800 X-4.811 Y-10.665 E12.39319
G0 F6000 X-4.302 Y-10.665
G1 F1800 X-10.833 Y-17.197 E12.66969
G0 F6000 X-10.833 Y-17.706
G1 F1800 X-3.792 Y-10.665 E12.96776
G0 F6000 X-3.283 Y-10.665
G1 F1800 X-10.833 Y-18.215 E13.28738
G0 F6000 X-10.833 Y-18.724
G1 F1800 X-2.774 Y-10.665 E13.62854
G0 F6000 X-2.265 Y-10.665
G1 F1800 X-10.833 Y-19.234 E13.99127
G0 F6000 X-10.423 Y-19.333
G1 F1800 X-2.165 Y-11.075 E14.34086
G0 F6000 X-2.165 Y-11.584
G1 F1800 X-9.914 Y-19.333 E14.66890
G0 F6000 X-9.405 Y-19.333
G1 F1800 X-2.165 Y-12.093 E14.97540
G0 F6000 X-2.165 Y-12.602
G1 F1800 X-8.896 Y-19.333 E15.26034
G0 F6000 X-8.386 Y-19.333
G1 F1800 X-2.165 Y-13.111 E15.52372
G0 F6000 X-2.165 Y-13.620
G1 F1800 X-7.877 Y-19.333 E15.76555
G0 F6000 X-7.368 Y-19.333
G1 F1800 X-2.165 Y-14.130 E15.98580
G0 F6000 X-2.165 Y-14.639
G1 F1800 X-6.859 Y-19.333 E16.18452
G0 F6000 X-6.350 Y-19.333
G1 F1800 X-2.165 Y-15.148 E16.36168
G0 F6000 X-2.165 Y-15.657
G1 F1800 X-5.841 Y-19.333 E16.51730
G0 F6000 X-5.332 Y-19.333
G1 F1800 X-2.165 Y-16.166 E16.65137
G0 F6000 X-2.165 Y-16.675
G1 F1800 X-4.823 Y-19.333 E16.76389
G0 F6000 X-4.314 Y-19.333
G1 F1800 X-2.165 Y-17.184 E16.85486
G0 F6000 X-2.165 Y-17.693
G1 F1800 X-3.804 Y-19.333 E16.92427
G0 F6000 X-3.295 Y-19.333
G1 F1800 X-2.165 Y-18.203 E16.97211
G0 F6000 X-2.165 Y-18.712
G1 F1800 X-2.786 Y-19.333 E16.99839
G0 F6000 X-2.277 Y-19.333
G1 F1800 X-2.165 Y-19.221 E17.00314
G92 E0
G1 F2400 E-5.00000

T1

G0 F6000 X-14.500 Y3.000
;TYPE:SUPPORT
G1 F2400 E0.00000
G1 F1800 X-14.500 Y8.916 E0.17709
G1 X-20.416 Y8.916 E0.35418
G1 X-20.416 Y3.000 E0.53127
G1 X-14.500 Y3.000 E0.70836
G0 F6000 X-14.878 Y2.940
G1 F1800 X-14.439 Y3.379 E0.72695
G0 F6000 X-14.439 Y3.945
'''

Turns out that the Left and Right extruders turn the opposite direction so once I inverted E1 in marlin it is working fine.

Note that this is dependant on how the hotends and extruders are mounted. To this extent, it would have helped to show a photo of the extruders - glad you managed to figure it out yourself.


text:
SLA printing: piece does not stick to supporting structures
I am trying to print a box shaped object with an ELEGOO Mars SLA printer. I positioned the piece rotating it on X and Y axis 35 and 30 degrees.
However, the print fails because the piece does not stick to the supporting structure (see picture).
Do you think that it could be a problem of the piece sticking to the display due to overexposure or deteriorated film? Or is it something else?
I tried two prints, lowering the exposure time from 8 to 6 seconds, the second print still failed but at least the piece is not totally stuck to the display.
Any other idea?
First failed print with 8 seconds exposure: the film was completely jammed and all the resin was stuck there (this is why there is no piece on top of the supporting material)

Second failed print with 6 seconds exposure: the film was perfectly clean, but the object did not stick to the supporting materials therefore collapsing.

This is the 3D drawing

I think I have found the solution: it has to be printed up side down to prevent the “suction cup” effect

I have tried to print the piece upside-down with the cave part facing down and it worked.
Since the printer prints upside down, positioning the cave part facing up creates a suction-cup effect on the printer display that makes the whole structure stick to the lcd and detach from the supporting structure, thus making the print fail.

Update: even better solution is to print sideways. I tried to print a cylindrical shape with a hole in the middle that stops halfway (more or less like a glass or a cup, but with thick walls). The only successful way of printing it was to lay it sideways.


text:
ELEGOO Mars failed prints every time
So I just recently bought the ELEGOO Mars SLA Printer... the first model I made turned out okay. It was a small helmet. Only 3 out of the 9 small helmets made it; so I thought it was my bed... I re-leveled my bed and went for it again. Stuck to the FEP film. I did research and sanded the bed for better adhesion, nothing, changed my FEP film something printed but it was considered failed as there were some cracks. I changed settings on my printer software, ChiTu Box Slicing Software, I even did the recommended settings and custom settings I found on YouTube, and still nothing.
The only variables I have not changed are the FEP film again, as it could be too tight. And different resin. I'm currently using the Grey ELegoo resin... Or replacing my LCD Screen.. If y'all can help it would mean a ton!

let's go step by step - and rule out the unlikely sources. Since you get at least some results, UV source and screen seem unlikely. Then you might want to make sure that the resin is ok. Let's try to put a droplet onto a sheet of paper/foil, which you tape down outside in the sun or under a UV light source - if it cures, the resin is ok.
The first real step is to check your bed leveling. Go exactly by the handbook - you might be a tad far from the bed, which leads to sticking to the film.
Then make sure your film is intact. You might need to swap resin vats to do that. in case the film is damaged, you have to swap it.

authors: Ирина Соловьеваа


text:
Marlin bed autoleveling confusion
I've just added a Z-Probe sensor to my custom printer (Arduino - RAMPS 1.4 - Marlin 2 default disabled EEPROM) but now I'm confused. Printer seems to work but I cannot configure the right nozzle height.
I use Pronterface and before start printing I send G29 code. Printer succesfully ends bed calibration. At this point I start printing but the printer seems to ignore the calibration (no bed compensation).
Do I need to run other commands to tell printer to use the previous calibration?

G29 activates the M420 to enable the grid. A G28 after will reset this. Did you set the correct trigger point to nozzle offset with M851? Please do elaborate on seems to ignore the calibration: is it incorrect distance setup or is it ignoring the complete grid?

G29 returns all the grid values (Ex.: +0.03 +0.01 -0.01 ...) and in my mind I expect Z-axis will compensate those values moving the nozzle high or low during layer print. The Z-axis instead never moves.

Yes it should and it will unless the grid isn't active. Maybe you can add the steps in G-code you do when you print an object. You could also post your start G-code or the first 40 lines of the G-code file you print. This may lead to answering your question, for now it is too hard to say.

As I understand I can compare G-codes from Slic3r exported file with G-codes Pronterface sends to the printer. But where I can find those G-codes? Pronterface, by default, during the printing process, does not show them.

What slicer do you use then? You can use either Slic3r, Ultimaker Cura, or any other program to generate the G-code files. You can run these G-code files through Pronterface to print the object. If you slice from within Pronterface, you can export the G-code files. I think that in your process to print the object G28 is called after G29, this disables bed leveling.

You are right! At the beginning of the generated file there is a G28! Do I need to remove it? Or I need to add a G29 after G28?

Do you have any place in your software to edit the start and end G-Code for each print you do? If so, you can add a G29 after a G28 to calibrate the print.
I use that in my Ender 3 before every print to make sure everything is right.

When the printer ignores the scanned topology (grid) of the bed this means that the levelling is not active. G29 activates the M420 to enable the grid. A G28 after scanning the bed will reset this.
You need to make sure that the start G-code (this is an optional script that is pasted before the sliced object) contains both the G28 and the G29, where the G28 is placed above the G29 on separate lines.
For each slicer this is defined in different places, bit if you use Pronterface for slicing, a good chance is that it uses the Slic3r engine. If I open an STL for slicing in Pronterface, it starts loading Slic3r.exe; this brings up the GUI for Slic3r which has options to define/modify the start G-code.

You saved my life!


text:
Ender 3 overshot the set temperature and hitting MAX TEMP error
So for the past few months I have been printing in my Ender 3 and everything ran smoothly. But suddenly a few days ago I tried to print and the hot end temperature just keeps on rising past the set temperature of 230. I tried PID tuning, changing the nozzle, hot rod, and the thermistor  nothing seems to work.... I even took out the main board and check whether the solder joints are loose, none so far. Any ideas on how to fix the problem?

Some things I can rule out: your nozzle is not at fault, and it is most likely a firmware thing. Some questions: 1) did you alter/swap the firmware? (You need to flash a bootloader iirc) 2) you print ABS or some other "hot" plastic? 3) can you use a terminal and tell us at what temperature you get the max-temp?

Nope I have never alter or configure the firmware, for the print material I always use PETG, and for the max-temp it always blows out at 300. Maybe for extra information, I tried to bring the temp to 120 and it goes past that to somewhere around 210 then went back down to 100, then it just starts to fluctuate from 100-170.

that sounds like really badly tuned, yes. I strongly suggest to swap the firmware, because at some point the ender-3 had no Thermal Runaway Protection. Maxtemp is a start, but we want proper TRP and PID-tuning, and that needs you to have a proper firmware. I point to 3 questions: Bootloader w/o Arduino, bootloader w//w/o arduino and...

Hmm I guess ill try that first , thx

...(Where is that last one...) making your own firmware - that last one is a step-by-step guide to get your firmware set up. You don't necessarily need a booloader even, but having one allows to alter the settingss much easier. Also, did you M500 after the PID tuning?

This can't be your issue, but added for information, I once had the same issue when I installed a 12 V heating element in a 24 V system, overshoots and instability, replacing for the correct heater element fixed this instantly.

Ah.. ill check it out 0scar thx for the input

Ender3 is a 24V machine, so worth checking


text:
Updating Marlin Firmware - Step by Step Guide
Note: This question is meant as a wiki to include all steps that are needed to update your printer with a self configured Marlin firmware version. The answer is a wiki that is currently in development and can be seen (and edited) by all users.

I have a printer and need to update my Marlin firmware to get some stuff done to my liking, especially to make sure I have TRP, have power loss recovery and then do a PID-tune. I am also not sure if a bootloader is flashed. So what I need is a step-by-step guide to:

prepare my printer for flashing
configure my Marlin firmware
get my new Marlin firmware onto my printer

Step 0: extracting old settings & setting up
The first step is to get yourself a printing software that has a Console or Terminal like present in Repetier Host, Pronterface (as part of the Printrun software suite), OctoPrint or any other tool (e.g. serial connection with PuTTY also works) that allows to communicate with the printer to extract the settings we already have. Once we have the software installed and the printer connected, send M503 and copy the old settings into a file for later use.
Next, we need our development surroundings. Usually, you want to use Arduino IDE (but the PlatformIO plugin as part of Visual Studio Code can be used for both Arduino based microprocessors as 32-bit processors), but you need to know what kind of board the control board of your printer is derived from because some boards have native IDEs that work better for them.
Step 1: Choice of Firmware
By some metrics of early 2020, about 80 % of all shipped machines run Marlin in some fashionneed citation. The most prolific versions of Marlin at that point are often cited to be 1.1.9 and 2.x. Since anything before 1.1.9 is very much obsolete and needs an update anyway, we will look into 1.1.9 and 2.x only. Version 2.x was developed to include 32-bit microprocessors, but is compatible with 8-bit microprocessor printer boards. As the version jump indicates though, 2.x is pretty much an entire rewrite, so do your choice and jump to the correct next step.
Marlin 1.1.x
Typically, you start by grabbing a blank Marlin 1.1.9. The next step is to alter the static settings of the printer to match yours in Configuration.h - best use the settings from what we pulled earlier via M503 as a start. Alternatively, you can search for a configuration of your printer between known configuration files. You should at least need to adjust these:
For communications and filament diameter:
#define BAUDRATE 250000

// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0

Choose your correct temperature tables, and make sure to turn on the one for the bed if you have one!
#define TEMP_SENSOR_0 1
[...]
#define TEMP_SENSOR_BED 0

Next come two blocks that set the 'this is ok' temperature area, for the hotends and bed respectively (only hotend shown here).
// Extruder temperature must be close to target for this long before M109 returns success
#define TEMP_RESIDENCY_TIME 10  // (seconds)
#define TEMP_HYSTERESIS 3       // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_WINDOW     1       // (degC) Window around target to start the residency timer x degC early.

The next slot is an important safety feature: Mintemp and Maxtemp. Unless you seriously, positively know your hotend can do more than 275 °C (which means you have an all-metal hotend), DON'T touch the Maxtemp, but you might set Mintemp to 0 °C if you like.
Next come PID-Tuning settings, you only need to work with those if you know what you are doing.
The next step is important also: make positively sure that these two lines are exactly as follows, no stray // in front to comment them out. This is TRP.
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed

If your printer is a CoreXY or similarily uses 2 belts for moving along 2 axis, you look at the Mechanical Settings tab and alter it there, otherwise we skip further to the Endstop Settings. Enable (remove the leading //) the max-endstops if you have them, the rest is usually not necessary on most consumer-grade machines, then go further to the Movement Settings. From our M503 we grab the settings to fill out the following:
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000, 500 }
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }

If you have a probe, you look into Z-Probe Options and follow 0scar's guide here, skip it otherwise until you find the next snippet. Fix that one up to fit your bed and movement area. You might need to set values for the endstop to bed origin distance. These offsets, X_MIN_POS and Y_MIN_POS, need to contain the correct values to center the bed; see "How to center my prints on the build platform? (Re-calibrate homing offset)
".
// The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS 0 // Value of zero means that the origin of the bed is at the endstop
#define Y_MIN_POS 0 // Value of zero means that the origin of the bed is at the endstop
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200

Next, uncomment (remove the leading //) the following line:
//#define EEPROM_SETTINGS // Enable for M500 and M501 commands

If you want to have a special pause position, uncomment and define it in
//#define NOZZLE_PARK_FEATURE
#if ENABLED(NOZZLE_PARK_FEATURE)
  // Specify a park position as { X, Y, Z }
  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
  #define NOZZLE_PARK_XY_FEEDRATE 100   // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
  #define NOZZLE_PARK_Z_FEEDRATE 5      // Z axis feedrate in mm/s (not used for delta printers)
#endif

We are on the finishing stretch, just a few things in this file remaining! Select your language with the line:
#define LCD_LANGUAGE en

Turn on the SD-Card slot by uncommenting
//#define SDSUPPORT

The last step we need to alter in the Configuration.h is choosing the correct LCD controller. Uncomment the line corresponding to your printer - you might need to use a generic option.
Marlin 2.x
Again, grab the 2.x marlin, either the blank base or a preconfigured version. For some printer styles (like Delta), you have to take a specialized set. Then we look at our M503output and set our communications Baudrate and our motherboard (or the board it is derived from), then the number of extruders and the filament diameter:
#define BAUDRATE 250000

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif

#define EXTRUDERS 1

#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0

Next we go to thermal settings! We need the correct temperature sensor table for hotend and bed, possibly we could lower MINTEMP to 0. Don't touch MAXTEMP unless you know what you're doing and have a full-metal setup and you know your machine can take more.
#define TEMP_SENSOR_0 1
[...]
#define TEMP_SENSOR_BED 0

Our next step is making positively sure that TRP is on. Make sure these lines have no leading //
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED     // Enable thermal protection for the heated bed
#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber

If the printer is a CoreXY or similar, enable the style in the mechanical settings area.
Enable (remove the leading //) the max-endstops if you have them, the rest is usually not necessary on most consumer-grade machines, then go further to the Movement Settings. From our M503 we grab the settings to fill out the following:
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000, 500 }
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }

If you have a probe, you need to set it up - 0scar has a partial guide - and it is all in the Z Probe Options area! Otherwise, go on. We need to go down, and in the middle of the Probe setup, we find the bed settings. Set them up to fit your printer and possibly the offset from the home-switches to the build volume corner.
// The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200

// Travel limits (mm) after homing, corresponding to endstop positions.
#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 200

Down to Additional Features we go! Let's turn on the EEPROM by uncommenting (removing the //)...
//#define EEPROM_SETTINGS     // Persistent storage with M500 and M501

...and think about how you want to set up your preheats or where to have your special park position. But then comes the last part, which we really need to do: Set up the interface. Start by changing the language and turn on the SD-Slot by uncommenting the lower of these lines:
#define LCD_LANGUAGE en

//#define SDSUPPORT

Our last stop on setting up the basics is LCD / Controller Selection. We need to uncomment the right one here. If you don't find yours, use a generic one.
Step 2: Preparing the Board
There are 2 variants here: either you use a bootloader, or you prepare a .hex file for overwriting the whole firmware. In either case, we need to know what board we have, so we can compile with the correct encoding and setup. You might need to install a proper extension!
2.1 - Bootloader
A lot of boards come with a pre-flashed bootloader, which makes installing and revising software very fast. But not all boards have one flashed.
Flashing a bootloader needs you to have an Arduino and some cables or a different ISP or AVR programming tool. Complete instructions can be found here by Greenonline and here by Robert Lo Giacco and jpa.
Or you take your control board to your local maker space and ask someone there to help you flash the bootloader - most maker spaces have at least someone that has an Arduino and can help you!
2.2 - .hex file
In this case, we don't need to do anything in this step. We'll have a different installation process though.
Step 3: Compiling & Installing Firmware
Depending on your choice in the previous Step, you have to follow the corresponding branch here:
3.1 - Bootloader
If you have set your bootloader, now installing firmware is as simple as connecting your computer with the printer using a direct connection and doing a compile & Upload command.
3.2 - .hex file
After preparing your .hex file, you can upload it with one of the variants shown here by Greenonline, Trish or Thomas Weller
Step 4: Finishing touches
Seeding
Directly after installing up our new firmware on the printer, we need to seed our settings. Connect to the printer via any Console or Terminal (see Step 0) and use these commands
M502
M500

PID Tune
Then we run a PID-Tune. For the first extruder we send:
M303 E0 S200 C3

It will run the machine some and return values named Kp, Ki & Kd. These directly correspond with P I & D. Store them into the EEPROM and save with the following:
M301 P##.## I#.## D##.##
M500

This should be updated, since 1.1.9 is also very much obsolete.

@towe that's why this is a community wiki. Do your part!

authors: ΜΑΝΩΛΗΣ ΜΟΥΤΣΑΚΗΣ


text:
PID Autotune not working properly
I'm running the autotune PID because I had to replace the hotend. The command that I launch is M303 E0 S200 C9. But from the temperature chart I see that he has only made two cycles, after which the autotune control seems to have gone mad and has remained stable on 213° C and is no longer doing autotune cycles. After a while I get Recv: PID Autotune failed! timeout.
I am using Marlin Firmware version 2.0.3 (GitHub) installed on a MKS Gen v1.4 (Arduino MEGA 2560) board. The MKS Gen board replaces the original one of a Geeetech Prusa i3 Pro B. Hotend is 12V.
Do you have any suggestions? Has anyone experienced something like this?

UPDATE:
I redo the PID Autotune and now I get a sawtooth:

sawtooth is good, it is rather close, though... not close enough. maybe tune with ess than 9 cycles? 3 to 5?

I am giving a try using 3 cycles.


text:
TPU Plastic leaving residue in my bed
How do I remove the residue left by TPU plastic ? I used to print with ABS plastic and while it left a little bit of residue, I could remove it with Isopropyl alcohol and then scrap it with my spatula.
However, I just did my first print with TPU and it left a ring in my bed. No matter how hard I scrap or rub with the alcohol it won't go off :(
Any tips ?
Edit here are my images:

As an aside, is it real TPU? I found the flex-PLA material I first tried printing flexible with was a mess to clean up, but real TPU was no problem.

@R..GitHubSTOPHELPINGICE how do I know if it's real TPU :S ? I bought Anycubic filament, so I was hoping it was the real thing :(

Can't you rub it off with your fingers? (Like stickers residue)

If it's sold as TPU and from a reputable brand, especially if it advertises properties of TPU like chemical and abrasion resistance, then it probably is. But some filaments are sold as just "flexible filament" or have the word TPU somewhere in the writeup so they turn up in TPU search results, but aren't actually claiming to be TPU. Some of them even claim being "easier to print" thant TPU, which from my experience is a load of bs - real TPU is so much easier to print.

@0scar no sadly. I tried rubbing it with the spatula too, and it wouldn't go off.

Is this an Ultrabase bed surface?

it's the stock bed that came with my 3d printer (anycubic mega s)


text:
Cura Parameter Confusion: Initial Layer Flow Rate
I have a LultzBot TAZ 6 3D printer and the software I use for my prints is "Cura LulzBot Edition - 3.6.3". Recently, I have begun to play around with the parameters in Cura relating to initial layer adhesion. One such parameter is the Initial Layer Flow Rate.
Now, after manipulating this parameter several times and evaluating the pieces that have been printed subsequently, it seems quite apparent to me that a manipulation in this parameter is affecting all subsequent layers that are printed.
For example, if I increase the Initial Layer Flow Rate from the default setting of 100 % to 130 %, layer 2, layer 3,...layer n all appear to be printed at at a flow rate of 130 % resulting in prints that are clearly "overextruded" (e.g. the finished surfaces are incredibly uneven, bumpy, etc).
Similarly, if I decrease the Initial Layer Flow Rate from the default setting 100 % to 70 %...all subsequent layers are clearly underextruded (e.g. walls are not connected at all and floor/ceiling have visible gaps).
Why is this happening? Directly above the Initial Layer Flow Rate parameter is a parent setting that is simply named "Flow". (refer to below picture)

Do I need to manipulate flow in order to avoid this from happening?
All I want to do is change exclusively the initial layer's flow rate (for better adhesion on larger pieces)...but my current method is not accomplishing this. Any suggestions?
$\color{red}{\text{EDIT}}$ - After reading the comments, I just wanted to clarify that I have let my parts "be printed to completion". The obersvations that I am making about underextrusion or overextrusion are in reference to the total structure (not just the first several layers). These are large structures (~12 hour prints).

Hi S.Cramer, welcome to the site. You could include photos for better replies. Flow in 3d printers is how much plastic you extrude, so this sounds correct. There can be a residule effect (more melted plastic in the barrel) between the layers. Its not much plastic to be an over vs under. I'd let it keep printing and see what it looks like after 5 or so layers.

@StarWind0 I think you may have misunderstood my post. I HAVE let it finished printing complete structures...using several different values for the initial layer flow rate. In all cases, it is evident that the initial layer flow rate has completely influenced the overall structure of the print. Hence the question.

Welcome to the 3DPrinting Stack!

In the generated G-Code, flow-rate translates to G1 Xn Yn En.nnn (extrude n mm) commands.
Cura marks each layer in the G-Code with "Layer: n". You could have a look, if the extrusion length differs for the same line in layer 1 and 2-n

If you're over- or under-extruding by a 30% margin, there is going to be so much excess or deficiency of material in the first layer that it will take a few layers to "catch up". Normally you would only adjust the flow by 5% or at most 10% unless you're using it to correct for compression of the filament in the extruder gear (for flexible filaments), but adjusting first layer flow only is always a hack to work around incorrect bed height or adhesion problems. You'd do much better to figure out the right solution to whatever problem you're trying to solve with flow.

Exactly my thoughts! If you need that much flow, you may better check your nozzle to bed distance at Z=0. After printing kilometers of filament on glass, I have never touched flow adjusting settings. Only my first Slic3r prints many years ago on an Anet A8 used first layer increased flow because it was said to help it better adhere, but actually it is not always needed, probably only when the bed surface is very course

Thank you for the response. However, I want to hone it on your phrasing: "[...] will take a few layers to 'catch up'. " As I stated in the edit of my post, these are very large prints. I print at a 0.25 mm/layer and the total height of my prints are 50 mm +. That means that the presence of excess or deficit in the first layer is propagating over 200 layers! When you say "[...] few layers [...]" surely you do not mean 200. This is why I believe it is an issue with the parameter and EVERY LAYER is, in fact, being printed at this flow rate..

@S.Cramer: You could read the gcode file to test that hypothesis.

@S.Cramer: Did you determine one way or the other whether Cura was doing something wrong here?

I am not particularly familiar with "gcode", so I was going to read up on it once I had time (in order to carry out your recommended approach). I will update the post with an edit after I investigate. Cheers~


text:
BLTouch error Marlin 2.x (on SKR 1.3)
I have some issue with my BLTouch (I'm new to bed levelling) :
I compiled Marlin 2.x (for my SKR 1.3) for a Antclabs BLTouch, and everytime I power on the printer, it shows this error message: Failed to enable Bed Leveling, echo Bed Levelling off, echo : Fade Height 0, FF, ok:

The LED of the BLTouch is on, I can still deploy and stow the pin, and do "levelling ABL" but Homing Z (for example) is not working.
I linked the config.h and config_adv.h in case needed below:

Configuration.h
Configuration_adv.h

I have potentially find the problem, need time to confirm, and I'll write here, but thanks

it's fixed : it's because I didn't level the bed once after flashing the firmware, once it has been done the error is no more

From a comment can be read that the OP found the solution:

it's fixed : it's because I didn't level the bed once after flashing the firmware, once it has been done the error is no more

How did you level the bed? Each time I press home, my print head goes all the way to the end rail and try to keep going until I turn off the power.

@MarcusMiles Please post your own question, it will attract attention and possibly answers, it will not receive answers here in comments. Please take the [tour] and read [help] how SE sites work, we're not regular discussion forums, instead it's a simple Q and A format.


text:
All-metal hotend, cooling fan failures, and cold-side PTFE
I'm getting a pet bird soon, and I know that off-gassing from heating PTFE above 300 °C creates noxious fumes, which are bird-killer1. To try to prevent even the chance of that I'm replacing my hotend with an all-metal one. I have an E3D v6 1.75 mm, which I noticed still uses a PTFE tube at the cold side (the 3 mm version apparently doesn't, but 1.75 mm filament is what my printer uses, so there we are).
If I'm reading the instructions correctly, it sounds like the heatsink shouldn't even get warm to the touch, and if that's the case I'm not worried as long as things go well. What I'm still worried about is what happens if the heatsink cooling fan fails. I plan to plug the fan into the always-on 12 V port on my board (SKR 1.3): if I do, then is it possible to set my firmware (currently Marlin 2.0.4.4) to stop a print if the fan fails?
If I can't get the firmware to stop on fan failure, then is there a 1.75 mm all-metal hotend out there that doesn't require the use of PTFE on the cold side?

1- Here: "at temperatures above 570°F (300°C), Teflon [PTFE] coatings on nonstick cookware start to break down, releasing toxic chemicals into the air (14)"

The first sentence really really needs a citation (for its truth and relevance to 3d printing, i.e. whether temps you can use will actually cause any off-gassing). If it's true and relevant, you should probably just make sure you have proper ventilation or keep the printer somewhere separate from the bird's living space. All-metal hotends are not an upgrade but a tradeoff, and will interfere with your ability to print materials that don't need extreme temperatures.

And if you're just concerned about fault conditions, you don't need to change the hotend but rather add more fail-safe layers, and should ask a question about doing that. There are lots of other reasons to want added fail-safe layers, including fire safety.

it is well known that cooking PTFE off in an oven creates noxious fumes. https://www.healthline.com/nutrition/nonstick-cookware-safety : at temperatures above 570°F (300°C), Teflon coatings on nonstick cookware start to break down, releasing toxic chemicals into the air 14

@Trish: Yes, I'm aware of that, just not that there's a specific deady risk for birds, especially at the temperatures (250 or 260 tops) that can be printed without damaging the lining. It sounds like OP's serious concern might be what happens if the printer malfunctions (a real risk! not just for fumes but for fire, etc.) and if that's the case I think the question should be tweaked somewhat to be answerable and not to presuppose the myth that allmetal hotends are an upgrade for avoiding PTFE fumes.

You keep the bird in the same room as the printer?? with all that noise, even at high frequencies? the fumes at least will cause a quick death vs a long agony due to the noise :)

@R..GitHubSTOPHELPINGICE from the cite note hiding behind the 14: "Birds are highly sensitive to inhaled toxicants owing to the high efficiency of their respiratory systems, and PTFE toxicosis is known to cause pulmonary edema and hemorrhage in pet birds after exposure to overheated nonstick cookware." ( https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3276392/ )

Ah I missed that there were two distinct links.

First of all, we need to discuss the failure mode and what can be done. LEt's do a
Failure mode 1: coolend-fan stops working.
Let's assume the coolend-fan for whatever reason (cut cable, defect fan, burnt board...) stops working. As a result, the coolend starts to rise in temperature, as it doesn't drain as much heat into the room air as before. This directly leads to an increase of the hotend temperature, which results in a case differentiation:

The hotend does not cope well with the loss of the heatsink and it triggers Thermal Runaway protection as for a given voltage bump the heating gets too high - the print gets aborted before the hotend reaches a temperature above 275 °C.
The hotend does not trigger Thermal Runaway Protection but the controller alters its heating behavior and works the heater on a lower duty cycle. As long as the hotend temperature is ordered to stay low enough, we will get a lot of extrusion problems from heat-creep, but the PTFE seated into the heatbreak stays below the heater break's temperature, as the thermal mass of the coolend alone draws away thermal energy into the room, even without the fan that keeps it at room temperature. As long as you don't print at above 300 °C and the thermosensor is intact, the failure mode does not release any fumes that could result in Polytetrafluoroethylene Toxicosis.

Failure Mode 2: coolend fan stops Working, no TRP, Thermosensor OK
But what if TRP is off? Let's look at this Double Failure: The hotend does not trigger Thermal Runaway Protection (or it was turned off to begin with) and the temperature increases due to the lack of cooling from the coolend.
As the hotend reaches 275 °C (few printers print that hot, and they use specialized setups), it should trigger the next safety line: a MaxTemp error and cut power. Heating stops before the coolend gets to the dangerous zone of 300 °C, as the coolend always is less hot than the heater block.
Failure Mode 3: no TRP, Thermosensor broken
We are getting desperate and turn off TRP, then break or disconnect the thermosensor to get a static low temperature. NOW we are getting serious, as only with such a failure we can trick our controller to continuously heat the heater cartridge and not trigger any of the error conditions. Only now there is the mere possibility to heat the coolend over 300 °C.
Marlin Firmware is designed to carefully work with checks and balances to keep the heater block in the wanted margin, and it would need a deliberate manipulation of the software to disable all safety features in conjunction with the failure of the thermosensor for the printer to go into Thermal runaway in such a degree that the coolend goes over 300 °C. And then you have different problems: your printer surely is turning into a molten pile in that failure mode. The presence or absence of the coolend fan would just delay the inevitable, should you run such a fire hazard-machine
Conclusion
Configure and install a recent firmware distribution (Marlin 1.1.9 and Marlin 2.x come with TRP enabled by default) and be sure to have MaxTemp enabled at 275 °C and Thermal Runaway Protection on, and you have a 3-layer safety against PTFE-fumes.
Adding more layers surely is possible, but the cost-effect calculation gets worse starting there.

This answer is great and I think it covers OP's concerns entirely as long as we can assume no fumes, or insufficient levels of fumes to be harmful to a bird, will be produced below 275. Since OP seems to have read something we haven't, though, I think there's still a small loose end there.

We don't know it the filament creates fumes though. At least we can have precautions against PTFE as a fume source.

It is doubtful that small PTFE inside hotend could produce that kind of dangerous gas leak.
But another thing should be considered: the PTFE tube inside hotend WILL degrade over time and will need replacement.
For last several years I had numerous experiments with all kind of solutions including my own designs made. And recently I found the best and all metal solution: Volcano 20mm heater + M6 stainless throat + normal SHORT E3D nozzle (not the Volcano nozzle but the normal one). Basically this solution put the problematic gap (merge of nozzle with throat) deep into hotter zone, you just need longer throat. So far I have best quality and speed with this approach.
The most important thing for the all metal hotend is to have fast retracts.
For the FAN I recommend to use double deck, that is to put one fan on top of another and connect them in parallel.
I found this solution in some server power supplies.
And indeed two fans produce really good flow to cool heatsink at higher temperatures (before I was considering water cooling but two fans much cheaper and do the job very good). Also the probability that two fans will fail is very low.


text:
How to have double extruder and double Z motor on a 5-driver board?
We are using the Board SKR 1.3 with the following pins:
/**
 * Trinamic Stallguard pins
 */
#define X_DIAG_PIN           P1_29   // X-
#define Y_DIAG_PIN           P1_27   // Y-
#define Z_DIAG_PIN           P1_25   // Z-
#define E0_DIAG_PIN          P1_28   // X+
#define E1_DIAG_PIN          P1_26   // Y+

We need a double Z motor, so We have defined the number of stepper drivers to 2 and it works like a charm:
#define NUM_Z_STEPPER_DRIVERS 2

Here is the problem, We need to have a single extruder with two heating zones, not a real second extruder. We have defined the number of extruders to 2:
#define EXTRUDERS 2

We want to reinforce that the second extruder does not exist, we only need the second heating zone. It's a big hotend with two different heating cartridges, that is, two different temperatures. So we do not need the stepper driver, only the temperature.
Then we get the following error messages:

We have thought of enabling the chamber and use it's pin, but we got stuck with all the structure for it:
#define TEMP_SENSOR_CHAMBER 5

#define CHAMBER_MAXTEMP  250  // Extruder first temperature zone

#define HEATER_CHAMBER_PIN 24

You can use 2 Z steppers on a single stepper driver. Most printers today use the steppers parallel, but in series will also work. Note that E(xtruders) are counted before Z steppers, because you don't have the 6th slot available it gives errors that you cannot place the Z2. Easiest thing to do is upgrade to a SKR Pro v1.1 to get rid of the Z2 error messages or split the connector. Do the heating zones have different temperatures, that is not clear, please explain why in the question?

About the 2 Z steppers in a single stepper driver: We will not be able to do this because of the electric current.
About heating zones:

I edited the question to explain it better.
We need to do something similar to this: https://www.thingiverse.com/thing:3669673
Since we don't have a heated chamber, can we use the temperature of the chamber?

If you do it in series the amperage will not be high! So basically you need a MOSFET driven PID controlled second heater element. You should probably have to look into some Arduino sketches, there should be plenty examples of those to find. What I'm implying is to use some free pins to set the MOSFET and record the temperature. Basically this is already answered by @BenjaminBaker.

We are already at the limit of the amperage for the machine design.  How could I do it using the chamber?

I understand, that is why I'm suggesting this option, it does not cost any more, it will be less than your current setup. Just enable the heat chamber options in the firmware, you do need a MOSFET attached to the pin you schedule from within the firmware. Would it be a good idea to focus on the problem in the title? E.g. "How to add a second heating zone to a hotend?" The title now hints to a solution you have chosen, but might not be the solution at all?

Regain the Focus please

I second the previous answer if running second Z motor in parallel, just split wires or buy adapter consisting of two females to one male, Z motor on most printers don't draw huge current (or at least in smaller less frequent intervals to give things time to cool).
Erm I extruder with two temperature zones, hmmm buy a larger heating element, like a E3D Volcano or I believe they have an extreme version now, mine is rated for 40 W+.
Or you could use external MOSFET with separate Arduino PID.

Unfortunately, We are already at the limit of the amperage for the machine design. Do you know how to do it using the chamber?

Unfortunately, I faced the same problem. The heated chamber will not be accurate enough due to lack of PID tuning. As a result, the temp will differ up to 10 degrees celsius when the heater is on. Is a big difference that will either not dry your filament enough or in the worst scenario will melt it. You will need to enable other features in order to bypass the issue. Find below how I enabled the 2nd heater element with the exact same setup as yours. You need to define the following:
#define EXTRUDERS 2

On the following part you must change the SERVO_NR to -1 otherwise you will face issues in case you are using a BLTouch, for example:
// A dual extruder that uses a single stepper motor
#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
  #define SWITCHING_EXTRUDER_SERVO_NR -1
  #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
  #if EXTRUDERS > 3
    #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
  #endif
#endif

// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
#define SWITCHING_NOZZLE
#if ENABLED(SWITCHING_NOZZLE)
  #define SWITCHING_NOZZLE_SERVO_NR -1
  //#define SWITCHING_NOZZLE_E1_SERVO_NR 1          // If two servos are used, the index of the second
  #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 }   // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
#endif

-----------------------------

#define TEMP_SENSOR_1 1

-----------------------------

And finally, you must #define PID_PARAMS_PER_HOTEND in order to be able to PID tuning the 2nd heater which will be used for your inline filament dryer.


text:
Marlin NOZZLE_TO_PROBE_OFFSET with glass
In my custom printer I have probe and nozzle at same height and configured Marlin this way:
#define NOZZLE_TO_PROBE_OFFSET { 43, -20, 0 }

On the bed I've a 2 mm glass. How I need to change the configuration? Do I need to act adding a positive Z offset? like this?
#define NOZZLE_TO_PROBE_OFFSET { 43, -20, 2 }

You don't define the Z of this array definition. Actually the probe offset is not of interest at all; it is the probe trigger to bed distance that is of interest, this can be set using M851 Zx.xx or through the menu.

You can define the probe offset (or better the trigger point to bed level distance) in the array definition of NOZZLE_TO_PROBE_OFFSET, but it is not the usual and logical place to do that. Instead you position the probe higher than the nozzle and define the offset later when calibrating the bed level. A positive value is a positive offset, Z+.

This answer is intended to be a more generic answer for Z-offset determination. The question is not clear on what kind of Z-probe is used. In case of a touch (or an inductive or a capacitive) probe, a probe trigger point defines how far the probe needs to be from the bed level (the sensor is always placed higher than the nozzle). This trigger point is a measure for the offset and used to determine the distance of the nozzle to the bed print surface (using the offset). Correct installation is trivial, as is the determination of the nozzle to trigger point definition. For a touch sensor, the probing element is either stowed, fully deployed, or pushed in during leveling up to the point that the trigger point is reached and the probe stowes the rest of the pin, see figure:

The M851 Zxx.xx offset is determined by lowering the nozzle beyond the trigger point until the nozzle hits a sheet of paper. If the stowed position to nozzle distance is used, the distance is too large and the nozzle will dive into the bed on printing. A similar sketch for inductive/capacitive proximity probes can be drawn.

When setting this up, I had to negate the Z offset. The process I followed was the same as described, lower nozzle until it touches the paper. But once you get the paper to touch the nozzle, you take the z reading and negate it thus giving you your Z Probe Offset.

No.
You define the Z-Value of the Nozzle to Probe offset mainly to get avoidance of collisions, but it is checked nowhere in the firmware code at all. Usually, the probe is mounted a millimeter or so above the nozzle anyway: you mount it in such a fashion that it triggers when the nozzle has the correct distance to the bed.
If you alter the bed by altering the distance between the nozzle and the metal part of the bed, you might need to alter the physical position of the probe to get the printer to trigger at the correct height, but you don't necessarily need to add a Z-offset.
You might, however, want to include it in the slicer for the case you want to print items in a sequence, which forces most slicers to try to do an error-avoidance pattern.


text:
Slow speed of the delta 3D printer
I'm running a large delta 3D printer with Repetier firmware.
The problem that is irritating me is that the speed of the carriages are too slow, like an old lady that is walking in a football field. When I command G1 Z10, for example, the carriages move with a super low speed. I checked everything but I couldn't find the problem.
Here are the specifics and the current settting of the printer:

electronics : Arduino Due + RADDS 3 42cmo6 6 kg
2.5 A stepper motors for x,y and z axes
3 TOSHIBA ''TB67S109'' stepper drivers (0.1 resistance, 1/16 mic stepping)
Vref of drivers: 0.7 V (when I    increase this to 1 volt a weird
sound comes from steppers and the carriages won't move)
number of pulley teeth: 20
belt pitch: 2
steps per rev: 200
micro stepping: 1/16
steps per mm: 80
Max. travel speed: 300 for X,Y,Z
Homing speed: 100 for X,Y,Z
Travel acceleration: 3000 for X,Y,Z
Print acceleration: 1000 for X,Y,Z

PS: I'm currently calibrating the printer and haven't printed anything yet.

did you write the firmware custom? have you tried to send the command G1 Z10 F300?

Thanks for your reply.Yes I tried that but nothing changed.

ok, try altering max Travel to the insane 10000, then try with G1 Z100 F1000?

Thanks Terish.I solved it.But now there's another problem the Z stepper motor only moves in one direction.
I checked all of the endstops.They work fine.
I checked the stepper drivers ,all of them had the same voltage 0.7 v .
When I home the printer all the carriages move upward but when they hit the endstops  the Z endstop stays triggered I mean the carriage holds the lever of microswitch.

oh? Did you forget to M503 seed the limits? Write your own answer!

I think so.Each time that I uploaded a firmware with new settings the printer remained with old settings.So I had to clean EEPROM first before uploading new settings.

and another thing that seems weird is that when I swap the X-axis and Z-axis motor cables on the Radds board. Both motors are working just fine but whichever motor that is plugged into the Z-axis motor driver socket would only move in one direction .

Please check your endstops with M119, usually (from experience), when a stepper only moves in one direction, this is caused by a triggered endstop.

When you command a move such as G1 Z10, you are omitting the speed at which the tool head travels. Without specifying the speed, the speed from the last command or speed setting is used. Frequently, after levelling the bed, the tool head is raised in Z direction with a low speed (movement in Z direction is always much slower than in X or Y direction), if you command a movement after raising the tool head it uses this speed. For faster movement you must include the feedrate, e.g. G1 Z10 F600, now it will accelerate from the initial feedrate (e.g. 300) to 600 during the move. If you want instant speed you set the feedrate first and then move the tool head:
G1 F600
G1 Z10

Remember, this is a Delta, the XYZ-"axis"-Motors are all moving along the vertical and their relative position causes the printhead to move in the XY plane as well as the Z axis.

@Trish I know, the fact that this is a delta machine has nothing to do with it, this is generic theory about G-code. But good you mention this for others to understand. :-)

authors: فهد ابو محمد


text:
Casual under-extruding on Ender 3 (don't know what to do anymore!)
I own an Ender 3 that I bought in December 2018. I have now a problem with under extrusion that I don't know how to solve. I tried everything: I changed the nozzle, changed the PTFE, changed the filament, dismantled the hotend and controlled that nothing was blocking the flow. The problem is that it isn't a normal under extrusion: in fact, the printing starts quite well, then for some reason the filament doesn't flow anymore. If I try to push the filament I feel like there is a gap that, if I continue pushing, it's "filled" and then the plastic continues to flow normally for some time. And when it has to do very little parts of the printing, this problem occurs, and the final result is a disaster. I hope someone can help me because I don't know what to do. The photos show the condition of the printing, and I have also a brief video that explains the situation better. I added also an image of the original CAD file, so you can see how it should have been, and another project where you can see missing layers when things get "difficult" to print (but, in the past, the printer worked perfectly with such projects!) and a simple parallelepiped, that the printer printed perfectly (I assume it's because it never stops sending filament, I don't know). Thank you for your time.
DropBox link for the photos: https://www.dropbox.com/sh/xav38c8tw8mgs8h/AAA7VGypWIrIR0RwB4Ih3O7ma?dl=0
YouTube link for the video (I recorded the printer printing and made a video with the most important moments such as when there is under extrusion; the video lasts 4 minutes and it can help you find the problem):

That is not under extrusion, that is no extrusion.

That sounds as a heat creep issue. Does the cold end gets properly cooled?

You may have a problem with the nozzle heat setting being too low for the flow rate, which is directly related to the travel speed.
As a background, when you're printing fast, the stepper motor driving the extruder has to move filament more quickly. That's obvious, but what is overlooked often is that the heater may not be able to move heat quickly enough to keep up with the filament.
Consider increasing your hot end temperature by five degree steps until you observe that the under-extrusion is resolved.
Some colors and brands of filament require adjustment in hot end temperatures. I'm currently printing with silk-like PLA. The filament I usually use prints at 210°C while it was necessary to turn up the temperature to 225°C to prevent nozzle clog.
Not yet viewed in my inbox is a YouTube subscription notice regarding "calibrating your hot end:"
YouTube hot end calibration
I suspect it may be of value to you in your current situation.

I've tried with only 5 degrees more, and the problem seems solved for now. Thanks for the answer, I'll update the situation in the future!

Glad to hear that it's working for you. Remember that different colors, manufacturers and types of filament require different temperatures. That was overlooked in the video, which I eventually viewed. If you find my answer to be the best available, please select the check mark to accept it.

For some prints, the problem seemed to be solved. This morning I printed a project (I can even share it with you, it's a lateral spool holder found on Thingiverse) and some of the last layers weren't perfect (a bit of under extrusion, nothing big). But, when I tried to push the filament, I noticed that it required a lot of force, more than the force that I had ever used. Now the line extruded is very little. I disassembled the hotend, but nothing is blocking the passage of the filament. Do you have any new suggestions for the problem?