Skip to main content

Site Navigation

Your Account

Choose Language


Revision to Connecting thermistors or PT1000 temperature sensors


[title|Connecting thermistors or PT1000 temperature sensors]
[summary]The Duet series supports 4 types of temperature sensor: thermistor and PT1000, thermocouple, and PT100. This section describes how to connect thermistors or PT1000.[/summary]
== Connecting ==
Connect the bed temperature thermistor to the BED_TEMP connector. Connect your first extruder thermistor to the E0_TEMP connector. If you have a second hot end, connect its thermistor to E1_TEMP.
You can connect PT1000 temperature sensors to the thermistor connectors instead of thermistors.
== Configuring the firmware ==
The thermistor or PT1000 types are configured using the M305 commands in config.g. The heaters and thermistor channels are numbered 0 for the bed thermistor connector, then 1, 2, 3... for the extruder thermistors.
=== Thermistors ===
To set the bed thermistor parameters, use a command like this:
[code]M305 P0 R4700 T100000 B3950 ; set bed thermistor parameters[/code]
The P parameter identifies the heater/thermistor channel that the command applies to. T100000 means that the resistance at 25C is 100Kohms.
Parameter B3950 in the above example means that the thermistor B value over the temperature range of interest is 3950.
The R parameter is the value of the series resistor on the controller electronics, which is always 4700 ohms on Duet WiFi and Duet 0.8.5 controllers, as well as Duex2 and Duex5 expansion boards - but see the note further down this page. It defaults to 4700 in the Duet WiFi firmware, and 1000 in RepRapFirmware for the Duet 0.8.5 and 0.6. The older generation Duex4 expansion boards have a series resistor value of 1000.
For the E0 thermistor, the command is similar except that P0 is replace by P1, for example:
[code]M305 P1 R4700 T100000 B4388 ; set E0 thermistor parameters[/code]
For the E1 thermistor, replace P1 by P2.
Manufacturers of thermistors typically quote the B value over quite a small temperature range. This is fine for the bed thermistor, but the effective B value over the temperature range of the extruder may be somewhat different. For greater accuracy, in firmware 1.17 and later you can add a C parameter. Here are some suitable T, B and C values for popular thermistors:
|! Thermistor type
|! Used by'''
|! T parameter (resistance @ 25C)
|! B parameter
|! C parameter ^^1^^
| Semitec GT-104
| E3D hot ends
| 100000
| 4725
| 7.06e-8
| Epcos B57863S0103F040
| RepRapPro Ormerod heated bed
| 10000
| 3988
| Honeywell 135-104QAD-J01
| RepRapPro Ormerod/Huxley/Mendel hot end
| 100000
| 4138
| Typical Chinese bed heater thermistor
| Various bed heaters
| 100000
| 3950
1) The C parameter can be written in [] as shown here or in normal decimal notation (in this example C0.0000000706, just be careful to use the right number of zeros) see below for an explanation of the C parameter.</small>
If you have a datasheet for the thermistor you are using, and if it provides a resistance-versus-temperature table, you can calculate the correct value for the B and C parameters. The simplest way is to use the calculator on the heater tab of [].
For the technically minded: firmware 1.17 and later uses the Steinhart-Hart thermistor model. The M305 C parameter is the Steinhart-Hart '''c''' parameter, the M305 B parameter is the reciprocal of the Steinhart-Hart '''b''' parameter, and the Steinhart-Hart '''a''' parameter is calculated from the resistance at 25C. If you don't provide a C parameter, then C defaults to zero and the Steinhart-Hart equation reduces to the beta-value equation.
'''Warning''': Some thermistors meant for high-temperature work (for example those provided with the Dyze hot end) may have such a high resistance at room temperature that they read as open. This will generally cause heater faults as soon as you start heating. There has been discussion of a number of workarounds; a search of the forum may yield some good suggestions. For really satisfactory results you may need to switch to a thermocouple or PT100 sensor.
=== PT1000 sensors ===
Use the M305 command as for a thermistor, but add parameter X500+n where N is the channel number. Only the R, H and L parameters are significant. Example:
[code]M305 P1 X501 R4700 ; heater 1 uses a PT1000 connected to thermistor channel 1 which has a 4.7K series resistor[/code]
PT1000 sensors connected to thermistor inputs will generally be less accurate than PT100 sensors connected via the RTD daughter board.
=== Note for users of Duet 0.6 boards and DueX4 boards ===
Early Duet 0.6 boards, and most or all Duet 0.6 boards sold by Replikeo, use 1K series resistors instead of 4.7K., Likewise, DueX4 0.2 boards and earlier DueX4 0.2a boards use 1K resistors. For these boards, use R1000 in the corresponding M305 commands instead of R4700.
=== Correcting the temperature calibration of Duet 0.6 and 0.85. boards ===
The ADC on the Duet 0.6 and 0.8.5 is not calibrated automatically, so you may need to calibrate it in order to get accurate readings, especially at low temperatures.Here's how:
* With the machine cold, see what temperatures the are displayed for the bed and hot end(s), and compare that with room temperature.
* Add H parameters in the M305 commands to get readings close to room temperature. If the readings are too low, use a positive H parameter to bring the readings up to the correct value. If the readings are too high, use a negative H parameter. All heater numbers should need the same value of H parameter - any residual differences you see are probably caused by thermistor tolerances. You should never need to use an H parameter below -100 or above 100, and it is rare to need a value outside the range -30 to 30.
* If you use a PT1000 instead of a thermistor, then the L parameter mostly affects the reading at low temperatures (the opposite to when using a thermistor), so you may wish to adjust it to get the correct room temperature reading, or to get a 0C reading when you substitute a 1K resistor for the PT1000.
* '''Very important!''' Check that if you disconnect the thermistors, the temperature in the web interface reads as '''error'''. If instead it reads a very low temperature, reduce the H parameters until it does report '''error''', then reduce them a bit more.