text:
How do you level (or tram) your build surface correctly?
There are numerous topics found on first layers that do not adhere properly causing prints to fail or cause print quality defects.
The advice is often to properly level or tram the build surface. How does one tram the build surface?

Definition of leveling
Tramming, often referred to as "leveling" in the 3D printer world ("tramming" and "leveling" is used interchangeably, but "tramming" is the correct nomenclature), is the process of creating a 2D  plane of the build surface that is parallel to the nozzle at the whole print area (usually the X-Y plane).
Why tramming?
In order to adhere the hot filament from the nozzle it is essential that the distance between the nozzle and the build surface is as constant as possible. Increase of the gap may cause the filament to not be squished enough and it may be dragged instead of deposited or create an insufficient bond to cause problems later in the print job when e.g. shrinkage of the object comes in play.
How to tram the surface?
To tram the build surface (a build surface comes in many shapes and forms, sheet of glass, bare aluminum plate, some sort of coated heated surface, etc.) most printers are equipped with at least three so-called "leveling screws". Why at least three? It takes a minimum of three screws to fixate a plane in space, more screws cause the bed to be over-defined or indeterminate, but with a flexible build surface it is quite common to have 4 screws although it is causing a statically indeterminate system. So, these screws need to be adjusted as such that the build surface if parallel to the nozzle.
First step is to home (What is homing? What is the purpose of homing?) the printer, homing from the tag wiki reads:

The process of determining the location of a 3D printer nozzle in
three dimensions using a reference point (home location) is referred to
as "homing". Homing should occur before every print and involves
bringing the X, Y and Z-Axis motors to pre-defined limit locations
(usually these are endstops). Pre-recorded homing data offset values
determine the position of the build plate origin with respect to the
endstop locations.

Once homed (with G-code G28 or through the graphical user interface of the printer display) , the origin (0, 0, 0) of the printer is known, from this origin you can determine the level. Note that the X and Y is usually correct (if not, see How to center my prints on the build platform? (Re-calibrate homing offset)) the Z offset depends on the height of the Z endstop and the leveling screws. For a surface that uses a sensor as endstop (see e.g. Automatic Bed Leveling (ABL) with a sensor (BLTouch, inductive, capacitive), how does it work?) the offset is defined by G-code (M851) or through the user interface of the printer display. Note that automatic bed leveling (ABL) is not magic, you still need to provide a trammed bed that is as level as possible, the sensor merely scans the surface and adjusts for larger imperfections of the build surface. After homing, move the nozzle at a certain Z value to the corner of the origin, which is usually the front left) (0, 0, Z) or close to this corner (10, 10, Z), put a piece of paper (A4/Letter) on the build surface and lower the Z to 0 (or if you hit the build surface before you reach zero height, then lower the build surface) raise the build surface until you can feel the the paper drag slightly when pulled between the nozzle and build surface (alternatively you can use a feeler gauge, A4 paper is 0.08 to 0.11 mm thick, so a 0.1 mm gauge will do fine). To be sure that the carriage hasn't been moved by the tramming, issue a homing command and move to the corner to the right and repeat the process to crete a slight drag of the paper when pulled between the nozzle and build surface. Note that tramming this point may have influenced the first point. Now repeat the homing and moving (for corners back right and back left) to start over again at the front left corner and repeating the whole process at least one to two times. This iterative process will deliver a trammed bed, the bed should now be parallel to the nozzle.
Trammed, but filament not adhering...
Once trammed the build surface should be parallel to the nozzle, if the distance (usually paper thickness) is too far or too close, adhesion or first layer deposition may fail or cause surface defects like ripples. If not adhering the initial gap between the nozzle and the build surface (paper thickness) might be too big, making this smaller may help squish the filament more so that it adheres better to the build surface. Alternatively use an adhesive in between the build surface and the first layer, nowadays there are multiple dedicated sprays and liquids available, but some house hold product like wood glue, glue sticks and hair sprays could be used.
Build surface cannot or is difficult to tram
When the build surface isn't perfectly flat, tramming is a challenge, or doesn't provide a 2D plane at a fixed distance of the nozzle. In such cases, scanning the build surface and adjusting during printing might help to get the filament to adhere properly; this process is called automatic bed leveling or ABL (see Automatic Bed Leveling (ABL) with a sensor (BLTouch, inductive, capacitive), how does it work?). An alternative is UBL (see What is ABL or UBL? Is this the same?).
Tramming frequently?
The frequency of tramming depends on the quality and (mis)use of the printer to maintain the 2D plane parallel to the nozzle. For good quality printers the tramming is performed very seldom.

For fine tuning I get good results by loading a model of any object with a rectangular footprint and scaling it to a size close to the printer's limits.
With the skirt set to around 10 passes, start the print job, let the skirt print then kill the job.
Peel the skirt from the bed and measure its thickness near the leveling screw locations with digital calipers or a micrometer and adjust the leveling screws as indicated.

This works well once you have the level appproximately right, but you need to do that first or you'll risk damaging your build surface, bed, and/or nozzle.

Agree with the above comment. That's why I characterized it as a fine tuning methodology.  Leveling and zero height have to be close enough to print a viable, measurable skirt before this technique is useful.

Yes. Hope I didn't make it sound like that was a criticism of the answer; I +1'd at the same time.


text:
How do I clean melted PLA form an Ender 5 Pro flex build plate?
I have an Ender 5 Pro with a flexible build plate (The factory default one).
There are multiple extremely thin tracks of melted PLA all over it. Too thin to easily peal off when cooled. Thin enough that you can run your finger over them and barely know that they are there.
What is the best way to clean them off other than simply brut forcing them with a scraper and risking damaging the surface.
Rubbing with IPA and a cloth isn't enough.
I have a plastic razor that's normally used for removing vinyl decal from vehicles without scratching the paint, would that be useful, or maybe just scrubbing for an hour with a nail brush?

can you provide a photo please?

TL;DR:
Print more PLA on top of them, and pull it off together.
Preparation
First, of course, clean it well with IPA. This will both ensure there's no oil or other material on top of the PLA that will prevent it from bonding well with new PLA, and start to work underneath it to get it loose.
Printing
Then, print! Do a 2- or 3-layer square covering the whole buildplate if you need to, or just smaller ones in the affected areas. They should bond to whatever is there and pull it up when you peel them off.
Prevention
To avoid this happening in the future, fix your bed leveling. The type of tracks that are nearly impossible to remove by themselves normally come from printing with the nozzle so low that the material is forced entirely between the texture irregularities of the build surface, with no significant layer on top, and this means your bed is at least a whole layer-height too high relative to the nozzle.

Ironically, it was a bed levelling calibration print that cross crossed most of the bed that did this.

@AaarghZombies: Your bed leveling needs to be mostly right before you can print anything, including a bed leveling calibration print. If you don't do that, you risk damaging your print surface, bed, and/or nozzle.

If you can feel it with your finger, then you can scrape it off. Just be careful. Keep the scraper closer to horizontal and don't dig in. It doesn't really need much effort.
If you can't feel it with your finger then it doesn't matter. Just clean as normal and carry on printing over it.

It can matter because it will bond to new prints done on top of it, which might not match the color or material type.

@R..GitHubSTOPHELPINGICE I haven't seen that happen, have you?

source: Stack Exchange

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

sort: votes


text:
How to encrypt the WiFi password in the OctoPi config file?
I recently changed the password of my WiFi and updated the file in the /boot folder of the OctoPrint's OS running on my Raspberry Pi.
Yet, it is now in plain text, and I would like to avoid storing it that way. What can I do to make the file more secure?
The automatic configuration from the Raspberry Pi imager generated an encrypted version of the password. But I'm not planning to flash everything again, so that's not an option.

There is no way to store it that's "more secure". In order to connect to the network, a device needs the password. The configuration tool you used likely just stored an encoded (which means roughly the opposite of encrypted, despite many people not understanding the difference) form of the password. To store it encrypted would require also storing a decryption key to decrypt and use it, but then whoever reads the SD card could just read the key too.
There is nothing special about a Raspberry Pi in this. Your PCs, phones, etc. all store wifi passwords in a form that can be read back, and that is read back every time they use them to connect to a network. If they don't make it easy for you the human user to read back the password, that's simply a user interface choice they've made to give you a false sense of safety, not any actual security boundary.

Thanks. I would just say that encoded and encrypted are two different things, not opposite, since they don't belong to the same "world". Anyways, would you say that "encoding" it in the way it was before is not any safer than having it in a human-readable way? At least a thief would have to know how it was encoded...

@Myoch: "Encoded" means stored with a particular convention for how the data is represented and to be interpreted. For example UTF-8 is an encoding of Unicode text not to obscure it but to ensure that senders and receipients agree on a convention for how to communicate. In the case of encoding of the password, I'm pretty sure that reading the docs for wpa_supplicant will tell you how it's encoded; if not the docs, surely reading the source code would. So it's unrealistic to expect someone not to be able to find out how to interpret it.

Then clearly, it was not just simply encoded in any standard way. Too bad I did not copied it before changing it.

It's not a direct answer to the question but rather an alternative worth mentioning in this context. Avoid saving your password in plain text on the SD card of the Raspberry Pi by not to use WiFi and using an ethernet cable instead.

There may also be a way to whitelist the mac address for the raspberry pi's wifi interface, so that you don't need a password for it to connect

Perhaps but that would lower security even more. MAC address spoofing is ridiculously simple.

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


text:
How do you fix an "invalid mesh" on a CR-10 Smart 3D printer?
My Creality CR-10 Smart 3D printer has built-in auto bed levelling (ABL). It appears that it is cannot do anything if ABL is not set up properly. Setting up ABL entails creating a valid mesh.
I am using the latest firmware from Creality (v1.0.13), which I believe is Marlin. To set up a valid mesh in Marlin you have to execute the g-code G29 with appropriate parameters. This begs a lot of questions, including whether you should use unified or bilinear bed levelling (whatever they are).
However, when you issue any G29 command, you get the following error message:

In other words, you need to issue a G28 command first. I did that, and the following happened:

i.e. G28 complains about the invalid mesh that executing G29 is supposed to fix. In addition the printer seizes up and has to be rebooted.
How do I escape this vicious circle? The CR-10 Smart does not seem to offer any explicit controls to completely reinitialise the machine from the LED control panel, other than an M502, which does not change the behaviour of a subsequent G28.
Can anyone help with this please?

I have downgraded the firmware to v1.0.10 but the problem persists. The printer remains totally unusable.

Thinking I would return the printer to the shop, I reset everything, which meant disconnecting OctoPrint and reinstating Creality Cloud. I then tried to print something. It actually started to print (which it wouldn't do before). However, it stopped again almost immediately because of a supposed nozzle temperature problem. Whatever. I conclude from this that OctoPrint is part of the problem. Or perhaps Creality Cloud just doesn't expect the mesh to be set up.

This problem persists. Is it sensible to consider building my own Marlin hardware and replacing the Creality firmware? The alternative seems to be recycling the CR-10 Smart so something useful comes of it.

This post was the only place on the internet, that described the issue I was having, and it was very frustrating that it was unanswered. I know this thread is old, but just in case someone else wants to know the answer to this in the future, here it is...
He asked about unified or bilinear for bed leveling, just wanted to let you know, after going thru the source code for the CR10, I can confirm that they are using bilinear leveling if that helps anyone.
I had the same issue and took me a very long time to get past it. I had installed a new motherboard, and on boot up, I am getting the same, cant level due to must home XYZ first, when homing XYZ first everything reboots. Well not really, will get into that in a minute.
Also, I should mention that due to the lack of features on the CR10, I use Octoprint as a front end, for my CR10 Smart Pro, and I do not have an LCD hooked up to it (it got fried while replacing the motherboard), it's possible the stock LCD firmware has some code that gets around this loop, or better yet it just ignores the invalid mesh error, as you will see below, that is what we need to get past this.
He says he runs G28, but gets an invalid mesh error, then the printer reboots. Sounds the same, to me, but my printer is not rebooting, what is happening here is Octoprint is closing the serial connection to the CR10. Octoprint has a bad habit of doing this on any error that is echoed in the console.
Ok, so on any error, Octoprint disconnects from the printer, what we all need to understand here, is this: neither the CR10 nor Octoprint reboots when this happens. Octoprint disconnects from the printer due to an error being echoed in the serial console, and the CR10 takes no action and is now just sitting there.
Depending on your PC, or Pi hardware, you can just reconnect to the printer by selecting connect again from Octoprint, now this doesn't always work, and you might have to reboot the PC or Pi that is running Octoprint. After reboot, you should be able to reconnect and this is all without the CR10 rebooting at all unless you're also rebooting it along with the Pi or PC. <-- Don't do that!!
As far as the CR10 Smart Pro knows, the last thing you tried was a G28 command, it then homed the printer. After homing, it tried to turn on bed leveling, causing it to report an invalid mesh error, but that is all it did. What's important is that it did home and unless you reboot it or let it timeout, that home is still valid.
I believe at this point you can run G29, and it will do the auto level, creating a new mesh that can be saved with M500 after it completes. I say believe because I have no way to test that now because I did something a little different to fix mine to get rid of the invalid mesh message.
I ran G28 L0, that command is supposed to do a normal auto home, but not enable bed leveling at the end. We don't want to try turning it on, because that is what kicks off the mesh error because there is no mesh yet.
First off, I used Pronterface instead of Octoprint, due to the error above, but don't think you really need to use it, but just wanted to put it out there; I did not do this from Octoprint.
First I tried this, with debug turned on
    >>> G29
    SENDING:G29
    echo:G29
    echo:Home XYZ First

So then tried to home it, and this happens, basically the root of the problem.
    >>> G28
    SENDING:G28
    echo:G28
    echo:Invalid mesh.

After reading the Marlin G-code docs on G28, I found the L0 option. It is supposed to turn off bed leveling, at the end of homing, instead of the default turning it on.
    >>> G28 L0
    SENDING:G28 L0
    echo:G28 L0
    echo:Invalid mesh.
    Error:Failed to enable Bed Leveling
    Error:Failed to enable Bed Leveling

    echo:Bed Leveling OFF
    echo:Fade Height OFF

As you can see, it still gives an invalid mesh error. This is where people using Octoprint will be disconnected, causing them to reboot everything to get back in, and if they reboot their printer, well, then the last home command means nothing then.
However with Pronterface it does not disconnect, so I issued this right after...
    >>> G29
    SENDING:G29
    echo:G29
    Bilinear Leveling Grid:
          0      1      2      3      4
     0 +0.106 +0.114 +0.094 +0.039 -0.047
     1 +0.025 +0.056 +0.063 +0.043 +0.036
     2 -0.160 -0.040 +0.035 +0.074 +0.111
     3 -0.237 -0.117 -0.007 +0.078 +0.171
     4 -0.384 -0.257 -0.144 -0.034 +0.094
    Subdivided with CATMULL ROM Leveling Grid:
            0        1        2        3        4        5        6        7        8        9       10       11       12
     0 +0.10650 +0.11002 +0.11354 +0.11400 +0.11067 +0.10428 +0.09400 +0.07941 +0.06093 +0.03900 +0.01263 -0.01719  =======
     1 +0.08337 +0.08846 +0.09354 +0.09587 +0.09479 +0.09096 +0.08356 +0.07163 +0.05613 +0.03913 +0.02082 +0.00100  =======
     2 +0.06024 +0.06689 +0.07355 +0.07774 +0.07892 +0.07764 +0.07311 +0.06384 +0.05133 +0.03926 +0.02900 +0.01919  =======
     3 +0.02550 +0.03633 +0.04717 +0.05550 +0.06070 +0.06341 +0.06300 +0.05770 +0.04930 +0.04250 +0.03943 +0.03796  =======
     4 -0.03259 -0.01203 +0.00853 +0.02574 +0.03850 +0.04792 +0.05398 +0.05509 +0.05284 +0.05196 +0.05451 +0.05843  =======
     5 -0.10230 -0.06940 -0.03650 -0.00813 +0.01396 +0.03153 +0.04530 +0.05412 +0.05914 +0.06454 +0.07182 +0.07949  =======
     6 -0.16000 -0.11833 -0.07667 -0.04000 -0.01033 +0.01433 +0.03500 +0.05076 +0.06252 +0.07400 +0.08635 +0.09843  =======
     7 -0.19126 -0.14779 -0.10432 -0.06487 -0.03085 -0.00084 +0.02537 +0.04663 +0.06409 +0.08148 +0.10001 +0.11847  =======
     8 -0.21052 -0.16882 -0.12712 -0.08774 -0.05112 -0.01682 +0.01413 +0.04011 +0.06274 +0.08585 +0.11088 +0.13640  =======
     9 -0.23750 -0.19713 -0.15676 -0.11750 -0.07917 -0.04194 -0.00750 +0.02235 +0.04943 +0.07750 +0.10817 +0.13983 +0.17150
    10 -0.28135 -0.24039 -0.19943 -0.15941 -0.12026 -0.08205 -0.04591 -0.01335 +0.01715 +0.04898 +0.08374 +0.11983 +0.15593
    11 -0.33293 -0.29094 -0.24895 -0.20820 -0.16913 -0.13130 -0.09470 -0.06028 -0.02709 +0.00774 +0.04572 +0.08534 +0.12496
    12 -0.38450 -0.34148 -0.29846 -0.25700 -0.21800 -0.18056 -0.14350 -0.10722 -0.07133 -0.03350 +0.00770 +0.05085 +0.09400
    echo:Settings Stored (724 bytes; crc 46126)

Thank you for this: you have more staying power than I. I solved the problem by replacing the CR10 with a Prusa, with which I have had no problems at all and also achieve better quality prints. If I ever try to resurrect the CR10 I'll use your guidance to try and make it work, but I'm in no hurry to renew my acquaintance with Creality or any of their products.


text:
"Blobs" at beginning and end of layer and no adhesion
I am trying to configure my Ender 3 v2, but I am having (again) trouble with layer adhesion: With the CHEP leveling test I am having these problematic "blobs" at each lower left of the squares (where the nozzle "leaves" the current square and "enters" from the previous (outer) square, touching the bed again). I don't know what the reason for that could be. I started with a 205 °C nozzle temperature
and a 50 °C bed temperature and tried many versions with higher or lower temperature (both for nozzle and the bed), and I also tried various positive and negative Z-offsets. Sometimes the layer adhesion was slightly better (especially when raising the bed temperature to 60 °C and making the Z offset = -0.2), but the blobs persisted (and each time the nozzle scraped over it, the layer was pulled off again). Any idea what I should try next?

EDIT after your suggestions: While I have not reduced the distance between nozzle and bed further (a sheet of paper between them almost ripped when trying to move it), you got me thinking and I checked the extrusion. And indeed, the extrusion factor was way off. After calibrating the results look now much better:
The lines are squished much better into the bed, and also the blobs are much smaller (and less "prominent", i.e. lying flat). But I am still having (slightly smaller) problems at the same points (lower left corners of the squares): While the initial adhesion is fine (the nozzle starts at each square in the lower left corner and then travels "right, up, left, down", i.e. counter-clockwise), it comes loose when the square is completed (due to the nozzle "hitting" the blob in the lower left corner at the end of the square.
What can I do next in order to improve things? A lower Z-offset (trying to eliminate the blobs further) has not really worked.

What speed are you printing at?

My Cura slicer is set up with a print speed of 50mm/s, and the gcode file has a line M203 X500 Y500 Z12 E120 ; sets maximum feedrates, mm/sec, so I don't actually know whether it is 50mm/s or 120mm/s

It looks like your nozzle distance to the bed is still too high, so the extruded material does not start sticking to the bed until there's a small blob of it on the nozzle end. This is consistent with how the extrusion lines in the photo seem to be round rather than flattened against the bed. Assuming 0.4 mm nozzle/line width and something like 0.2 or 0.3 layer height they should be a lot wider than they are thick.
It's also possible that you may have retraction speed or distance problems going on at the same time. If your retraction distance is too high, the material will cool while retracted and then will not be able to push through the hotend/nozzle until it re-melts, possibly causing skipping or delayed extrusion when you unretract and restart. But if so, I think this is secondary and you should fix the bed height first - then you can print retraction test towers to tune your retraction.

I have updated my printing situation after taking into account your hints.

@PhilippWacker: You should not have to significantly change the extrusion factor if you haven't replaced the extruder with an aftermarket one. If you seemed to need to do that, yours might be broken (cracked arm) or have tension problems.

No, actually that is due to a different extruder that I installed. I measured the correct extrusion factor before (matching the current one), but somehow in the meantime the value was reset


text:
Printer reports "printer killed" and "homing failed", what does that mean?
My Ender 3 v2 is reporting printer killed and homing failed.
Does that means that my printer is dead?
Note that I just got the printer 3 days ago and I haven't been able to do any prints.

This question doesn't provide enough context to get answers that may help you out. Please describe in detail what you are doing, which steps you have done, what file you are printing, how you obtained it. Do the axes run free when the steppers are not powered, did you check all the cables? There is a lot more you can do to troubleshoot some basics first. Do the steppers run at all, etc.? We'd love to help! But with this amount of information we need to guess. A valid question is how to troubleshoot this, please [edit] the question else this question might be closed for the lack of information.

As stated, please [edit] your question and add more info (don't add info in this comment section). Has the printer always stated these messages for the whole three days, since the moment it came out of the box? If not, and it worked initially for a while, what happened immediately before the messages appeared...? This might give a clue as to why the messages appeared in the first place. Can you communicate with the board via USB from a PC? Photos of the messages might help. What happens at power up - any motor noises, etc.?

This might help you provide more detail: Helpful Templates / Help us help you!

Have you reviewed the assembly instructions, step by step, looking for something you might have missed?   Was the printer new to you or used ?

What is the last motion that it does before reporting this error?  Where does the error appear - on the printer's internal display or somewhere else?   It could be a video of the startup process would be informative.

Sounds like limit switches might be mis-calibrated.

your printer gained life and had to be killed as it posed a threat... joking aside, printer may have a power (motors, and not just power supply), limit switch, or other issue that prevented homing.  try jogging without homing among other things like manually triggering potentially inverted limits) just to get an idea of what is operational.  Be prepared to use a multimeter to debug after.


text:
Ender 3 with BLTouch ignores Z0
I have a problem with my E 3nder3 (3DTouch, Skr mini e3 v1.2, Dragon hotend with afterburner mount, other parts are original), where after using ABL, at the start of the print the Z-axis just seems to ignore where the 0 point should be and keeps trying to go down for a good second, then it just starts the print as if nothing happened.
The things I've tried and the observations I've made:

After reflashing Marlin, I've tried printing without creating a mesh, and it worked as normal (using the BLTouch as a Z stop, but not making a mesh). This should eliminate the Z stop being a problem

After creating the mesh even once, everything goes wrong like explained above

I've tried leveling the bed with paper, and when using the bed visualizer in OctoPi, everything seemed pretty close to normal, so the sensor itself seems to work.

Now the weird thing was, that the day this started happening, moving the Z-axis by hand seemed to be way harder than usual, as if the rod is not lubricated, so I lubricated it with my tool grease. That didn't solve the problem. It still feels as if some of the rubber bearings are stuck on the gantry. After checking them 1 by 1, none of them seemed particularly loose or tight compared to the others.

Successfully solved the problem. Removed the Z rod from its socket, and greased up the threaded slot it goes into on the x gantry, that seemed to solve the problem.

Missing grease can lead to binding, indeed. It might be easier to remove the Z-nut and then move that to add grease, then remount it


text:
Hotend can't achieve temperatures over ~70 °C?
I am looking for troubleshooting help on my printer. Recently the hot end just can muster the courage to go past about 70 °C.
The hardware - Ender 3V2 with a E3D V6 hot end. 24 volts
I changed the thermistor to a new one. Before heating, it registers an appropriate 10 °C in line with the bed temp sensor.
With the thermistor checked good, I looked at the heater element. It is reading 22 Ω. The documentation from E3D is not clear in what wattage heater I bought, but if it is a 30 W 24 V heater, it's on the high end of acceptable.

A 24 V 30 W heater cartridge will read between 16.7 - 22.6 Ω.
A 24 V 40 W heater cartridge will read between 12.3 - 15.1 Ω.

If anyone is able to confirm how to know what my heater wattage is supposed to be, LMK. Options are shown for blue wires, red wires, and yellow. I have yellow.
If the resistance is in spec, I checked if the voltage being supplied to the heater is correct. It is reading 23.6 V which seems good.
I have attempted to PID autotune in Pronterface which I had also done several times previously before the issue. If I try to target anything over 70 °C, the attempt to tune fails because it can't get hot enough. I can tune if I set the temp to 65 °C by comparison.
The temperature trace in Pronterface shows the temp rising quickly through the 30s, 40s, then plateauing and maxing out in the high 60s.
I am looking for advice on where to look next for trouble shooting. Seems odd to suddenly have such a low temperature limit capability that I can't root cause.

Power to the heater is PWM.  Reading voltage to the heater with a voltmeter may not give an accurate picture of what the heater driver is delivering.  If available, an oscilloscope would show the output duty cycle and provide a better understanding of how much power is actually being delivered to the heater resistor.

Your description of the heat up curve suggests that the controls are attempting to control at the lower than desired temperature for whatever reason - setting? Wrong or bad RTD?

If the heater PWM duty cycle diminishes as temperature approaches the maximum the electronics are attempting to control at that temperature.  If the duty cycle remains high the heater/power supply are insufficient to achieve a higher temperature.

As a way to confirm the low temperature reading is accurate try to extrude some filament. If you can do so the low temperature indication is incorrect.

@allardjd I was curious if the control to the heater was PWM to hit a set point.  I got a suggestion elsewhere to power directly to 24V and see if it was capable of hitting higher temperatures.  I connected the heater element directly to an extra Vout on the PSU which should be capable of 6 or 7 amps.  Doing this most certainly achieved a higher temperature, but it reached a steady state of 170C and could not really go over that.  It added the last 1 deg after 25 seconds of waiting at 169C.  So my take away was the element is bad and I ordered a new one.  We'll see the results this weekend

Still a bit of a mystery here.  Your experiment suggests that the heater is capable of about 170C. However it only reaches 70C under normal control.  24VDC should be equivalent to 24V PWM @ 100% duty cycle but that's not happening. Curioser and curiouser.

@allardjd I agree with your point on 24VDC being equivalent to 24V PWM @100% duty cycle.  My assumption that I can't verify with measurement is that there is an upper limit on the duty cycle for the heater.  Perhaps max output is still 80% duty cycle.  IDK just speculation.

@allardjd in any case the element just arrived today.  It is 70W this time.  Powering from PSU it hit 200C before being turned off manually.  Powering from the controlled pins I can only achieve 186C asymptotically.  Same behavior but new limit number with higher wattage heater.
IDK how to proceed with debugging.  Thermistor and Element are both new.  Seems problem must be on motherboard but how to isolate that and prove it?  Could I swap the element to the pins for the bed heater and have marlin tell the board those are the pins for the nozzle?

I have the answer.  It was mechanical.  The heat from the element was being dissipated by the heat sink and fan faster than it could be input.  The heatbreak was screwed in to deeply to the heater block allowing the heat sink to be screwed onto the heat break far enough to make contact with the heater block itself.  The heatbreak was not providing a break but a direct path for heat to radiate away.  This is why heating from 2 different wattages resulted in achieving 2 maximum temps.  Tore down and reassembled hot end.  Works fine. @allardjd

@WillWilson: For future reference, this is a data point for how helpful it would be to include photos with your question. Anyone who saw the photo could have told you that right away. Also: rather than burying it in a comment, you should write up the answer (you even said: "I have the answer"!) as an actual answer and click the check mark to accept your own answer, so that this question shows up as solved (having an accepted answer) and so that others can easily find and read your answer.

There are several points to check to trouble shooting this issue but commonly there are a loose part.

The heating elements is loose, try to tight the cartridge to the aluminum block.
The Sensor temperature is not touching the aluminum block or is outside of its position. Maybe the heating element is correct but the sensor is not taking the right value.

If the temperature rises too slow and downs more quickly than normal is due the temperature sensor is out of it position.
Other issues:
The PWM control is over heated, so this will need to replace it or change the transistor (FET), however this is not a common problem.
The other one and more common that PWM over heated is the Power Source, as well like the PWM control the power source decreases his potencial on current supply. For me is easier replace the power source instead verify the PWM control.
Now I´ve done that for second time in 6 years of printing. How Can I deduce that the PWM is not overheated?, I have a cooling fan for all PWM controls on the RAMPS 1.4 Module.

If you're using the same RTD for both tests you can rule that out as a source of the problem. At this point I'd suggest, A) thoroughly scrubbing all the  machine parameters and software settings for something that's limiting temperature or duty cycle, and, B) buying or borrowing an O'scope to see what the board is really putting out.  Connecting the heater to the bed heat pins will be limited to however high the bed heat can be set so may not tell you much. I don't know if it's possible to swap hot end and bed outputs in software. If so, I don't know how.

Darn - I meant that answer to be a comment. Here's another thought - if the new RTD is the wrong range or slope you may be achieving a higher temperature than indicated. It's worth trying to get an independent measurement of actual  hot end temp.


text:
Obtaining a smooth solid .stl from voxel data
I have a (preferably in matlab) 3D array of Booleans describing a voxel structure. I want to turn this into an .stl file but I don't want the final result to have the jagged cubes.
I have tried putting the voxel array into a marching cube algorithm but the resulting STL is not a solid, some parts are infinitely thin sheets. I want every voxel to be represented by something solid.
Is there a way to achieve this?

I’d say that there’s something wrong with your Marching Cubes algorithm. It ought to produce a solid object. Then, you can smooth the triangles in that solid object.

@bubba I think that was the case. I needed to surround the structure with 0, to make the code acknowledge the boundary as a facet of the solid.

Voxels are pretty much an interpolation of data points and you can only smooth them out by reducing the fidelity. Why? Because in acquiring the voxel, you already lost fidelity. Let me take you through an example.
The basics
For our basics we take a circle of Radius $R$. It can be fully described the following: $$x^2+y^2=R$$ All solutions to this give us points on the circle.
Its representation as a single voxel with resolution length $r$ is that of a square. The square with its center on $\{0,0\}$ we will call the voxel of resolution $r$ around that coordinate. It is defined as $$x =\{0.5r,-0.5r\} \land y=\{-0.5r \to 0.5r\}$$ $$y=\{0.5r,-0.5r\}\land x=\{-0.5r \to 0.5r\}$$ Other squares then can be created by simply adding the respective cell's center's coordinates $\{a,b\}$ for $$x' =\{0.5r,-0.5r\}+a \land y'=\{-0.5r \to 0.5r\}+b$$ $$y'=\{0.5r,-0.5r\}+b\land x'=\{-0.5r \to 0.5r\}+a$$
Looks complicated? True, but you see: the first formula is a circle with radius $R$ containing an area of $A=\pi*R^2$. The latter two blocks define the square of length $r$ and area $A=r^2$. By clever positioning, the grid with $R=r$ has its $\{0,0\}$ Voxel wholly contained in that circle. Or in a picture, it looks like this, using $r=R=50$ (and thus a diameter of 100).

As you see, there is an area between the circle and the square - this is fidelity that is lost when converting to voxels. In a typical voxel transformation, there is only one choice: at which point of filling does a voxel get filled to 100% and at which it gets filled to 0%. Let's assume the circle there is actually a cylinder of 50 units height. Depending on where we set the cutoff, we now get one of three solutions. We could end with one voxel, using 50% as the cutoff point. We could end with a plus shape using 45% as the cutoff point or a square using any filling above 0% as a cutoff, as shown in the following picture.

It gets even more complicated if you don't have the circle and the grid's center overlap like n the example above: there is a "2x2x1" voxel solution that reflects a differently aligned circle with the same cutoff point as the "1x1x1" solution! That circle is (in the next graphic) centered around $\{3.5 r,0.5 r\}$ and thus shifted half a unit up and right so its center overlaps with a corner of the voxels.

Lost fidelity can't be regained
You see, you have lost a lot of fidelity in voxelizing. All circles have become squares. All squares also are squares. Likewise, all curves in between have become squares.
The problem
So, it is nigh impossible for a computer to identify, what once was a circle square or square before all was made squares. Think... Colors: I take a picture of a smiley. I split it in half and then desaturate the upper half of the right side to black and white and totally saturate the lower. Those are two different ways to totally loose the color information. In the upper case you retain one information more, because the algorithm of making all colors but black white retains the black information, while the lower parts algorithm only retains the outer shape.

If you only had the black and white smiley, you have lost the information about its color in total. If you only have the black outline, you have lost also the information of the face.
Voxelizaion does loose about that much information, depending on the settings.
Reversing Voxelisation is interpreting the voxel structure
It's not possible for a computer algorithm to simply invert the process. However, there are ways to interpret a voxelized object and try to re-create one of the possible objects that have led to this item, assuming that an "any fill is a voxel" algorithm has been used.
For such, you'd import the model into a software such as Blender, solidify it so that it is one mesh without internal faces, and then running a smoothing operation. You don't get the object that generated that voxel structure, but you get an Object that would generate that voxel structure.

How good the interpretation of the voxels is, depends on the resolution chosen in the start. If $r$ is small enough, then the resulting interpretation, together with some artistic definition of which corners are sharp and quite some manual post-processing (which requires the human eye) can lead to a somewhat good approximation of the actual object you believe lead to the voxel structure.


text:
Weird blobs all over shell
I've been trying to print parts for Voron 2.4 but I'm having issues getting proper surface on walls. I'm printing with ABS. I couldn't find same problem all over the net looking at the images. Bed adhesion is quite good and printing temp is 240 °C and bed temp is around 100 °C.

I've seen this on ABS that has been sitting around absorbing moisture. Do you see or hear moisture cooking out as you print?

That block desperately needs a sock. :-)


text:
How to add more probing points on the CR Touch
I have an Ender 3v2 and I recently installed the CR Touch auto bed leveler. I was wondering how to add more probing points.

Are you running the stock firmware, upgraded firmware, or custom firmware, i.e. Jyers UI?

You will need to compile you own version of the firmware.  Teaching tech has a detailed video describing the entire process for beginners (https://www.youtube.com/watch?v=J9vxJT5Tgh4) and then another one (https://www.youtube.com/watch?v=neS7lB7fCww&t=792s) for the BLTouch modifications for Marlin. Take care, his wiring diagrams make assumptions based on other videos he has made.

I haven't tried it, but it looks like the number of points in each axis of the probing grid is defined by these lines:
#define GRID_MAX_POINTS_X 3    // Don't use more than 7 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

in Marlin's Configuration.h file. So assuming you'd want the same number of points in each direction, change the 3 to another value less than or equal to 7, and recompile Marlin.


text:
How do I know if my motherboard is dead?
I have an Ender CR-10 which I recently installed a clone of a BLTouch on. It all worked fine and printed well but once when I started the printer all the pixels on the LCD were white. Then when I started the 4th time the LCD just went all black and I got no power to it. I also have a Raspberry Pi 4B which I tried connecting to the printer but it couldn't anymore.
Do I need to get a new motherboard or is there anything I can do to see where the error is so I can fix it?
I havent measured any voltage yet, I'll have to do that when I have some spare time...

Does the printer power up without the Raspberry Pi? Have you tried disconnecting the LCD and powering it on?

yes, i also removed the bl-touch from the printer and reconnected everything like it is stock. The raspberry pi doesnt do anything right now because it wont connect to the printer.

I just realise that i missunderstood that question, it doesnt work whatever i do


text:
Z offset's possible role in scraping final printed layers
Does Z offset matter after the first layer?
I am using a commercial PLA filament to print 72 mm (length) x 42 mm (width) x 3 mm (thickness) samples. There are 30 layers to be laid in total with each layer's height being 0.1 mm. The nozzle diameter is 0.4 mm. The part is 100 % solid and the raster angle is 0°. I am using Ultimaker Cura slicer and the printer is Ender 6. I encounter the problem of nozzle scraping the uppermost region of multiple (5 samples, all aligned at the top of the build plate) as the print job progresses. I assume it begins after 20 layers (possibly). The scraping is absent in the bottom region of the rectangular-shaped printed samples.
Has anybody else encountered this problem, has solved it or can think of what might be causing this? Could an off Z offset setting have an influence on the later layers?
Do note that the first layer is laid down fine with no visible voids or signs of nozzle scraping the bed/deposited neighboring raster.
These images show the scraping phenomena. The warping was not an issue during the execution of the print job, so please disregard it. The bunny print has no flaw and the G-code for this was present beforehand in the Creality Ender 6 SD card, while the orange samples were designed on Tinkercad and sliced using Cura.

Original Dropbox link

Can you clarify what you mean by "scraping"? Does it look like the picture here?

Hello, I have uploaded a dropbox link in the OP which has the images. The bunny image has been added to show that there was no problem while printing with the GCODE for bunny print that was provided in the Creality Ender 6 SD card. I do not know what was the layer height there, it could be 0.2 mm which might be responsible for the print success, but I can't say for sure.

I inlined the images (please include all relevant material in the question not as links to off-site hosting) but I'm having a hard time telling what I'm seeing vs what I'm supposed to be seeing.

If you're printing at 100% infill, the problem is probably just slight overextrusion accumulating after many layers, since you'll be trying to pack more total material into the volume than there is space for - as it builds up, it will start to push up and around the edges of the nozzle. This is part of why most people recommend against true 100% infill.

Is there any way to fight against over extrusion? Can I increase the printing speed to purge the melt quicker rather than allowing it to accumulate layer after layer? I did encounter the problem of large quantities of polymer melt literally oozing out of the orifices of the hot end and making a mess on the print bed.

You can reduce the flow % either in your slicer or via the printer's controls.

Do you think offset matters after the first layer? I mean if a perfect first layer has been laid down, would z-offset still have a bearing on the print success of the remaining layers or the part as a whole? All the literature I have come across on the internet posits that z-offset mainly concerns itself with ensuring the deposition of a flawless first layer.

What do you mean by Z offset anyway? My reading of it would be a correction for the distance to the bed. At true 100% infill, in some sense it would affect the entire print (because there's never any slack space to take up the excess material) but you're unlikely to have extrusion rate that perfect anyway - either you're underextruding (leaving slack space for it to self-correct) or overextruding (in which case the cumulative effect of over-extrusion will be much greater than a one-time error.

Yeah, that is what I was referring to as z-offset.


text:
Print limitations with 0.4 mm nozzle

Is it possible to 3D print multiple 0.1 mm high layers with a 0.4 mm diameter nozzle in FDM while ensuring fidelity to the set layer height? The raster width is set at 0.4 mm and I am not touching that. The part thickness is 3 mm, so 30 layers of 0.1 mm have to be deposited for the completion of the print job. My polymer is PLA.

If not, should I be using a 0.2 mm diameter nozzle for this purpose?

Can a 0.4 mm print nozzle print rasters with higher width (0.5 mm, 0.6 mm, etc.)?

I've printed 0.05 mm layer heights with a 0.4 mm nozzle, not a problem for the Ultimaker 3E. Prints come out as if it is an extrusion product, no/barely visible layers!

Yes, absolutely. I believe the original sample file that came with the Ender 3 (0.4 mm nozzle) was sliced for 0.1 mm layer height. As long as your printer can get decently precise Z positioning at 0.1 mm increments, it should be able to do it.

I've never used smaller nozzles but they pose challenges that make them unattractive. It's hard to flow material through such a small opening, so you have to go slow and use narrow line widths. This may make sense for really small parts, but even then there are tradeoffs.

Yes, you can print lines wider than the nozzle, up to at least the width of the flat end of the nozzle, and with slightly reduced quality, even beyond that. Lost in Tech on YouTube has several videos showing his results doing this with very wide lines, up to nearly 2 mm if I recall. For 25% to 50% over the nozzle width, it's no problem at all, and a lot of people even recommend doing that. Wider lines improve overhang quality and part strength, but may compromise the ability to print fine detail.

Thank you for such a detailed and illuminating response. If you do not mind, I have a follow up question. I have struggled with setting the z-offset value for my printer. Is there a laid down procedure of how to reach that magical figure even if it is by hit and trial? I hope you meant z-offset when you talked about Z positioning at 0.1 mm increments.

The general consensus for nozzle diameter versus layer height is to limit the layer thickness to eighty percent of the nozzle diameter. For a 0.4 mm nozzle, one usually limits the layer to 0.3 mm. The printer on which the nozzle is installed will determine the minimum layer thickness, often a typical value of 0.10 mm. I have printed successfully to 0.10 mm layer thickness with a 0.40 mm nozzle.
The linked site says just about the same as above, but also provides useful information regarding appearance, speed, strength, etc.
With a "next size up" nozzle of 0.6 mm, you'd want to limit the layer height to 0.48 mm but you might get away with 0.50 mm layers as there is some wiggle woom.
For 0.8 mm nozzle, you can get your 0.60 mm layers as the max for that nozzle is 0.64 mm.
The article also references that one can print wider than nozzle dimensions by increasing the extrusion factor, which may go by other terms, depending on the slicer used.

OP seems to be concerned about the lower limit on layer width, not the upper limits you've focused on.

I misread the last portion and have edited the corrections. Thanks.


text:
Will prolonged expose to IPA damage uncured prints?
If I leave an uncured resin print in an IPA cleaning tank for too long (For example, if I forget to take it out and leave it in over night) will this damage the print?
I'm using Elegoo gray.

EN
Parts start to get tacky when the resin concentration is 5-10% in the IPA tank. It is advisable to shake the pieces for several seconds. In this way the solvent goes well in all the interstices. Then let the object soak for a few more minutes.
We can repeat the action a second time before leaving a longer drying.

FR
Les pièces commencent à devenir poisseuses lorsque la concentration en résine est à 5-10 % dans le bac à IPA. Il est conseillée de d'agitais plusieurs secondes la piéces. De cette manière le solvant va bien dans tous les interstices. On laisse ensuite tremper l’objet encore quelques minutes.
On peut refaire l'action une deuxième fois avant de laisser un séchages plus long.

I was more wondering if it might cause discoloration or pitting on the surface.

Well, if it gets sticky, the room loses its cleanliness. And that damages the parts. If the pieces have to be pretty, it's better not to soak in it, it's not made for that!

Et bien si ca deviens poisseus , la piéces pert en propreté. Et ca détériore la piéces. Si il faut que la piéces soit jolie , mieux vaut pas laisser tremper dedans, ce n'est pas fait pour ça!


text:
Program Creality v2.2 board to use HEATER1 transistor for HEATER0
My CR10-S5 with Creality v2.2 mainboard recently suffered from the hotend heater transistor (MOSFET) failing short. After taking a look at the board, I tried to be clever and use the HEATER1 output instead for my hotend. However, after swapping pins in pins_RAMPS.h, there is no response to turning on the heater. I have confirmed zero volts on the board output with a multimeter, so it shouldn't be a failed heater cartridge.
Are there any other lines of code I should be changing to get this to work? I am using TH3D Unified 2 firmware with BLTouch enabled.

Found the problem, apparently these v2.2, v2.2x boards have the HEATER1 MOSFET controlled by pin 7, not pin 9 as in default pins_RAMPS.h. After setting HEATER0 to use pin 7 everything works as expected.


text:
Z-axis compensation

What is the purpose of Z-axis compensation setting in the adjustment section of the Ender 6 screen panel?

Is Z-axis compensation the same thing as Z-offset?

If Z-axis compensation is the same as Z-offset, does it change each time when you do bed levelling manually?

Does Z-axis compensation setting have any influence on the successful printing of layers after the first deposited layer? If so, how?

Beenum, did 0scar's answer help you at all, or are you still looking for answers?

Generally speaking, the Z-offset is the distance between the trigger point of a Z-endstop sensor and the nozzle. But, the Z-offset can be seen as the build plate to nozzle distance, it is a modifier of the nozzle position in Z direction.
Mapping the surface of the build plate and storing the mesh to maintain a nozzle at the same distance from the build plate is considered Z-axis compensation, and is not the same as a Z-offset. These are separate things. However, the Ender 6 has 5-point assisted leveling, 4 corner and the middle of the bed. It is not capable to map the build surface as a mesh. Most probably the firmware could (as those functions are available in Marlin firmware for a long time), but the graphical LCD doesn't allow to interface with these functions of the firmware.
The Ender 6 doesn't have a Z-axis sensor (it has a Z-endstop), so automatic bed leveling is not an option and one has to do manual leveling by scanning multiple points of the build plate (as described above; 4 corners and the middle of the bed). Z-axis compensation is an offset to the level you have defined. Note the latter can be done in most slicers as well. E.g. many people like to increase the offset when printing PETG.

Should not the z-offset value be made redundant if the bed level is changed manually each time since it dictates the distance between the entire print bed and the nozzle? In manual bed leveling, the bed level on all four corners is seldom the same.

Another follow-up question is that how would I know that my z-offset for an ender 6 3D printer is not right? Whenever I perform manual bed leveling, the nozzle at position 1 (the middle position) is very close to the bed level and it is very difficult to move a piece of paper (A4 sized) from under it.

The Z-offset can be adjusted during printing with baby steps, this is optimal to tune the first layer print height during printing of the skirt or the brim. W.r.t. meshing the geometry of the build surface, please read this answer.

Ender 6 does not have the setting to alter the Z-offset during printing. This option is available in Creality CR10-Smart Pro. Do I have to update my printer's firmware to get this setting on Ender 6?

@Beenum That is tricky, your printer has 2 firmwares, one is the board itself the other is the display. You need to update both, but you need to be experienced in flashing firmware, this is a little more complicated than normal board with normal LCD displays. You can edit the Z-offset in your slicer or in G-code.


text:
Tips on incorporating a robust hinge
I'm working on a gadget a bit like a jewelry box. I want the lid on a hinge. Are 3d printed hinges robust enough for daily use long term? Perhaps with a metal pin?
I want to incorporate the hinge into the design but my thinking is that it would be a waste of time if the hinge will break as I'd need to reprint the whole gadget.

You can make a print-in-place hinge as a horizontal cone with a 45-degree angle.  The opposing face will be a similar conical hole with a 0.25 mm gap between the faces (or whatever your printer's tolerance needs to be).
The strength of this (as in the other answers) depends on the diameter of the hinge.  The strength you need depends on how heavy the thing it holds up will be.
There are many parts on Thingiverse that use conical hinges like this if you need examples.

The above is a disassembled conical hinge from thing:5143964 (sturdy infinity cube) which I split into parts and then arranged the hinged coupling next to the block it fits in.  (Technically I suppose this is a frustrum.  But things that come to a zero diameter pointy tip tend to not print well.)
There are 4 holes in the linkage, and the whole assembly is printed at once.

I cannot visualise what you mean with a conical hinge. Quick google search hasn't helped, can you describe it better please.

Ok, added an example, hope that helps.

Looks useful and robust... cheers

More detailed information would be valuable. A hinge the size of a soft drink can is going to be stronger than that of a pencil, generally speaking.
A substantial portion of determining the strength of a specific printed object relies on the layer orientation and of the material from which the object is printed.
Consider to examine others' creations on sites such as Thingiverse and PrusaPrinters to see how the result fare against your objectives. I've noted that the better designs will have substantial wall thickness to the barrel portion of the hinge. Additionally, if one can print the hinge with the cylinder axis oriented vertically, the layer lines will "encompass" the pivot. This provides the better strength characteristic of the layer.
The pin aspect is not as important when considering strength, although a 3D printed pin can be weak if printed vertically.

The reliability of hinges depends on the design, the material, and the slice parameters.  I've printed reliable hinges that snap together using somewhat flexible materials such as PETG and ABS.  PLA will tend to crack eventually if remaining flexed.  Pins can avoid flexing the hinge.  You could also use screws to hold hinge pieces together.  Gluing pieces of a small hinge together would be difficult to do without interfering with the movement of the hinge.

Maker's Muse has a video on how to design hinged objects for printing. It's quite old and might be outdated with regard to materials, slicer functionality, etc. but I think it provides a good background on the topic and a source of ideas. One of the good tips is to look at the abundance of existing hinged designs on Thingiverse and other model sharing sites - that way you can study how they work and test print some before you spend time designing your own thing that might not work.

I looked at thingiverse, decided it was mostly kids posting up their homework projects..


text:
Speed bump like structural distortions in 3D printed samples
I am printing 5-152 mm(L)x35 mm(W)x3 mm(T) samples using a commercial PLA filament with 0.1 mm layer height (30 total layers). The raster width is 0.4 mm while the raster angle in all layers is 0/0°. The bed temperature was 0 °C, while the printing temperature was 220 °C. The printing speed was 60 mm/s. The Z-axis compensation value was 0. The slicer I am using is Ultimaker's Cura, while the printer is Creality's Ender 6. The sample on the extreme right is nearly flawless (I am at a loss why is that) but all other samples show the kind of creases that are formed if one irons the cloth improperly or shows distortions resembling speed humps (circled in the image).
Can anybody who has encountered this problem before, enlighten me about the cause of this structural defect? As one can appreciate, layers laid atop these defects would be reflecting these as well.

This question is a possible duplicate, see e.g. this answer which describes top layer rippling and links to bottom layer rippling.


text:
Loss of resolution, burning, accretion of polymer at edges
I am printing 5-152 mm(L)x35 mm(W)x3 mm(T) samples using a commercial PLA filament with 0.1 mm layer height (30 total layers). The raster width is 0.4 mm while the raster angle in all layers is 0/0°. The bed temperature was 0 °C, while the printing temperature was 220 °C. The printing speed was 60 mm/s. The Z-axis compensation value is 0. I am seeing a loss of resolution, accretion, and burning of the polymer at the edges. What can be possibly causing this?

Burnt filament usually comes from filament that has been cooked on the outside of the nozzle (e.g. in case of consistent over-extrusion). Please add by [edit] if you are having over-extrusion and if you have calibrated the extruder.

I have not calibrated the extruder. Can you please describe the method for calibrating the extruder? Another thing is that prints found in Creality Ender 6 SD card print perfectly without any over extrusion. If the extruder was not calibrated and over extruding, then those prints should also show signs of overextrusion.

Extruder calibration is found in this question. You could also lower the temperature 200 °C should work well with PLA at 60 mm/s.


text:
No distance between the nozzle and the print bed level at the center (1) position after bed leveling
After I have leveled the print bed on all four corners manually, on moving to the center (1) position I still observe that there is no distance between the print bed and the nozzle. The nozzle literally touches the bed at this position. Furthermore, I am also getting nozzle scrapping on the print surface as the thickness of the printed sample increases (1 mm and above). I am printing 5-152 mm(L)x35 mm(W)x3 mm(T) samples using a commercial PLA filament with a 0.1 mm layer height (30 total layers). The raster width is 0.4 mm while the raster angle in all layers is 0/0°. The bed temperature was 0 °C, while the printing temperature was 220 °C. The printing speed was 60 mm/s. The Z-axis compensation value was 0. The slicer I am using is Ultimaker's Cura, while the printer is Creality's Ender 6. How can I rectify this issue and can anyone guide me as to why this is happening?

I would think your bed isn't flat. My magnetic bed has high spots in a couple of places.
Another cause could be that you're just levelling once. Sometimes you need to go around again and check the levelling.

I have tediously leveled the bed multiple times to ensure the bed level is as uniform as it could be at all four corners, the nozzle still touches the print bed in the center. The printer is new so I am not sure if the bed level could be off so soon (or is it a manufacturing defect?).

@Beenum: Likely a manufacturing defect. You might be able to correct for it by shimming under the corners or putting something flatter (e.g. a high quality glass bed) between the existing bed and the print surface.

@Beenum I doubt it's a bed levelling issue, rather an issue with the actual bed itself. Mine had slightly high spots brand new, but not enough to worry me. Put a glass sheet on and see if the problem goes away

Going on a bit of a tangent, but do you think that Z-offset value should be altered even if no alteration (like adding a glass screen) has been made?

I think you should just try the simple diagnosis first, grab a bit of glass from a picture frame or small mirror


text:
Is it possible to manually 3D print on an uneven surface?
I chipped off a bit of my otherwise perfectly usable laptop battery and would like to rebuild it. Consider the following picture:

Now compare it to what is visible e.g. here. I'm curious if it's possible to point a few cameras from a different angle at the bad and manually operate a typical 3D printer (let's say, Creality Ender 3) so that it's me operating the extruder, not a program. Does it have any chance working on that uneven surface?

Frame challenge: Does the battery clip securely into place in the laptop and properly power it as is? If so, just leave it alone.

@FreeMan that's the problem - it doesn't clip without that missing piece. And when it disconnects, the laptop shuts down, instead of using the back-up battery because it's not disconnected the normal way.

That sucks. I asked because some batteries I've used have a latching mechanism that's totally separate from the electrical connections.

In general, maybe. But you need to have plastics that will bond with each other (so you need to know what the existing surface is) and you need to have a clean unobstructed path for the nozzle to get where it needs to go.
In your specific case, this is a battery. Having a 200+ ˚C metal heater block and nozzle tip a few mm away from it, where any wrong move could puncture and short the battery, seems like a really bad idea. I would instead look at recreating the missing part with epoxy resin or something. You could 3D print a mold (note: apply a release agent to the surface!) for this, or you could just glob on more than you need and file the excess off.
If you have a steady hand, a 3D pen might also be an option, but the same concerns about "proximity to battery" as above apply.

Yeah, print separately and file to fit before glueing


text:
Infill line distance at 100% infill density

I want to understand what the infill line distance of 0.4mm signifies. I am printing at 100% infill.

Presumably your nozzle width (and thereby your default line width) is 0.4 mm. The infill line distance of 0.4 mm means that the centers of lines are spaced 0.4 mm apart from each other, so that they exactly touch their neighbors at their width (0.2 mm from the center in either direction).


text:
BLTouch error on pronterface, nothing connected to the board
This is a brand new Two Trees Bluer Plus 3D printer. Default, it has a 3DTouch probe installed.

Printer is broken now, I couldn't use it even for a week...
In middle of a long print, our home fuse blew. I am not sure because of the printer or not. I open the fuse and printer cant start. It was stuck at restart cycle and keeps restarting. I cut the power and check for stepper drivers. They look fine. Install them again and restart the printer. Then magic smoke appeared and all drivers are dead. But printer can reach menus.
First I buy new drivers and looking for if the board is salvageable or not.
When I installed new drivers, the printer would start up, but no movement of the 3DTouch probe at startup. Its blue and red lights are constantly on.
I can manually move X, Z and E, but Y moved a little after that it became unresponsive (I tried to swap drivers, but always Y seems problematic, the drivers looks fine) .
The 3DTouch probe is not working so it can't home Z. Y cannot be homed either but I can home the X-axis. Bed and nozzle look okay; they heat up correctly. There was no error message on the printer screen. Two trees uses a custom Repetier version. This is Pronterface's error message:
Connecting...
MKS Robin Nano 1.0.0
echo: Last Updated: 2017-12-25 12:00 | Author: (none, default config)
echo:Compiled: Jan  8 2021
echo: Free Memory: 4396  PlannerBufferBytes: 1344
echo:V47 stored settings retrieved (1140 bytes; crc 10556)
echo:  G21    ; Units in mm
echo:Filament settings: Disabled
echo:  M200 D3.00
echo:  M200 T1 D3.00
echo:  M200 D0
echo:Steps per unit:
echo:  M92 X160.00 Y160.00 Z800.00
echo:  M92 T0 E430.00
  M92 T1 E800.00
echo:Maximum feedrates (units/s):
echo:  M203 X100.00 Y100.00 Z4.00
echo:  M203 T0 E70.00
  M203 T1 E70.00
echo:Maximum Acceleration (units/s2):
echo:  M201 X500 Y500 Z100
echo:  M201 T0 E1000
  M201 T1 E1000
echo:Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo:  M204 P500.00 R500.00 T1000.00
echo:Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_us> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>
echo:  M205 S0.00 T0.00 B20000 X10.00 Y10.00 Z0.40 E5.00
echo:Home offset:
echo:  M206 X0.00 Y0.00 Z0.00
echo:Hotend offsets:
echo:  M218 T1 X-20.00 Y-5.00
echo:  M420 S0
echo:Endstop adjustment:
echo:  M666
echo:PID settings:
echo:  M301 P22.20 I1.08 D114.00
echo:Z-Probe Offset (mm):
echo:  M851 Z-2.80
Error:STOP called because of BLTouch error - restart with M999
Error:Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)

This sounds like a lot of problems which I wouldn't start to troubleshoot, basically there are issues with Y and the 3DTouch. You could check the 3DTouch wiring, but that doesn't fix the Y problem. I'd replace the board and buy a real BLTouch. There might be things broken beyond fixing. What makes it difficult that this printer also has a custom screen with its own firmware, it might be difficult for someone without much experience to solve this.

Thank you for the reply @0scar. I don't have much hope for the board as you mention. Can I ask you some rookie question? I feel like drivers and cpu heats up so quickly when i start to move axises. Cpu heats up even on idle 70 80 degree Celsius if i guess. Hard to touch. Drivers are tmc2209 by the way. Not sure what mode. I examine drivers they were heat up before printer broke never check cpu before incident. Do you think these are normal?

I believe the max temperature of the TMC2209 is 125 ºC. The printer uses the MKS Robin Nano board V1.2.


text:
Can repetier host be connected to Ender 6 3D printer?
If so, please guide me through the process. I want to modify the G-Code to calibrate the extruder. I suspect my extruder is over extruding.

What have you tried/not tried? What kind of computer are you running, Mac or PC? You looking for a very broad answer; more information from you will help to give you more specific information.

Repetier host is not required here unless your run Repetier firmware (why on earth would you?).
The EEPROM on your printer board is likely locked down.
Use pronterface to connect to your printer, calibrate your e-steps via the M92 g-code there and add the result to your start g-code in your slicer.
Alternatively, install a proper version of Marlin to your board, so you can save the new steps/mm via the M500 command.

How to connect Repetier is described in this answer. Also look into "How do I calibrate the extruder of my printer?". Note that you do not have to send the G-code through a console, you can also store these in a .gcode file and print the file.

@Oscar, I would give it a try. Would any stepper motor steps alteration I end up making in the .gcode in case of over extrusion (that I suspect is the case) be saved by default by the printer or do I have to update the firmware? I can share which version of Merlin I have on my printer.

@Beenum That depends on the board and the current firmware, e.g. the board needs to be able to save changes (e.g. SKR boards need an SD card for storing changes) and M500 must be enabled for storing changes.


text:
Micro swiss direct drive for Ender 6
Microswiss does not mention Ender 6 to be a machine that is compatible with its direct drive. However, I have landed myself in a position where the printer I am using currently has a micro swiss direct drive. The printer was printing the bunny etc. default prints in the creality SD card just fine but I am getting nozzle scrapping the print surface when I print 5 152(L) mm x 35(W) mm x 3(T) mm prints with 100% infill. Could the incompatibility between the direct drive extruder and the Creality Ender 6 be the cause of eventual nozzle scrapping (rubbing) the print surface as the part's thickness increases? I have tried all sorts of settings. Increased/decreased bed temperatures (I am using PLA filament), adjusted the bed level, Z-offset. Nothing seems to be working.

After printing the printed filament level should be touching the nozzle (unless the filament shrinks considerably when the temperature decreases, e.g. when printing very big prints).
What is problematic is if the nozzle digs into already deposited layers when the printer over-extrudes, this has nothing to do with extruder compatibility, but with tuning the extrusion process.
Especially when printing 100 % infill, there is no room for the over-extrusion to go to than upwards in the infill region and outside at the walls. You need to further tune the extrusion process. First make sure the commanded extruded length is the actual extruded length (see How do I calibrate the extruder of my printer?), but further fine tuning may be required afterwards.
E.g. for one of the printers I have designed, the flow modifier in the slicer is set to 98 % in combination with the calibrated distance; it produce far better quality prints with this modifier.

Hi @Oscar, so I tested the extruder per the said method. The extruder is calibrated as I was able to see the melt just about the mark at 100 mm. Should I now begin reducing my polymer flow that is set up at 100% across the board? I am at a loss here. I also have started to suspect the print bed itself might be warped with the center point (1 position) being more elevated than the corners. To create some space between the nozzle and the print bed at this central location, I really have to increase the nozzle distance with the bed at the four corners.

@Oscar, this leads to the melt not sticking with the print bed. When I decrease the distance between the nozzle and the print bed to print 5 parts with the aforementioned dimensions, I start getting the nozzle digging into the print's surface. This usually happens around when 23% of the print is completed.

You should have a bed that is as straight as possible, if there is a large bump in the bed you need to a) install a levelling sensor b) flatten the build plate or c) put a sheet of glass onto the bed. If the build surface isn't parallel to the nozzle, you would have too less space available for the filament to go to.

@Oscar, I was able to print perfect quality samples using the same print conditions but just had to add a raft recently. It appears the print bed is warped in the center and adding a raft provided a flatter base to print on. It is surprising because this Ender 6 was just recently bought from the manufacturer.


text:
G-code to get the 3D printer to shake resin bubbles off from a casting
While this is not directly 3D printing related, I intend to use my 3D printer (Labist's ET40) to shake air bubbles off of a resin casting.
I printed parts, made a mould of them in silicon, then cast a copy with resin. All works, great looks and all! Except... bubbles. Especially at ceiling parts that are away from the gas hole.
I tried a few different techniques to get rid of bubbles (heating, cooling, release agent, handshaking, high drop pouring, a mix of the above, different hole positions in the mould), and some I can't due to price restriction (different resin, vacuum removal degassing), but I was explained by an expert I could just have a machine do some low amplitude, high frequency shakin' for me. Again they proposed a specific machinery or DIY project, but I believe I already have the tool for it in the shape of a 3D printer's axes.
Is there a way to create a G-code that would simply move at relatively high speed back and forth on the Y- and X-axis for, say 15 minutes? I'm sure there would need to be some variation to ensure the temporarily repurposed machine doesn't self-destruct in one way or another.

What you suggest is pretty straightforward with g-code. One would expect to have the item secured properly to the print bed. The printer you've indicated has movement only in the Y direction, which means your g-code should reflect that movement only. X-direction movement means the head will travel left and right and have nearly zero effect on the item. This also applies to Z-movement of the carriage.
Marlin (a common firmware) web page lists a specific g-code for repeat:

The Repeat Marker command is used to define regions of a G-code file
that will be repeated during SD printing. A marker is first set with
M808 L[count], and later in the file a plain M808 command is used
count down and loop. (By default up to 10 start markers can be
nested.)
In slicer software put M808 L to the “Start G-code” and M808 to the
“End G-code.” But this command is not the only requirement. Before
starting each whole object it’s important to actually clear the print
area of obstacles and to reset the coordinate system with G92 or G28,
so this command is best used with belt printers or other systems with
automatic print removal.

From a different page on the same site:

The G0 and G1 commands add a linear move to the queue to be performed
after all previous moves are completed. These commands yield control
back to the command parser as soon as the move is queued, but they may
delay the command parser while awaiting a slot in the queue.
A linear move traces a straight line from one point to another,
ensuring that the specified axes will arrive simultaneously at the
given coordinates (by linear interpolation). The speed may change over
time following an acceleration curve, according to the acceleration
and jerk settings of the given axes.

More details specific to this command are also on the linked page. A simple example of a movement g-code:

The most basic move sets a feedrate and moves the tool to the given
position.
G0 X12   ; move to 12mm on the X axis G0 F1500 ; set the feedrate to
1500 mm/min G1 X90.6 Y13.8 ; move to 90.6mm on the X axis and 13.8mm
on the Y axis
There are some caveats related with feedrates. Consider the following:
G1 F1500 ; set the feedrate to 1500 mm/min G92 E0 G1 X50 Y25.3 E22.4 ;
move while extruding
In the above example the feedrate is set to 1500 mm/min, then the tool
is moved 50mm on the X axis and 25.3mm on the Y axis while extruding
22.4mm of filament between the two points.
G1 F1500 G92 E0 G1 X50 Y25.3 E22.4 F3000
However, in the above example, we set a feedrate of 1500 mm/min on
line 1 then do the move described above, accelerating to a feedrate of
3000 mm/min (if possible). The extrusion will accelerate along with
the X and Y movement, so everything stays synchronized.

Consider to limit your acceleration based on the weight of the secured item. You would not be worried about precision, but skipped steps due to weight could bring the bed travel to the physical limit stops, causing stepper grinding.


text:
Humidity sensor says drybox isn't that dry - are my expectations unrealistic or is something wrong?
I have recently, in anticipation of printing carbon-fiber-reinforced nylon filament (Polymaker PA6-CF) on my Prusa i3 MK3S, built a filament drybox. It is made out of a large aluminum equipment enclosure which I had spare, every seam, rivet, hinge mount, foot screw, sealing lip, etc of which has been sealed with copious amounts of high-quality silicone sealant (this is condensation-curing silicone, so it does release a small amount of moisture as it cures, but it has been in here several days and is about as cured as it gets now). The lip around the edge of is clamped hard against a rubber sealing ring, which I have cleaned meticulously, when the lid of the box is closed and latched. In short, it is, by 3D printer drybox standards, unusually well-sealed.

(yes, I know my silicone work is a mess, but let nobody say I missed a spot!)
For drying, I have poured two pounds of orange self-indicating silica gel, freshly regenerated, directly into the bottom of the box, exposing the maximum possible surface area (as opposed to having it in a container).
Humidity is monitored by a DHT22 temperature/humidity sensor, connected to an external microcontroller used for data reporting. The wire passthrough is a 1mm diameter hole in a custom 3D-printed passthrough (held in by a printed nut) with 3 pieces of magnet wire running through it, sealed with glue from both ends. I really doubt it's leaking through this either. The datasheet for this sensor indicates it should be accurate even at low humidities, and is accurate to +/- ~2.5% RH over most of its range and does not exceed +/- 5% anywhere. Per the datasheet, its accuracy should far-exceed that of the little battery-powered digital hygrometers many drybox builds seem to use.

Despite all of this, per the DHT22, it only reaches between 16.1 and 16.5% RH. As I understand it, a well-sealed drybox with well-exposed desiccant should be capable of better than this - I've seen sub-10% reported online. It's also worryingly close to the 20% maximum storage RH of the filament, per its TDS. What's going on here? My only real theories are:

A lack of internal air circulation has resulted in stratification, with denser dry air close to the desiccant at the bottom and damper air at the top where the humidity sensor is located - this might be fixed with an internal circulation fan?
My sensor is not as accurate as its datasheet claims
The desiccant is somehow defective
My expectations are unrealistic and 16% RH is normal and acceptable performance for such a drybox

Having tried most of the obvious things already (seal the box better, add more desiccant, increase desiccant surface area, let the box settle over days, install a high-quality sensor, ensure nothing inside the box is releasing absorbed moisture, seal the box even better), I'm beginning to expect it's the latter. Is it acceptable to remove my nylon from its sealed packaging and begin storing it in the drybox with this performance? Have others had success with nylon stored at 16% RH (as opposed to the sub-10% RH I've sometimes seen people talk about dryboxes reaching)? Are reported sub-10% readings for other dryboxes on the internet even accurate, or do the cheap little battery-powered hygrometers most DIY dryboxes use read inaccurately low at low humidities?

Implementing a way to provide high precision monitoring of differential pressure between the inside of  the box and ambient barometric pressure may shed some light on whether you have a leak, though that may be complicated by temperature changes.  In a nutshell if internal pressure closely follows barometric pressure changes, i.e. dp remains close to zero, there's probably a leak.

Install a bleed orifice (possibly an extruder nozzle) in the container and keep the container SLIGHTLY pressurized (a few inches of water) from a regulated dry air/gas source.  Bear in mind that the container is not designed to be a pressure vessel so due caution is called for.  A tube attached to the orifice and submerged in a liquid (light oil?) would create a bubbler to indicate the volume flowing through the container. A manometer could be rigged quite easily to provide over-pressure protection.

I live where humdity is 50-60% normally and I've easily achieved <10% humidity with a 5 gallon bucket and a screw on lid with an o-ring.  I use one or two fist fulls of the desiccant in a cloth bag, not a whole two pounds.  So your expectations are not unrealistic, but perhaps your seal is not as good as you hope or there's a hidden hairline fracture somewhere.  Ironically, I'd first suspect the entry point for the sensor.

@allardjd I unfortunately do not have the equipment to do this test, or to hook up a compressed air/gas source to the box. It's a great idea though.

@user10489 I did a relatively thorough inspection of the box and was not able to find leaks. I gave the sensor feedthrough another look, but I really don't think that's much of a factor - it's sealed with copious amounts of glue at both ends, and the actual hole is only 1mm in diameter (and mostly stuffed with glue anyway).

Clean out the box, fill it as full of water as you can, then let it sit on paper towel in a cookie sheet for a couple of days. If the paper towel is getting wet, you've got a leak. After a couple of days, if it's dry, flip the box over to test out the other side, since you won't be able to fill it completely full.

"cheap little battery-powered hygrometers" are not accurtate, especially at the head/toe of the graphs. 2. don't forget about temp, the relative part of RH. Sealed air at 50% RH when cold could easily be 25% RH when warm (and vice-versa). Therefore, raise the temp of the box which will not only lower the RH of the air inside, it will make the water easier for the beads to absorb (heat increases entropy).

Track humidity graph over days (one measurement every 3 hours is fine). Be careful that polling the sensor too often may warm it up and cause inaccuracies, the temperature dependence is quite strong. Also, you may need to poll twice at 5 s interval and discard the first reading if you want more accurate values.
If the increase in humidity over a month is linear, the sensor is ok and you have a small leak. If the increase follows a non-linear curve, then the sensor is not reliable.
But I can tell you already: the sensor is not that much reliable. Use a Bosch BME280, which is reliable. I use a Xiaomi temperature/humidity sensor and it is reliable down to 1% humidity, which I achieve after drying the silica. Then it goes linearly up to 10-12% in three months time, when I dry the silica again. I use an IKEA Samla box with foam tape between lid and box.
Also, the silica that way does not expose the max surface: make rather some pouches using kitchen paper and put them vertical, or the upper layers will shield the lower beads.
For info, you may already know it: nylon filament must be dried in the oven upon opening, it's not dry enough straight out of the factory. Also, a dry box will not suck out humidity in any reasonable time, so it's only useful to maintain dryness.

Alright, there were some good suggestion in the comments, and I gave them a look, but I think I solved this myself.
I think, after a lot more testing, that it was some combination of stratification and a faulty sensor. I managed to find four more DHT22s with which I could test the box, and found that the sensor I had been using consistently read ~16% RH where others would read 6-9%. Additionally, I did some tests with the sensor at different heights in the box, which were somewhat inconclusive, so I attached a fan to the sensor's power to circulate the air inside the box, to avoid stratification if that was occurring.
Across my three best-agreeing sensors, with the fan (which I'm still not certain provides a major benefit, but certainly makes sense if stratification is assumed to be a problem), I'm now seeing values that seem to be around 6% to 8% RH depending on the sensor (this amount of difference between them is to be expected per the datasheet, 6% vs 16% is not), much more in line with the performance I would expect from what I have seen online. Time to finally unwrap the nylon, I guess.
I won't mark this answer as the solution until I see this performance maintained and get good nylon prints out of it, but for now, I think this is probably most of the way to an answer.

If you want to run a serious test: expose the sensors to a deliberate high humidity environment (e.g. water vapor over a boiling pot). If the sensor still reads 16%, it is totally shot.

It reads similarly to other sensors at higher humidities (like the ~30% RH it is in the room right now), but seems not to bottom out at around 16% in the box where other sensors read below 10% - it seems like it might only act strangely at low humidities?

Do NOT expose it to water vapour over a boiling point! sensors may get ruined at high temperature, high humidity. Just compare it with some decent one in room conditions.


text:
Best practices for handling units for 3D printing with Blender
I've been trying to learn Blender as an additional tool for 3D printing (to prepare more organic or freeform models that don't lend themselves to a CAD style workflow I'm more used to), and one point of confusion I've hit is that Blender's default unit is meters, not millimeters. Apparently in older versions its default was an abstract unspecified "units" with metric-like base-10 grid, but no inherent association to physical scale, but now the default is "metric" with meters as the unit. I've found some tutorials such as this one for switching to millimeters, but it requires making a number of changes that I'm not sure are in line with what folks consider "best practices" for "modeling for 3D printing with Blender".
Is there any consensus on the right way to do this? Are there reasons I should prefer to switch back to the abstract "units", and just treat them as millimeters, versus using "metric" but switching the base unit to "0.0001" (maybe numerical precision reasons?).
I know this question is only borderline on-topic, but I think it is relevant as I'm looking for what the prevailing practice in communities using Blender as a tool for 3D printing, not for opinions of a larger Blender community.

Coming from a graphic design background, I've always been of the mindset of starting with whatever units your output will be. If you start with something different then you will have to do some kind of scaling or conversion that could potentially effect the design.

@agarza: Well yeah, I want to design in terms of mm. The question is just what the best way to do this with Blender is. Whether to use "unspecified units" and treat them as mm, or leave it in metric mode where the default unit is an unweildy meters, but then work in 0.001 of that.

Consider also to make use of the 3D features in the newer versions of Blender, especially those related to manifold checking, intersecting planes/edges. Some model makers are creating for visual intent, while constructing non-printable designs. The results can be impossible to correct by non-blender users.

@fred_dot_u: I actually do wonder what features Blender has for that, especially for repairing models obtained from other sources that have problems. But that's a different question.

Even very old versions of blender have repair options for finding and fixing holes in non-manifold surfaces.

Make sure to set the scale properly for your use case!
In CAD, you define your measurement space in either Inch or in Millimeter units, and that is your grid. In blender, the native unit is the meter.
This can be easily converted in exporting (remember to set it to scale!), but it is best to just set the measurement scale to actually match what you design: if you want to design a 5 mm hole, set your scale to Millimeters and make sure you export in millimeters. If you want to design in meters (maybe you design a building), then work in meters, and set your export scale in the end so that 1 meter actually is represented as 1 meter - or rather as 1000 millimeters.
The STL in the end will not know the difference: it all is defined in scales of unitary units, and it doesn't even know if it was originally designed in meters, inch or angström. The typical slicer expects the unit to be either millimeters or inch, so any scaling of the exported model that does not result in units equivalent to 1 mm or 24.5 mm is bad procedure - converting between these two types is just scaling the model by 2450%.
Make sure to design closed manifolds made up of triangles!
When working with blender, it is very easy to leave the item in a shape that contains multiple intersecting, non-manifold surfaces and areas of inverted surfaces. While interecting shells is not a problem (the slicers can handle those by unionizing the item), the intersection usually covers up the non-manifold areas, making them hard to spot.
As a result, before finalizing your project, I suggest follow this procedure:

In Blender, turn on the visual for the normals of surfaces. If an area does not look like a hedgehog after that, the normals in that area are reversed and you need to flip the surfaces there or re-mesh it.
Triangulate the surface using the triangulate modifier. This is to spot artifacts from conversion to STL early and be able to fix them: STL only knows triangles, while blender knows bent n-gons.
Add a new object. A cube with side length 1.
Do a test export to STL with scale 1, which also contains the 1-unit cube as an extra shell.
Import the model into a software such as meshmixer, that has a command to separate shells.
Separate the item to all shells. In Meshmixer this is in analyze, separate shells.
After separating the shells, measure your 1-unit cube. If it is not 1 mm, calculate your scaling factor. It should be a multiple of 10.
Next, you should check each shell for gaps or other errors. In meshmixer, the automatic analyze feature points to these areas with red, blue and magenta lines.
Fix the marked errors in blender, then return to the test export. This time use the proper scaling factor. Repeat until no errors remain.

Being realistic, you only need to make sure that your on screen measurements and your export units are set correctly. That way whatever size you set on screen will be reflected in your print.
For example, I use the MeasureIt plugin to tell me the size on screen, and I set the scale to 0.004 and the units to MM, and when I export to an STL file I set the size to 4. That way Cura Slicer always prints to the exact right size.
You can use whatever scale you want so long as you use the equivalent when you export it. I just use this scale because it's the one used when exporting between Hexagon and DAZ Studio, so I did it as a force of habit.

It doesn't matter, you scale it in the slicer or elsewhere. You're not going to slice the STL file in Blender. You'll probably need to do more work to get things print ready outside blender anyway.
So when I use blender I don't even bother checking what units it's using. I don't use it for parts design or tech drawing.

"You're going to scale it in the slicer" is not reasonable. Especially parts that have real world function and are designed to interface with other things in the real world should have a correct design size where the unit in the STL is assumed to be millimeters. Model sharing sites where the majority of users get this wrong (and get the axes wrong, etc.) are widely derided as low quality, and rightfully so.

@R..GitHubSTOPHELPINGICE obviously you wouldn't then. But organic stuff that isn't a part (as I said in my answer) doesn't matter. I do it all the time.

Even if the model is organic and intended to be printable at variable sizes, if the units are wrong such that the object is 10 times larger than a typical bed, or smaller than the nozzle, shipping it like that is at best "unfriendly".

Anyone shipping an STL straight from blender of any complexity is asking for trouble. Scale is probably the least of the worries

I didn't come here to argue with you. I came here to ask about best practices for doing something right not an argument that doing things right is pointless.

Then why are you arguing? If you don't like the answer just downvote or ignore it. Good luck with your printing.


text:
Ender 3 v2 temperature drop
I recently started printing with an Ender 3 V2. I got a few good prints out of it, and then I have had nothing but issues.
Basically, I can start a print, and after about 10-15 minutes, the temperature will decline from 200 °C to 195 °C, triggering a thermal runaway alert, (low temp), and then cancel the print.
Here's an example of the hotend temp profile:

I have tried testing the hotend thermistor, running PID autotune (multiple times, with up to 10 cycles), replacing the thermistor, running directly from an SD card (instead of OctoPrint).
Both thermistors worked, the first one read 108k Ω at room temp, and a new one is at 113.5k Ω at room temp.
I'm running firmware v1.0.4 on a stock v4.2.2 board.
One thing that did seem to save a print was that when I noticed the print temp dropping, I paused it for about 30 seconds and then resumed, and then the temp recovered up from 198-200 °C for a bit. But that's obviously not a solution.
I'm lost, don't know what else to test/calibrate, any ideas?

Could the temperature drop coincide with the model cooling fan coming on after the first layer? I'm wondering if you're running a 24V hotend on a 12V supply..? Or that the hotend heater has a problem.

looks like your code tells the printer to turn off - the light colored lines indicate that. OOOr, of course, layer end and airstream from the part cooling fan hitting the hotend.

Well, this was a setup error. I am amazed it worked at all, but the reason this was happening was that the power supply was set to 230 V from the factory.
I am in the US, so the household current is 115 V. Once I switched the voltage, the printer has been very reliable, and I am not seeing heat drop-offs anymore!

Thanks Andrew, I faced exact issue and got resolved by setting power supply to 115V. This saved me lot of effort to troubleshoot.

I ran into the same issue. I have a Creality Ender3 that has caused me problems with the hot end heating. I went so far as to change the heating element and thermistor, but still had the problem.
Hot end would slowly cool. I turned off the hot end fan in the code. That helped, then blocked the front fan for the hot end heater with tape. That also helped but I would still get error, thermal runaway. But was actually too cold of temperature.
I read about the 240/120v switch. Checked it and sure enough it was set to the wrong voltage for us.
Thanks for the insite.
Dave P