Differences

This shows you the differences between two versions of the page.

Link to this comparison view

temperaturecontrol [2019/03/04 11:18]
wolfmanjm [Runaway detection]
temperaturecontrol [2021/02/22 17:00]
Line 1: Line 1:
-= Temperaturecontrol 
  
-<grid> 
-<col md="6"> 
- 
-This module reads temperature reading sensors ( thermistors ) and uses heater and cooler elements to maintain a set temperature. 
- 
-This is used for example for [[extruder]] hotends, or heated beds. 
- 
-<html> 
-<div class='panel panel-default wrap_center' style='width:640px;padding:10px '> 
-<div class='panel-heading'><h4 class='panel-title'>A hotend</h4></div> 
-<image src='http://1.bp.blogspot.com/-00QOc_WaJMA/ULwmTTgrjdI/AAAAAAAAAIM/BPOgQuGsFZU/s1600/v_and_vb.JPG' width='620px'><br/> 
-This is a J-head hotend with it's thermistor and heating element. 
-</div> 
-</html> 
- 
-</col> 
-<col md="6"> 
-[[toc]]  
-</col> 
-</grid> 
-== Multiple modules 
- 
-In Smoothie you do not get just one TemperatureControl module. You can actually create as many as you want, simply by adding them to the [[http://smoothieware.org/configuring-smoothie|configuration file]]. 
- 
-It goes something like this : 
- 
-<code> 
-temperature_control.hotend.enable                    true 
-temperature_control.hotend.thermistor_pin            0.23 
-etc ... 
- 
-temperature_control.bed.enable                       true 
-temperature_control.bed.thermistor_pin               0.24 
-etc ... 
-</code> 
- 
-This will create and configure two separate TemperatureControl modules that will act completely independently from each other. 
- 
-The line that effectively "creates" the module is the **enable** option. If set to true, a module is created and further configuration is read. If set to false, further configuration for this module is ignored as no module is created. 
- 
-In the **Configuration** section bellow, the first two parts ( <kbd>temperature_control.module_name</kbd> ) of the configuration are sometimes omitted for conciseness, but have to be added in your actual configuration file ( [[http://smoothieware.org/configuring-smoothie|see example]] ). 
- 
-== Configuration 
- 
-~~CLEARFIX~~ 
- 
-<html> 
-<div class='panel panel-default wrap_right' style='width:420px;padding:10px '> 
-<div class='panel-heading'><h4 class='panel-title'>Temperature conversion</h4></div> 
-<image src='http://chibidibidiwah.wdfiles.com/local--files/temperaturecontrol/upshot_4Q4Ah2HM.png' width='400px'><br/> 
-Resistance readings are converted into temperature readings using the magic of math 
-</div> 
-</html> 
- 
- 
- 
-=== Reading temperatures 
- 
-To reach a desired temperature, you must be able to know what the current temperature is. This is done using a [[http://reprap.org/wiki/Thermistor|Thermistor]] connected to an [[http://en.wikipedia.org/wiki/Analog-to-digital_converter|ADC]] on the controller board, or a [[http://en.wikipedia.org/wiki/Thermocouple|Thermocouple]]. 
- 
-====  Thermistor 
-<html><a name='thermistor'></a></html> 
- 
- 
-A given controller board only has a given number of [[http://en.wikipedia.org/wiki/Analog-to-digital_converter|ADCs]] ( analog ( temperature ) to digital ( Smoothie ) converter ) capable pins. 
- 
-On the [[smoothieboard]] for example, there are 4 thermistor inputs, labelled from **T0** (or th1) to **T3** (or th4), and corresponding in the same order to the pins **0.23** to **0.26**. T0 is usually used for the hotend, and T1 for the bed. 
- 
-Thermistor inputs are not polarized, the direction you connect them in on your board is not important. 
- 
-<code> 
-temperature_control.hotend.thermistor_pin        0.23 
-</code> 
- 
- 
-^ Smoothieboard thermistor input name ^ T0 (th1) ^ T1 (th2) ^ T2(th3) ^ T3(th4) ^ 
-| Pin for configuration | 0.23 | 0.24 | 0.25 | 0.26 | 
- 
-~~CLEARFIX~~ 
- 
-<callout type="warning" icon="true" title=" Thermistor reading error"> 
-You read the value of the thermistor inputs by sending the <key>M105</key> command. 
- 
-If you receive a value of <key>inf</key> for an input, for example :  
- 
-<code>  
-ok T :inf /0.0 @0 B:24.1 /0.0 @ 
-</code> 
- 
-It means the sensor is not properly connected, or it is damaged in some way. 
-</callout> 
- 
- 
-===== Choosing the right thermistor 
- 
-{{page>temperaturecontrol-thermistor-choice}} 
- 
- 
-~~CLEARFIX~~ 
- 
-====  PT100 
-<html><a name='PT100'></a></html> 
- 
-Note PT100 as used by the e3d amplifier is supported in current edge, but not in the current pre built binary firmware. 
- 
-===== Configuration and usage 
- 
-{{page>PT100}} 
- 
-==== Thermocouple via SPI 
- 
-<html><a name='thermocouple'></a></html> 
- 
- 
-Thermocouples are currently supported by connecting a MAX31855 chip to one of the [[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface|SPI]] channels. Thermocouples give a stable measurement over a wide temperature range, and can typically withstand higher temperatures than thermistors. 
-  
-Note: the MAX31855 does not like having the thermocouple electrically connected to ground, and will flag an error if this happens. Make sure your thermocouple is isolated. If you must use a non-isolated thermocouple, try the AD8495 analog amplifier instead (see next section). 
-Note: Connecting a thermocouple and a RRD GLCD panel to the same SPI bus does not work. 
-Note: you need the latest edge build if you want to have multiple Thermocouples on the SPI bus. 
-Note: As of 2/13/2018, the max31855 module does not work when configured without a heater pin 
- 
-Here is an example of how to connect the [[http://www.adafruit.com/products/269|Adafruit Thermocouple Amplifier MAX31855 breakout board]] to the smoothieboard.  
- 
-||~ Smoothieboard ||~ Breakout board || 
-|| 3v3 || Vin || 
-|| GND || GND || 
-|| <kbd>0.16</kbd> CS || CS || 
-|| <kbd>0.18</kbd> MOSI || Not used || 
-|| <kbd>0.15</kbd> SCK || CLK || 
-|| <kbd>0.17</kbd> MISO || DO || 
- 
-To configure smoothie to use the thermocouple connected like this, replace the thermistor and thermistor_pin parameters with the following: 
-<code> 
-temperature_control.hotend.sensor        max31855 
-</code> 
- 
-The SPI channel and chip select pin can be changed using the following parameters: 
-<code> 
-temperature_control.hotend.chip_select_pin    0.16 
-temperature_control.hotend.spi_channel            # SPI channel 0 or 1 
-</code> 
- 
-Note that when using max31855, you need to reduce the frequency at which temperatures are read. This is due to a limitation in the amplifier. For more information see [[https://github.com/Smoothieware/Smoothieware/pull/891|this pull request]]. 
- 
-There is a quirk to the max31855 and max6675 chips: They take 100 and 220 milliseconds, respectively, to perform the temp conversion. Sampling them faster than this will interrupt the conversion process, causing the chip to return the same value every for every subsequent sampling. To resolve that issue, readings_per_second should be 9 for the max31855 and 4 for the max6675. 
- 
-<code> 
-temperature_control.module_name.readings_per_second      4 
-</code> 
- 
-==== Thermocouple via Amplifier 
- 
-Smoothie supports reading thermocouples via an ADC ( the same kind used to read thermistors ) if the analog value is converted by the [[https://www.adafruit.com/product/1778|AD8495]] thermocouple amplifier. 
- 
-This allows you to read values from a thermocouple without having to use a SPI port. 
- 
-To use the AD8495, you need to set the right sensor type :  
- 
-<code> 
-temperature_control.hotend.sensor    ad8495 
-</code> 
- 
-And then configure the pin you'll be using to read the sensor :  
- 
-<code> 
-temperature_control.hotend.ad8495_pin   0.24 
-</code> 
- 
-And the offset. This will depend on the AD8495 wiring. If the REF pin(pin 2) is connected to ground or 0V then the offset is 0. This means that Smoothie can measure 0C to 660C, depending on thermocouple. If, like the Adafruit board, the REF pin is connected to 1.25V then the offset is 250. With a 250 offset, Smoothie can measure -250C to 410C. The formula for calculating offset is offset = REF/0.005. The simplest way to see if the offset is set incorrectly is that the temperature reading at room temperature will be wrong. 
- 
-NOTE from a community member: The AD8495 needs a GND and VCC. Using either GND or AGND from the Smoothieboard seems to work. Unclear which is preferred (if you know, please update this note!). 
- 
-<code> 
-temperature_control.hotend.ad8495_offset   250 
-</code> 
- 
- 
-=== Heating things up. 
- 
-To reach the desired temperature, you need a means of changing the temperature. This is usually done by letting current through : 
- 
-* Resistors 
-* Heater cartridges 
-* PCB, kapton or silicone heater plates 
- 
-This is for example how hotends or heated beds are heated to their target temperature. 
- 
-The component turning the current on and off can be a [[http://en.wikipedia.org/wiki/MOSFET|mosFET]] ( like on [[Smoothieboard]] ) or a [[https://en.wikipedia.org/wiki/Solid-state_relay|Solid-State Relay]] for example. 
- 
-This is controlled from the board running Smoothie using a GPIO pin.  
- 
-In the case of mosfets, on a [[Smoothieboard]], a given pin is connected to a given mosfet, and you have to use that specific pin to control that specific mosfet.  
- 
-See this schematic bellow or on the [[Smoothieboard]] page to see what mosfet corresponds to what pin. 
- 
-<html> 
-<div class='panel panel-default wrap_center' style='width:640px;padding:10px '> 
-<div class='panel-heading'><h4 class='panel-title'>Mosfet inputs and outputs</h4></div> 
-<image src='http://arthurwolf.github.io/smoothieboard-graphics/schematics/mosfet-input-output.svg' width='620px'><br/> 
- 
-</div> 
-</html> 
- 
- 
-Read more about the mosfets [[http://smoothieware.org/mosfets|here]] 
- 
-To set a pin to a given heater, do for example :  
- 
-<code> 
-temperature_control.hotend.heater_pin        2.7 
-</code> 
- 
-**Note on pins :** 
- 
-{{page>pin-configuration}} 
- 
-=== Controlling with G-codes 
- 
-By default, Smoothie will not heat anything. That could be a dangerous thing to do unwatched. 
- 
-You have to send [[http://reprap.org/wiki/G-code|G-codes]] to turn your heater on and off, set a given temperature etc. 
- 
-There is a set of widely used G-codes corresponding to different usual actions ( for example setting the hotend temperature is <kbd>M104</kbd> in the [[http://reprap.org|Reprap]] world ). 
- 
-But as you are defining your own custom temperature controller, you have to choose what gcode will be used to control it, Smoothie doesn't know what exactly it's controlling. 
- 
-So for example if this is a hotend, it will look something like this for the "standard" gcodes : 
- 
-<code> 
-temperature_control.hotend.set_m_code            104 
-temperature_control.hotend.set_and_wait_m_code   109 
-</code> 
- 
-**set_m_code** is used to set a given temperature, and continue running Smoothie immediately. **set_and_wait_m_code** is used to set a given temperature, and then pause Smoothie until that temperature is reached. 
- 
-=== Reading with G-code 
- 
-There is a single g-code used to read temperature for all the temperature_control modules at the same time : <kbd>M105</kbd> 
- 
-But it has to have a way to tell you what temperature corresponds to what specific module. 
- 
-There is a standard format for this which was used before Smoothie and still is today :  
- 
-<code> 
-ok T:22.1 /0.0 @0 B:22.5 /75.0 @210 
-</code> 
- 
-Here T is the hotend, and B is the bed. This is a convention. But in your configuration, we have to specify which is which :  
- 
-<code> 
-temperature_control.hotend.designator        T 
-</code> 
- 
-=== Bang Bang Control  
-<html><a name='bang-bang'></a></html> 
- 
- 
-The simplest form of heat control is called bang bang this simply turns the heater on or off depending on whether it is under or over the target temperature (plus some hysteresis). 
-This is best used for high amp beds using a relay to turn it on and off. 
- 
-to enable this form of control in the config define the following... 
-<code> 
-temperature_control.bed.bang_bang            true            # set to true to use bang bang control rather than PID 
-temperature_control.bed.hysteresis            2.0              # set to the temperature in degrees C to use as hysteresis when 
-</code> 
- 
-Example : If you set your temperature to 50 degrees, and your hysterisis is 2 degrees, then the heaters will turn on if the temperature is bellow 48 degrees, and off if the temperature is above 52 degrees. 
- 
-The default form of heater control is PID. 
- 
-=== PID  
-<html><a name='pid'></a></html> 
- 
- 
-{{page>temperaturecontrol-pid}} 
- 
- 
-=== PID autotuning 
- 
-{{page>temperaturecontrol-pid-autotuning}} 
- 
-=== Fine Tuning 
- 
-{{page>temperaturecontrol-fine-tuning}} 
- 
-== Safety  
-<html><a name='safety'></a></html> 
- 
- 
-This module controls temperature by actuating heating elements. Heat, if left unchecked, causes fire. 
- 
-Fires are painful, expensive, and can even cause death. 
- 
-You definitely should set up as many safety features as you can, even those that are disabled by default. This section explains how to do so. 
- 
-<callout type="danger" icon="true" title=" This can happen to you"> 
- 
-<html><image src="http://chibidibidiwah.wdfiles.com/local--files/temperaturecontrol/fire.jpg" style="width:100%"></html> 
- 
-It has already been known to happen to Reprap/CNC enthusiasts. For an example see [[http://www.soliforum.com/post/57749/#p57749|here]]. 
- 
-</callout> 
- 
-This chapter covers all of the safety features, and how to set them up if needed. 
- 
-=== Thermistor disconnect 
- 
-If a thermistor is disconnected from it's thermistor input ( cable gets cut, connector falls ), Smoothie can detect the problem by itself, as this causes a recognizably different input. 
- 
-When this happens, Smoothie will detect the problem, turn off all heaters, and enter the [[http://smoothieware.org/stopping-smoothie|HALT state]]. It will also show you the following message :  
- 
-<code> 
-Temperature reading is unreliable on T, HALT asserted - reset or M999 required 
-</code> 
- 
-You need to solve the issue, and then either reset the board or issue the <kbd>M999</kbd> command. 
- 
-You do not need to do anything to activate this safety check. 
- 
-=== Watchdog 
- 
-The watchdog is a peripheral inside the microcontroller. Smoothie must tell it « Hey, I'm alive and I have not crashed » on a regular basis.  
- 
-If Smoothie stops doing that, the watchdog knows Smoothie has crashed, and resets the board, which turns all heaters off.  
- 
-This ensures that if the firmware crashes, your board's heaters turn off, and everything is safe. 
- 
-You do not need to do anything to activate this, it is on by default. 
- 
-=== Maximum temperature detection 
- 
-You activate this safety check ( and you should ) by adding the following to your configuration : 
- 
-<code> 
-temperature_control.module_name.max_temp      300 
-</code> 
- 
-Once this is set, it will be impossible to set temperatures higher than the <kbd>max_temp</kbd> value. 
- 
-Also, if the temperature reaches this <kbd>max_temp</kbd> temperature, Smoothie will turn off all heaters, go into HALT state, and print out the following message :  
- 
-<code> 
-Error: MINTEMP or MAXTEMP triggered on T. Check your temperature sensors! 
-HALT asserted - reset or M999 required 
-</code> 
- 
-You need to solve the issue, and then either reset the board or issue the <kbd>M999</kbd> command. 
- 
-The most likely cause for this problem, is that a heater mosfet is stuck being always active. If this is the case, Smoothie can not control that heater anymore, and nothing the firmware can do can solve the issue, and you are on your way to a fire. 
- 
-This is why you need to give Smoothie a second way to cut power : either by having a signal that allows you to turn the power supply off, or a solid state relay capable of cutting all power to all mosfets. See documentation bellow for how to achieve this. 
- 
-=== Runaway detection  
-<html><a name='runaway'></a></html> 
- 
- 
-We call "temperature runaway" a phenomenon where Smoothie tries to control temperature, but for some reason the temperature increases out of control. 
- 
-There are several ways this can happen : 
- 
-* The thermistor is disconnected from the heater block, so the thermistor is reading room temperature, and keeps heating to try to reach it's target. 
-* The mosfet or solid state relay controlling the heater is stuck always letting power pass through, this causes temperature to increase even when smoothie does not ask for temperature to increase. 
- 
-**NOTE** This is now enabled by default in newer versions of edge, the timeout is set pretty high (900 seconds), it can be disabled by setting the values below to 0. 
- 
-==== Initial heat-up runaway detection 
- 
-To detect if the thermistor is disconnected during the initial heat-up ( temperature increasing until it reaches it's target ), we need to define how long it should take for temperature to increase to the target. And if the temperature takes too long to reach this target, we know something is wrong ( likely the thermistor is detached from the heating element ). 
- 
-To configure this value, we first need to ask the machine to heat-up, and use a timer to know how long it takes. For example, a given hotend could take 100 seconds to heat up. 
-Then, we add a margin to this, for example 20%, and we say that if the hotend takes more than 120 seconds to heat up, something is wrong. 
- 
-Now that you have a reasonable safety value, add the <kbd>runaway_heating_timeout</kbd> option to your configuration file :  
- 
-<code> 
-temperature_control.module_name.runaway_heating_timeout      120 # max is 4088 seconds 
-</code> 
- 
-Now, if heating ever takes longer than 120 seconds, Smoothie will know there is a problem, enter HALT state, turn off heaters, and show the following message :  
- 
-<code> 
-Error : Temperature too long to be reached on T, HALT asserted, TURN POWER OFF IMMEDIATELY - reset or M999 required 
-</code> 
- 
-You can disable this by setting it to 0. 
- 
-Please note that if your PID settings are not correctly tuned, this can get activated by accident because of the "swings" un-tuned temperature curves can have. Please tune your PID settings before activating this feature. 
- 
-If the Smoothieboard is being a bit too strict with detecting the temperatures, you can add <kbd>runaway_error_range</kbd> as a parameter ( optional ), it is 1° by default meaning acceptable temperature detected can be +/- 1° of the set temp. If your printer tends to not stick close enough to the right temperature, increase this value. It only applies to the heat up and cool down timeouts. 
- 
-<callout type="warning" icon="true" title="Cool down timeout"> 
- 
-**NOTE**  If you set <kbd>runaway_cooling_timeout</kbd> then understand that if you set a bed temp when the bed is already hotter than the setting it will need to cool down within the time period you set. If the bed has a lot of thermal mass then this may take a long time or actually never happen, and a timeout will occur eventually. This is why it is disabled by default. However if you do reduce the bed temperature during a print you **MUST** set this value otherwise you will get a runaway detection error if the new temp is lower then the current temp. This is also true of setting the hotend temperature lower while printing, then you also need to set this timeout correctly. 
-</callout> 
- 
-==== Out of range runaway detection 
- 
-This safety feature allows to detect if the current temperature is getting too far away from what it should be, either too low, or too high. 
- 
-This can happen if the heater is "stuck" in the active state ( in which case the temperature will read as too high ), or if the thermistor is disconnected from the heating block ( in which case the temperature will read as too low ). 
- 
-This check starts being active once the target temperature is reached, and triggers if the temperature gets out of a given "range". 
- 
-You configure it by adding the <kbd>runaway_range</kbd> configuration option :  
- 
-<code> 
-temperature_control.module_name.runaway_range      20 # Max setting is 63°C 
-</code> 
- 
-Where the value is how much below or above the target temperature we can be without triggering the alert. 
- 
-Now, if temperature gets out of the specified range, Smoothie will know there is a problem, enter HALT state, turn off heaters, and show the following message :  
- 
-<code> 
-Error : Temperature runaway on T, HALT asserted, TURN POWER OFF IMMEDIATELY - reset or M999 required 
-</code> 
- 
-==== Recovering from HALT state 
- 
-When such an error occurs, the machine goes into the HALT state. 
- 
-If you want to save a print that has taken long without having to start it all over again, you can try this :  
- 
-0. Click the pause button in pronterface 
-1. Exit halt by sending $X (or M999) 
-2. Raise head by jogging 
-3. Home XY 
-4. look at last Z height in pronterface 
-5. jog head to the last known Z 
-6. Turn heaters back on wait for temp to be reached 
-7. click the resume button in Pronterface. 
- 
-**NOTE** This will not always work well as several gcodes will have been lost, so if you were on the infill it will probably be ok, if you were on the perimeter then it may be a problem. 
- 
-<callout type="warning" icon="true" title="Fix the problem first"> 
-If you get an error, it means something is wrong. You shouldn't just keep printing as if nothing happened. You need to understand what happened and fix it before continuing, or you are risking your safety. 
- 
-This "resume" information is provided only assuming you fixed the problem before resuming. Please be safe. 
-</callout> 
- 
-=== Safety cutoff 
- 
-If you set all of these safety parameters correctly, your Smoothieboard should now be able to detect any problem that occurs. However, it does not mean the Smoothieboard can solve the problem. 
- 
-For example, if your problem is that a heating controller ( Mosfet, Solid state relay ) is stuck on the active position, even if Smoothie tells it to shut down, it will stay active and continue heating things up. 
- 
-This means that you need to have a second way of cutting power.  
- 
-If you have two ways of cutting the power, connected in series with the heating element, then both need to be active at the same time for electricity to flow, and even if one is stuck in the active state, as long as the other is de-activated, power will stop flowing and no heating problem will occur. 
- 
-As you have seen, in each case the Smoothieboard detects a problem with heating, it enters the HALT state :  
- 
-{{page>stopping-smoothie}} 
- 
-Once in the halt state, Smoothie instructs all temperature control modules to stop heating, stops moving, and stops responding to normal commands. 
- 
-However, we need to tell Smoothie to **also** turn the power off, which it can not do without a special hardware/power-supply/wiring setup. 
- 
-There are two ways to do this : either have a power supply which you can instruct to shut down ( most computer ATX power supplies support this, some larger 48V supplies do too ), or have a solid state relay control the power. 
- 
-==== Power supply controlled safety cutoff 
- 
-First thing we need to do is configure a switch module to be able to control the power supply : 
- 
-{{page>power-supply-control}} 
- 
-You need to make sure that <kbd>ignore_on_halt</kbd> is not set to <kbd>true</kbd> ( or that it is commented, which is the case here ) or it defeats the whole purpose of the exercise. 
- 
-Now that this is setup, the power supply will be automatically turned off whenever a temperature error is detected. 
- 
-==== Solid state relay controlled safety cutoff 
- 
-If your power supply does not have a signal input that allows you to turn it off, you can also simply cut the power from going from the power supply, to your Smoothieboard, by using a [[http://smoothieware.org/general-appendixes#solidstaterelay|Solid state relay]] ( SSR ). 
- 
-The basic configuration is the same :  
- 
-<code> 
-switch.psu.enable                            true             # turn atx on/off 
-switch.psu.input_on_command                  M80              # 
-switch.psu.input_off_command                 M81              # 
-switch.psu.output_pin                        1.30              # small mosfet (NB not inverted) 
-switch.psu.output_type                       digital          # on/off only 
-#switch.psu.ignore_on_halt                    true             # so the PSU does not turn off on a HALT condition (like limit trigger) 
-                                                               # However leave commented or set to false if you want the PSU to turn off for an over heat fault condition 
-</code> 
- 
-Now connect the <kbd>1.30</kbd> GPIO pin ( for example ) to the positive signal input on the SSR, and <kbd>Ground</kbd> ( from [[http://smoothieware.org/pinout|anywhere on the board]] ) to the negative signal input on the SSR. 
-And connect the SSR's switching terminals in series with the main heater power input. 
- 
-And it should now turn power off whenever there is a temperature control problem. 
- 
-Here is an example of how to wire such a solid state relay :  
- 
- 
-<html> 
-<div class='panel panel-default wrap_center' style='width:640px;padding:10px '> 
-<div class='panel-heading'><h4 class='panel-title'>Using a SSR to cut off the power supply in case of problem</h4></div> 
-<image src='http://arthurwolf.github.io/smoothieboard-graphics/schematics/ssr-for-psu.svg' width='620px'><br/> 
-The SSR goes between the power supply and the Smoothieboard's power input (note: This image is showing an AC switching SSR controlling DC voltage. Only use a DC output SSR to control DC voltage. You may instead wire this to control the AC input to the power supply, in which case an AC switching SSR is the correct part.) 
-</div> 
-</html> 
- 
- 
-=== Double thermistor setup 
- 
-{{page>safety-thermistor}} 
- 
-=== Using a fuse for protection 
- 
-{{page>fuse-protection}} 
- 
-== All configuration options 
- 
-**NOTE** If you have a dual extruder setup with one shared heater/temperature control, make sure that the ''module_name'' is NOT the same as any of your extruders. Otherwise the ''module_name'' should match the associated extruder module name. 
- 
-Here are all the possible configuration options for your TemperatureControl modules 
- 
-||~ Option ||~ Example value ||~ Explanation || 
-{{page>temperaturecontrol-options}} 
- 
-~~CLEARFIX~~ 
-== Supported G-codes 
- 
-* <kbd>M105</kbd> : **Configurable**, Get the current temperature 
-* <kbd>M104</kbd> :  **Configurable**, Set the temperature target for this module. 104 is usually used for hotends, the S parameter is the temperature in °C, for example : <kbd>M104 S150</kbd> 
-* <kbd>M109</kbd> : **Configurable**, Set the temperature target for this module then wait for it to be reached. 109 is usually used for hotends, the S parameter is the temperature in °C, for example : <kbd>M109 S150</kbd> 
-* <kbd>M140</kbd> : **Configurable**, Set the temperature target for this module. 140 is usually used for heated beds, the S parameter is the temperature in °C, for example : <kbd>M140 S50</kbd> 
-*  <kbd>M143</kbd> : **Configurable**, Set the max temperature target for this module. The S parameter is the hotend to set and P is the temperature in °C, for example : <kbd>M143 S0 P300</kbd> 
-* <kbd>M190</kbd> : **Configurable**, Set the temperature target for this module then wait for it to be reached. 190 is usually used for heated beds, the S parameter is the temperature in °C, for example : <kbd>M190 S50</kbd> 
-* <kbd>M301</kbd> : Edit temperature control PID parameters, for example : <kbd>M301 S0 P30 I10 D10</kbd>, where S is the number of the temperaturecontrol module to change the parameters for 
-* <kbd>M305</kbd> :  Set parameters for the thermistor, where <kbd>B</kbd> is beta, <kbd>R</kbd> is r0 and <kbd>X</kbd> is t0. 
-* <kbd>M500</kbd> : Save volatile settings to an override file  
-* <kbd>M503</kbd> : Display overridden settings if any 
- 
-Note : the lines above that say **configurable** mean that this is the usual command format, but that you can change the number in the configuration file. 
- 
-<callout type="default" icon="true" title="Going further"> 
-If you want to learn more about this module, or are curious how it works, Smoothie is Open-Source and you can simply go look at the code, [[https://github.com/Smoothieware/Smoothieware/blob/edge/src/modules/tools/temperaturecontrol/TemperatureControl.cpp|here]]. 
-</callout> 
- 
-== External ressources 
- 
-=== Video on heated beds 
- 
-<html> 
-<iframe width="100%" height="720" src="https://www.youtube.com/embed/eure74A9HNc" frameborder="0" allowfullscreen></iframe> 
-</html> 
- 
-=== Video on PID autotuning 
- 
-<html> 
-<iframe width="100%" height="720" src="https://www.youtube.com/embed/APzJfYAgFkQ" frameborder="0" allowfullscreen></iframe> 
-</html> 
- 
-=== Video on thermistor attachement 
- 
-<html> 
-<iframe width="100%" height="720" src="https://www.youtube.com/embed/jp7ubpbaw-Q" frameborder="0" allowfullscreen></iframe> 
-</html>