text:
Converting an undirected graph to optimal G-code paths
I am developing an image to gcode program, that would recognize edges and generate corresponding G-code to be sent to a plotter. I was able to detect edges using the Sobel operator; then the edges are converted to an undirected graph using a search heuristic of my creation. Converting a graph to functional gcode is not difficult: depth first search does the job. The issue is that using this method the generated paths for the plotter are far from optimal, since they contain many movements that could be removed or shortened just by printing paths in a different order. This can be seen clearly in the images below.
Is there an algorithm that can convert an undirected graph to optimal G-code paths? Otherwise, if there are none or the problem is NP complete, what heuristics can be used to generate almost-optimal gcode (e.g. the ones used in programs such as Inkscape)?
The graph on the left is converted to the gcode on the right using depth first search on the connected component of the graph. The white and red lines represent, respectively, the visible writes and the invisible movements of the plotter. The G-code can be found here.

Pretty sure it is NP-complete (equivalent to travelling salesman problem), no?

@R.. TSP is NP-hard, since it's something like O(n!)

Is this just a learning project, or do you actually have something to print?

Yes, this is a learning project

Quote of comment of R.. GitHub STOP HELPING ICE on question reads:

Pretty sure it is NP-complete (equivalent to travelling salesman problem), no? –

This is correct; this is route optimization at its purest, and is by no means a new problem. You want to travel the shortest total distance between all vertices of what's essentially a totally-interconnected graph; there are no inherent limitations on going from anywhere, to anywhere. The TSP is the general-case statement of this problem, which your problem specializes only slightly by predefining certain movements along edges as being required in the final path (but those edges can be traversed in either direction and in any order.
What makes this complex on its face is the sheer number of possibilities that an exhaustive solution to the TSP like Held-Karp has to evaluate. You have no real constraints regarding which points to travel between; you can go from anywhere, to anywhere. Only a relatively small number of edges (your extrusion lines) are known requisites, and those can theoretically be traced in any order.
If I'm reading your graph right, you start near the top center, then go to the top left, then to the s-curve, then you jump to the main shape and start traversing it from the "right arm", turning downward through the "body" and "left foot" of the central shape, then up to the "right hip", through that leg to the foot, then back up to the "left shoulder", through that "arm", etc.
If I have that right, then you definitely have "endpoint detection", where you are identifying points in the graph that are part of only one line segment (and therefore will require a travel move to get to or from them), and are planning travel moves to and from those points. Very smart. I would be interested in knowing exactly how you choose the next one to travel to. Obviously the closest endpoint of an undrawn line is a natural choice, but your algorithm doesn't seem to be doing that. Right from the off it chooses a relatively further point to extrude and then comes back to the rest of the shape. That actually seems to be the most efficient move in the overall graph, because if you don't get it early you will very likely make a big move to get back to it later, but making that decision in a non-exhaustive way doesn't seem intuitive.
Anyway, your algorithm was doing pretty well at path choice, up until it finished drawing the "right leg". The most efficient move from there would be to go to the bottom of the "Y" looking shape to the right of the main figure and trace through that. When that's done, the closest undrawn line segment will be back at the left shoulder of the main figure, which will lead you to the small dots, and you'll end in this region with relatively small travel moves. Overall, I think that a "closest remaining endpoint" strategy would be near-optimal at every turn; when you reach the end of a drawn line, look for the endpoint that is closest to your current location. It would make most of the decisions your existing algorithm does, and a few better ones. It's not always the best choice (case in point, the dot at the upper left, which is never closest to the end of any other move and so will be ignored until it's the last one left) but more often than not it is.
My programmer savvy says you also have some recursive intersection tracing ("tree-walking"); the algorithm sees that there are multiple paths to draw from a single point, remembers that point and then picks a path. When it reaches an end of a chain of extruded lines, it goes back to the most recently-encountered intersection, re-evaluates available paths, and picks the next one until all paths from that intersection are drawn. Then you skip back to the previous intersection, and so on in a recursive LIFO fashion.
While that's also generally a smart way to approach it, it makes a couple obviously inefficient moves, such as from the "right foot" of the main figure back to the "shoulder" (which is the most recent intersection visited but not fully drawn by that point). The more efficient move is simply the closest remaining endpoint, the bottom of the wonky-looking Y to the right of the main figure.
How you choose intersection paths to prioritize is also key. In general, taking the route that will lead you to the closest intersection or endpoint will reduce the possible backtracking you have to do. However your algorithm seems to prefer the longest path from a fork (or the one with the most forks along it) and that turns out not to be a terrible way to do it in this particular graph.
Now, having drawn the "left arm" of the main figure, it is totally beyond me why your algorithm chose to cross the graph to draw the wonky Y, then cross back over to the left side. That is by far the least efficient move it makes and the one you're probably pointing to yourself. The most efficient path from the end of the left arm of the main figure given what's left to draw is straight-up closest-endpoint, filling in dots and lines on the left side, then making one move across the graph to the wonky Y. Closest-endpoint would actually have already filled in that Y as covered earlier, and you'd end your graph traversal in the left region of dots and small lines. You may have one or maybe two relatively inefficient moves between corners of this region on the left of the graph depending on the closest point calculation, but those are minor compared to the moves made across the graph. If your algorithm is producing deterministic results for this graph, I'd debug it and step through to that point, and figure out why on Earth it thought that sequence was preferable. Optimizing that decision may very well be the key to a near-optimal overall graph-walking strategy.

How would one reduce a multiple fork to a TSP with single visit of control points? E.g. considering leg middle points, or similar?

If you can save your plot as a dxf, you can use Repetrel to generate gcode with our "find nearest neighbor" optimizing. You can download it from http://hyrel3d.net - the full install instructions start at http://hyrel3d.net/wiki/index.php/Installation_Overview
See the process in this video:

Disclaimer: I work for Hyrel 3D. Licensing only required on the actual printer, not the software install.
Note: This will generate gcode paths, but every printing move will have an E value of 1, so it's fine for lasering or ink-jetting, or running with the Hyrel native E calculations, but probably not useful for other 3d printers.

Are you allowed to provide an explanation of the "find nearest neighbor" optimizing? Thank you :-)

How it is done is beyond me - I'm not the coder. Sorry.

Google is your friend. https://en.wikipedia.org/wiki/Nearest_neighbor_search


text:
How to connect power and fan to RAMPS 1.6?
My RAMPS 1.4 board has failed. I bought a RAMPS 1.6 to replace it but :

The old board had 4 power wires that went to 5 A and 11 A respectively. The RAMPS 1.6 has only 1 pair of power inputs. Which pair from the PSU do I connect to the board? Or do I combine them and connect them to their polarity respectively?
I have a cooling fan (12 V) for part cooling. In RAMPS 1.4, I had it connected to the pins between the power inputs and the X stepper driver on the board. The RAMPS 1.6 doesn't have such a pair of pins. Is it possible to connect it somewhere else on the 1.6 board?

Hi welcome to 3DPrinting.SE!

You only need to connect one pair (one red, one black) of sufficient wire gauge to the single power connector's plus (red) and minus (black). There is no need to bundle multiple pairs from the PSU. Some pinout graphs are not clear in this respect! I've always connected the heated bed through an external MOSFET to keep large currents away from the board, but according to the design, it is capable of handling the current.
E.g. this is the correct pinout:

And this an incorrect pinout graph (look at the lower left where the power needs to be connected to the board, this hints to bundling the 11 A and 5 A wiring):

The part cooling fan should preferably not be connected to a (non-schedulable) 12 V header. Instead you should use the D9 output connector to schedule the airflow of the fan for part cooling.
Note there is no spare 12 V header available on the board. You could use the spare PSU pair to power the coldend (radiator) fan.

source: Stack Exchange

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

authors: Ηλεκτρολόγος Μηχανικός

authors: نورا الجماعي

sort: votes


text:
Ender 3 Extruder First Layer Perfect But Then Starts Clicking Afterwards
All of a sudden I seem to be having a lot of issues with under extruding on my Ender 3. The bottom layer (of height 0.1 mm) prints perfectly fine. This is done at 15 mm/s speed. However, The moment the print moves to layer 2 and above (at the default speed of 60 mm/s), I start hearing a lot of clicking noise on the extruder.
So far I have tried the following

Replace nozzle to eliminate clogs
Cleaned the inside of the hot end assembly
Calibrated extruder steps/mm
Reduced the layer height from 0.3 mm to 0.2 mm
Reduced feed rate to as low at 50 %
Cleaned the filament feeder assembly and verified that it is able to push the filament properly (Extruding when the print is not happening works just fine with no clicking)

Even with all the above, the issue is still persisting. I am not what else could be causing this.
I am printing with PLA at 200 C

Hi, welcome to 3DPrinting.SE!

Temperature? Material being printed?

@R..GitHubSTOPHELPINGICE added in question

I has a similar issue. The reason it happened in my case is because a lot of pressure was created in the extruder due to the temperature being to low. Thus the plastic wasn't getting viscous enough. Try increasing the temperature with steps of 5 degrees until the maximum limit of the manufacturer for the plastic and see what happens.

What's the slicer you use? What's the extrusion multiplier/flow setting? to me it seems like a slicing error...

@Coder_foxI followed your suggestion and bumped up the temp to 210. The clicking reduced but was still there. Bumping up to 215 seems to have completely stopped it. Have started a 15 hour test print to see if the issue happens at any point. fingers crossed ! Could this be because the filament is almost a year old and was stored only in a plastic bag? As per the original filament specs, the temp should be between 190 - 200

@Ankit: If the filament was contaminated by significant moisture, the phase transition of it boiling might be robbing you of lots of heat in addition to interfering with adhesion/surface quality. But Rig Tig's answer sounds like a plausible explanation too. I print PLA at 210. In theory it can extrude at just 185 or so, but the rate will be very limited. I find filament manufacturers tend to lie about the optimal temperature ranges, probably because of users with printers that can't achieve high temps or FUD about PTFE at high temps.

I'm seeing this on ENder 3 with Cura slicer, but just noticed it's only on infill. Walls/shell/edge or supports are fine.    So speed makes sense but supports are pretty fast, and dont click, only infill (shrug)

Not allowed to comment, so have to answer:

The temperature sensor is a thermally sensitive resistor. Unfortunately, the temperature is near the high limit of that sensor, and the manufacturing tolerances are very significant. That is why a temperature tower is important for each printer, as well as each filament. (I have 4 printers and each requires a different temperature for the same filament. My worst-case is out by 25 degrees! - it's the one I bought second-hand because the original purchaser couldn't get it to work. I could replace the NTC, but it is easier just to have settings to suit that printer.)
Filament does change over time. Lots of theories about why, but the practical response is to tune settings to suit the filament. The alternative is to modify the filament (eg drying, adding oil to surface, etc.), but even with really old filament, I've found adjusting settings (in the slicer, like Cura) to be the most generally workable solution.

Bottom line is to test, adjust settings and repeat until the system achieves the result you need. Treat most recommendations as serving suggestions, so use them as clues (but not rules) for the puzzles presented as 3D printing.

Temperature variation is not going to cause what OP is seeing unless something us seriously physically wrong with the printer.

First layer is slow enough for extruder to keep up, but hotend is not hot enough when going faster! Test, measure, learn.

Hmm, the original 200/60/0.3 could certainly have that problem, but OP seems to have claimed trying 200/30/0.2 which should not be a problem at all.

My whole answer is that when machine says 200 degrees, the real temperature may be anything from 180 to 225: the NTC is just not very accurate. Typically, results for a given device are reproducible. A batch of NTCs are usually similar enough, and some manufacturers do have testing to weed out off-spec batches. But, they do not all age the same way, and in-service failure is always possible. For OP, just need to do a temperature tower, and use that result.

I think you're right that this might be a problem, but 20° is huge and I'd replace the hardware if I found it that faulty rather than just adjusting sliter settings to compensate.

A faulty thermosensor or choice of the wrong temperature table sounds plausible.

I also had the extruder drive slipping backwards (clicking sound) as well and narrowed it down to a Cura update that had changed my Ender 3 machine settings from Marlin to Marlin (volume metric).
Once changed back to Marlin, all is well now.  No over extruding.  Before reversing the change, I had to reduce the flow rate to 53 %. Now, I’m back to 100 % and very good prints.
Printing with eSun PETG, with the following settings:

temperature: 235 °C,
retraction 6 mm @ 25 mm/sec,
initial height 2 mm,
all others 1.8 mm,
speed 30 mm/sec,
fan on 50 % at layer 3 - no stringing.

I bought an Ender 3 and I had the same problem.
I was changing few things and finally got success when I changed the nozzle to the second one (I had two in the set).
At the end changing the nozzle was the primary step, but in my opinion more important was reduce speed printing, from 100 % to 80 %.
Since this simple modification (till now) all prints are fine now.

I too had this problem recently. I followed all the many hundreds of steps people suggested and nothing helped. I unistalled Cura 4.4 restarted my computer, installed Cura 4.1 problem fixed. Cura was the problem in my case.

For many people including me, Cura 4.4 works just fine. Most probably a setting has been changed causing problems, installing an older version might have helped because in that version, the settings are okay. This only works if the older version has been installed before and had correct settings, or if it has never been installed before.

A temperature of 200 °C is fine. You probably have heat creep from a Bowden style extruder. The filament starts getting softer due to heat creeping up from the hot nozzle. Filament expands and clogs the tube causing gear clicking. Usually there is a heat sink at the  the Bowden tube connection. You need to cool that immediately. Which is, to set your fan to 100 % speed at layer height = 0. That should do the trick!

Hi welcome to 3D Printing.SE! Please note that most fans that cool the coldend are not scheduled, so the advice to set the fan speed to 100 % at layer height 0 is not accurate; people may be inclined to think that the print part cooling fan needs to be scheduled to 100 %, which will not work and bring its own problems with it.

Heat creep does not have anything to do with a Bowden. You seem to be confusing the Bowden tube with the PTFE lining in the coldend leading up to the heat break. These can be physically the same tubing, but even a direct-drive system will have a PTFE liner unless it's with an all-metal hotend, in which case you have even worse heat creep and jamming because the liner isn't providing insulation.

The Ender-3 in question can't shut off the coolend cooling fan at all, it is a safety measure. Most direct-All-Metal hotends also have a liner for the upper part of the coolend to reduce drag in this zone. The only print-setup that completely can ignore any liner seems to be - at the moment - the e3D Hermea

@0scar: Re: safety measure, https://www.youtube.com/watch?v=NDXUHImA3Xc

@R..GitHubSTOPHELPINGICE I don't understand why you posted the link, the video contains a very custom temperature controller which cannot be scheduled, it does that automatically. It is a cool project though, but I doubt if many people have done this.

@0scar: It's a cool project but I fear people would screw it up in unsafe ways replicating it. Maybe it was OT. My thought in posting it was just that people don't seem to be treating this as the critical safety feature it probably is.

@R..GitHubSTOPHELPINGICE I know understand what you mean, and I fully agree about being a critical item!

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


text:
How to find correct part cooling fans?
I have a 2-pin 40 mm axial fan as part cooling fan. I don't post a link because I would like a general answer.
It runs on 12 V and when I start it at less than 40% it doesn't start. Even if I start at 100% and then I reduce the speed, at about 30% it stops.
When I read reviews online, I see people use fan speeds down to 10%, which no fan I have ever used can achieve.
How can I pick and connect a correct fan for part cooling, so that I can freely set the speed down to 10%?

If it works fine (and actually changes speed) from 40% to 100%, it shouldn't be the MOSFET or controller per se.
You may want to enable "FAN_KICKSTART_TIME" to give it a boost when starting, or use "FAN_MIN_PWM" to change the scale of the commands, so that even asking for 10% results in fan movement (at ~40%).

What is the AMP usage at 12V? Forget all this PWM stuff and get a fan that has a speed controller built in, which you can then control via the 3d printer's pwm.

If the fan you are using is not defective and if you test another fan that behaves in a similar manner, it's possible your firmware or hardware are the root cause of the problem.
The controller directs the driver to vary the power provided to the fan. It's a method called pulse wave modulation, aka PWM. Full voltage is applied to the fan one hundred percent of the time, for full speed operation.
For fifty percent performance, half of the time full voltage is sent, while half of the time no voltage is sent. The time period is rather short, but I didn't determine that aspect of this answer.
One can find a clear explanation of PWM online but one word is worth one one-thousandth of a picture:

If your fans are not performing properly, either the program embedded into the controller is buggy, or the driver module for that unit is bugging out.

I know PWM, but are all fans supposed to PWM down to so low values? 2-pin fans are not required to go this low, while PWM fans do.


text:
Why could my opaque PETG be printing "transparent" in certain places?
I'm printing with opaque grey PETG on glass. The intention is to produce a house number plate, so a shiny, production quality finish on the bottom. For this reason, extruding at 245 °C with a bed at 95 °C, to give a perfect glass finish with no filament lines showing. Smaller test versions have been very promising; this seems to be the maximum temperatures before warping or a severe elephant's foot arises.
However when printing the full-scale version, areas of the first layer of filament seem to go completely "transparent"; there seems to be filament there - you can feel the filament "comb" when you run your finger over it, and it feels a similar thickness to its neighbours.
On the attached photo you might think that those gaps are simply not printed yet, however you can see on the top right corner that it's actually started on the next layer.

What could be causing this? Is it a blockage which is interrupting flow, and maybe insufficient filament is being "stretched out"? Or maybe it could be something to do with temperature? Could it be insufficient layer height (I'm using 0.2 mm, but 0.24 mm on first layer, increasing further reveals filament lines, but tested higher and lower on smaller scale with success).
I've tested a range of extrude and temperatures and chosen the temps with the best results; but when I "go large" this always seems to happen. I've also calibrated the bed height using the 3 point adjustment screws on this printer (Qidi X-Plus). (The transparent areas are actually occuring in the center where the smaller test prints where working perfectly, so don't know how it could be to do with this).

Welcome to 3dPrinting.SE! I'm wondering if your extruder head is too close to the bed on the initial layer? If it's too close, you could be getting too much squish, causing it to be thinner than you'd expect. Just a thought.

Thanks @Paulster2. I did think this myself; which is why I raised the initial size to 0.24 from 0.2. I have to point out that all of the rest of the print (at this point) is  the same level, and printed perfectly, so maybe it caused a brief blockage I don't know...? Anyway I'll give some higher initial heights a try and see what happensm ta!

I'm not positive, but I thought layer height has to do with thickness, not with how far your extruder is off the bed? I'm talking about when you level your bed, if your head is too close to the bed, it might cause the issue you describe.

@Pᴀᴜʟsᴛᴇʀ2 Maybe all of your upvotes for the comment suggest people know differently, but as far as I was aware layer height is synonymous with thickness - it raises the extruder from the bed. Of course the levelling calibration also affects the extruder's distance from the bed.
The bed is levelled - But I think you're on the money more generally that it is down to the extruder's height from the bed, it's just stems from the initial layer thickness specified in the splicer; it's causing squishing as you point out. I'm testing different settings now.

Are you using Z-hop? Is there any play in the Z-axis direction? It appears that parts of the first layer are printed much thinner than other parts, can you confirm this in your question?

Right I didn't know about z-hop but I'm sat here thinking about whether there would be a way to do precisely this, to coerce it into working. Now I know what it's called I'll play around and report back, thankyou!
NB. There's no play in Z-axis, it's carefully calibrated across the bed. (If it was simply a case of the Z being a bit lower in areas, I'd expect the effect to be more "gradiented" maybe?). Re first layer height - the first layer is slightly higher - currently 0.28mm as opposed to 0.2mm to try to prevent first layer "squish" (as it's PETG not PLA).

Right, z-hop sorted it. It's pretty much spot on with one or two thinner lines, for which I turned off coasting. But really z-hop is the answer - 10mm I put in - thanks so much! Feel free to make your comment a solution so I can mark it as solved.

@Rab Thanks for your comment, I'll make it into an answer. Next time please include @ folowed by the name of the one you reply to and they get a message you reacted, then I would have seen your reaction sooner. Nice you sorted it out and taken the time to comment! Note that it is also allowed to post your own solution! Happy printing!

opaque means tiny bubbles, transparent means no tiny bubbles. sandpaper can turn one to the other depending on grit,

Are you using Z-hop? Is there any play in the Z-axis direction? It appears that parts of the first layer are printed much thinner than other parts.
What can happen if there is a little play in the Z-axis direction that the nozzle doesn't return to the same level after a Z-hop movement (e.g. backlash in the leadscrew nuts).
The "transparent" printed part appears thinner, this must indicate that the Z positioning is not up to par.

So after extensive testing this does indeed to be the issue, thanks @0scar! Whilst it had the symptoms of the nozzle being too close to the bed and going transparent (as PETG and sometimes ABS seems to do) in this case it was the Z-hop that fixed it; adjusting first layer height didn't. After applying a Z-hop of anywhere above 1mm it works.
My working theory is that it gives a bit more more space to start squeezing the comparatively thick PETG out. Note It's running at a low(ish) temperature for PETG (220°C) as the directions say that is maximum, and higher temperatures resulted in burning.

Wow. Can I like get this done on purpose? I would like to get my regular (opaque/solid) white PETG to be milky or even clear. What settings would I need for that?

@nl-x it only works for a very thin layer, the nozzle width is usually to thick (probably even the 0.25 mm nozzles), so walls wil not become more opaque than the first layer. Furthermore, single wall objects aren’t very strong. But, I once printed a white print to block out the bright LED’s light a little.

PETG becomes transparent when the layers completely fuse. Translucency is from incomplete adhesion or voids left. Try small increases to flow or print width to get slightly better fill - or slow the speed (but speed might not affect how much material is output).
Also, I see the top surface has a pattern on it. My FDM printer always does a similar thing and it will take tuning to get it smooth. If you see the pattern repeating consistently, it is possible the extruder stepper (or its driver) is starting to fail. I've had that too.

Exactly what I thought initially, Chris... as a rule of thumb and first things to check if PETG is transparent I'd say initial extruder height (layer height), then flow rate. In this case however adjusted flow rate to 110%, 125%, and then finally 150% to no avail. As noted above Z-hop fixed it completely.

there are a lot of variable at play here, when are there not in the 3D printing world. Given that I don’t know the answer to your question although very interested to learn how you solve it eventually I will mention the things you can do ,maybe you have to eliminate or identify what parameter is the fault cause.
Things I would eliminate -
1 bed temperature discrepancies - move the origin cycle of the print or rotate it to see that the problems are physical rather  than software. If the faults occur at the same place on a reoriented print then I would say you can eliminate nozzle and bed temps as well as material inconsistency.
May also be worth trying the print from a different complier I often find a piece prints differently and there fore better from this or that printer app.
2 could cooling be the issue? What if you hold a heat gun on the extruded parts to slow down cooling I have done this on tricky parts to get better binding, could be similar issue.
3 print a raft or test piece and see what happens to transparency with heat - if the material properties change as a result of temperature you could investigate why the temp is changing at the points in the print that are relevant -
Not sure that these ideas are that original but the fewer variable you need to consider the faster you will work out what to do about the rouge one
Regards

You're actually very close to the mark @ventis, thanks. Yes, the transparency was always appearing in similar places on every run. After recalibrating the bed to no avail, when increasing the temperature considerably (120°C) I noticed that places would start to burn consistently - but the absolute opposite areas to this one. So whilst Z-hop fixed it, I think a contributing factor is an inconsistent bed temp; as a result these areas are slightly cooler causing the PETG to be a bit thicker and not getting "primed" on the run.


text:
Can you print at low speeds with e3D Volcano hot end?
The e3D volcano features an extended heater block of length 20 mm with the cartridge heater running parallel to the filament.
The purpose of this is to increase the speeds at which filament can be printed (of course the extruder and other factors may still be limiting factors).
My question is how capable would this heat block be of printing at slow speeds with a 0.4 mm nozzle?
Is printing still possible at lower speeds or is the filament heated too much that jams occur? Is the retraction performance okay?

I wouldn't expect jams from "heating too much", but retraction is a serious concern. I don't see how you could retract 20 mm of molten filament by pulling it back; I'd think it would just stretch, leaving material at the nozzle happily oozing out all over your print. Retraction would still relieve pressure, and the vacuum pressure from pulling the filament back might back it up a little bit, but I'd be hesitant to use one. I'd love to hear from users with experience with it, though.

I'm in the process of converting to a Volcano hotend to increase the printing speeds for the same nozzle diameter, I'm using 2.85 mm filament (takes longer to heat up than 1.75 mm filament). Maybe it is helpful if you mention your filament diameter?

Speaking from first hand experience running a Volcano hotend, mostly using a 0.6 mm nozzle, but I have used 0.4 mm as well. I can't really complain about any lower printing speed limit (low speeds are usually a solution to high speeds problems for me).
Just for completeness: I am using a DaVinci 1.1 Plus with custom firmware (modified Marlin) and an E3D Volcano hotend. No problems with the nozzle, clean prints! Note: I am using the Titan Aero as extruder but not using the included pancake motor! Went with the original motor of the DaVinci.
And as always: the parameters are key! Given a bit of tuning you can get amazing results! For PLA and ABS I can work without stringing. Although ABS seems to be prone to pitting (slight underextrusion at start of path). TPU and other flex are sometimes a bit of a challenge, but that's mainly due to my own lack of experience there.
The one important caveat here would be to also reduce the nozzle temperature. A possible theory here might be that the filament has more time and surface to heat up.
(Sometimes I go as much as 15 °C lower as compared to normal/high speeds! Usually lower speeds means small pieces for me and in term means a limit to the layer cooling time.)

I agree that you can print at lower nozzle speeds because of the longer meltzone, but I find it often leads to lower layer adhesion and therefore strength. When printing for looks, I do recommend it, but when printing for function, stay high.

The worry must be about oozing and stringing. In general, no worries! Nothing a bit of tuning would not fix.
I have experience printing with Volcano with 0.4, 0.6, 0.8, and 1.0 mm diameter.
PLA, PETG, Nylon, TPE, and TPU. (Volcano nozzles have been my default style for several years now. I don't even own a 10 mm heat block anymore (ok, maybe one)).
And yes, speaking of the classic 0.4 mm nozzle, you get higher stringing and oozing compared to 10 mm meltzone. You'll need to tune your retraction - it will be significatnly higher than 10 mm meltzone (I'm not giving numbers because it depends on printer style, material, nozzle diameter, temperature, and even slicer and slicer settings...).
I do like to print quite hot though with lots of cooling (PLA 220 °C for example) to increase layer adhesion and strength - so I experience this more.
For oozing, you may need to experiment with XY travel speeds, wiping settings, coasting settings, and similar (this also will help with stringing).
Also, keep in mind that the bigger the nozzle diameter, the more cooling you'll need (coupled with slower print) just to solidify that massive extrusion flow/mass.


text:
Does an enclosure need a roof to print ABS?
I have an Ender 5 printer, which is a frame-based printer with no enclosure. However, I want to print ABS. Some experiments with a massive cardboard box have shown me I need an enclosure.
Because the printer has a box frame, fitting some perspex sheets will be easy. The bit that won't be easy is the top - the filament tube projects fairly high.
Will I need to cover the top for ABS though? I read somewhere that drafts are a killer for ABS, which perspex around the sides should prevent. I guess most of the heat from the heat bed will be lost out of the top, so will this be a problem for layer adhesion?

I'm going to do the same and would suggest checking this link out
for adding a top to Ender 5 It has a top and mitigates the X/Y movement issues.

Interesting, thanks for the link. I'm using a spare cupboard I've found.

Sides without a top will help.
Sides with a top will help more.
Do you need either? That depends. How warm, how dry, how drafty is your printing room?

The room is not particularly warm, but it isn't damp or drafty either. It's a box room.

From experience I can tell you that boxing it up completely is not always a good thing to do. I have covered the front and top of an Ultimaker 3E printer to find out after some printing time that the cold ends weren't getting enough cooling, so I ended up clogging the nozzle assembly, preventing finishing the print. If you need to box it up to create a higher enclosure temperature, you better be sure the electronics, steppers and nozzles (that are in the enclosure) are cooled properly or do not get too hot, or alternatively you need to regulate the enclosure temperature.

Okay that's interesting. I think I'll try boxing the sides first and see what that does. It is quite a cold room (not centrally heated so about 14-16 °C this time of year), but I can try setting the build plate to 100 °C.

If ambient temp gets under 70°F, layer adhesion becomes a real problem. I have found that enclosing the space and adding heat makes the printing more reliable.
This answer is based on a few years of solely printing ABS. I've got my printer on a tool cart and the spool holder is above on a post. The first time winter ruined a print, I threw a pallet covering plastic bag over all of it and put a small, low powered, forced air heater more or less pointing at the printing area. It wasn't air tight, but I made effort to close it up pretty well.
The current location of the 3D printer is on the bottom tier of the cart with a temperature controlled heater pointing at it. I opened up a large amazon box and set it against the cart, forming walls on 3 sides. There is poor sealing but the print quality stayed good.
Oh and obviously it is very dangerous and have burned down my workplace and home several times, so don't do it.

I can't tell if you're saying that an enclosure is needed or not. Please clarify. And welcome.

If ambient temp gets under 70°F, layer adhesion becomes a real problem. I have found that enclosing the space and adding heat makes the printing more reliable.

You might want to edit that into your answer, as an opening summary.

What is your last sentence saying? I can't tell if you are being sarcastic

@marcellothearcane 3D printing communities across the internet are very much safety police now. I guess there is not any more common sense. Yes, much sarcasm.


text:
Methylated spirits or turpentine to clean resin printer?
I'm new to 3D printing and have bought a resin printer.
Cleaning with Isopropol Alcohol seems to be the rage, however I think this is unaware of cost savings.  It appears methylated spirits is ok and is 25% the cost of Isopropol Alcohol.
I'm now down to wondering if I should buy methylated spirits or turpentine (I ruled out kerosene as too flammable)?
I'm leaning towards methylated spirits, however would like input.
Factors I'm curious about:

Cost: same for methylated spirits and turpentine.
Evaporation/solvency: ?
Flammability: ?
Poisonous levels: ?
Resin object cleaning effect: ?
Skin effects: ?
Smell: ?

I checked a few sources.

I would sort the items differently: 5 4 3 6 7 2 1. If it doesn't clean, the rest of the test is moot. If it is too dangerous to work with, the rest is moot. Cost is the last factor to look at.

If you use turps, you'll need something like isopropanol to clean that off the print. If you use meths in that sort of quantity on a regular basis, you might want to operate in a fume cupboard to avoid inhaling toxic methanol. Whichever solvent you use, you're going to be using nitrile gloves and eye protection at least because of the resin.

Thanks.  There is a non smelling methylated spirits.  I just ordered alphabetically, however I agree with Trish's priorities.  I have bought methylated spirits.

I would personally stick to isopropanol. Be aware that 3D printing is a very expensive hobby, but health wise this is a better option. Methylated spirits can quickly become dangerous, and often can burn with a close to invisible flame, meaning that you may not even see if it is burning. Also, the fumes can quickly become dangerous, whereas after years of dealing with isopropanol I have noticed no ill effects. Cost should not be your primary concern, health of you and your printer should be.

Isopropyl alcohol is also very flammable. Please read both SMDS and see the similarities and differences. https://www.sceneys.com.au/media/pdfs/msds/Isopropyl_Alcohol_SDS.PDF https://www.cleaningessentials.com.au/images/sds/Methylated%20Spirits%20-%20SDS4741.pdf Know the information from a real science source not a single persons anecdote.
Both are Class 3 flammable. and have similar properties re danger.

@StacyDennis that has nothing to do with the ability of the alcohol to take resin into a solution.

@StacyDennis Isopropanol doesn't burn with an invisible/close to invisible flame. You can at least see it burning. I'm extremely aware of the fact that both are highly flammable.

Are you for real?
Isopropyl alcohol is less dangerous to your health than ethanol with a touch of denaturant?
Seriously read the MSDS sheets for the products and know what's in them before you say stuff.
The amount of MEK or MIBK is so small.
Some and not many methylated spirits have a small fraction of methanol but so little that it is safe to work with.
Why would they sell methylated spirits in the supermarket and not IPA if it was more dangerous?
Personally, I would read the SDS/MSDS sheet for the metho if you are worried and find one that is only denatured with Bitrex but to be honest I doubt there will be a health issue any more so than IPA with any of them.

Hi, Matthew. This would be a helpful answer if you listed some sources to support what you say. And welcome to the stack.

I agree with Matthew, there is no reason to think Methylated Spirits is more dangerous than IPA, and if someone believes there is, they should give reference to some science based rationale to push their point. "I've used it for years and I'm ok".. is not scientific.
I think Luke's answer needs more of this than Matthews @Davo..


text:
My Z-axis is limited to 15 mm at height
I have a Prusa i3 and I have a problem concerning my Z axis. It stops at 15 mm even the object to print is more than this.
Can you, please, help me to solve this problem.

Hello Fedaret and welcome to the Stack. Be sure to take the [tour]. Your question is lacking detail and as such is hard to answer without knowing a couple of things about your printer setup. Please [edit] and fill in the [placeholders] in the template I added and then remove the leading "<" and trailing ">" afterwards. This will turn it visible and help us help you find the actual problem.

@Trish is right, it would help greatly to have more details, such as the model of printer, photos of the printer at the upper height limit, and a video with sound of moving the head against the 15 mm stop.
Without those details you might answer your question for yourself (and for SE) by trying these tests and considering the results.  If you have already done these things, it would help us help you if you included your results, and other experimental results, in the question.
The problem could be in the mechanism or in the slicing program.
Using the UI, can you raise the head above 15 mm?  On the Prusa3D branded i3m3 the UI will allow you to move the Z axis hard against the top stops.  If the UI can raise it, the problem is more likely to be in the slicing program.
If the UI can not raise the head above 15 mm, move has high as you can and listen carefully.  Does it simply fail to move with no noise?  Is there a clicking or banging sound as you try to move higher?
If there is a clicking or banging sound, something hard is interfering.
If it simply stops moving, does the machine reset or just stop with no glitching on the UI?  It is reset, look for a cable problem, such as a short circuit or wires pulling on the controller PCB.  If it is just a silent refusal to move, it could be the Z-axis plug is loose and being tugged by the cable bundle to the head.
If the problem seems to be in the slicing software, check that the Z-height is set properly there.  If good slicing software thinks you have only a 15 mm height, it won't try to print higher than that.


text:
All-metal hot-end Creality Ender 3 Pro jamming issues
I have a Creality Ender 3 Pro printer, and just installed the Micro-Swiss All-Metal Hotend for CR-10 S Pro. After installing following the video instructions by Micro Swiss and Teaching Tech, I set it to print a good old Benchy.
Was working fine, until about half way through it blocked up.
The stuck filament appears to be trapped, even when heated to 230 °C, which makes me think it may have melted into a gap somewhere and cooled creating a block. I am using Filamentive PLA.
My questions are a) how should I remove the filament fully without damaging the thermistor and heating element and b) what do I need to do to avoid jamming?
Any suggestions?

All metal hotends are different in handling than lined hotends. You need to dial in your settings. For example you need to run them on different temperatures, retraction is different. You might need to dissemble the hotend to thoroughly clean it. Also, they need to be hot-tightened...

@Trish thanks. All good points. I have a range of temperatures up to 235 C (above that seems too high - in fact, the boden tubing seemed to have started melting at the top when I managed to get it out during the first test). I hot-tightened. Any suggestions on what to use to clean, and how to get the filament out?

Bowden can't melt at any temperature you can reach. It may start to chemically break down once you get over 250-260 but that's it.

The so-called all-metal hotends are sold as upgrades to the lined hotend versions. Actually, they are not. These are different type of hotends that can be used printing at higher temperatures. However, PLA printing at high temperatures is not advised. You rather choose to print at slightly lower temperatures.

What do I need to do to avoid jamming?

This requires that you change the way you operate the hotend/extrusion process. Why? Because the hotend is not lined, the heat from the heating block can more easily creep up the hotend into the coldend. This requires that you have a good performing cooling fan cooling the radiator fins of the coldend. Furthermore, because of the higher temperature (as the liner is not shielding the heat to the filament), the melted and the softened length of the filament in the hotend assembly is substantially longer. This means that excessive retraction lengths can cause soft material to be be pulled back too far. Knowing that the filament diameter is smaller than the tubes or the diameter of the heatbreak, this soft and molten filament can get stuck in the increased diameter section of the heatbreak.
But if it gets jammed,

How should I remove the filament fully without damaging the thermistor and heating element?

You need to ensure that enough heat gets into the hot and coldend to soften all the material. Currently PLA is stuck in the assembly. To soften all the material I would diasble the cooling fan of the coldend and heat up the heater to a temperature of 210-220 °C and keep this warming up for several minutes to allow heat to creep up. You can now try to push the filament through. If this fails wait longer or increase the temperature by 5 °C increments at a time. Too high temperature can cause filament to cook and carbonize. making it effectively harder too clean. If this fails, disassemble the hotend while hot (be careful!) and clean the individual part mechanically or use heat.


text:
What level of detail can be expected from a consumer-grade SLS printer?
I'd like to prefix this question with the fact that I know virtually nothing about 3D printers, aside from the general principles of how they work.
I've recently seen that SLS printers have become more affordable, to the point where in a few years they might be a compelling investment. I'm mainly interested in 3D printing miniatures for painting, and as such this one:

For scale, the miniature is about 150 mm long. I'm mainly worried about smaller details, such as the faces of the Gunner or Driver. Will a consumer-grade SLS printer be able to print to such level of detail?

note that GW is VERY protective of its IP and Trademarks, and very much hates the mere existance of resin printers that can print their stuff. Which is all of them. Also Note that SLS is Nylon powder and most definitly not consumer grade; mSLA/SLA/DLP is Resin based and has become very much affordable.

Consumer Market?
While there are no "consumer level" SLS printers on the market currently, the question in itself is very interesting on a scientific level. The pricing edges for the consumer market for 3D printers can be somewhat estimated from the consumer electronics segment. This puts a maximum price tag of about 2000-2500 \$ onto it, comparable to a high-end PC.
CurrentlyFeb. 2020, most SLS machines come with 'inquire for price' or with prices of 5000 \$ or larger price tags, which indicates they are intended for professional or industrial use. Most SLS printers in consumer hands seem to be phased out older systems from second hand. So while there are for sure tries to get SLS more affordable, it is not there yet.
Resolution of SLS
SLS printers have resolutions based on two factors1:

grain size
laser diameter

Generally speaking, the finer the grain and more focussed the laser, the better the resolution. Current industrial machines - even cheap ones - work with particle sizes between 20 and 80 µm, with the bulk being around 40 to 60 µm2.
The laser focus point ranges generally in the "tens of µm"1, and is listed with values between 50 and 300 µm for most ceramic powders in that paper.
Conclusion
As a rule of thumb, 50 µm seems to be the average nylon spot size, which is very much comparable with resin printers using SLA/mSLA/DLP technology. Details on miniatures are usually in the area of 100-200 µm, so are well achieveable with either.
Comparison SLS to SLA/mSLA/DLP
Resin technology has the benefit of being easier accessible with some entry level printes between 200 and 500 \$. Nylon SLS prints do demand a sealant but prints without any supports, Resin does at times need support.
Printing times for DLP/mSLA is not dependant on the ammount of space used, making packing the build surface with as many models as possible benefitial, while SLS, like FDM, works with a moving spot, so the ammount of models increases print time.
Both Technologies work with hazardous material - resin and very fine powders respecively - and demand proper PPE to handle them.

Thank you, this answers the question whether or not SLS printers are capable of what I am aiming to do. It's still a long way before I could afford myself such a printer, and resin is a material I dislike working with. I hope in the coming years SLS printers will become more affordable.

MechMK1 I just bought a resin printer and the industry has made it very easy to handle and in strength, resins are in the same realm as my FDM ABS parts. I also do a lot of 2 part silicones and urethanes for casting and that stuff is annoying - pouring some 1 part resin in a small vat is so simple.

It's difficult to tell from your photo the level of detail required. A scale reference in the form of a metric ruler would be valuable. If, for example, the metallic eye on the gunner is 2 mm diameter, that would be 40 layers of 50 micron grains, allowing for substantial detail.
Consumer level SLS printers, such as the Sinterit Kit, use fifty micron nylon powder and is subject to some shrinking. This implies one can expect slightly smaller than fifty micron detail to appear.
One of our makerspace members purchased an SLS model from Shapeways. The surface is layer-free and one can see the individual granules under magnification. If you required a level of certainty of this detail, consider that you can create a model containing various levels of detail, then commission Shapeways to create it.
It's certain that they use a production level system, but one can inquire of Shapeways of the size of the powder that is used.

As I said in the question body, the oval base is 150 mm long. Thank you very much for the idea of creating a test-model.

@MechMK1 There is no end-user SLS machine around. The cheapest SLS machine I could find is "please inquire for a price" for new ones and several grand for used ones.

@Trish According to this website, the Sintratec Kit is an SLS 3D Printer that costs 5000€.Sure, it is not cheap, but certainly within the realms of "affordable for enthusiasts".

@MechMK1 It's not consumer but industrial grade however. The consumer market is, traditionally speaking, defined by prices at ca. 2000 and less.

@Trish I wasn't aware of specific cutoff points such as 2000€. That's why I also mentioned in my question that SLS printers are currently in the process of becoming more affordable for consumers. It's very well possible that in 5 years, we'll see SLS printers at 2000€. My question was simply what I could expect from such a printer.


text:
Sloped bridges in Cura
I'm trying to print this model of a boat:

It has 2 keels joined by 5 bridges, but the top of each keel is curved, so while the middle part is mostly flat, the bridge on the back has a bit of a slope (as you can see with the "stair" effect).
The problem I have is that I can't get Cura to properly bridge that specific part: It creates a bridge for the first layer, but on the next layer (where there's a part that needs bridging), it just starts drawing a surface:

In this picture you can see layer 86 it has drawn a bridge between both keels, but on layer 87 it tries to print a surface larger than posible. That results in this happening:

and this causes big gaps in the top surface.
I've been trying to play a bit with the settings in Cura, but I can't find anything that would fix this... Is there anything that can help me? (maybe even the model has a design problem)

Those are very long bridges. I would use a very sparse support for these, like 5-10 % or such. To reduce support to a minimum, I'd also print the whole model upside-down,

@Trish: If using low support infill rate, I'd definitely recommend using a support interface (roof). Otherwise you're likely to get non-bonding of consecutive extrusions, even if they don't sag much, which will look really ugly as a top surface and might "unravel" over time.

Cura has some options in this area that might or might not help. I've had mixed results. You should make sure Enable Bridge Settings is on, and try adjusting Bridge Skin Support Threshold. By default bridge settings are only used if 50% or more of the area is unsupported. Area is an utterly ridiculous/meaningless metric for whether bridging is needed, so you probably need to set this to just a really high value like 90% or 95%. You may also want to check that Bridge Has Multiple Layers is on.
With that said, for your model I would just use supports with a support interface (roof) below the bridges. You could reduce the material cost of them with Support Tree mode. But there are of course places where you can't use supports in similar models (bridge is over another part of the model and there's no access to remove the support material), so having working bridge settings is still desirable.

One other thought, but I'm not sure if it's good: you might try reducing Extra Skin Wall Count to 0 so that Cura's not trying to build inner walls over thin air.

The key was on Skin Support Threshold - In my case 80% was enough, thanks for the tip!. I don't think I'll be using supports.... it's a 3cm gap and although it's true that's starting to be a long bridge, I see that for the ones that printed properly there's a minimal amount of sagging.


text:
Where to define grid for bilinear levelling in Marlin
I'm using firmware Marlin 2.0.3 on an Anet A8 printer. I'm using a Roko SN04-N NPN bed leveller. I've managed to set up 3 points bed levelling but I wanted to try the bilinear levelling.
Issue is, the sensor goes out of the aluminum bed ever so slightly during levelling, resulting in the printing head crashing on the bed.
Where can I set the grid for the bilinear levelling in the config file? I didn't find the option in the file and Google wasn't of any help this time.

Did you define "Z-probe boundary limits"? Please post your changes to the configuration.h and configuratio_adv.h as in the latter file the boundaries are set in Marlin 2.x; e.g. #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE. Without posting the values, it would be guessing what is wrong. If you used the Anet A8 configuration files from Anet A8 config. you will find that these are incomplete with respect to bed limits, these files require updating!

@0scar yes I did and it's ignoring it! This is my configuration.g and this is my configuration_adv.h. I think I got the config for the Anet from the Marlin examples, but I'm not 100%sure. Where should I find a complete setting?

No it is not ignoring it, your bed limits are incorrect, I've updated the answer to your specific problem. Basically your left limit is incorrect (too far left), hence the sensor is not on the plate. Hope you can fix it now, happy printing! :-)

If you have managed to setup 3-point levelling, you should be able to enable bi-linear levelling in the firmware.
From the configuration.h file for Marlin firmware you can find the following options:

/**
 * Choose one of the options below to enable G29 Bed Leveling. The parameters
 * and behavior of G29 will change depending on your selection.
 *
 *  If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
 *
 * - AUTO_BED_LEVELING_3POINT
 *   Probe 3 arbitrary points on the bed (that aren't collinear)
 *   You specify the XY coordinates of all 3 points.
 *   The result is a single tilted plane. Best for a flat bed.
 *
 * - AUTO_BED_LEVELING_LINEAR
 *   Probe several points in a grid.
 *   You specify the rectangle and the density of sample points.
 *   The result is a single tilted plane. Best for a flat bed.
 *
 * - AUTO_BED_LEVELING_BILINEAR
 *   Probe several points in a grid.
 *   You specify the rectangle and the density of sample points.
 *   The result is a mesh, best for large or uneven beds.
 *
 * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
 *   A comprehensive bed leveling system combining the features and benefits
 *   of other systems. UBL also includes integrated Mesh Generation, Mesh
 *   Validation and Mesh Editing systems.
 *
 * - MESH_BED_LEVELING
 *   Probe a grid manually
 *   The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
 *   For machines without a probe, Mesh Bed Leveling provides a method to perform
 *   leveling in steps so you can manually adjust the Z height at each grid-point.
 *   With an LCD controller the process is guided step-by-step.
 */
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

If you are using 3-point levelling you enabled constant AUTO_BED_LEVELING_3POINT by removing the comment characters (//):
#define AUTO_BED_LEVELING_3POINT

to enable bi-linear levelling, you should remove the comment characters before constant #define AUTO_BED_LEVELING_BILINEAR:
#define AUTO_BED_LEVELING_BILINEAR

Definition of the grid is done by specifying how many point you want to have using constants GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y:

#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)

  // Set the number of grid points per dimension.
  #define GRID_MAX_POINTS_X 3
  #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

The code above shows the default definition of a 9 point (3 x 3) grid.
Note that this will only work well if the area for the sensor to reach safely is correctly defined. If the sensor is missing the build plate, you have not correctly defined the limits for the sensor. Question "How to set Z-probe boundary limits in firmware when using automatic bed leveling?" has an accepted answer that describes how to define an area on the plate that the sensor may reach (the answer on this question also discusses Marlin 2.x).

In the specific case of the OP (after posting the config files)

From the posted configuration files your probe position can be obtained:
#define NOZZLE_TO_PROBE_OFFSET { 25, 55, 0 }

So your probe is at the right-back when facing the printer. Also your bed area attempt (commented) and the current active bed area can be obtained:

#if PROBE_SELECTED && !IS_KINEMATIC
  //#define MIN_PROBE_EDGE_LEFT 5
  //#define MIN_PROBE_EDGE_RIGHT 200
  //#define MIN_PROBE_EDGE_FRONT 55
  //#define MIN_PROBE_EDGE_BACK 200
  #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#endif

From these excerpts it is clear that the bed limits are incorrectly defined.
Following the theory from this answer the probe is only allowed to visit the following (dark red) area:

This area is defined as:

  #define MIN_PROBE_EDGE_LEFT (PROBE_OFFSET_X_FROM_EXTRUDER + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_RIGHT (MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_FRONT (PROBE_OFFSET_Y_FROM_EXTRUDER + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_BACK (MIN_PROBE_EDGE)

which translates to:

  #define MIN_PROBE_EDGE_LEFT (25 + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_RIGHT (MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_FRONT (55 + MIN_PROBE_EDGE)
  #define MIN_PROBE_EDGE_BACK (MIN_PROBE_EDGE)

As seen in the commented //#define MIN_PROBE_EDGE_LEFT 5 and uncommented #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE (equals 10) left probe limits, you are at least respectively 20  or 15 mm short, hence the sensor is not on the plate on the left.

I did try that, but the printer is still ignoring probe offset and probing boundaries. I've tried also this bugfix but still probing outside of the bed

@vale.maio2 I've updated the answer, from your config files it was clear that the incorrect value for the left boundary was used causing the sensor to be off-plate on the left.

thank you very much for your correction, but now when selecting the auto levelling, it just probes the center of the bed and stops there, same when printing something. Unfortunately I have to switch back to 3 points.

@vale.maio2 That means that Z_SAFE_HOMING is active, strange that it stops... Look for more information on enabling bi-linear leveling here. Did you also determine the correct Z-offset and set it with M851?

yes it's active but it's not an issue with 3 point levelling. I'll have a read at that documentation, but I've also discovered that the bed is absolutely uneven. I need to make it even fist, then even 3 point levelling should suffice. Thank you again for your input.

@vale.maio2 Note that the 3-point X coordinates for the 2 left points are also incorrect, but because of the width of the sensor, you manage to get probings at X = 20, factually this should be 25 + MIN_PROBE_EDGE! Note that the answer does answer where you need to adjust the grid points, too bad you run into another issue.

Currently on 2.1.1 it is just
#define PROBING_MARGIN

On line 1500 of Configuration.h
For example,
#define PROBING_MARGIN 10

Hi and welcome to SE.3DP. Thanks for the update. I have added code formatting for you and a link to the actual line in the code, just to bulk your answer out a bit - to make it more substantial. Please don't forget to take the [tour].

Note for anyone looking at the answer above, but in 2.1.x:
The #define lines have been renamed:
#if PROBE_SELECTED && !IS_KINEMATIC
  #define PROBING_MARGIN_LEFT PROBING_MARGIN
  #define PROBING_MARGIN_RIGHT PROBING_MARGIN
  #define PROBING_MARGIN_FRONT PROBING_MARGIN
  #define PROBING_MARGIN_BACK PROBING_MARGIN
#endif


text:
Upgrading printer controller
I purchased a (very) low tier printer a while back, and now I am looking to start upgrading. First on my list is to upgrade the controller1).
My initial plan was to upgrade to an Arduino Mega with a RAMPS 1.4 running Marlin, but as I started to try to find a RAMPS 1.4 board I started questioning my plan. Almost every source I could find for the board was either out of stock or very sketchy. Then I discovered that RAMPS 1.6 exists, but I can find even fewer places with it in stock.
Is the Mega + RAMPS combo still what people are using? I made a printer 4 years ago and that was what I used, but due to the scarcity of RAMPS boards for sale I am now unsure if it is still being used by the community.
If RAMPS still is the recommendation, what brands are reputable? (I'm trying to figure out if using RAMPS 1.4 with a Mega is an outdated solution and if there are better solutions these days.)

1) Upgrading is necessary for:
Temperature/humidity sensors for monitoring/feedback; enclosure heaters (plan on having enclosed build space, work in a relative cold space); larger display with plenty of tactile switches; light sensor so the LEDs illuminating the enclosure can be modulated to provide more constant light levels for a webcam; possibly some joy sticks to manually maneuver the extruder and bed; etc. Basically I want something that can feasibly handle any unnecessary sensor/input I may eventually want to add. I'm familiar with Arduino and know it has those capabilities, but have no clue about other controllers.

Well, the 32-bit boards are becoming more general now. These are fine boards when you like to tinker and need many extruders, steppers, etc. Do note that for a simple printer this may be over the top. RAMPS shields are sold in abundance on the Chinese vending or auction sites. What is the reason for the upgrade?

I'm a software junkie so I want to be able to have full access to the code on my machine, and I also want to have a controller flexible enough to handle all the upgrades I plan on adding to the printer eventually

RAMPS boards aren't really "state-of-art" anymore. Marlin supports both modern 32-bit boards (SKR 1.3, SKR Pro, MKS SGEN L, Fysetc S6 etc.) as well as the older Arduino / AVR based boards (RAMPS, Fysetc F6, MKS GEN L etc.).
You may also want to take a look at the Klipper firmware. It supports lots of such small features, and you could also use multiple boards working together as one system, all controlled with a Raspberry Pi.

If you own a Raspberry Pi , you may first want to try Klipper firmware. This firmware does the heavy lifting on the RPi itself and sends commands to the printer board via USB.
My Ender 3 pro works much better with this firmware.

My printer improved a lot as well. Since my board had expansion slots with free pins, I can also add external stepper drivers. Of course I admit that just buying a SKR board would save a lot of time.

RAMPS boards aren't really "state-of-the-art" anymore.
The newest version, the Ramps 1.6 Plus, at least supports drivers with UART / SPI communication though, which is required for most "silent" TMC drivers. BigTreeTech's GitHub still seems to miss schematics for it though.
Marlin supports both modern 32-bit boards (SKR 1.3, SKR Pro, MKS SGEN L, Fysetc S6 etc.) as well as the older Arduino / AVR based boards (RAMPS, Fysetc F6, MKS GEN L etc.).
Out of those, I'd currently recommend the Fysetc S6 with TMC2209 or TMC5160 drivers.
You may also want to take a look at the Klipper firmware (as mentioned in Puneit Thukral's answer).
It supports lots of such small features (as mentioned in your comment), and you could also use multiple boards working together as one system, all controlled with a single Raspberry Pi.
It's based on Python modules, so it should be relatively easy to add features to.

As per https://reprap.org/wiki/RAMPS_1.6,

The RAMPS 1.6 is the second RAMPS iteration released by BIQU/BIGTREETECH. It replaces the original green power connector with a pair of screw terminals, adds a larger heatsink over the MOSFETS, and has a larger bed MOSFET. It maintains the surface-mounted fuses and flush MOSFETS of the RAMPS 1.5.
Also, the positions of the D1 and D2 diodes have been swapped from the positions in RAMPS 1.4, the D1 diode is now the diode closest to fuse F2. The same is true for RAMPS 1.5, also manufactured by BIQU/BIGTREETECH.

In other words, RAMPS 1.6 is pretty much the same as the 1.4 board. It just has some minor changes.
As for availability, I have found numerous listings for RAMPS 1.4 and RAMPS 1.6 on Amazon (US) and Ebay (US) for under $10.


text:
What is the best infill pattern for shearing strength?
For practicality sake, I need to print a design such that there will be weight hanging parellel to the layer lines. Is there an infill pattern that would be better than others at handling this?
I realize that all kinds of infill will still have the same layer boundaries. Just wondering if choosing any given infill might provide better results.

CNC-Kitchen anyone?

If your layer lines are a concern for strength, different infill patters won't help because they are on the same layer lines (as you suggest). Your best bet is to reconfigure the print so the layer lines are no longer an issue, or consider creating the object using a different medium. Sometimes "practical" doesn't get the job done. If the part doesn't work, it doesn't make your life any easier :o)

Wondering if it's possible to designate "spiralization" for infil independent of the structure's walls?   But I agree with paulster that you should consider reorienting the print so the layers are perpendicular to the hanging mass.  Alternatively, make the part into 2 or more pieces so as to achieve desired layer orientations.

Yes, some infill patterns are better than others for preventing separation of layers. Basically (modulo some assumptions about uniformity of distribution of force), the shearing strength of the part in the Z direction at a particular layer is going to be proportional to the surface area of bonding between successive layers. So infill patterns that stack identical infill extrusions on top of each other at each layer should be expected to be much stronger than patterns where successive layers make only partial contact. In other words, "2D infill patterns" - grid, lines, triangles, tri-hexagon - should be a lot stronger than "3D infill patterns" - cubic, octet, gyroid, ... This matches my experience printing bolts oriented along the Z-axis - ones printed with gyroid snap easily unless other measures are taken to strengthen them, while ones printed with triangles are fairly strong (though nowhere near as strong as ones printed oriented in the XY plane.
If you have other reason to prefer a "3D infill pattern", its weakness can be mitigated mostly by increasing the infill line width, so that the lines of successive layers which don't entirely overlap still touch on more surface area. (Just increasing the infill line width also works to make "2D infill patterns" even stronger.) However, be aware that with high print speed typically used for infill, increasing infill line width can easily exceed the capability of your hotend, resulting in underextrusion, extruder skipping, and stringing all over the place.

The main point of what I was saying is if you can change the orientation of your print so the stress is through the X or Y planes instead of the Z plane, the part will be much stronger. If strength is a factor and you're going to load the part, print orientation really needs to be looked at. I take your point about more surface area is going to be better. For that matter, 100% infill is going to work best, then, however, it still won't be as strong as what you'd find in the X/Y direction.

@Pᴀᴜʟsᴛᴇʀ2: Indeed, that will help more, but if you have constraints that preclude changing the orientation or competing goals that would make it into a trade-off, choosing a different infill pattern can be part of the solution (often even a complete solution).

The shearing strength characteristics, or better known as interlaminar shear strength (ILSS) characteristics, describe the shear strength between the layers. This is also known as flexural or bending strength characteristics. These are best obtained by performing a 3- or 4-point bending test; these tests are standardized by the American Society for Testing and Materials, ASTM International (e.g. ASTM D 7264).
The bending test will cause internal compression (concave side during testing) and internal tension stresses (convex side during testing). The figure below shows the general setup of a 3-point bending test and below that  magnification of the stresses inside the test specimen.

The tests concern the interlaminar shearing of layers, so, the much more material a layer consists of (e.g. infill percentage) the higher the resistance against shearing off. Also, how the infill is internally supported by its form helps, if it buckles easily on the compression side, the buckling occurs before shear off.
Not only the type and percentage of infill is important for the flexural strength, but also the layer height, nozzle diameter print temperature as found in this research paper. Another paper, "Effect of infill on tensile and flexural strength of 3D printed PLA parts" directly answers your question, quoting the figure from the paper:

You should choose an infill that has the most support. Since year and day, in creating composite sandwich panels (often used in aerospace applications where high stiffness and low weight are essential) honeycomb core structures are used as these honeycomb structures allow minimization of the amount of weight and used material. From the figure above you see that rectangular infill is best suited for FFF products. Honeycomb is the second best, but significantly lower. Note that orientation is key! E.g. this test conducted by Martin shows that Gyroid and honeycomb infill performs better than rectilinear:

To answer your question, not only infill pattern, but also infill density, nozzle diameter, layer height and orientation play an important role in the shearing strength. This is why ASTM has defined a standard so that we can compare results amongst different materials or different lay- or set-ups. These tests are typically performed dynamically (alternating load), statically with increasing load (increasing load with time) or statically fixed load (constant load to determine the creep properties, these test typically take a long time when the load is low).

The first paper (where you also took the graph from) does not mention anywhere the weight. Different infills produce often different final infill weight, as CNC kitchen (check on Youtube) found out. Unless the article explicitly states the issue and states that the infill percent had been corrected for it, we should not assume the procedure was correct. I guess they completely ignored the issue.

@FarO Weight equals infill pattern and infill density, a wavy pattern creates more infill per mm product, so weight does not have to be explicitly mentioned. Please give a link for the CNC video, I cannot find any regarding shear strength characteristics.

The effect I was mentioning: 10% infill results in different amount of material depending on the chosen infill pattern: https://youtu.be/upELI0HmzHc?t=206

@FarO Exactly what I'm saying in answer and comments.

0scar's answer is the "solution" or true answer to the question.
Watching youtube the last few days, cubic needs to be considered. I was surprised at what I saw. More to consider is adding design elements:

The concept of flutes along the perimeter.
Adding through holes increases strength incredibly.


text:
Why are stepper motors used in 3D printers?
Stepper motors in 3D printers are used to move and position the extruder. But why don't the printers use servo motors or any other type of motors instead. Why only stepper motors are commonly used?

Welcome to 3d printing! Check out this question, its the same as yours and has very good answers https://3dprinting.stackexchange.com/questions/4154/servo-vs-stepper

FDM 3D printers need to do repeatable moves. Servos might give better and more repeatable torque, but they don't give very precise movement without the need of an encoder system. This makes Steppers cheaper and easier adaptable in most cases, even though there are some printers that use different motor systems.
Note that different printers like SLS printer do use several simple motors, especially for the system putting down powder, and the tilting system in the new mSLA Prusa uses - afaik - a simple motor doing one rotation per tilting motion.


text:
Options for getting a really flat build surface
I've been fighting on and off with issues with my build plate seemingly not being perfectly flat. I've ordered a machined straight-edge and some new feeler gauges to diagnose the problem (and test any potential replacement) better, but I'd like to get an idea of what options are available for obtaining a flatter build surface. I'm not really interested in approaches like BLTouch since I want accurate flat bottoms on my prints, not just consistent adhesion.
My printer is an Ender 3 and I believe my problem is a mix of wear to the Buildtak clone surface and warping in its backing plate. Mine is the newer model with removable buildplate and clips, and the backing is reportedly a "glass fiber" (FR-4) material that's hard to find genuine replacements for.
Glass seems like an obvious option - I might even put a buildtak clone on one side of it and use that most of the time - but I'm somewhat concerned about weight and whether having glass moved by the Y axis is going to limit acceleration. I've had (seemingly unrelated) problems on and off with layer shifts, which seem to be mostly Marlin's fault not mechanical, but I'm scared to introduce another factor that might encourage them.
Are there other non-glass options I should consider that would provide a rigid, flat backing? I'm very happy with the buildtak clones and their adhesion properties, so my leaning it to look for something that makes a good backing for them rather than a material that's intended to be built directly upon.
Measurement results: Using a machined straightedge and feeler gauges, the surface seems to be at least 0.10 mm but less than 0.15 mm lower within a couple inches of the bed center. This is plausibly just wear on the buildtak-clone surface, so I think I'll try to see if I can get by with just replacing that for now. But I'm still interested in the general topic of the question.

Why should you put Buildtak on a glass sheet? Glass is a perfect bed material in itself... I even can get POM to stick to it. Also, the additional weight has never been a problem for my i3 type printers, even with an enlarged build surface of 200 x 300 mm with 3 mm aluminium heated bed plates.

@0scar: Even with low or no heat? I agree glass has some nice properties especially for special materials, but they seem like tradeoffs. Even with the same kind of surface on top I wonder about things like thermal mass.

I would just stick the BuildTak onto the aluminium or a sheet of steel.

@Trish: I was actually wondering if a sheet of steel would work well. I'm hesitant to put it direct on the aluminum plate there because it's a consumable part and I'd probably warp/scratch/otherwise damage the aluminum plate next time I have to replace it. What thickness of steel would be suitably rigid?

uh... depends. 0.25mm is super light and can be easily cut with shears, it doesn't add too much thermal mass.  0.5 mm is less floppy and more durable. Springsteel is more durable than mild steel, but more expensive. If you dent it, you might be able to fix those two thicknesses even. 1mm is kinda heavy duty and doesn't budge easily, but you need someone to cut it for you. and you likely can't bend-pop it.

@R..GitHubSTOPHELPINGICE I printed several years on a 3 mm aluminum heated bed plate with nothing but 3DLAC, worked perfectly, even did not scratch. You just have to take care, it pops off when cooled down.

Did you measure a hot or a cold build plate? The thermal expansion might alter meaurements.

@Trish: Indeed it might. I normally use a fairly cool bed temp except for with PETG though. I'll do some more tests.

@Trish: Temperature didn't seem to matter. For now I ended up putting a small square of blue tape under the center, between the aluminum and the removable build plate, and it seems perfectly flat except at the very edges where the clips flattened the buildtak-clone. So not really an answer to my question, but with some luck that'll be another few months of use out of the old build surface. :-)

Aluminium will bend when thin and when not heated till the edge. See https://3dprinting.stackexchange.com/a/1532/2338 I was getting 3 mm aluminium bulging in the centre when heated for ABS (noticeable even at 60° C), but the bed was small, 15x15 cm. Absolutely zero issues with 2 mm float glass.

It all depends on what you mean by "flat".
Is the problem that the build plate isn't flat (perfectly planar), or is the problem that the distance to the build plate varies based on X and Y coordinates?  They are very different problems.
"Bed Leveling" is the process of allowing the firmware to know the Z position of the build plate for every (X,Y) location.  Some printers support measuring a mesh of points and interpolating the mesh.  This compensates quite well both for warped build plate, and for bad positioning mechanisms which add some position dependent Z-axis offset.
If you really need a flat, planar, build surface, perhaps because you are printing mirrors or precision parts, glass should work well.  It is still, and will not brook any inelastic bending.  It will shatter before it takes on a curve.  If possible, you could consider a Pyrex® bed, since it has a lower coefficient of thermal expansion and won't warp as much with a temperature gradient through the glass.
I tried to find a spec on how flat your glass might be.  I'm assuming it is "float glass", which is made by floating molten glass on a pool of molten tin.  I didn't find a spec, but I found this answer to a similar question:

I doubt you will find such a spec- float glass isn't manufactured for
  that purpose and it isn't really in the manufacturer's interests to
  maintain such a spec. that said, the stuff is surprisingly flat, just
  as a side effect of how it's made. you don't say what your needs are
  other than near optical tolerances . might just be good enough for
  you. consider though that granite surface plates of certified flatness
  can be had fairly inexpensively these days.

So, it is clearly flat.  I can't tell you how flat.  And the flatness depends on not applying stress to the glass that causes it to bed.  Thicker is stiffer (probably at the third power of the thickness ratio).

While I mainly want consistent distance from nozzle to bed for proper adhesion independent of position, I do want decent flatness/dimensional accuracy too. If there are problems with the bed large enough in magnitude to mess up the former without position-dependent Z, then with position-dependent Z they're going to noticably mess up dimensional accuracy, flatness of surfaces, extrusion amounts in the first few layers, etc. I really don't want to be fighting with interaction of all these things. As stated in the question I'm going to investigate with a machined straight-edge to determine...

...how bad the bed actually is, and whether there are other plausible mechanical causes (worn rollers? play in gantry? etc.) that might be behind the apparent irregularities, but so far there don't seem to be.

BTW I would try to get borosilicate glass if I do, but it seems hard to find ones that aren't fraudulently mislabeled. (Unrelated but interesting: even Pyrex brand glassware is fraudulently mislabeled - it's not pyrex anymore.)

You are almost certainly attempting to optimize a component rather than optimize the system.   The quality of the final produced prints depends on the combination of error sources.  In brief, this means there's no point in getting a bed whose flatness is, say less than 50% of the variation in Z-axis positioning,  in extrusion flow rate, and so on.
It is true that it's nice to have a material which won't warp over time so recalibration isn't necessary.  Variation with temperature is unlikely to matter unless you anticipate making prints with a large difference in the temperature setpoint (maybe for radically different materials), and even then you should be able to calibrate for a couple different setpoints.

I don't see how this answers the question. Error in flatness of bed is orders of magnitude larger than error in filament diameter, Z positioning, etc.

Even with glass, some warping may still remain.
One option is to use this procedure:

Basically you first measure the flatness, then you add material below the bed to compensate.

Nice! That's basically exactly what I did with the existing non-rigid buildplate (see my self-answer) so I'm glad to know it's a thing ppl do.

It's not an answer, but if the resulting non-evenness is limited to less than a layer thickness, I would use mesh leveling with progressive smoothing, so that after a few layersthe hotend goes flat.

I wouldn't, and I specifically addressed why in the question - I want dimensional accuracy and flatness of bottom of print. Mesh leveling with progressive smoothing is going to preclude that. The height of a cube will vary by x,y position.

For evaluating the extent of a surface flatness problem and success of a solution, a real machined straightedge and decent feeler gauges are a huge help.
Using them to measure where the problem was, I found that a not-perfectly-flat but non-rigid build surface like the one I have can be corrected with shims, at least as long as the underlying bed is not warped. I measured the error in the center of the build surface as very close to 0.1 mm, and placed a 24x24 mm square of 0.1 mm thickness blue tape on the aluminum bed under the removable build plate, then clipped it back on. Measuring again with the straightedge showed no significant inconsistencies.
As a bonus, the feeler gauges are wonderful for height adjustment. After confirming flatness, I needed to re-level the build, and got it perfect on the first try with no trial-and-error feedback loop by homing the nozzle, then moving it to Z=0.1, and then at each adjustment point, adjusting until:

the 0.1 mm feeler gauge could slip under the nozzle with some pressure, but without compressing the spring, and
the 0.15 mm feeler gauge could not slip under the nozzle without visibly lowering the bed and compressing the spring

I'm still interested in other options that might be lower-maintenance.

You could use a BL touch to draw a map of the non-evenness to know where and how much to correct it. The BL Touch (and clones) should be accurate enough. Surely faster than feeler gauges, which anyway wouldn't allow you to visually distinguish between no-compression of the spring and a compression of 20 microns.


text:
Z Axis homes, then bounces up 15 mm and stays there when printing
Prusa, I3 Mk2.
Marlin 2.0.3
The test model printed fine prior to installing Marlin 2.0.3. It's not the slicer or GCode. I tried several models, and all of them worked perfectly prior to the update. The video below shows what's happening. The Z axis homes, then when the heating is over the head centers, and rises to 15 mm (as shown on the display). The print starts, the head doesn't move down but the display shows 0.1 mm. I know I missed something in the Configuration.h but I can't figure out what.

This sounds like the G-code contains a bad command. Might you share the first about 50-100 lines of G-code? We can cut it back then. If it is too long, pastebin is a good choice for the whole thing. Another possibility might be wrong Steps/mm on the Z-axis

So the code worked just fine previously. This only happened after the firmware update. The model was never re-sliced.
https://pastebin.com/V7QSS83M
The only thing different about the firmware config was the enabling of Mesh bed leveling. I assume that's the issue but I have no clue.

ok, I see no misplaced Z-movement commands, this must be in the firmware. Now, we would need that...

Could the firmware have a misconfigured Z axis offset (stale data in EEPROM?) or similar?

Welcome to 3DPrinting.SE! Please post a link to your configuration.h, e.g. posted on PasteBin so we can help you. Also post the brand, this isn't an original Prusa, or is it?

I assume I have an offset that is  being manipulated by the mesh leveling but I truly don't know.
https://pastebin.com/sCmcCzJt - Configuration.h
The printer is a Reprap Guru, I3 Mk2, Ramps 1.4

In the video, you can see on the screen where it shows the Z distance to be 15mm during warm up, then once the extruder is up to temp and it moves to print, you can see it believes it is at a Z distance of "0". Somewhere between the warm up and print it is getting the idea it needs to reset its distance to zero. I'd be looking in the G-code as to where it's doing this, which might give you a clue as to why it's doing it.

The GCode is posted above, and again, it was not modified from a previously working version. This only started after the FIRMWARE update.
Has anyone got any experience with the Mesh bed leveling, I'm thinking maybe that's part of the issue.


text:
How to convert png to stl?
Is it possible to convert an image image to STL file format?

E.g. I don't need the coloring, I need the lines.

You need to clarify what you want. A thin slab of everything but the white/transparent parts of the image? Black strokes only with some thickness to them? Raised black strokes on top of a slab of the whole thing? Something else entirely?

Dont need color. Only to test. you can convert to me?

Check out this link: https://all3dp.com/2/how-to-convert-images-jpg-png-into-stls-for-3d-printing/

I suggest your objective can best be accomplished by converting the image to a single color vector file. You can do this with Inkscape (free, Linux, Windows, Mac) by combining the built-in bitmap tracing feature with some manual editing. I attempted to do so, but the coarseness of the image would result in excessive manual edit time. It may even be faster to reduce the opacity of the image and create a manual tracing on a second layer.
Once you have a vector file, you can use any number of 3D modeling programs to convert the file to a 3D STL. Fusion 360, Tinkercad and OpenSCAD allow import of SVG files to be extruded to user-specified thickness.

PNGs are 2-dimensional picture data files. STL however is a 3-dimensinal surface data files. The two are not inherently transformable into one another, as there simply is no 3rd dimension encoded in the PNG.
However, there are ways to generate a 3rd dimension from a color picture:

Lithophanes take color information and use that as a degree of deviation from a base plane.
Using 3D design software that supports importing image data, one can trace the areas in 2D and extrude them to different heights or emboss the patterns into a block, even with different depths for each color.

First you need a single color png image, you can do this by opening the file in any image editor (even Paint included with Windows) and painting white over all the colored pixels (more advanced image editors maybe able to do this automatically).
Then you can use OpenSCAD (free download from openscad.org), enter the following code: (obviously, replace the file path with your own)
surface("C:\\Users\\Nir\\Documents\\test.png",center=true);

Now press F5 (at this point you'll see a low quality preview), then F6 (to do a full render and view an high quality preview), then F7 to save the STL
The resulting model will be higher then you want but you can scale the result STL in your slicer (or use the OpenSCAD scale command if you prefer code)

For things like a coat of arms, you do not require a full 3D conversion, essentially all you need is a lithograph-like effect. The best program I've found for such conversions is 3D Builder which is a free Microsoft download for windows users (yes, I was surprised too). It can use either color or degrees of greyscale shading to determine the z-axis depth of each region in the picture. Makes the cleanest conversion I've found so far. Exports as a .3mf file but can be readily converted to an .stl for 3D printing (using something like SwiftConverter for example). Also has an option to invert the conversion which I've found quite useful.

https://en.wikipedia.org/wiki/Lithography or https://en.wikipedia.org/wiki/Lithophane ??


text:
Switch nozzle contact probe auto leveling with Marlin 2.0
I have a Robo R1+ which uses the nozzle contacting the glass print bed to level the printer. When the print head strikes the bed the Z-min endstops open signaling that the bed is touched.
I recently upgraded from an Arduino to an SKR 1.3 running Marlin 2.0 and have been trying to make the printer auto level. However all the examples I can find involve a probe. I'm not even sure what this kind of autoleveling is called.
Is there a way to configure Marlin 2.0 to perform this kind of autoleveling. And if so what lines should I comment and un-comment?

Basically, you are also using a probe, the nozzle is the probe. So this is very similar to an auto levelling setup using a capacitive or inductive sensor, the difference is that your M851 nozzle to probe distance is zero, and may receive a positive value to slightly raise it to get a sheet of paper in between the nozzle and printing surface.
Please note that below only changes for levelling are addressed, not other specifics in Marlin 2.x for the Robo R1+!
First you define the nozzle offset in Configuration.h, which is exactly at the nozzle, so X and Y (and Z) are zero.
#define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0 }

You can also set:
define NOZZLE_AS_PROBE

Furthermore, you need to define a levelling method in the same configuration file:

//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

For safety, we usually home Z at the center of the printing surface:
#define Z_SAFE_HOMING

Also be sure the following statement is active:
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Next, you need to define the boundaries of the "probe", which is exactly where the nozzle may come (apart from a small safety offset at all edges called MIN_PROBE_EDGE); how you do that is described in question "How to set Z-probe boundary limits in firmware when using automatic bed leveling?", in Marlin 2.x this needs to be set in Configuration_adv.h:

#if PROBE_SELECTED && !IS_KINEMATIC
  #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#endif

Thanks oscar. Once I get a CAD project out of the way I'll test that out. Very clear.

The Robo r1+ uses an inverted z axis limit switch. When the signal is true the axis moves and turns to false when the limit is reached. The endstop switch needs to be inverted too, but the software will warn you if you need to change it.


text:
Supports and raft hard to remove Up Mini Printer
I have an Up mini printer and the raft and supports are often really hard/seemingly impossible to remove from the model. I read that this could be because the Up prints at high temperatures, however, I adjusted according to the recommended value for my filament (ABS). I have tried the highs and lows of the recommended settings and still haven’t had much luck. I have also tried adjusting the distance between the nozzle and print bed. I would appreciate some help, especially from people with Up Minis. Thank you!

Hi, welcome to 3DPrinting.SE! Does "Difficult to remove support material" answer your question?

Try using a skirt instead of a raft. In my opinion, a raft is annoying because it always sticks to the model. Skirts are so much better! Also, get a magnetic removable print bed, like a Ziflex. I have one of those and once you have leveled your bed correctly they are amazing. Prints stick well to them and you simply 'flex' the plate and the model pops right off. About the supports, it might depend on what brand of ABS you are using..?

Also look in this answer; it describes how to insert more distance between the product and the support, this is also possible for the raft.

@RosalieW did you mean a brim? Because a skirt normally does not even touch the actual model.

I personally use a skirt, just because it makes the model easier to remove from the build plate (indeed because it does not actually touch the model). Also, it eliminates the task of having to cut the brim/raft away from the model. Here is a nice link contrasting a raft vs a brim vs a skirt: https://all3dp.com/2/3d-printing-raft-brim-and-skirt-all-you-need-to-know/ Then you can decide what you want to use

@RosalieW It isn't always a matter of choice, some models and printing materials require a brim to grip better to the surface without having a dislodged print. A raft may sometimes be necessary, e.g. when printing high temperature, prone to warping co-polymers or ABS. But this discussion is getting off topic. As far as I'm concerned, this is a duplicate question, we let the community decide.


text:
Error: 20, non stop, while connected to Pronterface: no G-code uploaded yet
I am trying to make a pen plotter from scratch. I hooked up two scanners to form X and Y axis, and using a CD drive to lift the pen. I connected everything to Arduino Mega 2560 and RAMPS 1.4 shield with DRV8825 drivers. I tested everything using simple Arduino sketches that sent step signals. So far, so good, however, today I uploaded GRBL and downloaded Pronterface, to actually use G-code, but after successfully connecting on Pronterface to the port at the 115200 Baud rate, I am only getting error: 20 non stop.

Hi welcome to 3DPrinting.SE! Note that error 20 notifies you of an incorrectly sent G-code instruction. Are you sure Pronterface isn't sending constantly ( e.g. to probe for temperatures) while GBRL doesn't support the G-code?

I am sooooo sorry, that I am replying today after 4 days passed. My internet connection was not working. About the question here is that: even if pronterface is sending some unsupported g code, the basic +1, +10, +100 mm movements for X and Y should work. This got mpre confusing when I uploaded Marlin instead of GRBL, everything started to work perfectly. But when I switched back to GRBL, nothing was working again! And sorry, once again for such a late reply.

I think Pronterface is sending M105 to probe the temperatures of hotend and bed. GBRL doesn't support that. As it is periodically sent, the program reports an error, you cannot use this program for movement while it already is in error.