How does this Martian habitat 3D printer built for NASA work?

Let's start with the general design look and feel: This printer contains a robotic arm with a toolhead, pretty similar to a welding robot, and probably is controlled with a similar CAM software.
 Picture by Robotics.org
Tool head
The really interesting part here is the tool head. So let's look at it and try to reverse engineer the use of some parts by how they are placed and what one can see about them, together with the information given by OP.
Black pipes
There's a bundle of 12 black pipes that go from the main body to the print head, ending at the side of some distance disk. To me, these look suspiciously like a system to deliver an airstream, so most likely some sort of cooling system. This is further supported by the huge fans at the base of the machine, pumping air into the flexible pipe.
Silver Tank
The first picture shows a silver tank with the label V7 (version 7?) or VT (as in Virginia Tech) or something similar on it. This is connected via a grey hose to the base of the printer. The mounting of it over the extruder hints, that this is a hopper, most likely holding the print material in pelletized or powder form, and that it is fed via the grey hose. From the information given in the question, it might be some sort of PLA (synthesized from cornstarch) or other bioplastic using the Martian dust as a filler material. From here, the print material falls into the central column...
Central Column
...which goes down through the distance disk into the thick nozzle, so it must be the extruder and heater combo. At its top, there is a large stepper motor in Z orientation, which hints that inside of the matte grey tube is an arbor, pressing down the melting pellets past a heating element into the nozzle below.
Print material and further information
The last picture shows proudly "Autodesk" on the side of the printer. Autodesk has an own article about printing in space from August 2018, where Nathan Golino of the NASA owned GMRO states this:

Abrasion has been an issue with the 3D printer we use. It’s very rough on the feed screw and the barrel and nozzle as the material is extruded through the system.

This confirms the general makeup akin to a pellet-style extruder.

Combining a small amount of waste plastic with crushed rock known as regolith can form an additive construction material that’s stronger than concrete. (on a picture caption)
The material we’ve been using in our additive-construction experiments is regolith mixed with waste polymers. You can get polymers in the form of astronaut trash and shipping containers, or you can synthesize polymers. You can use that as a binder for regolith, with a relatively low ratio of polymer to regolith, to make a construction material pretty similar to Portland cement in compression and 20 times stronger in tensile strength.

"Waste polymer" could be anything from ABS to PETG, from ASA over PC to PLA, but it seems that the plastic-to-regolith mix is on the high regolith side. It seems that it behaves more like a plastic than concrete, hardening/solidifying from a molten paste to its hard concrete as it cools.
As an interesting extra tidbit: Golino also states, that the mars-printers are at the moment on level 2 to 3, where 0 is "general concept" and 9 "ready to fly", so in early development.
Further reading into the background of the project - a design competition in 2015 - hinted, that the software for the arm might even be Autodesk PowerMill.
Looking back at the question if that is V7 or VT on the printer's hopper, an article with the same dome printed in OP's question popped up: Virginia Tech had been part of the crews that were taken to the finals of the aforementioned design competition and was part of the finals. They worked with the AI Space Factory team, which came out winning. In a related article, the printer OP showed us can be seen from a different angle and stripped of the cooling pipes and with a different, longer extruder. It tells us a little more about the work distribution of the teams and participants:

Large format vessel printed by AI SpaceFactory in the Autodesk BUILD Space for the construction phase of the competition. The tooling was developed in collaboration with Virginia Tech and Autodesk.

The main company behind it, AI SpaceFactory, showed a different version - the one without cooling pipes - in motion on a YouTube video on April 10th 2019 and the performance of the air-cooled version during the competition finals on May 3rd 2019 (warning, 10 hours of 3D printing galore!) At 9:52:12 we also start to learn what that disk is in picture 1: It is the endcap of the structure which sadly fell through the hole due to navigation issues.
In the following shorter and commented video, we see that the printer also contains some sort of gripper to place the window frames and skylight just as well as the load bearing test performed after the print. Apparently, the material they use is engineered to a point where it can be reused after regrinding it to dust again.


You may wish to consider Craftware for your purposes. It's a free program in beta form that does provide a tool-path animation for printing the layers. It is not so much specific to a printer as it is configurable for your own requirements. The video shows what I believe you are seeking at about the two minute point.

Simplify3D also provides such information, but is not a free program.


Excessive filament powder/shavings near the extruder

The shavings come in part from the extruder design: there is no fillet on the pulling in side, the filament goes up in a sharp angle and is dragged over a rather sharp edge. It also brushes against the leadscrew.
To help with the shavings, you should alter the filament path to try and have a flatter angle than the 90°. A simple rod that pushes out the filament to come in at 80° might already reduce the number of shavings.
More might be reduced by opening the entry hole of the filament to have a 1-2 mm phase around it, altering the angle of the edge that the filament runs against to a much lower one and reducing the ability to shave off flakes. I did swap my extruder for an aluminium one, and it has this phase, and since then I have had little to no shavings at that spot anymore.


PID tuning and different filament temperatures

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

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

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


Short to ground error using TMC2130 stepper drivers

I have fixed it. I tried uploading the bugfix version of Marlin and no luck. Then I noticed a loose jumper wire that connected the driver to the board and when re-installing it I noticed it didn't grip the pin that strongly and could be easily pulled off so I switched the wire and everything works now. Turns out that even jumper wires can have a bad connection. Hope this helps someone.


I have written compilers and optimizers, as well as optimizers which work on raster operations.  I so want to offer you a beautiful solution, but I don't know of one.

If I really wanted to solve this, I would start with this approach:

First, identify each token and expression in the OpenSCAD code.  Assign each a unique identifier, and reserve one bit of storage, initially zeroed, that will be used later.

At the geometric database level, tag each geometric element with the identifier in the source code that generates it.  Intersections become labeled with both operands and the intersection operator.  Same with unions and other operations.

Then render the OpenSCAD form into some representation, perhaps voxels, perhaps STL.  Voxels have a resolution limit but are intrinsically the simplest form.  STLs might require an optimization pass to find redundant edges -- although that may already be part of STL generation process.

Now, go through the tagged representation voxel by voxel or triangle by triangle.  Set the bit reserved with every token and expression to "one" for every identifier associated with that voxel or trianble.

Finally, check the bits on each of the source tokens and expressions.  If the bit is zero, that particular element contributed nothing to the result.  If the bit is one, that is needed in the result.

This is oversimplified because one source element can be used several times.  Some may contribute to the output, and some may not.  A fully expanded version of the source should be used, and we have to invent notation for reporting that instance 1 and 3 is used but 2 is not.  I'm sure there are other over-simplifications which someone reading this will immediately realize.

I think, though, that this would be a path forward to the OpenSCAD optimizer you want.

In the meantime, OpenSCAD provides some prefix characters.  One of the, maybe "*", removes a sub-tree from the generated geometry without messing up the parsing.  I frequently use that mark to find out if code is used and to what it contributes.


How to level bed after applying glue stick for bed adhesion

How much glue do you put on it? I use PVA based spray, barely visible, very evenly spread and no problem whatsoever of sticking paper to the glue layer.

Just level the bed as you normally would and apply a sparsely coat of glue, preferably from a spray can.

Having printed literally kilometers of PETG on various build platforms (various glass sheets with or without PVA based glue, Aluminium and PEI), chipping of glass is not something I have seen happening. Perhaps is very low quality glass is used, chipping may occur. Whether your glass is of decent quality can be tested, just print on one side, and if it chips you always have the other side. Printing on PEI with PETG is another chapter, PETG just fuses to PEI and is very difficult to remove, a PVA based glue helps, but still prints were very hard to remove.

Invest in a can of build plate adhesion spray, it lasts long, never gives you problems with adhesion and probably is even cheaper than glue sticks (per mass unit).


I definitely wouldn't start with a Delta printer.
Cartesian printers have become "the norm" for a good reason - they're very easy to use and tune, so I'd recommend getting an Ender 3 or Biqu B1.
It'll still print just fine, but that MSRP is in no way realistic in 2020. If it's offered under maybe 100$, it might be interesting as a secondary machine, but I wouldn't pay more than that.


Can't print on Wanhao Duplicator i3 Mini

Please note this is not a full answer, but it does address a problem pointed out in the question.

The linked file does contain some strange information. Although in the comments it is said to use a layer thickness of 0.2 mm, see:

;   layerHeight,0.2

with a first layer being 90% of this size:

;   firstLayerHeightPercentage,90

it actually does not.

The actual sliced layers are measured in 0.5 mm and 0.222 mm and 0.45 mm for the first layer!?! The first layer is at:

G1 Z0.450 F1000
; process Process1
; layer 1, Z = 0.450

the next layer is 0.5 mm, so 0.95 for layer 2:

; layer 2, Z = 0.950
M106 S255
G1 X65.347 Y84.268 F4800
G1 Z0.950 F1000

And then it becomes strange,

; layer 3, Z = 1.172

for layer 3 (so a 0.222 mm layer height), and 0.222 mm for layer 4 and so forth.

This is a pretty odd sliced file, which basically is not possible to be printed with a 0.4 mm nozzle (you should never exceed a layer height of about 75% of the nozzle width, so max. 0.3 mm for a 0.4 mm nozzle).

I don't know the firmware, but I find it hard to believe that the firmware knows what kind of nozzle is present (although Ultimaker does know that with their nozzle core concept they launched from the Ultimaker 3 series). It could be that your firmware does know the nozzle size and does not let you print these layer sizes. It is therefore recommended to reslice the print and other objects and take a closer look at the G-code files.


Why do the corners of my ABS object lift off the bed?

There are many different approaches to solving this issue and most of the answers already are spot-on. However, the fundamental reason for the "warping" is incorrect and inconsistent temperature across the material.

If there is too much fluctuation in the temperature across the object in this heated state can result in warping. The reason you see this mostly on the build plate is because the temperature of the first few layers of molten plastic vary much more against the build plate than against higher layers. Note that you can see additional warping mid-print using ABS and this can be a result of a draft or sudden drop in ambient temperature.

So, to help solve your problem, here are some suggestions (sorry if there are duplicates):

Completely enclose/seal your machine's build area to reduce (or eliminate if possible) draft and prevent the natural heat of the machine from escaping.
Increase the temperature on your build plate. I almost exclusively use ABS on my printer and I keep my HBP at about 112C. However, I live in the NW of the US, so my climate is naturally cooler than say Florida.
Alternatively, try decreasing the nozzle temperature to a lower point within the ABS melting range. This will just shorten the gap between the inconsistencies in temperature across layers. It is typically better to print at lower temperatures if you can help it. Obviously there are differences in the filament, so you'll have to find that "sweet spot".
Ensure your build plate is flat and your tape doesn't have bubbles. Your BP being flat should be a no brainer, but if your kapton tape (or whatever you use) has bubbles, your freshly printed plastic may not be getting the same temperature from the BP as the rest of your part. This is a bad thing as mentioned earlier.
Use extra adhesion techniques such as "ABS Glue" (ABS w/ acetone) or even hairspray. This works about 80% of the time for me, but can make it a bit difficult when removing the parts off the BP.


The simple answer is: No
There are two basic reasons for this:

The sun will not get the filament hot enough to evaporate any moisture which has been absorbed.
While sitting out in the sun, it will continue to absorb more moisture, which defeats the purpose.

On Matter Hackers, they give a very reliable way to dry filament:

Preheat your oven to 160-180°F  (or 70-80°C).

Place spool in oven for 4-6 hours

Remove and place in an airtight container, preferably with desiccant. 5-gallon buckets with airtight lids from local hardware stores work very well for filament storage. You can use uncooked rice as a cheap desiccant.

Filaments with lower glass transition temperatures (Tg) like PLA, use lower temperatures to dry. Lower temperatures also require more time to thoroughly dry.
That’s really all that’s necessary to dry out your filament and ensure optimum material performance and surface finish.
So if you have some spools that have been sitting out for a while and aren’t printing as well as they used to, dry them out and try again. Chances are they’ll be like new.

You can see in the write-up it states you need to get the oven up to 160-180°F (or 70-80°C). The sun will never provide that level of heat. It also states at lower temps it takes longer to evaporate all of the moisture. Placing the filament into an oven at the proper temps will ensure the best results short of buying a purpose built system like PrintDry which is also mentioned in the article.


How to turn off supports in Z-Suite (Zortrax slicing software)

I've found the answer for myself by playing around a bit more. It seems that in selecting the "support angle", a higher angle means more supports. This was confusing me, because I had assumed "support angle" meant the maximum angle of overhang before a support would be generated. I guess it does actually mean that, but it counts 90º rather than 0º as vertical. In any case, supports are turned off simply by changing it to 0, in which case the text "not recommended" does indeed appear.


How to save the post processing scripts configuration with Cura?

I'm a Simplify3D user which allows one to save "factory" files. It appears that Cura supports printer profile configuration and saving.

From the above link, one is directed to enter the profile manager. You can duplicate an existing profile and rename it to separate it from the protected (standard/stock?) profiles.

Without using Cura to confirm this, I suspect that you'll discover this may be the solution you seek.


Aluminum of almost every grade is very easy to cut with a hacksaw. I would suggest to mark clearly the cut line and to wrap masking tape at the edge of the cut. Consider to allow for about 2-3 millimeters (1/16") extra material for final finishing. Cut across the line, rotate the part ninety degrees and cut again. Once you have the guide cuts in place, you should be able to manage a square cut by following those guides

You will want to have a clamping mechanism available, such as a vise or workbench type device.

After the cut is done, use a sharp file to make final adjustments to the length and appearance. Push the file, do not drag it backwards. Push forward, lift away from the work piece as you return, then push again. Pick up a file card, which is a fine metal-tooth brush used to clear the teeth of the file.

It is very easy to remove material with a hand file, perhaps three or four strokes to remove 1/16".

Your accuracy will depend on the measurement of the lines you create and how carefully you file to the edge of those lines.


What exactly does automatic bed leveling do?

Last first:  use of a raft has nothing to do with bed levelling. It depends only on the features/shape/etc of the object being printed.

Now, as to what the auto-levelling does: the answer is, sadly "it depends."  A simple algorithm will just find the Z-height of the four corners and apply a bilinear correction to Z as a function of {x,y} coordinates.  A really good algorithm would map the entire build plate to some designated precision (perhaps 5 mm) and create a 2-dimensional lookup table to adjust Z over a curved build plate.     What your printer's levelling software does is more likely the former.

Why? because if you try to correct over curves & bumps, then you will end up distorting your entire printed object (basically forcing every layer to follow those distorted axes).  Far better to have some flattened or "fat" spots in the first layer printed, and then print proper planar layers after that.

Example: I know my bed (AnetA8 aluminum) is slightly bowed, peak in the center; so after levelling the overall bed I try to set the Z-zero so the outer extremes of my object have good adhesion, even if the center region of the first couple layers ends up non-extruding because the nozzle touches the bed.


How to change the extrusion value (E parameter) in G-code?

Yes, it is possible to influence values of the E-parameter, even to make them integers.
I see three possibilities:

force firmware to support units smaller than mm - suggested approach
force slicer to produce integer-like values - most of below explanation
change meaning of E - custom approach, including RPM interpretation

Each of above needs post-processing of the G-Code output. There are some tools available, but required logic would need to be added (programmed). Some are simple scripts and this won't be difficult task. The rest of solution is much more difficult.
By the book, the E value is new coordinate on the E (extruder) on axis, in current units. Unfortunately, the only position units reflected in standard G-Code are millimeters (see G21) or inches (see G20). Therefore using integer values would mean very limited resolution, at least 1 mm of filament pushed at a time. Introducing smaller unit into firmware seems to be most reasonable approach.

Tools to post-process G-Code files
The G-Code generated by slicer would contain Ennn values as fractions in millimeters (or millimeters). Generated file may be post processed line by line to alter these values. There are many examples of scripts or tools doing similar job.
One example is simple python script metric-gcode-truncator stripping numbers to 4 decimal places. Simple changes to this scirpt could be sufficient in simplest cases.
I found this script listed between other G-Code Utilities. Also, I found source code of grecode, which seem to be much more comprehensive G-Code transformation tool, but with no similar functionality out of the box.
Next improvement would be to use the script as slicer plugin, to streamline the everyday process. Maybe some existing Cura plugin could be a basis or example.

Support for smaller units in firmware
First task is to select smaller unit (like micrometre, nanometre, or even non-metric abstraction).
Source code of existing firmware must be the supplemented to properly intereprete such values. In Marlin focus should be on parser.h and parser.cpp, following keywords INCH_MODE_SUPPORT, LINEARUNIT_MM and LINEARUNIT_INCH. Respective changes must be also added to configuration files.
Key inspiration in parser seems to be following part:
static inline void set_input_linear_units(const LinearUnit units) {
  switch (units) {
    default:
    case LINEARUNIT_MM:   linear_unit_factor =  1.0f; break;
    case LINEARUNIT_INCH: linear_unit_factor = 25.4f; break;
  }
  volumetric_unit_factor = POW(linear_unit_factor, 3);
}

The main difficuly would be to refine parser and the rest of code to ensure that new units are only used for E movements, not for other axes or G-Code commands related to speed or other settings.
Then, each G-Code file must be post-processed with prepared tool, which will recalculate and alter Ennn values (or others), only for selected G-Code commands (this must relfect). For metric units it could be simple multiplication by 10n (visually it is shifting a decimal point).
Summarizing, possibly the simplest would be to just introduce new unit for all, and re-process G-Code files accodingly changing each value X, Y, Z, E. I cannot advice how such changes would affect F (feedrate), speed and acceleration settings.

Slicer producing integer values of E parameter
Long story short: decrease steps/mm (firmware/printer), decrease filament diameter (slicer), then Ennn values in G-Code will shoot up and could be rounded to integers without drastical loose of quality. Units for extrusion become then fake (scaled).
Software may not be ready to support adequately low values (configuration, rounding) or high values (calculations). So in practice the values configuration could not by as minimal as wished, which would more or less impact the quality. There are is speed setting trouble, beacuse extrusion speed is correlated with movement speed.
Detailed theoretical explanation and example calculations are below.
Steps/mm
However this is still useful, because each printing firmware has configurable steps/mm setting (or some analogous constant value). Steps/mm is basic and known characteristic of extruder, representing number of (micro)steps of extruder's stepper motor to push this 1 millimeter of filament (traverse E axis). If this steps/mm constant will be set to 1, then extruder will make only 1 (micro)step for G1 E1. This change could be done in firmware configuraton, temporarily with G-Code M92 E1, or stored to EEPROM.
Volume
Filament is a long cylinder, and extrusion length is height of short cylinder (segment of whole): $l= \frac {4 V} {\pi d^2} R$, where:

V - volume necessary to pring path, internally calculated by slicer software
d - diameter of filament configured in slicer
R - customized extrusion multiplier setting (R) a.k.a. flow rate. (It was introduced for fine tuning, in runtime or when chaniging filaments, to avoid workarounds like manipulating steps/mm or diameter to untrue values. This parameter is not really important for this discusion, included only for completness.)

Printer configuration
1 mm of filament translates to actual volume of material (mm3). The correct steps/mm is very important, so the rotation of motor (travel along E axis) will really extrude the expected amount. If value of steps/mm configured in printer is reduced, then interpreted G-Code commands will be translated to too short distances (less steps). To ensure the needed volume, either more millimeters would have to be ordered (G1 Ennn) or filament would have to be thicker. Filament is what it is, so only the first choice is possible.
For example, using 1,75 mm filament and having extruder which needs to make 760 steps to push 1 mm (a fact, determined hardware characteristics), then to extrude 1 mm3:

if printer is set for 760 steps/mm (correctly), then G-Code must contain correct E0.415752 mm for adequately long cylinder being pushed throught the nozzle
if printer is "misconfigured" for 1 step/mm, then G-Code must contain edaquately scaled value E315.9713 for the same cyllinder to be pushed (760x bigger number). The value is actually an exact number of (micro)steps. And it is big. Decimal part is negligible. It can be safely rounded to integer.

For practical use, the printer's speed settings and limits would need to be also multiplied for extrusion and retraction. Otherwise extruder moves would be slower by scaling factor, with negative side effects of hot filament behaving on its own.
Right place of scaling
So how to obtain this scaling? Simplest way is to increase flow rate in the printer (e.g. to 760%). This will scale Ennn values form G-Code in runtime. An original G-Code is needed for this, with tiny numbers. So this is not a solution for integers.
Then how to force slicer to produce G-Code with scaled numbers?
Slicer configuration
Slicer calculates volume required to print some fragment and coverts it to millimeters of filament, basing on configured diameter. So this diameter is also very important. Everything must match. If very small diameter is set in slicer, this will drastically increase length of filament pushed.
For example:

For 1.75 mm filament, to extrude 1 mm3 volume, slicer will order to push E0.415752 mm.
After changing configured filament diameter to 0.01 mm, slicer would order to push E12732.4 mm. This is big number. But not even similar to the above needed length E315.9713.

Slicer usually adds speed (feedrate) information to G-Code. So any speed settings and limits for extrusion and retraction would need to be multiplied also in slicer. There are also other settings to modify, like retraction distance.
Matching equation
Change of diameter must reflect the change of steps/mm. The proportion could be derived from cylinder volume formula. Diameter to configure in slicer is $d= D \sqrt { \frac L l}$, where:

D - real diameter of filament
L - standard extrusion distance: height of cylinder having some referenced volume and D diameter, if steps/mm reflect actual hardware
l - scaled extrusion distance: height of cylinder having the same referenced volume, if steps/mm reflect actual printer configuration

Values for calculation need to be determined for some example volume. This was already done. Following previous examples, diameter required in slicer is: $d= 1.75 \sqrt { \frac {0.415752} {315.9713}} = 0.063479$. Then still providing 1.75 mm filament to the same extruder, slicer will produce big values like E315.9713, but printer will perform olny one (micro)step for one milimeter in G-Code.
Remove fractional part
The generated G-Code would still include fractional part in Ennn values. The file should be post processed line by line to remove it. Simple script will do the job. It could be simple metric-gcode-truncator, after changing pattern to ([E][0-9]*)([.][0-9]+) (not tested). An improvement for quality would be to use rouding instead of truncating decimal part.
Cumulative discrepancies
There is serious disadvantage of such simple post-processing approach. The total of extruded material will vary, depending a bit on rounding approach. The fractional part is lost, so there may be impact on accuracy with over- or under-extrusion here or there. Post-processing could instead collect these rounded fractions and try to equally compensate for it in following moves, to minimize the total aberration.
I believe that the same could happen inside printer's firmware program, when it traverse floating-number distances, but this is only an assumption. Wihout fractional part, firmware will no have data to compensate anything.
Even more accurate?
Because firmware can accepts fractions below 1 for steps/mm (Marlin would accept 0.01), then theoretically the scale could be even bigger - and so Ennn values. Slicer must support adequately low diameter. (In extreme cases this could trigger unexpected overflows or errors or be blocked by software.) Printer will then multiply E values by fraction (steps/mm). Extruding resolution is still limited to 1 (miro)step. But if firmware acumulate rounded fractional parts in runtime and compensate, then total amount extruded per layer would be more precise.
Real-live attempt to slice
It was possible to set 0,01 filament diameter in Cura, after tweaking the extruder profile for such very thin filament. Nozzle diameter must be set to real size, becuase it affects many parameters of slicing. The total use of filament in my sample G-Code was >52km. File contains entries like:
G1 X72.976 Y63.428 E2623.66351
G1 X74.498 Y61.523 E2607.85791
G1 F1500 E-608
G0 F1800 X107.344 Y85.452
G1 F1500 E608
G1 F1200 X107.583 Y85.642 E326.54744
G1 X107.988 Y85.938 E536.51282

Estimated print time is >5 days. The F parameter is presumably used also by extruder, then the whole print will still slow down. To make the print really happen, possibly all speed settings in slicer would need to be tweaked (i.e. print speed for walls, top/bottom skin, infill, etc.). Then only hard speed limits in firmware would block rapid movements. Outcome quality will be most likely compromised.

Custom approaches (own G-Code flavor)
Slicer will always calculate length (travel distance), otherwise it would be against the G-Code standard. At least I did not hear of any slicing software, which would output something else then length for extrusion.
In some own custom firmware value of E parameter could be defined in any own way. For example, the E value could be defined exaclty as number of (micro)steps for extruder's stepper motor, angle of rotation refleced as integer, etc. Distance calculated by slicer would need to be re-calculated in G-Code post processing, to match requirements of this firmware.
Own piece software would be then needed to perform re-calculations (simple or not) and overwrite the original E values. The code could be possibly inspired by some of listed above, but the calculation logic need to match specification from firmware. Possibly this could become own plugin to Cura or other slicer.
RPM approach (critique of the idea)
An attempt to interprete E value as RPM (rounds per minute) is of no use, until it is synchronized with real speed of printing head movement, i.e. other motors performing movement along owne vectors to print the effective path. It is probably possible to calculate, but sounds like creating own G-Code flavor, which would ignore many other important parameters.
One of them is F parameter defined in several G-Code commands (including G1). It determines movement speed for traversing the path. It may change from move to move, making use of acceleration settings. What is worse then, it is expected to be remembered between commands and used for consecutive printer moves. Therefore focusing on single line of G-Code won't tell the whole plan of slicer, and the sophisticated plan reflected in G-Code file would be only partially executed.
RPM approach could seem interesting, if it could ensure constant speed of extruder. This would be ideal for the pressure control. But it would also come at cost of printing speed, with no accelleration control.


Is endstop / z-probe wire required for BLTouch installation on CR-10S

A touch sensor is also a height limiting switch, so you sacrifice the Z- limit switch in favor of the touch sensor (or an inductive sensor). Furthermore, all your concerns are taken care of by the firmware. You configure the firmware so that the nozzle homes Z in the center of the build plate after X and Y are homed first.

It is advised to look up some videos of working touch sensors, then you will get an idea what actually happens. You could start with the inventor of the sensor.


This is a shot in the dark, but the vast majority of problems with a heating bed stopping to work is usually at the cables/connectors interface.

This is because in printers like the A6, the cable/connector is subject to constant mechanical stress, and - since metal fatigue is a thing - either the solder or the cable core cracks.

You should make good use of your tester to verify the integrity of the circuit in the bed and if it is not toasted you should be able to just repair the connection.

For many printers there exist "strain relief mods" to prevent this type of failure to happen.  The first one showing up for the A6 is a full chain, but normally is enough the have a small enclosure for the connector like this one for the CR-10.


Filament residue sticks to bed and wont come off

I would try a single edge razor blade at a low angle used as a scraper.  If you can't feel the blade catching in the residue,  it probably isn't an issue.
If you must get rid of it you don't have good choices of solvents.  Maybe you can burn it off by placing the class in an oven through a clean cycle.  With luck the hearing and cooling won't break the glass.
If you can't scrape it off with a sharp razor blade,  I would just let it be.


Convert a 3D NumPy array of voxels to an STL file

I agree with the use of OpenSCAD, but since it is difficult to program in OpenSCAD, I would use SolidPython, which is a front end for OpenSCAD with the full programming capability of Python.

In the alternative, you could use any programming language to decode your arrays and generate the OpenSCAD code for the little network of cubes (or voxels).

The final possibility is to generate an STL file directly.  I've helped someone do this, but we found the rules to be a little non-intuitive.  We used mesh tools to check out results, both by looking for error messages, and by displaying the result to see if it looked as we intended it to look.


Problem with Creality v1.1.4 (Ender 3 Pro) and BLTOUCH v3.0 (removed C7 capacitor)

If the probe works, but not on auto homing, it could be that the Z endstop/probe wires are incorrectly wired.

From "The complete BLTouch/3DTouch guide for Creality printers (CR-10/s,Ender 2,Ender 3) for Auto Bed Leveling UPDATED" can be read:

  If you connect your bltouch and when auto homing the sensor doesn’t register
  & the z axis keeps dropping pressing into your bed, turn your printer off,
  disconnect the power and invert the black and white connectors in the z limit
  switch header (put black where white was, put white where black was).

This can also be found in this Marlin issue tracker:

  The Problem was the polarity of the sensor wires was reversed.

If reversing the polarity does not work, move to the original Marlin firmware.


How precise do models need to be for 3D printing?

It depends on what you're working on. If you're producing mechanical/functional parts (even if that just means having to connect to one another or to some non-printed part), 3 mm (0.3 cm) error is almost surely going to prevent them from working. Even 0.3 mm error might be a problem.

If you're doing standalone prints that don't have to interface with anything else, e.g. art, non-articulated figurines, etc., then it becomes just a question of what's visually acceptable, and that's a matter both of scale and of the detail level you want. For typical tabletop-RPG scale, for example, most of the acutal visual features are going to be smaller than 3 mm, so that much error is not going to work out. It might work for large busts, though.

In any case, I would recommend trying to solve the underlying problem. Either change your grid snap, or work at a larger scale and just scale down the final model.


How should I clean my extruder when changing materials?

If you feel you need to clean the nozzle the best approach is a cold pull.  You can perform this procedure with many printers, however, you should seek advice from your printer manufacturer before attempting this process if you have any doubts.

With the previously filament still loaded and the tool head cold:

Begin to raise the temperature of the tool to the printing temperature of the next filament you intend to load
As it begins to warm up perform any tasks you normally perform during filament unloading (open the idler, for example). You should not be fighting against the extruder drive gear or any other part of the tool during this process!
With a fair amount of pressure begin pulling on the filament
The old filament should eventually release from inside of the tool leaving the end of the filament roughly in a nice molded shape of the inside of the tool.  Begin loading the next filament you intend to print and manually feed some filament through as the tool finishes heating

Anything left over from the previous filament including pigment or other residue should be stuck to the end of the filament.

You can perform cold pulls as many times as you wish by loading new filament, extruding a small amount, letting it completely cool and repeating the steps.


Step 1: stop using paper and get some feeler gauges. The gauge should be able to just barely pass under the HEATED nozzle.
Step 2: What are you using for bed adhesion? I use Elmer's white glue. After you think you've trammed (aka levelled) the bed, apply a generous layer of the glue in a coat on the bed. Let it dry.
Step 3: Verify bed level with a large square print that will cause the head to move to the outermost parts of the bed. Stop the print after a few outlines. Try to remove the print. If some areas are easier to remove than others, apply another coat of Elmer's glue to those areas.
Note: Do not hold down all four (4) corners of the glass bed. The aluminium plate is not going to be flatter than the glass. Only attach the glass to the bed on one side of the bed. I use the side that is furthest from the nozzle.


Project help, printing a Neopixel enclosure to secure to a car rear windscreen

There's a handy tool for replicating curves that use a series of plastic or metal fingers in a sliding mount. One presses all the fingers to one side, then presses the bracket to the desired surface until all fingers are in contact. The opposite side now represents the measured curve and can be traced into a modeling program.

For your purposes, that is unlikely to work, as the tool is perhaps six inches long, far too short to span your windscreen.

Consider the following:

Attach a string to each edge of the windscreen or wedge a thin rod from one side to the other. This provides you with a straight line reference. Measure as nearly as possible to perpendicular from the reference string to the windscreen surface. I have a laser measuring device that has 1/16" or 1 mm accuracy above certain distance, which would not work well in this case as you approach zero at the edges.

Start in the center, record your measurement, and move an appropriate distance outward. I suggest you need only approximately 20-30 mm spacing as you are collecting points on a curve, which are likely to be relatively uniform and easily reproduced in software.

Your graph now has zero, zero on the left, and say 750 mm, 40 mm on the right, with matching numbers in the middle. On real paper, turn it into a graph, or use a suitable vector editing software such as Inkscape and duplicate it there.

Depending on the shape of your window, you may have to replicate the process at different heights in order to get a proper representation of the curve of the glass.

Once you have the dots, run a Bezier curve through the dots. The resulting like can be extruded or otherwise converted into the segments necessary for your 3D printing project.


Extra data appended to the Y values when issuing `M92` & `M500`

*75 is the checksum value, (a method for verifying the integrity of the transmitted information).

RepRap wiki gcode : checksum

There is probably an option to not use/disable checksum generation in repetier/slicers, however this may only be advantageous for use with code run from the sdcard as it is extra processing (and probably less relevant when not being transmitted over serial connection. )


How to get a quality print of a thin single-walled shell?

Cura is exceptionally bad at printing details comparable in size to the configured line width. Lower your wall line width to something like half the wall thickness (i.e. 0.225 mm) and see if that works. With a standard 0.4 mm nozzle I've had success printing tiny details with 0.2 mm line width or smaller. For example:

And here's your model printed at 0.225 mm line width:

I also had to slow down the print speed considerably to get first layer adhesion with such thin lines. I did 40% via the printer UI, relative to 30 mm/s base rate, so effectively 12 mm/s. After first layer increasing speed was no problem.

Important: You also need to set the "Outer Wall Inset" (wall_0_inset) setting to 0. This is a broken Cura feature that's supposed to compensate for wall line widths less than the nozzle width, but the math is incorrect and not actually needed, and if it's left at the default it will reproduce exactly the same "missing wall" issue you got with full wall line width.


Magnetic heatbed options - can I trim these to size?

Adhesion and sizing
First of all, the product you link is very likely a BuildTak clone or a similar product. My Ender 3 came with a similar one and I have changed to a different one after I ripped it off accidentally to mount a similar one. I have yet to find a sheet of this material that you can't cut to size, as it is pretty much only a polymer with a strong tape on one side and a rough surface on the other. So trimming is not a problem at all.
Mounting
To mount your new surface, you need to get a surface onto your heatbed that has

good contact on all the area
securely holds the bed in place
is as flat as possible

So you surely want to get a metal sheet that is as flat as possible to mount your surface on. If your bed is heated, your mounting method needs to transfer the heat as good as possible, so a direct contact to the heated bed would be good. This, however, rules out most thin magnets, as these magnet sheets demagnetize under heat, limiting the usability for higher temperature materials, for example, ABS. The original Prusa uses a spring steel bed and high-temperature magnets embedded in the heating platform to work around this.


How is the extrusion rate matched to the movement speed?

I'm not sure what you mean by "XYZE combined speed", but I wonder if it's the same misconception as in Details of Marlin's feedrate calculation. The feedrate is a regular 3-dimensional velocity in XYZ space which is the maximum rate the printer will attempt to achieve, subject to individual axis feedrate limits (including E) and acceleration profiles.
In any case, the simple answer your question of how the E-axis motion is synchronized with motion in space is no different from how motion along the X-axis is synchronized with motion along the Y-axis. If X and Y motion were just allowed to take place independently up to the desired speed, with no constraint that they happen in step with one another, then the path the print head traveled would not be a straight line but (ideally) the junction of one horizontal or vertical line with one diagonal one or (with acceleration profiles applied) some approximation of that by curves. But of course the X and Y motions do take place in sync with one another. Each spatial coordinate during the move is a function of time computed by the "planner" logic in the printer firmware based (essentially) on the ratio of the magnitude of individual components of the move to the overall length of the move and speed.
In traditional firmware prior to Linear Advance, the E axis is synchronized exactly the same, according to the ratio of the move completed to the whole and the total amount to be extruded. With Linear Advance, that's adjusted by an offset proportional to the current baseline (before applying LA) extrusion speed, to compensate for the filament being compressible and/or its travel path (e.g. a bowden tube) being elastic.


Changing the home position on a Prusa i3 MK2

Consider the original installation with the orientation of the Pinda probe to the nozzle. Let's say for argument's sake that the Pinda probe is 3 mm to the right and directly in line with the nozzle on the y axis.
If you examine your new nozzle, I would expect that the relationship of the nozzle to the Pinda probe no longer matches the original spacing.
If possible, re-design the mount to place the Pinda probe in such a way as to match the original design.
Thanks for pointing out my oversight, Mac. If the relative position of the nozzle and pinda probe are as the original, the solution is then in changing the appropriate parameters in the firmware.
I found a reference for someone who had a bit smaller error in home position, but the concept is the same.
The link above points to information reading thus:

In Configuration_Prusa.h:
Code: Select all // Home position
define MANUAL_X_HOME_POS 0
define MANUAL_Y_HOME_POS -2.2
define MANUAL_Z_HOME_POS 0.15
// Travel limits after homing
define X_MAX_POS 250
define X_MIN_POS 0
define Y_MAX_POS 210
define Y_MIN_POS -2.2
define Z_MAX_POS 210
define Z_MIN_POS 0.15

it will be necessary to connect the printer via USB to a computer running an Arduino IDE and to load the Prusa specific files for that printer. Edit the noted location, save/write the configuration and test.
I would suggest small adjustments in only one or two parameters at a time, to avoid ambiguity in the cause/result sequence.


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

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

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


Current versions of Arduino IDE

Use the menu option in the Arduino IDE:

Sketch ► Export Compiled Binary

See post #6 from the thread How to get hex file from arduino files ?:

  Well, since it was bumped it's worth mentioning there is a new way to
  do this added in Arduino IDE 1.6.5:

  Sketch > Export Compiled Binary
  If you are doing this with an example then you will be prompted to save the sketch in another location.
  Wait until the sketch has finished compiling.
  Sketch > Show Sketch Folder
  The .hex file will be in the sketch folder

Here is a screenshot for OS X:

There is no need to fully compile, a simple verify will suffice. From post #10:

  Reopen Arduino, and open a sketch of your choice (use the Examples->Digital->Blink if you have no other sketches). Hit the Verify button to compile the sketch. Now, navigate to the build.path folder. You should see a bunch of files including one with a .hex extension.

Older versions of Arduino IDE

If using an older version of the Arduino IDE, from post #12:

  Try this if using an older version of Arduino

  Taking out HEX file from Arduino in 3 simple steps

Open Arduino IDE
File ► Preferences menu

Find "Show verbose output during " and check the "compilation" box
Locate the preferences.txt file and open it
Add the following line (this is the path to the directory where the hexfile will be stored):

build.path=C:\Users\<username>\Desktop\hexfile

Change the following line

export.delete_target_folder=true

to

export.delete_target_folder=false

Quit the Arduino IDE and restart it.
Now when you compile, the directory specified in build.path will contain the .hex file (along with other files which can be ignored)


When I started printing ABS with my Prusa i3 MK3 MMU2+ printer, I started experiencing jams on some longer prints, which was heat creap, possibly combined with old filament.
I improved the cooling by filling the gap between the sides of the heat sink and the plastic extruder body. I think I stuffed it with some soft foam rubber, but anything that can handle the (what should be fairly cool) temperature should work.
My hypothesis is that with gap allowed too much of the air to pass without engaging the heat sink, compromising the cooling.
With that change, I haven't had heat-creap jams.
You aren't printing ABS, but the temperature is high, and PLA softens as a low temperature. IMO, it would still be worth making the change.
It is the gap on the front and rear sides that I blocked.  The heatsink fins are fully open for air flow.
Some people here have changed out the Noctua fan for one that is noisier and pushes more air, which should also work. I appreciate the quiet fan, so I tried to get more work out of the fan I had.


The operation you want is almost just cat'ing the files together. However you need to remove the 80 byte header from all but the first, and add up the 32-bit triangle count from each file immediately after that. Output should be:

Copy of first 80 bytes of file 1
Sum of int32 from offset 80 of each file.
Bytes 84-end from each file.

See https://en.m.wikipedia.org/wiki/STL_(file_format)


Installing Slic3r on Kubuntu 14.04 with NVIDIA

There is a huge problem with any linux distributions and Nvidia drivers. I have tried countless times to get that driver to work but it crashed my systems time after time. If your slicer works with the default driver i would not try to change it. If it doesn't then you may have to go to windows where the driver is guaranteed to work. I know this is not the answer you are looking for but unless you can code a new driver to work for Linux thats the only solution.


In order to properly get an STL file out of a point cloud, you'll need some tool to help triangulate the points to create proper vectors. The shell that is created in an STL is what the slicing engine will "slice".

I'm not as familiar with the full potential of MeshLab, but I would think this tool is best suited for files that at least have most of shell already in place. Essentially best for fixing STL's.

In the past, I've used (the very expensive) Unigraphics NX8. This CAD/CAM software is very powerful and has tools for creating meshes out of point clouds. I believe it was the sew tool that allowed me to do this in the past (I no longer have access to the software). Other CAD programs such as SolidWorks, Rhino, AutoCAD, etc. might have similar features.

Alternatively, I think it looks like you might be able to convert a 3D point cloud in SketchUp. If the cloud is layered by height and each layer had points on the same -Z- plane, then you might be able to automate creating lines between the nearest points on the same plane. Then it might just take a little bit of manual labor to "fix" the model to become 3D printing ready. Also check out this forum post, it looks like someone had luck in converting terrain point clouds.

Completely alternatively, have you considered converting an image to STL? I've done this many times before and it turns out quite nicely. If you can find topographical map of the lake, you could alter the image into grayscale (play with it a bit). Then use software to convert the grayscale image to STL.


Smooth finish in Slic3r using Support Material

I'd say the clue is the material itself and the geometry of the object. But in terms of Slic3r settings you could experiment with:

(print settings >> support material)

pattern spacing (he has here something around 5mm)
pattern (I'd say the best for you is rectlinear)
contact z distance (choose 0.2 or close to that)
interface layers (here 0 (zero) for sure)
don't support bridges (this one depends on your geometry and if slic3r calculates something as a bridge or not)

All above is also connected (in a way) with HE temperature and layer height. Usualy the higher temperature (in a range for specific material) the better sticking between layers.


Anet A8 One Z output only moves down (even on up command)

From the data you provided I would postulate that the problem is likely hardware: either with the the general assembly of the motherboard or with the stepper drivers.

The test you already performed excludes the stepper motors themselves as possible culprits.  Common sense suggests that if such a show-stopper bug was present in the original Anet firmware, thousands of users would report it.

Stepper motors are usually controlled by two signals (two cables): PULSE and DIR.  The PULSE signal controls how many steps the motor needs to perform and the signal itself is normally a PWM or some other form of square wave.  The DIR signal controls which direction the motor is supposed to spin (clockwise or counter-clockwise), and the signal itself is just a "high/low" voltage.

Now, electronics is not exactly my cup of tea, but I would suggest what is happening is that the DIR signal of the broken output is stuck on either the high or low voltage (you can test this easily with a tester).

If I am right, the likely culprit is either a dry joint (so a joint that does not let electricity pass and keep the DIR signal in its low state), or a short (so a place where voltage at "high" level is allowed to get onto the cable carrying the DIR signal).  These kind of problems are typically related to poor soldering of the connectors, or to bridges between the pins of chips.  You can visually inspect your board for such problems.

Another possible culprit is obviously the driver for the stepper motor itself.


Is a 3-D printer made from 3 CD Drives practically somewhat decent, being DIY and less expensive?

I would guess that a printer made in the following way would be both poor quality, and annoyingly frustrating, as well as requiring constant tinkering/re-adjustment. Also, if the chassis of the CD/DVD drive is incorporated into the design (as below) then the print volume is rather small, given the inherent limited movement of a CD/DVD mechanism.

If the steppers are used without the CD/DVD chassis then it might be possible to increase the print volume but then you would need to spend extra on the rods and support structure for the X gantry, the Y-axis print bed, and the Z-axis movement. If you do that, then the steppers from the CD/DVD drive probably would not have sufficient torque to move the additional weight - by incorporating the CD/DVD chassis the inertia of the movement has been kept to an acceptable minimum.

By using the CD/DVD drive's stepper motors you are only really saving the cost of buying three or four actual, more powerful and useful, stepper motors (as well as the cost of the additional rods and support).

That said, it could be quite amusing to make, and show off, and also provide some satisfaction if you do manage to print a tiny frog, parts for another printer, or whatever, with it.  However, I wouldn't expect it to print anything to any great accuracy/tolerance/precision/etc., but it would maybe give you something unusual to talk about at dinner parties.

An example

There is this (IMHO unjustifiably1) popular (i.e. well linked-to) Instructables guide: EWaste 60$ 3DPrinter, which describes making a 3D printer from old desktop computer parts2.

  $ 3DPrinter"> 3DPrinter" title="EWaste 60$ 3DPrinter">

According to E-waste printer looks nice, prints really, really small, it has an awesome print volume of  37 mm x 37 mm x 18 mm.

Apparently, all you need is to salvage:

2 DVD drives (Matsushita stepper datasheet)
1 floppy disk drive (ensure it has steppers and not simple d.c. motors)
1 PC power supply

Then purchase these standard 3D printing components:

RAMPS & Arduino Mega or RepRap Gen6/7 - Capable of running Marlin/Sprinter frimware
Nema 17 stepper motor for the extruder - Either this, or better still something from RepRap Wiki - Nema 17, i.e. Kysan 1124090/42BYGH4803, Rattm 17HS8401, or Wantai 42BYGHW609.
MK7/MK8-type direct drive gear for extruder
PTFE tubing
Hotend (throat, heaterblock, nozzle)
Heater
Thermistor
Cables, female connectors, heat-shrink tube.

To make the frame, you need a 325 mm x 362 mm, 5 mm thick acrylic sheet, and use this template (missing files):

or this one (cnc-calisma-yalniz.dwg):

You will also need to 3D print these parts (the links to which have died):

Extruder idle
Extruder body
Hot end holder

Once you've gathered all of the parts required, you can then try to work through the incomplete assembly steps of the Instructables guide.

Other links

A very similar printer also made from an old DVD drive, Instructables: Curiosity 80\$ EWaste Educational 3D Printer. See also An E-waste 3D printer for every child?
A very complete, and IMHO, a much more doable E-waste printer, Instructables: Complete Newbie Step by Step, 3D Printer With All Parts Lists
Other Instructables, that I've not really looked into:

Super Cheap 3D Printer From CD-Rom Drives
Cherry- 60€ 3D-Printer
Poor Man's 3D Printer
Chimera: \$60 DLP High-Res 3D Printer
3d Printer for Less Than \$100 USD!!!
A Low Cost 3D Printer With Basic Tools

Thingiverse: \$65 3D printer made from recycled electronic waste

Footnotes

1 Most, if not all, of the links for the printer above are dead (this variant, mentioned above in Other links, is much more complete). However, with a bit of knowledge, and common sense, it should be possible to work through those omissions:

Marlin software - easy enough to find on Github
The frame laser cut - the original file is missing but an alternative is still available
The 3D printed parts for the extruder - as the links have died, you'll either need to find reasonable facsimiles on Thingiverse, which shouldn't be too hard to find, or buy them from cheap Chinese suppliers:

Extruder idle
Extruder body
Hot end holder

2 Funnily enough, whilst searching around looking for information to fill in the gaps in the above answer, I found this question on 3DP.SE: Missing print steps in e-waste 3d printer


German RepRep Neo can't heat the extruder

first, check the breakers

pic source

secondary stuff

please see a list of item to check, that could point you to the source:

heater cable cut/melted/loose => the best way will be to check the resistance (it shall be around 3.3 Ohms) from the heater cable terminals on the mainboard, if that fails it could be a wire on heater itself.
with the heating switch on - measure the voltage on terminals - shall be 12V, if not  - that  could suggest a mainboard failure or mosfet failure (in case of mosfet you could measure if there is an input signal given on the middle pin)
there also could be a breaker that was engaged due to short circuit on the wires (the main board layout is not known to me and it is not clear form manual I found online)


Edit: The z-hop problem has been fixed in Cura 4.2.

This is a known issue with Cura 4.1 when z-hop is enabled.

If you touch the z-axis motor frame while it is apparently stationary, you may feel it is actually moving.

The solution is to set a value (I used something like 250 in conjunction with an Ender 3) for the "Maximum Z Speed".

First you need to get the setting to be visible, so go to the "Settings" menu and choose "Configure setting visibility...":

Then in the "Print settings" panel:

The full story is available on GitHub at [4.1 - current master branch] Z feed rates #5753.


Must I start over if I change a dimension in Fusion 360

If you enabled the history, you can easily go back in time and change the dimension in the sketch and then go back where you were. It would be even more elegant if you do not use fixed valued dimensions in the sketch, you can use parameters you define yourself and assign them to certain dimensions to create parametric designs. These values can be changed at any time to see your final design adapt to those changed parameters.


I don't think it makes a lot of sense - you don't need that kind of resolution, and getting a sufficient amount of ink that way to coat the filament would be hard. If you're going to be switching colors rapidly, you'd need a long purge between colors anyway. I also doubt the type of ink is suitable for sticking to filament materials.
If you really want an automated filament coloring system, I would do it with Sharpies and actuators to move individual ones on/off of the filament as it passes through. Coloring PLA with Sharpies prior to printing is a known-working technique, and there are even models available on Thingiverse for holders to keep them in place while the filament runs through. Designing the actuators to switch individual ones on/off, and the firmware controls for them, would be the natural next step.
Here are some examples I did with manual coloring of natural translucent PLA (from left to right: uncolored, silver Sharpie, and red Sharpie):

I didn't color a long enough segment of filament or properly purge for any of them, which is why the coloring is inconsistent/incomplete. But the technique definitely works.


Poor first layer bonding and bridging issues with Prima PETG

Those are fairly common issues and you should be able to tweak your way into good prints.

First layer perimeter bonding: Slow down first layer to around 15mm/s with fan off to address that bonding issue.
Gloopy blobs: To address the gloopy blobs, slow down to about 40mm/s or even less, and be sure to use wiping...also, maybe increase your retraction length.
Bridging: Use full fan for better bridging...note that bridging PETG is just harder than many other filaments, but it can be done.  The reference below includes some more notes on bridging PETG successfully.

Ideal settings will vary based on your printer, your environment, and the characteristics of your specific filament.  PETG can take some tweaking so don't be alarmed by the gloopy blobs, excessive stringing, and poor bridging, just plan to spend some time tweaking settings until you find a good balance.

Here is a fairly good reference for further tweaking with PETG.

If you'd like more help analyzing your print settings here, consider posting your current settings, your printer model, your ambient temperature, and pictures.

I hope this helps!  :-)


Getting a Cura Raft to stick to the object more firmly (for ABS)

You should reduce the air gap option called "Raft Air Gap". Printing ABS optimally requires an enclosure of the printer, wind and draft cause temperature changes which could lead to layer separation.


Is there a way to configure printer extruder to go all way up when printing finishes in Ender 3?

The most safe way to move the printer up to the maximum print height is to use a concept known as "keywords" (sort of constants that are filled by the correct value when slicing) in Ultimaker Cura, certainly if you have multiple printers with different print area sizes.

To use these keywords, just add these in between curly braces and insert them into your slicer "End G-code" script. These keywords will be substituted with actual numbers from the printer settings or slicing configuration parameters. In this case we need to use the maximum print height which is specified by the keyword machine_height. This keyword takes its value from the printer settings, set for the printer in the graphical user interface of the printer settings, see image below (this is a configuration of an Ultimaker 3 Extended, it also shows the Start G-code and End G-code which you can tweak yourself, as seen by the additional G-code line G0 F10000 Z{machine_height} that has been added for this demonstration).

E.g. similar to this answer, you could solve this with a keyword. Now when you slice for a certain printer (e.g. with the printer settings of the image above), the correct value will be filled in automatically when slicing the print object as can be seen from this snippet of G-code:

...
G91 ;Relative movement
G0 F15000 X8.0 Z0.5 E-4.5 ;Wiping+material retraction
G0 F10000 Z1.5 E4.5 ;Compensation for the retraction
G90 ;Disable relative movement
G0 F10000 Z300 ; <------------ note to see {machine_height} be resolved to 300 mm
...

This is specifically for Ultimaker Cura. Do note that e.g. Slic3r even takes the keyword  concept further by allowing arithmetic and logic, similar as you could do in programming languages!


Special characters like Ä Ö or Ü in the stl-filename resulted in Ultimaker Cura creating a comment of the filename in the g-code that read like

;MESH:Loki_hörner_v2.stl

This apparently could not be parsed by the Anet A8, leading to an error and halt.


CR-10S / Ender5+ LCD Touchscreen Firmware Editing

I've been digging into the sources and from what I understand, it is not very easy to change the menus, you should possess some programming skills to change it. It appears that the screen is operating on its own firmware and the board is running a special fork from Marlin.

The screen is identified in code by constant CREALITY_DWIN. It appears that the screen receives/uses precreated images (from this download you find these screen captures). The code references the bitmaps by a number and a base number (ExchangePageBase). E.g. codeline:

RTS_SndData(ExchangePageBase + 78, ExchangepageAddr);

sends this image:

The specific code is found in this specific fork of Marlin in files Creality_DWIN.cpp and Creality_DWIN.h.

In order to make your own menu item, you need to add code to send new bitmaps and retrieve the touched position.


What does the trimpot on my Switching Power Supply do?

No doubt it's just a final tuning potentiometer. Even on the pictures you linked it's described as V adj which stands for voltage adjustment.
It's a way to tune your power supply's output as it can vary depending on temperature/humidity/wall-plug voltage/etc.

It's usually set properly and doesn't need to be touched. But you can connect a multimeter to check if your power supply gives the voltage you need.

If you are not familiar with the subject but still want to do it yourself, it's good to set your multimeter to the highest available range and make sure that AC/DC is properly chosen.  Now you can measure voltage. You can set the range closer to the expected values then. Usually multimeters have a range around 20 or 30V DC which is propbably what you expect from your power supply. In such a range you should see something like 12.000. If it varies from 12.000 you can then precisely adjust it to get as close as possible to this value. But watch out... cheap power supplies can cheat you. When the are have a load on the output (your 3D printer for example) they can reduce voltage.


Reason behind geometry of heater blocks?

A heater block has its shape designed simply by the necessity of the needs and the ease to manufacture them. Functionally, a heater block serves as:

a structural component holding the following components in a well-known position to one another:

heatbreak
nozzle
heater cartridge
thermosensor

a transmission medium of heat energy from the heater cartridge to the thermosensor and filament path.

this dictates the use of high thermal conductive metals

a thermal energy storage to equalize the heating pattern of the heater cartridge.

While this dictates the internal geometry of the block, it does not say anything about the external geometry. This is chosen entirely because of manufacturing, which strongly prefers square items in a vise with stop positions to allow repeatable machining.

While other heater designs are existant, for example wrapping a heater wire around the meltzone, the use of a machined structural element that houses bought components saves a lot of time in assembly Quality Control and subsequent repairs, as each component (heater, thermosensor, block) can be rejected or replaced on its own. This makes the machine all in all more serviceable.


My first 3D printing - I need some advice or tips

I see this:

  I had to make a small prototype and it requires an enclosure

and this:

  yes, it is hollow inside

How do you intend to get your item inside the result? This part really needs to be two pieces with two separate prints. Basically, a box and the lid, where you leave space for screws, include tabs, or plan for glue connections.

Finish that alteration, and the support issue suddenly becomes much easier. Most slicers have options to generate support for you, including limiting support to spaces between the model and build plate. Now you can rotate the angle at the which the part is printed in order to minimize your support needs, or so that most of the connection points for the support will not be visible in the finished product.


Z-Axis zero/home position is higher than the actual print starting position

Check the Z-drive for any component looseness. Look at belts, gears, anything with screws. Wiggle things mercilessly checking for play.

At the start of a normal print run, the the print head typically rises up very high as the head warms up (depends on software) and then lowers to print. If your homing paper test happened with the head near the limit switch, then the difference between those two use cases is the Z-distance traveled to get to the same place. You have eliminated software and electrical considerations, which leaves mechanical considerations. A slipping gear or belt might contribute to this odd behavior you describe.


Vertical 5 mm diameter hole comes out fine, but diagonal 3 mm holes keep collapsing

A member of the public on Stack Exchange's forum gave me the answer:
"The problem is not the hole 'collapsing' in and of itself. The problem is the material.
Versatile Plastic is a layered powder fused together with a laser in multiple layers, so the unused power has to come out from the various holes in the model once printing is completed. However, these layers are also very thin and compact. Therefore, if you make a small enough hole, the powder simply won't flow through it and it becomes stuck. Due to the small dimensions you listed (of said hole) it's gonna be difficult to free it due to the sheer compressing forces involved. When working with such fine details Versatile Plastic is not the most indicated material.
The only correction you can make to rectify the problem is changing material. Fine Detail Plastic would be a good choice for a new test, although it is not cheap compared to Versatile, is certainly cheaper than metals.
Fine Detail Plastic should provide you with a good result if you feel like trying it out."
ShapeWays technical support told me basically the same thing, and added that ordering the shape in black might also exacerbate the problem:
He said that when a model has holes in it, a human actually pokes the holes to get residual material out if possible.  Then he adds: "The last issue would be that Black indeed causes additional issues. If the production team isn't able to clean the model properly, or didn't do their work right, this could become and issue when we dye your model. All Versatile Plastic is printed in White, when selecting a colored finish such as black, we dye the model using a bath of regular RIT DYE. If the hole still has trapped powder, the bath will make the loose powder wet and make it become sticky, in combination with the dye this causes it to become chunky on the inside."
TL;DR: I can try to fix it by using Fine Detail Plastic, or I could try ordering in white and then painting it black myself to avoid gunking up the holes (the insides of the holes don't need to be painted black).


How much work would be converting Prusa firmware/software for CNC use?

Disclaimer
Questions about other machines is still in kind of a grey area right now 06/2016 and your question is, in my opinion, a bit too broad. However, I think it's a great topic to perhaps help direct the scope of this community.
The lowdown

3D printers, CNC Mills, CNC Lathes, CNC Routers, and Lasers are all very different! There are certainly areas where each of these may overlap, but the methodology is very different overall.
Software is not always interchangeable across machines (even within the same machine type) due to hardware requirements/communication.
Hardware is not always interchangeable across machines (even within the same machine type) due to design/scope of the purpose of the machine.

Things to consider
(In a nut-shell)
3D Printers
Hardware

Minimal speed/torque requirements compared to subtractive machine tools.
Good designs focus on temperature control via enclosures and/or electronics.
(Typically) uses heat block/nozzle/stepper motor to control material size/flow.

Software

Emphasis on "plug-n-play" UI/UX
Conceptually easier to generate tool paths. STL's provide outlines and software fills in the blanks like a coloring book.
Focus is on understanding material properties and temperature variability.

Common Variability

Material quality/shape
Environment temperature

CNC Mills/Routers/Lathes
Hardware

Maximum speed/torque requirements.
Good designs focus on rigid designs and handling harmonics.
Tighter tolerance components to ensure mechanical repeatability.
Relies on cutting tool size/shape to control material size/flow.

Software

Requires more manual input (typically) to account for where its tool is located. The mathematics heavily depend on accurate dimensions for the cutting tools, otherwise you could damage your part or the machine.
Good software allows many different "canned" tool paths for efficiency, tool types, and achieving desired surface finish.
Focus is on variability in cutting tool and speeds/feeds (as recommended by cutting tool suppliers for materials)

Common Variability

Material shape/hardness
Cutting tool shape/hardness
Cutting tool path

Lasers
Hardware

Minimal speed/torque requirements.
Good designs focus on consistent beam quality and spot focus, which is relative to constant power.
Uses focusing lens (sets spot size) to control material size.

Software

Emphasis on "plug-n-play" UI/UX and interoperability.
Dimensions are easier to achieve as less variability in the process compared to 3D printing/machining.
Focus is on laser power (typically for material type and depth).

Common Variability

Laser type
Spot size
Power supply

Summary
Overall there are many, very different variables to consider between these technologies. I only focused on variables you might see out of a hobbyist-style machine and if you've operated any of these you'll know that there are many more variables that pop up for any of these machines.
So, do not expect such a plug-n-play solution as each machine requires quality construction of its hardware, the ability to handle the variability of the process in its software, and, above all, an operator that understands the correlation and balance of these components.
All of that being said, there are some machines that seem to be tailored to this such as the machine by Diyouware and ZMorph (No affiliation, just examples). However, notice that they have created their own software to meet a lot of these communication requirements.
Update
I forgot to mention the fact that a kink in creating a interchangeable machine is the control interface. The controller converts the "software speak" into an easily parsed series of functions (typically G-Code) for the small computer to process its predetermined hardware processes. Ie, The slicer or CAM software determines that a layer of a circle be 3D printed, milled, routered, or lasered, so the controller should G02I2 which could parse to (For all intents and purposes in javascript, not a practical language) CWCircularInterpolation(2,null,null,null,null,null) and run as:
function CWCircularInterpolation(i,j,k,x,y,z){
 //Some code to take current position and command to create a canned circle path
}

The point is that the software needs to handle the conditions and constraints of a different machining process and provide a well-equipped machine with the right commands. There are a lot of different things to consider in attempting to combine these machining techniques into a single machine and get quality results.


You have more than one problem going on. As for the print lifting up, that could be for a multitude of reasons. Clearly better bed adhesion is required. It also appears the printer stopped printing at one layer. Now for the charred part, I think it could've been caused by the nozzle staying in one area for too long (possibly when the printer stopped printing.). This causes the plastic touching the nozzle to overheat and burn up. The charred section can usually be pulled off pretty easily. However, since it definitely appears you have more than one issue here you should pursue some research (perhaps other questions on the site) on the matter.

Hope this helps!


Different lengths of filament is extruded with different temperatures

Obviously, your extrusion process is troubled by a lot of pressure. This can be seen from the extensive experiment you conducted with PLA extrusion at different temperatures. Please do note that 230 °C is considered pretty high for PLA! Usually it should be in the range of 185 - 205 °C:

  In general, PLA filament settings have an optimal printing PLA
  temperature range from about 185C to about 205C. If you’re using
  1.75mm as opposed to thicker 2.85mm (or 3.00mm) your optimal print will be closer to the lower end of this PLA filament temperature
  range.

The temperature dependency of filament diameter is explained that small diameter filament warms up way faster in the heating zone of the hotend than large diameter filament as the heat travels less far to the filament core. Basically, with 1.75 mm filament you should be able to print at 195 °C. The pressure that the filament exerts on the hotend and extruder is clearly too much and leads to skipped steps.

It is strongly discouraged to create a function of steps per millimeter (or an over-extrusion by specifying a more than 100% flow modifier). This is a mechanical issue that needs to be fixed by addressing the hardware problem. Usually this is done by:

fixing the extruder;

is it skipping steps?
does the filament tension get too high that it skips back pass the extruder gear?
does increase the stepper current work?

fixing the Bowden tube;

is it clean?
is there too much friction?
are there kinks?

fixing the hotend;

is the temperature that is reported the correct one? (thermistor problem?)
is the heat conducting properly to the nozzle?
is there a tolerance issue in the hotend/heatbreak?
is the coldend properly cooled?

A few of these you already explored, others you have not. Unfortunately, you have to do a little more troubleshooting the get to the bottom of the actual problem that is causing this pressure preventing the extruder to extrude the proper commanded length.


How to upload firmware to reprap printer?

There are mainly three reasons for that:

Arduino studio settings should be:

Board: Mega 2560 and
Programmer: AVR ISP
and valid COM port, please see below:

Please close all slicer's instances (Cura, Slic3r, Repetiter)  and host servers and other software that communicate with the printer as they lock the COM port;
Please check that the appropriate usb2serial drivers are installed and working - the best way is to start the serial monitor from the Arduino Studio Tools menu and see if there are any.


The BLTouch is hitting the bed on the double-probing

First, make sure to check if stow, deploy and the trigger are working correctly.

Second, check the pins files to make sure you put it in the correct pins. Black and White probe pin might need to go to Z-min or probe pin depending on. Make sure to check that.

Third, add "BLTOUCH delay". It might be triggering too slow or too fast for the next one to react. So after the first trigger, there should be a time for it to "re-setup" for the second. But if there is no time to do that then it won't trigger.

To add examples: If you have SKR 1.4 Turbo, then use BLTouch probe pins (black and white) on the board. IT will NOT recognize. You have to use Z-min endstop pins. Reason for this?:

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

If this has been used, Z-min probe will use Z-min endstop pin instead of Z-min probe.


M3D filament not extruding well (anymore)

Suggested remedies for 3-D printers which are not extruding required amount of filament:

First, check the temperature of the extruder. Try 220-225C to see if that improves the problem.
The second step is to increase the flow of the filament (increase mm/sec) for extruder speed.
A final step is to increase distance between extruder and base-plate. If the extruder is too close to the baseplate, there may not be enough space for the filament to begin the printing process.

Another possible source of lack of material extrusion is a clogged extruder. To solve this problem:

Retract filament using jog control in software
Heat extruder 20-30 degrees Celsius above normal extrusion temperature
Disassemble Extruder, use small thin wire to remove blockage (guitar wire as suggested below)


Issue with the new heating cartridge of my 3D printer

If it is 40 W then it shouldn't matter what length it is. Note that the heater cartridge just contains a Nickel-Chrome wire-resistor (see image below for the construction), this resistor gives its heat to the metallic shell, the length of that shell shouldn't matter, it usually contains heat free/colder zones at the tip and root. Even if it is a 30 W heater cartridge it should be able to get to temperature, it would just take longer.

If it is a 24 V, 40 W cartridge, operating at 12 V, then the effective power would be $40[V] \times \frac{12[V]^2}{24[V]^2}=10 [W]$. This might be too low to reach the temperature. It is best to check the resistance of the heater element with a multitester; it should be about 4 Ω for a 12 V heater cartridge and about 14 Ω for a 24 V heater cartridge.


Since your team is designing a printer, you'll have to do some basic calculations to figure out your x and y axis steps per millimeter and then set them in your firmware.

For a decent primer in the basic idea, this video is a good start.  For another decent getting started summary check this blog post

Also, since you're using Marlin, become very familiar with the Marlin Firmware and how to configure it.  The setting you want to change exists in the configuration.h file.  Documentation is included in the file, but you can find good information here in the Marlin Configuration instructions within the Marlin Firmware Github repo.

I hope this helps!  :-)


Do I need linear rails on a corexy printer's z-axis while already having quality lead screws at hand?

Using rails for Z is overkill. They are stiffer than smooth rods, but for Z axis that's not needed.
Using only the leadscrew may be enough, especially in designs with three of them, but if you have only two you may be able to still twist the bed around the Z axis.
Also, the bed would be supported only in the center by the "nut" on the leadscrew. This means that the bed could wiggle around the X axis (the axis along the line between the two nuts).
Some additional support for the bed, or using two "nuts" per leadscrew, properly spaced apart, is usually needed.
This in general. Since you mention now that the bed is 220x220 mm, maybe you can get away with the two leadscrews alone, especially if you can find "long" leadscrew nuts, so that the wiggling is not excessive.


M42 command is an immediate command. This means that it will run before the move GCode commands finish. This is exactly what I was facing.

This video has the walk-through of solving the issue:

Here is the relevant PDF it talks about: The 2.8 watt, $100 Laser
Upgrade for MPCNC.

Here is the relevant section on page 7 of the PDF:

  The laser driver requires a 5 volt TTL input control signal. The
  Marlin fan control Mcodes (M106 and M107) will be used to
  control the laser .Unfortunately, the Ramps fan output (D9) is a
  12 volt signal so we can’t use it. We'll need a quick firmware edit
  to remap the fan output from pin D9 (12v) to pin 44(5v).
  Make a backup copy of your Marlin firmware folder first. Open
  the pins_RAMPS_13.h file in your Marlin firmware folder with a
  text editor (Wordpad). Search for the line where the fan pin is
  assigned and change it from pin 9 to pin 44.
  Save the changes and flash the revised firmware back onto your
  Mega board.


Designing/Printing objects with sized holes

The reason holes come out undersized is generally the slicer, so calibrating the printer itself cannot solve the issue (without making other things worse). The output of the printer is exactly what it should be, given the G-code provided to it. It's just that the G-code does not represent the hole diameter correctly.

It would be best to simply account for the deviation in your design, or simply drill out undersized holes to the correct diameter.


If the height of the object is larger than the free space between the gantry and the top of the first printed object, you will not be able to slice the object. The maximum printing height will reduce to the maximum available distance between the gantry rods and nozzle.
Note that the correct Gantry Height needs to be set in the printer properties. For instance, the UM3 I use has 60 mm free space between the gantry and the nozzle:

If you have a smaller height specified, or a taller print object os depicted in the image below, you will not be able to slice the prints (note that a 100 x100 x100 mm is scaled to 20 x20 x70 mm prints, which exceed the 60 mm):

When properly scaled below the 60 mm, i.e. to 20 x20 x50 mm print objects, you'll see that you are able to slice the objects:

Slice preview:


Are there any non-static (ESD safe) materials to print with?

Yes there are ESD Compatible filament materials.  One manufacturer is 3dxtech.
There are also filament materials that are even more conductive than that.
Pretty much all rigid filaments can "take screws".  You can either have a hole that and let the screw self thread or tap the threads into the hole.  A better option is often to press a threaded insert into a hole.
The bigger question is why do you need this?  Are you trying to prevent ESD.  If so, why, are there ESD sensitive components?  If so, just make sure proper spacing is provided.  If you are trying to manage electrical emissions/susceptibility, there might be better solutions such as a coating.


What can cause Z height loss in the first few layers?

Do you have any “slope” on the right side (non motor) of the gantry? I’ve noticed that my gantry will settle on the right side and lag behind the motor driven - ever so slightly - when it starts to drive up. It will, after that first lag, move fine for the rest of the time. Z axis travel seems barely affected but all my prints are consistently about .5 mm short.


Need sanity check debugging non-functional extruder

The extruder motor will not turn unless the hotend is at a certain minimum temperature. This is a safety feature to prevent the extruder from grinding through the filament with a cold hotend. You can use the M302 command to control this behavior.


How to properly read dimensions for a 3D printer?

Having the dimensions of your 3D printer ordered in Length x Width x Height is a common way, but nobody actually decided it.
I think it has something to do with the 3rd dimension being the "new" dimension for printing things, that's why it's appended at the end.
Additionally, the first axis on a 2D-coordinate system usually is the horizontal one, so writing Length x Width makes sense for me.
If you are unsure you can always test your printer (if you have one) by writing your own G-Code that moves the printhead on a defined axis.


What do you recommend for removing prints from Monoprice Maker Select bed?

When all other things have failed, I chuck the build plate in the freezer for half an hour.

The glassplate and the plastic changes size differently when changing temperature and 'pop' it just snaps off easily.


What should I think about if I want to design something modular?

All printers are designed with an idea of WYSIWYG for sure. Depending on:

printer - type/quality/settings/configuration/assembly precission
filament - type/quality/shrinkage
user skills - manual/using app proficiency
model complexity
environment conditions and so on

you can get different results.

I venture to say users know their printers (after some time and by trials and errors) so they know how to manage dimensions to compensate all above so you will get this knowledge too.

Mathematical formula can describe shrinkage of the material, all other elements are very hard to describe (mathematically) in a general way.

Of course someone can simplify it and say: more money you spend better effects you'll get. It's sometimes true ;)

So all your modular things will be better and better if you will increase (what is to be increased) in above points especially "user skills".

Is engineering paramount? It depends of whay you gonna create. If your modular things have to lock itself, have to have threads, screws and such stuff then this is engineering. Is it the most important part of the design? Not necessarily.

I would say 3D printing moved engineering to next level. I'm talking about this or this. Is it still art or engineering? :)

This is my receipt:

think > imagine > design > rethink > redesign > give it a try > get back to thinking

good luck


If the motors are in parallel, then setting it at 0.4V means each motor will only get a quarter of the current a single motor would get at 0.8V. If you set it to 0.8V each motor will get half. I think 0.8V (same as for the other motors) would be an appropriate setting. Stepper drivers are constant-current, not constant-voltage.

Are the steps/mm for your Z-axis correct? Perhaps it's just trying to move too quickly.


Y-axis layer shifts with recent Marlin on Ender 3

Buried in a bug tracker entry for a seemingly unrelated issue, I found what seems to be the solution:

  @johanmga, I've discovered the velocity jumps here come from using "classic jerk" computations, and happen whether or not s-curve acceleration is enabled.

  Try uncommenting //#define JUNCTION_DEVIATION in Configuration_adv.h; that will disable classic jerk and use the junction deviation math instead.

  Also for reference, issue #12403 is actively tracking the layer shift issue (please comment there too if you have more information on problems/solutions), and #12540 is has more information on classic jerk vs. junction deviation.

https://github.com/MarlinFirmware/Marlin/issues/12491#issuecomment-443464603

It seems that the "classic jerk" code no longer works and produces erroneous motion to the steppers under some conditions (dependent on G-code contents), whereas the Ender 3 default configuration file is still using it.

With the default JUNCTION_DEVIATION_MM of 0.02, things worked right away, but printing was so slow that I could plausibly attribute it working just to the slowness.  But increasing it up to 0.1 via the menus got the speed closer to what I'm used to, and it's still printing with no layer shifts.

I've posted my results in the tracker in hopes that they'll lead to discovery of the root cause: https://github.com/MarlinFirmware/Marlin/issues/12403#issuecomment-519305409

Another issue on the tracker seems to have more detail:

https://github.com/MarlinFirmware/Marlin/issues/12540#issuecomment-442793326


If you enable M413 in Marlin firmware, the printer will write a resume printing file to SD card e.g. every layer.
From M413 - Power-loss Recovery documentation I quote:

Enable or disable the Power-loss Recovery feature. When this feature is enabled, the state of the current print job (SD card only) will be saved to a file on the SD card. If the machine crashes or a power outage occurs, the firmware will present an option to Resume the interrupted print job. In Marlin 2.0 the POWER_LOSS_RECOVERY option must be enabled.
This feature operates without a power-loss detection circuit by writing to the recovery file periodically (e.g., once per layer), or if a POWER_LOSS_PIN is configured then it will write the recovery info only when a power-loss is detected. The latter option is preferred, since constant writing to the SD card can shorten its life, and the print will be resumed where it was interrupted rather than repeating the last layer. (Future implementations may allow use of the EEPROM or the on-board SD card.)

This means if you cut the power you can resume the print layer, the only problem is that the part must remain attached to the plate, if it comes loose it is hard to resume printing. This feature is now commonly found on printers these days.
The regular pause and resume functionality of the printer will not work when the power is cut over night, i.e. no recovery file is written in such a case.


Filament Length too short for extruder to push filament

The extruder can't push anymore when the filament is past the extruder gear. If your filament has run out to that point, the print will not halt but print without a filament, meaning that the print will fail. You need to pause the print in time and then put fresh filament into the printer.

If the end of the filament is cut flat at the end and the new one is flat too, the new filament can push the old one out to the nozzle, reducing the waste to a minimum, if you can live without retraction for the amount of length that has to be used up. You could friction weld the two parts together to alleviate this.


is PLA gasoline, diesel or chemical resistant?

I have used both ABS and PLA for diesel gas caps and oil plugs.  As well have made a gasoline funnel out of both.   Both have done well for me.
I have attach a link to a plastics resistance chart if it is any help.  Unfortunately it does not show testing for ABS for all.

I prefer the ABS only do to the fact some items I have made sit in the desert sun.

Plastic resistance chart


How to change "home" settings on Ender 3

This isn't a matter of settings but physical adjustment (the endstop switches). Having the head home slightly off the bed in the X and/or Y direction is a good thing, because it means the Z homing can't crash into the bed if the bed height is misadjusted. On my Ender 3, the X axis homes slightly into the bed, but the Y homes such that the nozzle tip is in front of the bed. Note that normally you don't try to print at X=0 or Y=0 anyway.

As for the Z homing, you have to adjust the bed height ("bed leveling") via the 4 wheels under the corners of the bed to bring it to the right height. If you can't get it below the nozzle with the wheels all the way tightened, your Z endstop switch must be installed incorrectly. The Ender 3's Z endstop bracket is supposed to fit against the corner of the aluminum extrusion just below it so that it doesn't need adjustment, but it's possible to mount it incorrectly higher. This is a bad idea because if it loosens it can move. It might also be possible to incorrectly install it lower, in which case it would be misaligned because the machine screws couldn't be tightened down all the way. This is also a bad idea. Make sure it's in the right place.

As for actual bed height adjustment/leveling, there are lots of good guides to that and I won't try to reproduce/improve on them here. The "sheet of paper" method is very good.


How to utilize/calibrate print fans for PLA?

Everybody's combination of fan hardware and print settings is different. Unless someone else has the exact same printer and slicer profiles as you, there's no way to really say anything like "use X% for PLA" or whatever. For practical purposes, you just empirically figure it out with test prints based on a few simple rules of thumb:

Use lots of cooling for PLA, moderate cooling for PETG, and minimal cooling for ABS. (Note that sometimes ABS does benefit from gentle airflow, and PLA shouldn't necessarily always just be blasted at max power.)
Use less cooling on big prints where each layer takes a long time, more cooling on small prints where each layer is very quick.
Axial / box fan? You'll probably want to run it at full power. Radial / squirrel cage blower? You may want to run lower power.
Overhangs curling up or sagging? More airflow may be needed. (Lower layer heights also help enormously.)
Hot end temp sagging when the fan kicks on? Try less airflow. (Or insulate your hot block better.)
Weak layer bonding? Try less airflow. (Or raise your hot end temp.)
Small, fast prints getting mushy or corners "pulling in"? You need more airflow. (Or lower heatbed temps.)
Print warping / corners lifting off the bed? Try less airflow, particularly on the lowest few layers. (Or higher heatbed temps, or a better adhesion layer, or less nozzle/bed gap for the first layer, or any other approach.)
Fan too noisy? Try less airflow. (Or get a better fan.)
Filament stringing during travel moves? Try less airflow pointed directly at the nozzle. (Or tune your retraction settings better, or get the moisture out of your filament, or lower hot end temp.)


Creality CR-10 extruder clicking and/or nozzle clogging

Turns out the filament was the problem, I tried printing a model with a high quality sample PLA filament I had and it printed perfectly; one of the cleanest prints I've had. Never skimp on filament.