PID Autotune


Hotend: M303 E0 S200 C8


Bed: M303 E-1 S60 C8


Manually set PIDs


Extruder - M301 Pxx.xx Ixx.xx Dxx.xx (set values from M303)


Heated Bed - M304 Pxx.xx Ixx.xx Dxx.xx


M500 (save)


M503 (check)



    M303 E-1 S60 C10 U1



    M303 is the main command that triggers the PID Autotune calibration.
    E-1 is the number of the heat bed that will be calibrated.
    S60 is the temperature of the heat bed that needs to be tuned at which is 60į in this case.
    C10 is the number of cycles. Itís a good idea to let the test run 5-15 times for the best results.
    U1 automatically replaces your existing heat bed PID values with the calibrated ones so you donít have to do another step.



DYZE design T-D500


Configuration.h modification


  1. define TEMP_SENSOR_0 66
  2. define HEATER_0_MINTEMP 21
  3. define HEATER_0_MAXTEMP 500


Configuration_adv.h modification




From the config changes above & as rq3 mentioned, setting MILLISECONDS_PREHEAT_TIME to 30000 should get you going.



Silicone Bed Temp


  1. define TEMP_SENSOR_BED 13



// R25 = 100 kOhm, beta25 = 4100 K, 4.7 kOhm pull-up, Hisens thermistor
constexpr temp_entry_t temptable_13[] PROGMEM = {
  { OV(220.86), 100 },
  { OV(270.72),  90 },
  { OV(320.06),  70 },
  { OV(517.17),  60 },
  { OV(605.61),  50 },
  { OV(751.75),  45 },
  { OV(856.74),  40 },
  { OV(939.52),  35 },
  { OV(986.03),  20 },
  { OV(1008.7),   0 }









To enable support, you need to do the following:


    Marlin: Uncomment #define HOST_ACTION_COMMANDS in Configuration_adv.h





Stop form LCD SD printing


Note, it does not stop immediatly, only after buffer commands.
I use it for testing printing so I need not temp turning off and etc.


    void lcd_sdcard_stop_g () {
      enqueue_and_echo_commands_P(PSTR("M117 Abort Print\nM25\nG91\nG0 Z10\nG90\nG0 X0 Y140\nM400\n"));


No custom user menu, simply change stock "Stop" to the below:


 //        MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop);
           MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop_g);



Here is some information to book mark for help with you 3D Printing.


Cura LulzBot Edition Manual


E3D Hotend and Extruder Wiki


E3D reseller in Australia.



Would be very easy to add this. Because, for example, auto-home is:
So, adding:
MENU_ITEM(gcode, "Home X/Y", PSTR("G28 X0 Y0"));
Would add the command you want :-)


I still need to fix the "multiple GCode commands" option, as the cooldown option:
MENU_ITEM(gcode, MSG_COOLDOWN, PSTR("M104 S0\nM140 S0"));
Only cools down the hotend, and not the heated bed. So the M140 S0 doesn't get executed.


X Y Origin offset


G21        ;metric values
G90        ;absolute positioning
M82        ;set extruder to absolute mode
M107       ;start with the fan off
G28 X0 Y0  ;move X/Y to min endstops
G28 Z0     ;move Z to min endstops
G1 Z15.0 F{travel_speed} ;move the platform down 15mm
G1 X40 Y32              ; Move to print origin
G92 X0 Y0 Z15.0         ; Set this coordinate to 0,0,15
G92 E0                  ;zero the extruded length
G1 F200 E3              ;extrude 3mm of feed stock
G92 E0                  ;zero the extruded length again
G1 F{travel_speed}
;Put printing message on LCD screen
M117 Printing...




 Endstop Testing


No matter which type of endstop you use, it should be recognized by your electronics. Test procedure:


    Turn on your electronics/printer.
    Send M119 manually.
    Firmware should report back status "0" or "open".
    Engage the endstop by pressing the switch, putting cardboard into the light barrier, etc.
    Send M119 again.
    Firmware should report "1" or "triggered" or "closed".


Your endstop works if both reports are as expected.