Duet WiFi/Eth – PID tuning hotend
Since I just changed my old cartridge for a 24v 80w heater on my 5way Diamond hotend and used High Temperature Liquid Gasket Silicone as a sealant on the heatsinks and the Diamond nozzle itself, as is clearly evident on the photo, I need to do a new PID tuning, which is a good starting point for writing a short blog-post on doing just that.
- Gcodes used
- Prepare for PID tuning
- PID-tune hotend heater
- Parameters to use and store in config.g
- Debug – Failing to tune?
1) Gcodes used
- For the actual PID tuning, we are going to use M303
- M307 H1 to display the parameters we garnered from the PID tuning.
- Finally you could use M500 to store the parameters in a config-override.g file, which matches the old school Eeprom M500, and overrule the settings in config.g file.
- I personally have an aversion to this sort of having configurations stored in different places. Especailly for core parameters that shouldn’t change.
- In my opinion it just leads to confusion as people tends to forget they have anything stored in the override file and can’t figure out why the printer doesn’t accept the new parameters written in the config.g file.
2) Prepare for PID tuning
I prefer to put my hotend close to the heated bed, heat the bed to my most used temperature and then turn on the object-cooling fans at maximum before doing a hotend PID-tuning.
Why you might ask?
I prefer to similuate actual printing situation to get a PID tuning that most closely matches the actual usage scenarios of my printer.
3) PID-tune hotend heater
- Hnnn heater number
- Pnnn PWM to use, 0 to 1 (you should normally use 1 i.e. full power)
- Snnn target temperature
Heater to tune
To actually do a PID tuning we need to use the M303 command followed by H1 to denote the heater used, which is the first heater.
If you PID tune your bed, it is H0 by default.
RepRapFirmware used to be very, very restrictive regarding power setting. I had to put it at P0.1 (10%) to do a succesfull tuning in january, but His time I could run it at P1 (100%).
Finally we need to define target temperature using S followed by temperatures in celcius like S220 for 220c. Target the temperature you use the most. So 200ish for PLA if that is what you print, or 240 or something like that, if you mostly print ABS.
It means I’ll tune my to 200c at full power like this (mine failed when target was 220):
M303 H1 P1 S200
Sequence is from the bottom and upwards
4) Parameters to use and store in config.g
It all seems a bit confusing to be sure
Lets look at the top line, which is the one we are going to be using:
Heater 1 model: gain 188.4, time constant 121.7, dead time 1.4, max PWM 0.50, mode: PID
This translates into:
- M307 H1 for Heater 1
- A188,4 for Again
- C121.7 for Constant
- D1.4 for Dead time
- and S0.5 for max PWM
* Default is PID for hotend, so we don’t need to write parameter for this.
* Default for BED is Bang-Bang method, so you’d have to add B0 in the end, to force it to use PID.
M307 H1 A188.4, C121.7, D1.4 S0.5
I honestly do not know why it puts max power at 50%, so i’ll put it at S1 (100%) and use the new parameters to do a new PID tuning like this:
M307 H1 A188.4, C121.7, D1.4 S1
4.1) New PID-Tuning
Saving config.g with the above parameters I’ll run a new PID-tuning target at 220c like so:
M303 H1 P1 S220
I ended up with new parameters with full power on my heater:
Heater 1 model: gain 375.3, time constant 125.9, dead time 3.8, max PWM 1.00, mode: PID
This translates into:
- M375.3 H1 for Heater 1
- A125.9 for Again
- C125.9 for Constant
- D3.8for Dead time
- and S0.5 for max PWM
Which means we are going to add this line to our config.g file.
M307 H1 A375.3, C125.9, D3.8 S1
4.2) I’ll add this in my Heaters/Hotend section.
So, this is ho my Hotend section turned out looking 🙂
5) Debug – Failing to tune?
There are different reasons why it migh fail to tune.
Temperature was not reached
Auto tune cancelled because target temperature was not reached Heater 1 switched off
Solution: Try using a lower temperature. It might fail if it took too long to reach the target temperature.
Starting temperature is not stable
Auto tune cancelled because starting temperature is not stable
Solution: You need to wait for temperature to get almost back to room temperature before trying again.
Over-powered and a fire risk
Warning: Heater 1 appears to be over-powered and a fire risk if left on at full power, its temperature is predicted to reach XXXc
Solution: Lower the value of the P parameter, which is the current you feed your heater during testing