V1 Setting V2 Setting Description
Whether to activate this temperaturecontrol module. You can create as many temperaturecontrol modules as you want, simply by giving a new module a name, and setting its option to true.
Pin for the thermistor to read. ADC ports TH1 to TH4 are pins 0.23 to 0.26.
Pin that controls the heater. This can be used to control a Mosfet on board or an external Solid State Relay. Set to nc if a readonly thermistor is being defined.
Set the type of sensor used to read temperature. Values can be thermistor for the usual thermistor reading via ADC method, or max31855 to read values from a thermocouple over SPI. See Reading a thermocouple.
Set the thermistor model for this module. Several different common models are pre-defined, see thermistor choice guide.
Manually set the value for your thermistor. This is useful if your thermistor is not in the common pre-defined models.
Manually set the resistance value for your thermistor. This is useful if your thermistor is not in the common pre-defined models. Besides and which are properties of your thermistor, you can also set the r1, r2 and t0 values, but those are properties of your board so they usually never have to be changed.
Reference temperature in degrees Celsius for the thermistor resistance value. Standard is 25°C.
Series resistor value in ohms in the thermistor circuit. This is a board property and usually doesn't need to be changed. Standard Smoothieboard uses 0 (no series resistor).
Pull-up resistor value in ohms in the thermistor circuit. This is a board property and usually doesn't need to be changed. Standard Smoothieboard uses 4700 ohms.
Steinhart-Hart equation coefficients (c1, c2, c3) for accurate temperature calculation across full temperature range. Specify as three comma-separated floats (no spaces). This enables the most accurate temperature measurement method.
Three temperature/resistance pairs used to auto-calculate Steinhart-Hart coefficients. Format: T1,R1,T2,R2,T3,R3 where T is temperature in °C and R is resistance in ohms. Best practice: use 25°C, 150°C, and 240°C points from the thermistor datasheet.
Forces use of beta-based predefined thermistor table instead of Steinhart-Hart coefficients when using a predefined thermistor name. This setting only applies when a predefined thermistor name is specified.
If the sensor is set to max31855, sets the chip select pin for the SPI port. This allows you to have multiple sensors sharing the same SPI port, as long as they each get a chip select (CS) pin.
If the sensor is set to max31855, SPI channel using which to talk to the thermocouple chip.
V1 only Required ADC pin for reading AD8495 thermocouple amplifier output. Only used when sensor type is ad8495.
V1 only Temperature offset in degrees Celsius for AD8495 sensor calibration. Default is 0. Adafruit AD8495 boards typically require an offset of 250. Only used when sensor type is ad8495.
V1 only Required ADC pin for reading PT1000 RTD sensor. Only used when sensor type is PT1000.
How many times per second to read temperature from the sensor. This setting determines how often the sensor is read and PID calculation is performed. Higher values improve control stability but increase CPU load.
V1 only How many times per second to switch the heating element on or off. Set to a low value (20) if using a Solid State Relay.
Maximum PWM value for the heating element. This can be from 0 to 255. 64 is a good value if driving a 12v resistor with 24v. 255 is the default and the normal value if you are using the right voltage for your heating element.
Set to true to use bang bang control rather than PID. Bang-bang (on/off) control is suitable for slow-response systems like heated beds with mechanical relays or SSRs.
Set to the temperature in degrees C to use as hysteresis for bang bang control. Creates a deadband of ±hysteresis around the target temperature to prevent rapid heater switching.
P factor for PID temperature regulation. Determines the controller's response to current temperature error. Higher values increase responsiveness but may cause oscillation. Use M303 PID autotune for optimal values.
I factor for PID temperature regulation. Eliminates steady-state temperature error over time by accumulating past errors. Internally scaled by PIDdt (1/readings_per_second). Higher values eliminate offset faster but risk overshoot. Use M303 autotune for optimal values.
D factor for PID temperature regulation. Reduces overshoot by damping the rate of temperature change. Internally scaled by PIDdt. Higher values reduce overshoot but may slow response. Use M303 autotune for optimal values.
Maximum value for the I variable in the PID control. This should usually be set to about the same value as (as a rule of thumb, it is not actually a pwm setting). This helps with preventing overshoot when initially heating up. If you get a strong (>10°C) overshoot on startup, try setting this to a value lower than .
Enable alternative integral windup protection behavior. When false (default), I term updates continuously. When true, I term only updates when PID output is not saturated (anti-windup).
V2 only Use Proportional on Measurement instead of Proportional on Error. PonM mode reduces overshoot when changing setpoint by applying the P term to measurement changes rather than error changes. See this article for detailed explanation.
Calling this M-code will return the current temperature. Standard: M105 returns all active temperatures in format designator:current/target @pwm.
This is the M-code for simply setting the temperature. For example here, the value is 104 so you use M104 S50 to set this module's heater's temperature to 50. Standard: M104 for hotends, M140 for heated beds.
This is the M-code for setting the temperature then waiting for that temperature to be reached before doing anything. For example here, the value is 109 so you use M109 S50 to set this module's heater's temperature to 50 and then wait. Standard: M109 for hotends, M190 for heated beds.
The letter this module's temperature will be identified as in the M105 command's answer. For example here the value is T, so M105 will answer ok T:23.4 /0.0 @0.
V2 only Tool number for M-code addressing and tool selection. Determines which temperature controller is addressed by T commands and whether the controller responds to tool change commands. Auto-assigned: 0 for hotend, 1 for hotend2, 254 for bed, 253 for board.
If set, no temperature above this will be accepted and if the temperature exceeds this value the system will be forced into a HALT state. This protects against thermal runaway and prevents damage to the machine and surroundings.
Minimum safe temperature threshold. If sensor reads below this value (e.g., thermistor disconnected), system immediately enters HALT state and heater turns off. This is a critical safety feature that detects sensor failures.
If we take longer than this many seconds to heatup, the system will be forced into a HALT state. Set to 0 to disable it. Default is 900 seconds. Detects heater failure, insufficient power, or disconnected heater.
If we take longer than this many seconds to cooldown, the system will be forced into a HALT state. Set to 0 to disable it. Default is disabled. Detects stuck heater or sensor failures.
If set to non-zero, and the target temperature is reached, and temperature diverges from the target temperature by more than this, the system will be forced into a HALT state. Detects heater stuck on, sensor failure, cooling system failure, or part cooling fan blowing on thermistor.
Acceptable temperature tolerance (±°C) for determining when target temperature has been "reached". Temperature must be within (target ± runaway_error_range) to be considered at target and to satisfy M109 wait conditions. Default is ±1.0°C.
V1 only Temperature preset 1 for quick selection (e.g., 200°C for PLA hotend temperature).
V1 only Temperature preset 2 for quick selection (e.g., 230°C for ABS hotend temperature).
This is a wiki! If you'd like to improve this page, you can edit it on GitHub.