Source : 3dhubs.com

3d printers are quite dumb as far as electronics go in the sense that there is a lot going on during a print which is assumed by the electronics. 99% of the time the electronics are assuming incorrectly.

If you want better prints, tune your printer to your filament.

Ideally you would do most of these steps for every print or every individual roll of filament. If you use a single brand you could setup profiles for each material, if you use a single brand and single material you could do this once. You should do this for every spool of filament or every print.

Step 1: Calibrate your extruder (This only needs to be done when something changes)

Step 2: Calibrate your filament diameter, do this every print!

Using a caliper, measure your filament diameter at several locations. Average out the measurements, at least 3, and enter that into your slicer under filament diameter.

Step 3: calibrate your z height and first layer. Do this whenever something changes in your printer.

Step 4: calibrate your extrusion multiplier!

Do this every print, to be a little lazy every roll, to be really lazy every brand and material, if you're slacker only once

Step 4.5: PID tune your bed and hotend.

Before and after you calibrate temperatures and any time you change a fan or move something or a season changes. PID tune your hotend and bed to keep your temperature fluctuations to a minimum.

M303 E(Extruder 0 for hotend 1 for bed) C(# of cycles 3-8) S(Desired Temperature)
M303 E0 C5 S180 = PLA Hotend tune for 5 cycles

Step 5: calibrate your temperatures.

Do this for every different filament (color, brand, material, etc)

Step 6: Calibrate your fan speed.

(I have a Delta with three really powerful layer fans. If they all three run at 100% the hotend loses temp)

Step 6.5: PID tune your hotend again with the layer fan set to the ideal speed!

As noted above if your fans in any way change the temperature of your hotend (all layer fans do) you should PID tune the hotend with the fan set at the most common speed to keep temperature fluctuations to a minimum.

I left a lot of details out and some things are vague. Let me know what should be added and I’ll edit it. Also my formulas may be off.