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
RepRapFirmware 3.x and later
Add the following commands to your config.g. Define the thermistor that will control the chamber heater with M308. Define the heater, or SSR that controls the heater, with M950. You can set the PWM frequency with the Q parameter. Set the heater parameters with M307. Once connected, tune the chamber heater with M303, and update the M307 parameters with the new settings. Use M141 to define this heater as a chamber heater. Set a temperature limit for chamber heater with M143. Example:
M308 S2 P"e1temp" Y"thermistor" T100000 B4138 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create chamber heater output on e1heat and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for the chamber heater and set PWM limit M141 H2 ; map chamber to heater 2 M143 H2 S100 ; set temperature limit for heater 2 to 100C
RepRapFirmware 2.x and earlier
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.