Connecting and configuring a chamber heater
RepRapFirmware supports a chamber heater, but by default no chamber heater is configured. To use a chamber heater, you will need a spare heater channel, and either the thermistor channel associated with that heater or another temperature sensing channel.
Connecting the chamber heater
Chamber heaters are typically AC mains powered, so you will need a Solid State Relay (SSR) to drive one. Use a zero-crossing DC/AC SSR such as Fotek SSR-25DA + safety cover, or Crydom D2425 + safety cover KS101. If your chamber heater draws more than about 5A then the SSR may need a heatsink.
Connecting a SSR to a heater output on the Duet, or Duex 2/ 5
SSRs generally accept anywhere between 3V and 32V input voltage, so you can connect the SSR to the heater terminal block. Make sure you connect the + and - terminals the right way round. The + terminal on the SSR goes to the heater terminal marked + or VIN, and the - terminal pin the SSR goes to the heater terminal marked -.
Connect the thermistor that measures chamber temperature to the associated thermistor input.
Connecting a SSR directly to the expansion connector
If you have a Duet without an expansion board and no spare heater channels, you can connect the input of the SSR directly to the expansion connector. The heater outputs of the Duet are active low, so connect the SSR - input terminal to the appropriate expansion connector pin, and connect the SSR + input terminal to +3.3V (pin 3 on the expansion connector).
You will also need a thermistor input channel to monitor the chamber temperature. If you are using a PT100 or thermocouple sensor for a hot end, then you can use the thermistor input pins that would otherwise be used for that hot end. The following applies to all Duet versions.
Configuring the chamber heater
You will need to add a M141 command to config.g to tell the firmware that you have a chamber heater and which heater channel it uses. You will also need a M305 command to configure the temperature sensor, and a M301 command to configure the PID parameters. Here is an example:
M141 H3 ; heater 3 is the chamber heater M305 P3 R4700 T100000 B3950 ; heater 3 is monitored by a 100K thermistor with B=3950 and a 4.7K series resistor M301 H3 B1 ; use bang-bang control for the chamber heater
To use a different thermistor channel form the heater channel, add a suitable XS parameter to the M305 command. For example, X1 would tell the firmware to use the thermistor channel associated with heater 1 (which is normally the first extruder heater).
You can use PID control of the chamber heater if you wish. RepRapFirmware uses low frequency (10Hz) PWM on the chamber heater channel so as to be compatible with most SSRs.
Using the chamber heater
Add the command M141 S### to your slicer start gcode, where ### is the required chamber temperature at the start. Also make sure there is a M116 command somewhere after the M141 command, to wait for all temperatures to reach their assigned values.
In your end gcode, either use the command M0 (which normally switches all heaters off), or the command M141 S0 to turn the chamber heater off.
Using multiple temp sensors for a single heater
There are three ways of using two thermistors to control one heater:
- Connect them in series. The temperature readings will be averaged with a bias in favor of the colder one. If any wire breaks, you will get the usual -273C reading and the heater will fault.
- Connect them in parallel. The temperature readings will be averaged with a bias in favor of the hotter one. If one of the thermistor wires breaks, the temperature will under-read, so you will end up heating too much.
- Use one to control the temperature, and the other as an over-temperature cutout, configured using M143.
Note: if connecting 2 in series, the resistance of the thermistors needs to be combined in config.g. So if each thermistor is 100k at room temperature, they need to be set as 200k when declaring the sensor with M308. And if connecting in parallel, the resistances need to be half their combined average (or just half of one if both are the same).
However, when connecting thermistors in series or in parallel, although the B value remains the same, the effective C value changes. So it's easier to adjust the R parameter instead. For example, on a Duet 3 the normal R value is 2200. If you connect two identical thermistors in parallel, you can specify the usual T, B and C parameters for the thermistors, but double R to 4400. Likewise, if connecting two thermistors in series, halve the R value.
8 Comments
Is there a way to have a chamber heater where the temperature of the heater is controlled to a maximum allowable temperature (as a safety feature) and the chamber temperature is controlled via that heater being switched in bang bang mode.
The reason for this is that many heaters would get dangerously hot when being controlled via a sensor, sensing the chamber temp - the heater will receive full current until the chamber reaches the set point.
Christian Bowes - Reply
PID controlling a heater to control its “surface temperature” is exactly equivalent to limiting the current through the heater. The easiest way to do that is not via a PID controller, but rather to intentionally “underrate” the heater voltage. For example, use a 240V heater on a 110V supply. Or wire two (or even three) heaters in parallel.
Of course, the chamber will take longer to heat with an underrated single heater… parallel heaters will help mitigate this.
Danal -
I am investigating ways to use a Duet 2 with no Duex expansion to run the e3d tool changer with more than two tools. I believe that with the information here, plus additional SSRs, that would be possible if using an extruding solution similar to the Prusa colour changer or a geared motor mounted to the tool-changer which slots in to a direct drive tool.
James Rowlands - Reply
potentially - best to discuss ongoing developments on the forum.
Tony -
Is it possible to install a two-stage control with two temperature sensors? One temperature sensor measures the housing temperature and the other the temperature of the heating element. This allows the control parameters to be defined more accurately and reduces the risk of the heating element being burnt.
Mathias Mettauer - Reply