Bug in Heater Autotune?
-
I'm running repeat autotunes at the moment to get a better idea of the repeatability of this process and it's very repeatable given limited change in external influences for calculating A & C, but there seems to be a glitch for D?
My test sequence was running auto tune close to the heater bed, with the bed running at 75C, and the fan at 80% (conscious choice, will detail this more in the other thread). I start with heat soaking everything including the hotend, which I set to 50. I then disabled the heater and allowed the hotend to cool to 35 and triggered an auto tune. This is the results:
##1: A 243.7 C 132.9 D 68.1
##2: A 244.5 C 132.8 D 4.4
##3: A 245.4 C 132.8 D 4.5What could cause such a large D value for the first Autotune after controlling the external variabels as tightly as I could?
Hardware: Standard E3D Lite with new thermistor. Radial part cooling blower.
M122:
18/01/2019, 10:01:31 M122
=== Diagnostics ===
RepRapFirmware for Duet version 1.23 running on Duet 0.6
Used output buffers: 7 of 16 (11 max)
=== System ===
Static ram: 44276
Dynamic ram: 42820 of which 3016 recycled
Stack ram used: 136 current, 3656 maximum
Never used ram: 4536
=== Platform ===
Last reset 02:11:55 ago, cause: power up
Last software reset at 2019-01-17 15:16, reason: User, spinning module GCodes, available RAM 4996 bytes (slot 1)
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0400f000 BFAR 0xe000ed38 SP 0xffffffff
Error status: 0
Free file entries: 10
SD card 0 detected, interface speed: 21.0MBytes/sec
SD card longest block write time: 19.2ms, max retries 0
MCU temperature: min 34.4, current 58.1, max 59.1
Date/time: 2019-01-18 10:01:29
Slowest loop: 236.32ms; fastest: 0.09ms
I2C nak errors 8, send timeouts 0, receive timeouts 0, finishTimeouts 0
=== Move ===
Hiccups: 2, StepErrors: 0, LaErrors: 0, FreeDm: 100, MinFreeDm: 97, MaxWait: 3778608ms, Underruns: 0, 0
Scheduled moves: 78, completed moves: 78
Bed compensation in use: mesh
Bed probe heights: 0.000 0.000 0.000 0.000 0.000
=== Heat ===
Bed heaters = 0, chamberHeaters = -1 -1
Heater 0 is on, I-accum = 0.4
=== GCodes ===
Segments left: 0
Stack records: 2 allocated, 0 in use
Movement lock held by null
http is idle in state(s) 0
telnet is idle in state(s) 0
file is idle in state(s) 0
serial is idle in state(s) 0
aux is idle in state(s) 0
daemon is idle in state(s) 0
queue is idle in state(s) 0
autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Free connections: 15 of 16
Free transactions: 23 of 24
Locked: 0, state: 4, listening: 20071c18, 0, 0 -
Hang on, my bad, Miss read one of the console logs and recorded the derivative, rather than Dead time!
Sorry!
18/01/2019, 09:17:08 M307 H1
Heater 1 model: gain 243.7, time constant 132.9, dead time 4.5, max PWM 1.00, calibration voltage 0.0, mode PID, inverted no, frequency default
Computed PID parameters for setpoint change: P21.6, I0.885, D68.1
Computed PID parameters for load change: P21.6
18/01/2019, 09:14:48 Auto tune heater 1 completed in 354 sec
Use M307 H1 to see the result, or M500 to save the result in config-override.g
18/01/2019, 09:12:46 Auto tune phase 3, peak temperature was 231.9
18/01/2019, 09:12:39 Auto tune phase 2, heater off
18/01/2019, 09:08:59 Auto tune phase 1, heater on
18/01/2019, 09:08:53 M303 H1 P1 S230
Auto tuning heater 1 using target temperature 230.0°C and PWM 1.00 - do not leave printer unattended