Connecting thermistors or PT1000 temperature sensors
The Duet series supports 4 types of temperature sensor: thermistor and PT1000, thermocouple, and PT100. This section describes how to connect thermistors or PT1000.
Connect the bed temperature thermistor or PT1000 sensor to the BED_TEMP connector. Connect your first extruder thermistor or PT1000 sensor to the E0_TEMP connector. If you have a second hot end, connect its thermistor to E1_TEMP.
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.
To set the bed thermistor parameters, use a command like this:
M305 P0 R4700 T100000 B3950 ; set bed thermistor parameters
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 (in ohms) of the series resistor on the controller electronics. You do not need to specify this value unless you are using a Duet 06 or a DueX4 expansion board. If you do specify it, the correct value is:
- Duet 2 WiFi, Duet 2 Ethernet, DueX2 and DueX5 expansion boards, and Duet 085: 4700
- Duet 2 Maestro: 2200
- Duet 06: older boards 1000, newer boards 4700
- DueX4 version 0.2: 1000
- DueX4 version 0.2a: older boards 1000, newer boards 4700
For the E0 thermistor, the command is similar except that P0 is replace by P1, for example:
M305 P1 R4700 T100000 B4388 ; set E0 thermistor parameters
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 https://en.wikipedia.org/wiki/Scientific... 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.
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 https://configurator.reprapfirmware.org/.
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, PT100 or PT1000 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:
M305 P1 X501 R4700 ; heater 1 uses a PT1000 connected to thermistor channel 1 which has a 4.7K series resistor
Note: PT1000 sensors connected to thermistor inputs have lower resolution than PT100 sensors connected via the RTD daughter board. The accuracy of PT1000 sensors should be very good on the Duet 2 Maestro and generally good on the Duet Wifi and Duet Ethernet. However, it may be poor on the Duet 06, Duet 085 and other SAM3X8E-based electronics.
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 or when using PT1000 sensors. 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.
- If using thermistors, 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.